= (props) => {
classNames("error"),
absoluteClassName,
errorBundlerClassName,
- className,
+ attributes?.className,
])}
- {...props}
+ {...attributes}
>
Unable to fetch required dependency.
@@ -113,9 +113,9 @@ export const ErrorOverlay: React.FC = (props) => {
classNames("error"),
absoluteClassName,
errorBundlerClassName,
- className,
+ attributes?.className,
])}
- {...otherProps}
+ {...attributes}
>
= (props) => {
roundedButtonClassName,
])}
onClick={() => {
- restart();
- runSandpack();
+ env.restart();
}}
title="Restart script"
type="button"
@@ -147,6 +146,7 @@ export const ErrorOverlay: React.FC = (props) => {
);
}
+ */
return (
= (props) => {
classNames("error"),
absoluteClassName,
errorClassName({ solidBg: true }),
- className,
+ attributes?.className,
])}
translate="no"
- {...otherProps}
+ {...attributes}
>
-
- Something went wrong
+
+ {title}
-
- {errorMessage || children}
+ {description}
+ {children}
);
};
diff --git a/sandpack-react/src/components/common/Layout.tsx b/sandpack-react/src/components/common/Layout.tsx
index a9c99becf..4b736c1a3 100644
--- a/sandpack-react/src/components/common/Layout.tsx
+++ b/sandpack-react/src/components/common/Layout.tsx
@@ -59,13 +59,10 @@ export const SandpackLayout = React.forwardRef<
HTMLDivElement,
SandpackLayoutProps
>(({ children, className, ...props }, ref) => {
- const { sandpack } = useSandpack();
const classNames = useClassNames();
- const combinedRef = useCombinedRefs(sandpack.lazyAnchorRef, ref);
return (
diff --git a/sandpack-react/src/components/common/Loading.tsx b/sandpack-react/src/components/common/Loading.tsx
index 63e84ba83..36fa7a0f8 100644
--- a/sandpack-react/src/components/common/Loading.tsx
+++ b/sandpack-react/src/components/common/Loading.tsx
@@ -4,8 +4,6 @@ import { css, keyframes } from "../../styles";
import { buttonClassName } from "../../styles/shared";
import { useClassNames } from "../../utils/classNames";
-import { OpenInCodeSandboxButton } from "./OpenInCodeSandboxButton";
-
const cubeClassName = css({
transform: "translate(-4px, 9px) scale(0.13, 0.13)",
"*": { position: "absolute", width: "96px", height: "96px" },
@@ -90,7 +88,7 @@ export const Loading = ({
title="Open in CodeSandbox"
{...props}
>
- {showOpenInCodeSandbox &&
}
+ {/*showOpenInCodeSandbox &&
*/}
diff --git a/sandpack-react/src/components/common/LoadingOverlay.tsx b/sandpack-react/src/components/common/LoadingOverlay.tsx
index bddefbd2b..ea16a96f6 100644
--- a/sandpack-react/src/components/common/LoadingOverlay.tsx
+++ b/sandpack-react/src/components/common/LoadingOverlay.tsx
@@ -1,12 +1,11 @@
+import type * as sandpackEnv from "@codesandbox/sandpack-environments";
import * as React from "react";
-import { useSandpack } from "../../hooks";
+import { useSandbox } from "../../contexts/SandpackSandboxContext";
import {
useLoadingOverlayState,
FADE_ANIMATION_DURATION,
} from "../../hooks/useLoadingOverlayState";
-import { useSandpackPreviewProgress } from "../../hooks/useSandpackPreviewProgress";
-import { useSandpackShellStdout } from "../../hooks/useSandpackShellStdout";
import { css } from "../../styles";
import {
absoluteClassName,
@@ -19,21 +18,13 @@ import {
roundedButtonClassName,
} from "../../styles/shared";
import { useClassNames } from "../../utils/classNames";
-import { StdoutList } from "../Console/StdoutList";
import { RestartIcon } from "../icons";
import { Loading } from "./Loading";
export interface LoadingOverlayProps {
- clientId?: string;
-
- /**
- * It enforces keeping the loading state visible,
- * which is helpful for external loading states.
- */
- loading?: boolean;
-
showOpenInCodeSandbox: boolean;
+ preview: sandpackEnv.SandpackPreview;
}
const loadingClassName = css({
@@ -43,23 +34,24 @@ const loadingClassName = css({
export const LoadingOverlay: React.FC<
LoadingOverlayProps & React.HTMLAttributes
> = ({
- clientId,
- loading,
className,
style,
showOpenInCodeSandbox,
+ preview,
...props
}): JSX.Element | null => {
+ const { environment: env } = useSandbox();
const classNames = useClassNames();
- const {
- sandpack: { runSandpack, environment },
- } = useSandpack();
- const [shouldShowStdout, setShouldShowStdout] = React.useState(false);
- const loadingOverlayState = useLoadingOverlayState(clientId, loading);
- const progressMessage = useSandpackPreviewProgress({ clientId });
- const { logs: stdoutData } = useSandpackShellStdout({ clientId });
+ // const progressMessage = useSandpackPreviewProgress(preview);
+ const loadingOverlayState = useLoadingOverlayState(preview);
+ // TODO: NodeBox should rather put progress messages in the status of the preview
+ // const { logs: stdoutData } = useSandpackShellStdout({ clientId });
+ // TODO: Forking is a status of the environment
+ // const forking = progressMessage?.toLowerCase().includes("forking");
+
+ /*
React.useEffect(() => {
let timer: NodeJS.Timer;
if (progressMessage?.includes("Running")) {
@@ -74,12 +66,13 @@ export const LoadingOverlay: React.FC<
}
};
}, [progressMessage]);
+ */
- if (loadingOverlayState === "HIDDEN") {
+ if (loadingOverlayState === "HIDDEN" /*&& !forking*/) {
return null;
}
- if (loadingOverlayState === "TIMEOUT") {
+ if (preview.status.current === "ERROR") {
return (
- ENV: {environment}
-
ERROR: TIME_OUT
@@ -135,7 +126,7 @@ export const LoadingOverlay: React.FC<
iconStandaloneClassName,
roundedButtonClassName,
])}
- onClick={runSandpack}
+ onClick={() => env.restart()}
title="Restart script"
type="button"
>
@@ -161,28 +152,32 @@ export const LoadingOverlay: React.FC<
])}
style={{
...style,
+ // opacity: stillLoading ? 1 : forking ? 0.7 : 0,
opacity: stillLoading ? 1 : 0,
transition: `opacity ${FADE_ANIMATION_DURATION}ms ease-out`,
}}
{...props}
>
- {shouldShowStdout && (
+ {/*
+ TODO: What is this specifically? Part of loading the preview?
+ shouldShowStdout && (
- )}
+ )*/}
- {progressMessage && (
+ {preview.status.current === "LOADING" && (
-
{progressMessage}
+
{preview.status.progress[preview.status.progress.length - 1]}
)}
>
);
};
+/*
const stdoutPreview = css({
position: "absolute",
left: 0,
@@ -192,7 +187,7 @@ const stdoutPreview = css({
opacity: 0.5,
overflowX: "hidden",
});
-
+*/
const progressClassName = css({
position: "absolute",
left: "$space$5",
diff --git a/sandpack-react/src/components/common/OpenInCodeSandboxButton/UnstyledOpenInCodeSandboxButton.tsx b/sandpack-react/src/components/common/OpenInCodeSandboxButton/UnstyledOpenInCodeSandboxButton.tsx
index 966c6a79c..35dc05811 100644
--- a/sandpack-react/src/components/common/OpenInCodeSandboxButton/UnstyledOpenInCodeSandboxButton.tsx
+++ b/sandpack-react/src/components/common/OpenInCodeSandboxButton/UnstyledOpenInCodeSandboxButton.tsx
@@ -48,6 +48,10 @@ export const UnstyledOpenInCodeSandboxButton: React.FC<
> = (props) => {
const { sandpack } = useSandpack();
+ if (sandpack.environment === "vm") {
+ return ;
+ }
+
if (sandpack.exportOptions) {
return ;
}
@@ -55,6 +59,38 @@ export const UnstyledOpenInCodeSandboxButton: React.FC<
return ;
};
+export const ExportVMButton: React.FC> = ({
+ children,
+ ...props
+}) => {
+ const sandpack = useSandpack();
+
+ React.useEffect(() => {
+ return sandpack.listen((message) => {
+ if (message.type === "vm/response_editor_url") {
+ window.open(message.data, "_blank");
+ }
+ });
+ });
+
+ const submit = () => {
+ sandpack.dispatch({
+ type: "vm/request_editor_url",
+ });
+ };
+
+ return (
+
+ );
+};
+
export const ExportToWorkspaceButton: React.FC<
React.HtmlHTMLAttributes & { state: SandpackState }
> = ({ children, state, ...props }) => {
diff --git a/sandpack-react/src/contexts/SandpackSandboxContext.tsx b/sandpack-react/src/contexts/SandpackSandboxContext.tsx
new file mode 100644
index 000000000..cae540ecd
--- /dev/null
+++ b/sandpack-react/src/contexts/SandpackSandboxContext.tsx
@@ -0,0 +1,161 @@
+import type {
+ SandpackEnvironmentOptions,
+ SandpackStaticEnvironmentOptions,
+} from "@codesandbox/sandpack-environments";
+import {
+ loadEnvironment,
+ type SandpackEnvironment,
+} from "@codesandbox/sandpack-environments";
+import type { SandpackBundlerEnvironmentOptions } from "@codesandbox/sandpack-environments/dist/clients/bundler";
+import {
+ createContext,
+ useContext,
+ useRef,
+ useSyncExternalStore,
+ // @ts-ignore
+ use,
+} from "react";
+
+import type {
+ BundlerSandbox,
+ Sandbox,
+ SandpackProviderProps,
+ StaticSandbox,
+} from "../types";
+
+interface ContextValue {
+ environment: SandpackEnvironment;
+ sandbox: Sandbox;
+}
+
+export const SandpackSandboxContext =
+ createContext | null>(null);
+
+interface Props {
+ children: React.ReactNode;
+ sandbox: SandpackProviderProps["sandbox"];
+ options?: {
+ [K in SandpackEnvironmentOptions["type"]]: SandpackEnvironmentOptions & {
+ type: K;
+ };
+ };
+}
+
+function loadStaticEnvironment(
+ sandbox: StaticSandbox,
+ options?: SandpackStaticEnvironmentOptions
+) {
+ return loadEnvironment({
+ type: "static",
+ ...options,
+ entry: sandbox.entry,
+ }).then((env) => {
+ const files = sandbox.files || {};
+
+ return Promise.all(
+ Object.keys(files).map((path) => {
+ env.fs.writeFileMetadata(path, files[path].metadata);
+ return env.fs.writeFile(path, files[path].code);
+ })
+ ).then(() => env);
+ });
+}
+
+function loadBundlerEnvironment(
+ sandbox: BundlerSandbox,
+ options?: SandpackBundlerEnvironmentOptions
+) {
+ return loadEnvironment({
+ type: "bundler",
+ ...options,
+ entry: sandbox.entry,
+ bundlerType: sandbox.bundler,
+ }).then((env) => {
+ const files = sandbox.files || {};
+
+ return Promise.all(
+ Object.keys(files).map((path) => {
+ env.fs.writeFileMetadata(path, files[path].metadata);
+ return env.fs.writeFile(path, files[path].code);
+ })
+ ).then(() => env);
+ });
+}
+
+export function SandpackSandboxProvider(props: Props) {
+ const sandboxRef = useRef | null>(null);
+
+ if (!sandboxRef.current) {
+ const environmentOptions = props.options;
+
+ if (typeof props.sandbox === "function") {
+ sandboxRef.current = props.sandbox().then((sandbox) => {
+ switch (sandbox.environment) {
+ case "vm":
+ return loadEnvironment({
+ type: sandbox.environment,
+ ...environmentOptions?.[sandbox.environment],
+ session: sandbox.session,
+ }).then((environment) => ({ environment, sandbox }));
+ case "static": {
+ return loadStaticEnvironment(
+ sandbox,
+ environmentOptions?.static
+ ).then((environment) => ({ environment, sandbox }));
+ }
+ case "bundler": {
+ return loadBundlerEnvironment(
+ sandbox,
+ environmentOptions?.bundler
+ ).then((environment) => ({ environment, sandbox }));
+ }
+ }
+ });
+ } else if (props.sandbox.environment === "static") {
+ const sandbox = props.sandbox;
+ sandboxRef.current = loadStaticEnvironment(
+ sandbox,
+ environmentOptions?.bundler
+ ).then((environment) => ({
+ environment,
+ sandbox,
+ }));
+ } else if (props.sandbox.environment === "bundler") {
+ const sandbox = props.sandbox;
+ sandboxRef.current = loadBundlerEnvironment(
+ sandbox,
+ environmentOptions?.bundler
+ ).then((environment) => ({
+ environment,
+ sandbox,
+ }));
+ } else {
+ // TODO: Implement VM sandbox
+ }
+ }
+
+ return (
+
+ {props.children}
+
+ );
+}
+
+export function useSandbox() {
+ const envPromise = useContext(SandpackSandboxContext);
+
+ if (envPromise === null) {
+ throw new Error(
+ `[sandpack-react]: "useSandpack" must be wrapped by a "SandpackProvider"`
+ );
+ }
+
+ const context = use(envPromise) as ContextValue;
+
+ useSyncExternalStore(
+ (update) => context.environment.onStatusChange(update),
+ () => context.environment.status
+ );
+
+ return context;
+}
diff --git a/sandpack-react/src/contexts/SandpackStateContext.tsx b/sandpack-react/src/contexts/SandpackStateContext.tsx
new file mode 100644
index 000000000..881083cf7
--- /dev/null
+++ b/sandpack-react/src/contexts/SandpackStateContext.tsx
@@ -0,0 +1,78 @@
+import { createContext, useContext } from "react";
+import { useCallback, useMemo, useState } from "react";
+
+import type {
+ OnChangeFunction,
+ SandboxChangeEvent,
+ SandboxConfiguration,
+ SandpackProviderProps,
+} from "../types";
+
+import { useSandbox } from "./SandpackSandboxContext";
+
+interface SandpackState {
+ activeFile: string | null;
+ setActiveFile(filepath: string): void;
+ triggerChange(event: SandboxChangeEvent): Promise;
+}
+
+export const SandpackStateContext = createContext(null);
+
+export function SandpackStateProvider({
+ children,
+ sandboxConfiguration,
+ onChange,
+}: {
+ children: React.ReactNode;
+ sandboxConfiguration?: SandboxConfiguration;
+ onChange?: OnChangeFunction;
+}) {
+ const { environment, sandbox } = useSandbox();
+ const [state, setState] = useState({
+ activeFile: sandboxConfiguration?.activeFile ?? null,
+ });
+
+ const setActiveFile = useCallback(
+ (activeFile: string) => {
+ setState({
+ ...state,
+ activeFile,
+ });
+ },
+ [state]
+ );
+
+ const triggerChange = useCallback(
+ async (event: SandboxChangeEvent) => {
+ return onChange?.(event, sandbox);
+ },
+ [environment, state.activeFile]
+ );
+
+ const value = useMemo(
+ () => ({
+ ...state,
+ setActiveFile,
+ triggerChange,
+ }),
+ [state, setActiveFile]
+ );
+
+ return (
+
+ {children}
+
+ );
+}
+
+export function useSandpackState() {
+ const context = useContext(SandpackStateContext);
+
+ if (!context) {
+ throw new Error(
+ "Invalid usage of useSandpackState. Make sure to use it within SandpackStateProvider."
+ );
+ }
+
+ return context;
+}
diff --git a/sandpack-react/src/contexts/sandpackContext.test.tsx b/sandpack-react/src/contexts/sandpackContext.test.tsx
deleted file mode 100644
index 1b746c5c2..000000000
--- a/sandpack-react/src/contexts/sandpackContext.test.tsx
+++ /dev/null
@@ -1,547 +0,0 @@
-/**
- * @jest-environment jsdom
- */
-import { renderHook, act } from "@testing-library/react-hooks";
-import React from "react";
-
-import type { UseSandpack } from "..";
-import { REACT_TEMPLATE, useSandpack } from "..";
-
-import { SandpackProvider } from "./sandpackContext";
-
-jest.useFakeTimers();
-
-const createContext = async (): Promise<{ current: UseSandpack }> => {
- const wrapper: React.FC<{ children: React.ReactNode }> = ({ children }) => (
- {children}
- );
- const { result } = renderHook(() => useSandpack(), { wrapper });
-
- await act(async () => {
- result.current.sandpack.runSandpack();
- });
-
- return result;
-};
-
-const getAmountOfListener = (
- /* eslint-disable @typescript-eslint/no-explicit-any */
- instance: any,
- name = "client-id",
- ignoreGlobalListener = false
-): number => {
- return (
- Object.keys(instance.sandpack.clients[name].iframeProtocol.channelListeners)
- .length -
- 1 - // less protocol listener
- (ignoreGlobalListener ? 0 : 1) // less the global Sandpack-react listener
- );
-};
-
-describe(SandpackProvider, () => {
- describe("updateFile", () => {
- it("adds a file", async () => {
- const instance = await createContext();
-
- act(() => {
- instance.current.sandpack.addFile({ "new-file.js": "new-content" });
- });
-
- expect(instance.current.sandpack.files["/new-file.js"].code).toBe(
- "new-content"
- );
- });
-
- it("deletes a file", async () => {
- const instance = await createContext();
-
- act(() => {
- instance.current.sandpack.deleteFile("/App.js");
- });
-
- expect(instance.current.sandpack.files["/App.js"]).toBe(undefined);
- expect(Object.keys(instance.current.sandpack.files)).toEqual([
- "/styles.css",
- "/index.js",
- "/public/index.html",
- "/package.json",
- ]);
- });
-
- it("deletes the activeFile and set the following visibleFile as active", async () => {
- const wrapper: React.FC<{ children: React.ReactNode }> = ({
- children,
- }) => (
-
- {children}
-
- );
- const { result } = renderHook(() => useSandpack(), { wrapper });
-
- await act(async () => {
- result.current.sandpack.runSandpack();
- result.current.sandpack.deleteFile("/App.js");
- });
-
- expect(result.current.sandpack.activeFile).toBe("/styles.css");
- });
-
- it("deletes the activeFile and set the entry file if there no visibleFile left", async () => {
- const wrapper: React.FC<{ children: React.ReactNode }> = ({
- children,
- }) => (
-
- {children}
-
- );
- const { result } = renderHook(() => useSandpack(), { wrapper });
-
- await act(async () => {
- result.current.sandpack.runSandpack();
- result.current.sandpack.deleteFile("/App.js");
- });
-
- expect(result.current.sandpack.activeFile).toBe("/package.json");
- });
-
- it("updates a file", async () => {
- const instance = await createContext();
-
- expect(instance.current.sandpack.files["/App.js"]).toEqual({
- code: `export default function App() {
- return Hello world
-}
-`,
- });
- act(() => {
- instance.current.sandpack.updateFile("/App.js", "Foo");
- });
-
- expect(instance.current.sandpack.files["/App.js"]).toEqual({
- code: `Foo`,
- });
- });
-
- it("updates multiples files", async () => {
- const instance = await createContext();
-
- act(() => {
- instance.current.sandpack.updateFile({
- "/App.js": "Foo",
- "/index.js": "Baz",
- });
- });
-
- expect(instance.current.sandpack.files["/App.js"]).toEqual({
- code: `Foo`,
- });
- expect(instance.current.sandpack.files["/index.js"]).toEqual({
- code: `Baz`,
- });
- });
-
- it("updates multiples files in a row", async () => {
- const instance = await createContext();
-
- act(() => {
- instance.current.sandpack.updateFile("/App.js", "Foo");
- });
- act(() => {
- instance.current.sandpack.updateFile("/index.js", "Baz");
- });
-
- expect(instance.current.sandpack.files["/App.js"]).toEqual({
- code: `Foo`,
- });
- expect(instance.current.sandpack.files["/index.js"]).toEqual({
- code: `Baz`,
- });
- });
- });
-
- describe("editorState", () => {
- it("should return the same initial state", async () => {
- const instance = await createContext();
-
- expect(instance.current.sandpack.editorState).toBe("pristine");
- });
-
- it("should return a dirty value after updating a file", async () => {
- const instance = await createContext();
-
- expect(instance.current.sandpack.editorState).toBe("pristine");
-
- act(() => {
- instance.current.sandpack.updateFile("/App.js", "Foo");
- });
- expect(instance.current.sandpack.editorState).toBe("dirty");
- });
-
- it("should return a pristine value after reset files", async () => {
- const instance = await createContext();
-
- expect(instance.current.sandpack.editorState).toBe("pristine");
- act(() => {
- instance.current.sandpack.updateFile("/App.js", "Foo");
- });
- expect(instance.current.sandpack.editorState).toBe("dirty");
-
- act(() => {
- instance.current.sandpack.resetAllFiles();
- });
- expect(instance.current.sandpack.editorState).toBe("pristine");
- });
-
- it("should return a pristine value after reverting a change", async () => {
- const instance = await createContext();
- expect(instance.current.sandpack.editorState).toBe("pristine");
-
- act(() => {
- instance.current.sandpack.updateFile("/App.js", "Foo");
- });
- expect(instance.current.sandpack.editorState).toBe("dirty");
-
- act(() => {
- instance.current.sandpack.updateFile(
- "/App.js",
- REACT_TEMPLATE["files"]["/App.js"].code
- );
- });
-
- expect(instance.current.sandpack.editorState).toBe("pristine");
- });
- });
-
- describe("listeners", () => {
- it("sets a listener, but the client hasn't been created yet - no global listener", async () => {
- const instance = await createContext();
-
- // Act: Add listener
- const mock = jest.fn();
- act(() => {
- instance.current.listen(mock, "client-id");
- });
-
- // Act: Create client
- await act(async () => {
- await instance.current.sandpack.registerBundler(
- document.createElement("iframe"),
- "client-id"
- );
- });
-
- // Expect: one pending unsubscribe function
- expect(
- Object.keys(
- instance.current.sandpack.unsubscribeClientListenersRef.current[
- "client-id"
- ]
- ).length
- ).toBe(1);
-
- // Expect: no global listener
- expect(
- Object.keys(instance.current.sandpack.queuedListenersRef.current.global)
- .length
- ).toBe(0);
-
- // Expect: one client
- expect(Object.keys(instance.current.sandpack.clients)).toEqual([
- "client-id",
- ]);
-
- /**
- * TODO: figure out how to mock SandpackClient and invoke the listener func
- */
- // expect(mock).toHaveBeenCalled();
- });
-
- it("sets a listener, but the client hasn't been created yet - global listener", async () => {
- const instance = await createContext();
-
- // Act: Add listener
- const mock = jest.fn();
- act(() => {
- instance.current.listen(mock /* , no client-id */);
- });
-
- // Act: Create client
- await act(async () => {
- await instance.current.sandpack.registerBundler(
- document.createElement("iframe"),
- "client-id"
- );
- });
-
- // Expect: one pending unsubscribe function
- expect(
- Object.keys(
- instance.current.sandpack.unsubscribeClientListenersRef.current[
- "client-id"
- ]
- ).length
- ).toBe(1);
-
- // Expect: no global listener
- expect(
- Object.keys(instance.current.sandpack.queuedListenersRef.current.global)
- .length
- ).toBe(1);
-
- // Expect: one listener in the client
- expect(getAmountOfListener(instance.current)).toBe(1);
- });
-
- it("set a listener, but the client has already been created - no global listener", async () => {
- const instance = await createContext();
-
- // Act: Create client
- await act(async () => {
- await instance.current.sandpack.registerBundler(
- document.createElement("iframe"),
- "client-id"
- );
- });
-
- // Expect: no pending unsubscribe function
- expect(
- Object.keys(
- instance.current.sandpack.unsubscribeClientListenersRef.current[
- "client-id"
- ]
- ).length
- ).toBe(0);
-
- // Expect: no global listener
- expect(
- Object.keys(instance.current.sandpack.queuedListenersRef.current.global)
- .length
- ).toBe(0);
-
- // Act: Add listener
- const mock = jest.fn();
- act(() => {
- instance.current.listen(mock, "client-id");
- });
-
- // Expect: no pending unsubscribe function
- expect(
- Object.keys(
- instance.current.sandpack.unsubscribeClientListenersRef.current[
- "client-id"
- ]
- ).length
- ).toBe(0);
-
- // Expect: no global listener
- expect(
- Object.keys(instance.current.sandpack.queuedListenersRef.current.global)
- .length
- ).toBe(0);
-
- // Expect: one listener in the client
- expect(getAmountOfListener(instance.current)).toBe(1);
- });
-
- it("set a listener, but the client has already been created - global listener", async () => {
- const instance = await createContext();
-
- // Act: Create client
- await act(async () => {
- await instance.current.sandpack.registerBundler(
- document.createElement("iframe"),
- "client-id"
- );
- });
-
- // Expect: no pending unsubscribe function
- expect(
- Object.keys(
- instance.current.sandpack.unsubscribeClientListenersRef.current[
- "client-id"
- ]
- ).length
- ).toBe(0);
-
- // Expect: no global listener
- expect(
- Object.keys(instance.current.sandpack.queuedListenersRef.current.global)
- .length
- ).toBe(0);
-
- // Act: Add listener
- const mock = jest.fn();
- act(() => {
- instance.current.listen(mock /* , no client-id */);
- });
-
- // Expect: no pending unsubscribe function, because it's a global
- expect(
- Object.keys(
- instance.current.sandpack.unsubscribeClientListenersRef.current[
- "client-id"
- ]
- ).length
- ).toBe(0);
-
- // Expect: one global listener
- expect(
- Object.keys(instance.current.sandpack.queuedListenersRef.current.global)
- .length
- ).toBe(1);
-
- // Expect: one listener in the client
- expect(getAmountOfListener(instance.current)).toBe(1);
- });
-
- it("sets a new listener, and then create one more client", async () => {
- const instance = await createContext();
-
- // Act: Add listener
- act(() => {
- const mock = jest.fn();
- instance.current.listen(mock, "client-id");
- });
-
- // Act: Createasync client
- await act(async () => {
- await instance.current.sandpack.registerBundler(
- document.createElement("iframe"),
- "client-id"
- );
- });
-
- // Expect: one pending unsubscribe function
- expect(
- Object.keys(
- instance.current.sandpack.unsubscribeClientListenersRef.current[
- "client-id"
- ]
- ).length
- ).toBe(1);
-
- // Expect: no global listener
- expect(
- Object.keys(instance.current.sandpack.queuedListenersRef.current.global)
- .length
- ).toBe(0);
-
- // Expect: one listener in the client
- expect(getAmountOfListener(instance.current)).toBe(1);
-
- // Act: Add one more listener
- act(() => {
- const anotherMock = jest.fn();
- instance.current.listen(anotherMock /* , no client-id */);
- });
-
- // Expect: one global listener
- expect(
- Object.keys(instance.current.sandpack.queuedListenersRef.current.global)
- .length
- ).toBe(1);
-
- // Expect: two listener in the client
- expect(getAmountOfListener(instance.current)).toBe(2);
- });
-
- it("unsubscribes only from the assigned client id", async () => {
- const instance = await createContext();
-
- await act(async () => {
- await instance.current.sandpack.registerBundler(
- document.createElement("iframe"),
- "client-1"
- );
- await instance.current.sandpack.registerBundler(
- document.createElement("iframe"),
- "client-2"
- );
- });
-
- // Initial state
- expect(getAmountOfListener(instance.current, "client-1")).toBe(0);
- expect(getAmountOfListener(instance.current, "client-2", true)).toBe(0);
-
- // Add listeners
- act(() => {
- instance.current.listen(jest.fn(), "client-1");
- });
- const unsubscribeClientTwo = instance.current.listen(
- jest.fn(),
- "client-2"
- );
-
- expect(getAmountOfListener(instance.current, "client-1")).toBe(1);
- expect(getAmountOfListener(instance.current, "client-2", true)).toBe(1);
-
- unsubscribeClientTwo();
-
- expect(getAmountOfListener(instance.current, "client-1")).toBe(1);
- expect(getAmountOfListener(instance.current, "client-2", true)).toBe(0);
- });
-
- it("doesn't trigger global unsubscribe", async () => {
- const instance = await createContext();
-
- await act(async () => {
- await instance.current.sandpack.registerBundler(
- document.createElement("iframe"),
- "client-1"
- );
- await instance.current.sandpack.registerBundler(
- document.createElement("iframe"),
- "client-2"
- );
- });
-
- act(() => {
- instance.current.listen(jest.fn());
- instance.current.listen(jest.fn());
- });
- const unsubscribe = instance.current.listen(jest.fn());
-
- expect(getAmountOfListener(instance.current, "client-1")).toBe(3);
- expect(getAmountOfListener(instance.current, "client-2", true)).toBe(3);
-
- unsubscribe();
-
- expect(getAmountOfListener(instance.current, "client-1")).toBe(2);
- expect(getAmountOfListener(instance.current, "client-2", true)).toBe(2);
- });
-
- it("unsubscribe all the listeners from a specific client when it unmonts", async () => {
- const instance = await createContext();
- await act(async () => {
- await instance.current.sandpack.registerBundler(
- document.createElement("iframe"),
- "client-1"
- );
- await instance.current.sandpack.registerBundler(
- document.createElement("iframe"),
- "client-2"
- );
-
- instance.current.listen(jest.fn());
- instance.current.listen(jest.fn());
- instance.current.listen(jest.fn());
- });
-
- expect(getAmountOfListener(instance.current, "client-1")).toBe(3);
- expect(getAmountOfListener(instance.current, "client-2", true)).toBe(3);
-
- act(() => {
- instance.current.sandpack.unregisterBundler("client-2");
- });
-
- expect(getAmountOfListener(instance.current, "client-1")).toBe(3);
- expect(instance.current.sandpack.clients["client-2"]).toBe(undefined);
- });
- });
-});
diff --git a/sandpack-react/src/contexts/sandpackContext.tsx b/sandpack-react/src/contexts/sandpackContext.tsx
deleted file mode 100644
index 6cc910c16..000000000
--- a/sandpack-react/src/contexts/sandpackContext.tsx
+++ /dev/null
@@ -1,60 +0,0 @@
-import * as React from "react";
-
-import { SandpackThemeProvider } from "../styles/themeContext";
-import type { SandpackContext, SandpackProviderProps } from "../types";
-import { ClassNamesProvider } from "../utils/classNames";
-
-import { useAppState } from "./utils/useAppState";
-import { useClient } from "./utils/useClient";
-import { useFiles } from "./utils/useFiles";
-
-const Sandpack = React.createContext(null);
-
-export const SandpackProvider: React.FC = (props) => {
- const { children, options, style, className, theme } = props;
-
- const [fileState, fileOperations] = useFiles(props);
- const [clientState, { dispatchMessage, addListener, ...clientOperations }] =
- useClient(props, fileState);
- const appState = useAppState(props, fileState.files);
- React.useEffect(() => {
- clientOperations.initializeSandpackIframe();
- }, []);
-
- return (
-
-
-
- {children}
-
-
-
- );
-};
-
-/**
- * @category Provider
- */
-const SandpackConsumer = Sandpack.Consumer;
-
-export { SandpackConsumer, Sandpack as SandpackReactContext };
diff --git a/sandpack-react/src/contexts/utils/useAppState.ts b/sandpack-react/src/contexts/utils/useAppState.ts
index edba3dec8..dc0055789 100644
--- a/sandpack-react/src/contexts/utils/useAppState.ts
+++ b/sandpack-react/src/contexts/utils/useAppState.ts
@@ -3,14 +3,13 @@ import { dequal as deepEqual } from "dequal";
import { useState } from "react";
import type { SandpackProviderProps } from "../..";
-import { getSandpackStateFromProps } from "../../utils/sandpackUtils";
interface SandpackAppState {
editorState: "pristine" | "dirty";
}
type UseAppState = (
- props: SandpackProviderProps,
+ props: SandpackProviderProps,
files: SandpackBundlerFiles
) => SandpackAppState;
@@ -19,10 +18,7 @@ export const useAppState: UseAppState = (props, files) => {
editorState: "pristine",
});
- const originalStateFromProps = getSandpackStateFromProps(props);
- const editorState = deepEqual(originalStateFromProps.files, files)
- ? "pristine"
- : "dirty";
+ const editorState = deepEqual({}, files) ? "pristine" : "dirty";
if (editorState !== state.editorState) {
setState((prev) => ({ ...prev, editorState }));
diff --git a/sandpack-react/src/contexts/utils/useClient.ts b/sandpack-react/src/contexts/utils/useClient.ts
index 13c702720..db3784f88 100644
--- a/sandpack-react/src/contexts/utils/useClient.ts
+++ b/sandpack-react/src/contexts/utils/useClient.ts
@@ -1,30 +1,13 @@
import type {
- BundlerState,
ListenerFunction,
ReactDevToolsMode,
- SandpackError,
SandpackMessage,
UnsubscribeFunction,
SandpackClient,
} from "@codesandbox/sandpack-client";
-import {
- loadSandpackClient,
- extractErrorDetails,
-} from "@codesandbox/sandpack-client";
-import { useCallback, useEffect, useRef, useState } from "react";
-
-import type {
- SandpackInitMode,
- SandpackProviderProps,
- SandpackStatus,
-} from "../..";
-import { generateRandomId } from "../../utils/stringUtils";
-import { useAsyncSandpackId } from "../../utils/useAsyncSandpackId";
-
-import type { FilesState } from "./useFiles";
type SandpackClientType = InstanceType;
-
+/*
const BUNDLER_TIMEOUT = 40_000;
interface SandpackConfigState {
@@ -35,7 +18,7 @@ interface SandpackConfigState {
error: SandpackError | null;
status: SandpackStatus;
}
-
+*/
export interface ClientPropsOverride {
startRoute?: string;
}
@@ -64,12 +47,13 @@ export interface UseClientOperations {
Record>
>;
}
-
+/*
type UseClient = (
props: SandpackProviderProps,
filesState: FilesState
) => [SandpackConfigState, UseClientOperations];
-
+*/
+/*
export const useClient: UseClient = (
{ options, customSetup, teamId, sandboxId },
filesState
@@ -88,9 +72,7 @@ export const useClient: UseClient = (
status: options?.autorun ?? true ? "initial" : "idle",
});
- /**
- * Refs
- */
+
type InterserctionObserverCallback = (
entries: IntersectionObserverEntry[]
) => void;
@@ -119,9 +101,7 @@ export const useClient: UseClient = (
const asyncSandpackId = useAsyncSandpackId(filesState.files);
- /**
- * Callbacks
- */
+
const createClient = useCallback(
async (
iframe: HTMLIFrameElement,
@@ -143,11 +123,10 @@ export const useClient: UseClient = (
clearTimeout(timeoutHook.current);
}
- /**
- * Subscribe inside the context with the first client that gets instantiated.
- * This subscription is for global states like error and timeout, so no need for a per client listen
- * Also, set the timeout timer only when the first client is instantiated
- */
+ // Subscribe inside the context with the first client that gets instantiated.
+ // This subscription is for global states like error and timeout, so no need for a per client listen
+ // Also, set the timeout timer only when the first client is instantiated
+
const shouldSetTimeout = typeof unsubscribe.current !== "function";
if (shouldSetTimeout) {
@@ -178,6 +157,7 @@ export const useClient: UseClient = (
{
files: filesState.files,
template: filesState.environment,
+ templateID: filesState.templateID,
},
{
externalResources: options.externalResources,
@@ -196,6 +176,7 @@ export const useClient: UseClient = (
!!options?.experimental_enableServiceWorker,
experimental_stableServiceWorkerId: await getStableServiceWorkerId(),
sandboxId,
+ vmEnvironmentApiUrl: options.vmEnvironmentApiUrl,
}
);
@@ -206,9 +187,9 @@ export const useClient: UseClient = (
unsubscribeClientListeners.current[clientId] =
unsubscribeClientListeners.current[clientId] || {};
- /**
- * Register any potential listeners that subscribed before sandpack ran
- */
+
+ // Register any potential listeners that subscribed before sandpack ran
+
if (queuedListeners.current[clientId]) {
Object.keys(queuedListeners.current[clientId]).forEach((listenerId) => {
const listener = queuedListeners.current[clientId][listenerId];
@@ -221,19 +202,19 @@ export const useClient: UseClient = (
queuedListeners.current[clientId] = {};
}
- /**
- * Register global listeners
- */
+
+ // Register global listeners
+
const globalListeners = Object.entries(queuedListeners.current.global);
globalListeners.forEach(([listenerId, listener]) => {
const unsubscribe = client.listen(listener) as () => void;
unsubscribeClientListeners.current[clientId][listenerId] = unsubscribe;
- /**
- * Important: Do not clean the global queue
- * Instead of cleaning the queue, keep it there for the
- * following clients that might be created
- */
+
+ // Important: Do not clean the global queue
+ // Instead of cleaning the queue, keep it there for the
+ // following clients that might be created
+
});
clients.current[clientId] = client;
@@ -441,11 +422,10 @@ export const useClient: UseClient = (
return unsubscribeListener;
} else {
- /**
- * When listeners are added before the client is instantiated, they are stored with an unique id
- * When the client is eventually instantiated, the listeners are registered on the spot
- * Their unsubscribe functions are stored in unsubscribeClientListeners for future cleanup
- */
+
+ // When listeners are added before the client is instantiated, they are stored with an unique id
+ // When the client is eventually instantiated, the listeners are registered on the spot
+ // Their unsubscribe functions are stored in unsubscribeClientListeners for future cleanup
const listenerId = generateRandomId();
queuedListeners.current[clientId] =
queuedListeners.current[clientId] || {};
@@ -456,16 +436,16 @@ export const useClient: UseClient = (
const unsubscribeListener = (): void => {
if (queuedListeners.current[clientId][listenerId]) {
- /**
- * Unsubscribe was called before the client was instantiated
- * common example - a component with autorun=false that unmounted
- */
+
+ // Unsubscribe was called before the client was instantiated
+ // common example - a component with autorun=false that unmounted
+
delete queuedListeners.current[clientId][listenerId];
} else if (unsubscribeClientListeners.current[clientId][listenerId]) {
- /**
- * unsubscribe was called for a listener that got added before the client was instantiated
- * call the unsubscribe function and remove it from memory
- */
+
+ // unsubscribe was called for a listener that got added before the client was instantiated
+ // call the unsubscribe function and remove it from memory
+
unsubscribeClientListeners.current[clientId][listenerId]();
delete unsubscribeClientListeners.current[clientId][listenerId];
}
@@ -502,9 +482,7 @@ export const useClient: UseClient = (
}
};
- /**
- * Effects
- */
+
useEffect(
function watchFileChanges() {
@@ -512,10 +490,10 @@ export const useClient: UseClient = (
return;
}
- /**
- * When the environment changes, Sandpack needs to make sure
- * to create a new client and the proper bundler
- */
+
+ // When the environment changes, Sandpack needs to make sure
+ // to create a new client and the proper bundler
+
if (prevEnvironment.current !== filesState.environment) {
prevEnvironment.current = filesState.environment;
@@ -526,9 +504,9 @@ export const useClient: UseClient = (
if (recompileMode === "immediate") {
Object.values(clients.current).forEach((client) => {
- /**
- * Avoid concurrency
- */
+
+ // Avoid concurrency
+
if (client.status === "done") {
client.updateSandbox({
files: filesState.files,
@@ -544,9 +522,9 @@ export const useClient: UseClient = (
window.clearTimeout(debounceHook.current);
debounceHook.current = window.setTimeout(() => {
Object.values(clients.current).forEach((client) => {
- /**
- * Avoid concurrency
- */
+
+ // Avoid concurrency
+
if (client.status === "done") {
client.updateSandbox({
files: filesState.files,
@@ -620,3 +598,4 @@ export const useClient: UseClient = (
},
];
};
+*/
diff --git a/sandpack-react/src/contexts/utils/useFiles.ts b/sandpack-react/src/contexts/utils/useFiles.ts
index 97752c3a0..5d78d8cf7 100644
--- a/sandpack-react/src/contexts/utils/useFiles.ts
+++ b/sandpack-react/src/contexts/utils/useFiles.ts
@@ -1,6 +1,4 @@
import type { SandpackBundlerFiles } from "@codesandbox/sandpack-client";
-import { normalizePath } from "@codesandbox/sandpack-client";
-import { useEffect, useState, useRef } from "react";
import type {
SandboxEnvironment,
@@ -9,10 +7,6 @@ import type {
SandpackProviderProps,
TemplateFiles,
} from "../..";
-import {
- convertedFilesToBundlerFiles,
- getSandpackStateFromProps,
-} from "../../utils/sandpackUtils";
export interface FilesState {
files: SandpackBundlerFiles;
@@ -20,6 +14,7 @@ export interface FilesState {
visibleFiles: Array | string>;
activeFile: TemplateFiles | string;
shouldUpdatePreview: boolean;
+ templateID?: string;
}
interface FilesOperations {
@@ -42,7 +37,7 @@ interface FilesOperations {
deleteFile: (path: string, shouldUpdatePreview?: boolean) => void;
}
-export type UseFiles = (props: SandpackProviderProps) => [
+export type UseFiles = (props: SandpackProviderProps) => [
FilesState & {
visibleFilesFromProps: Array<
TemplateFiles | string
@@ -51,6 +46,7 @@ export type UseFiles = (props: SandpackProviderProps) => [
FilesOperations
];
+/*
export const useFiles: UseFiles = (props) => {
const originalStateFromProps = getSandpackStateFromProps(props);
@@ -65,6 +61,20 @@ export const useFiles: UseFiles = (props) => {
}
}, [props.files, props.customSetup, props.template]);
+ useEffect(
+ function findActiveFileIfMissed() {
+ if (!state.activeFile) {
+ for (const file of DEFAULT_FILES_TO_OPEN) {
+ if (state.files[file]) {
+ setState((prev) => ({ ...prev, activeFile: file }));
+ break;
+ }
+ }
+ }
+ },
+ [state]
+ );
+
const updateFile = (
pathOrFiles: string | SandpackFiles,
code?: string,
@@ -190,3 +200,4 @@ export const useFiles: UseFiles = (props) => {
operations,
];
};
+*/
diff --git a/sandpack-react/src/hooks/useLoadingOverlayState.ts b/sandpack-react/src/hooks/useLoadingOverlayState.ts
index a45318ae6..79ca282f7 100644
--- a/sandpack-react/src/hooks/useLoadingOverlayState.ts
+++ b/sandpack-react/src/hooks/useLoadingOverlayState.ts
@@ -1,13 +1,10 @@
+import type * as sandpackEnv from "@codesandbox/sandpack-environments";
import * as React from "react";
-
-import { useSandpack } from "./useSandpack";
-
export type LoadingOverlayState =
| "LOADING"
| "PRE_FADING"
| "FADING"
- | "HIDDEN"
- | "TIMEOUT";
+ | "HIDDEN";
export const FADE_ANIMATION_DURATION = 200;
@@ -15,33 +12,28 @@ export const FADE_ANIMATION_DURATION = 200;
* @category Hooks
*/
export const useLoadingOverlayState = (
- clientId?: string,
- externalLoading?: boolean
+ preview: sandpackEnv.SandpackPreview
): LoadingOverlayState => {
- const { sandpack, listen } = useSandpack();
- const [state, setState] = React.useState("LOADING");
+ const [state, setState] = React.useState(
+ preview.status.current === "READY" ? "HIDDEN" : "LOADING"
+ );
/**
* Sandpack listener
*/
React.useEffect(() => {
- const unsubscribe = listen((message) => {
- if (message.type === "start" && message.firstLoad === true) {
- setState("LOADING");
- }
+ if (preview.status.current === "READY") {
+ return;
+ }
- if (message.type === "done") {
+ return preview.onStatusChange((status) => {
+ if (status.current === "READY") {
setState((prev) => {
return prev === "LOADING" ? "PRE_FADING" : "HIDDEN";
});
}
- }, clientId);
-
- return (): void => {
- unsubscribe();
- };
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, [clientId, sandpack.status === "idle"]);
+ });
+ }, [preview, state]);
/**
* Fading transient state
@@ -49,7 +41,7 @@ export const useLoadingOverlayState = (
React.useEffect(() => {
let fadeTimeout: NodeJS.Timer;
- if (state === "PRE_FADING" && !externalLoading) {
+ if (state === "PRE_FADING") {
setState("FADING");
} else if (state === "FADING") {
fadeTimeout = setTimeout(
@@ -61,15 +53,7 @@ export const useLoadingOverlayState = (
return (): void => {
clearTimeout(fadeTimeout);
};
- }, [state, externalLoading]);
-
- if (sandpack.status === "timeout") {
- return "TIMEOUT";
- }
-
- if (sandpack.status !== "running") {
- return "HIDDEN";
- }
+ }, [state]);
return state;
};
diff --git a/sandpack-react/src/hooks/usePreview.ts b/sandpack-react/src/hooks/usePreview.ts
new file mode 100644
index 000000000..990070220
--- /dev/null
+++ b/sandpack-react/src/hooks/usePreview.ts
@@ -0,0 +1,22 @@
+import type * as sandpackEnv from "@codesandbox/sandpack-environments";
+import React from "react";
+
+import { useSandbox } from "../contexts/SandpackSandboxContext";
+
+export function usePreview() {
+ const previewRef = React.useRef(null);
+ const { environment: env } = useSandbox();
+
+ if (!previewRef.current) {
+ previewRef.current = env.createPreview();
+ }
+
+ const preview = previewRef.current;
+
+ React.useSyncExternalStore(
+ (update) => preview.onStatusChange(update),
+ () => preview.status
+ );
+
+ return preview;
+}
diff --git a/sandpack-react/src/hooks/useSandpack.ts b/sandpack-react/src/hooks/useSandpack.ts
index d3a97d9d5..22dc82816 100644
--- a/sandpack-react/src/hooks/useSandpack.ts
+++ b/sandpack-react/src/hooks/useSandpack.ts
@@ -1,9 +1,9 @@
import * as React from "react";
-import { SandpackReactContext } from "../contexts/sandpackContext";
import type {
SandpackClientDispatch,
SandpackClientListen,
+ SandpackContext,
SandpackState,
} from "../types";
@@ -20,7 +20,7 @@ export interface UseSandpack {
* @category Hooks
*/
export function useSandpack(): UseSandpack {
- const sandpack = React.useContext(SandpackReactContext);
+ const sandpack = React.useContext(null as any) as unknown as SandpackContext;
if (sandpack === null) {
throw new Error(
diff --git a/sandpack-react/src/hooks/useSandpackPreviewProgress.ts b/sandpack-react/src/hooks/useSandpackPreviewProgress.ts
index 972809a06..dfee9c077 100644
--- a/sandpack-react/src/hooks/useSandpackPreviewProgress.ts
+++ b/sandpack-react/src/hooks/useSandpackPreviewProgress.ts
@@ -1,50 +1,43 @@
-import type { WorkerStatusUpdate } from "@codesandbox/nodebox";
+import type * as sandpackEnv from "@codesandbox/sandpack-environments";
import * as React from "react";
-import { useSandpack } from "./useSandpack";
-
-const mapProgressMessage = (
- originalMessage: WorkerStatusUpdate & { command?: string },
- firstTotalPending: number
-): string | null => {
- switch (originalMessage.state) {
- case "downloading_manifest":
- return "[1/3] Downloading manifest";
-
- case "downloaded_module":
- return `[2/3] Downloaded ${originalMessage.name} (${
- firstTotalPending - originalMessage.totalPending
- }/${firstTotalPending})`;
-
- case "starting_command":
- return "[3/3] Starting command";
-
- case "command_running":
- return `[3/3] Running "${originalMessage.command?.trim()}"`;
- }
-};
-
-export const useSandpackPreviewProgress = (
- props:
- | {
- timeout?: number;
- clientId?: string;
- }
- | undefined
-) => {
- const [isReady, setIsReady] = React.useState(false);
- const [totalDependencies, setTotalDependencies] = React.useState();
+export const useSandpackPreviewProgress = ({
+ preview,
+}: {
+ preview: sandpackEnv.SandpackPreview;
+}) => {
+ const [isReady, setIsReady] = React.useState(
+ preview.status.current === "READY"
+ );
const [loadingMessage, setLoadingMessage] = React.useState(
null
);
- const timeout = props?.timeout;
- const clientId = props?.clientId;
+ React.useEffect(() => {
+ if (isReady) {
+ return;
+ }
- const { listen } = useSandpack();
+ // TODO: Implement timeout in the environment
+ // let timer: NodeJS.Timer;
- React.useEffect(() => {
- let timer: NodeJS.Timer;
+ return preview.onStatusChange((status) => {
+ switch (status.current) {
+ case "ERROR": {
+ break;
+ }
+ case "LOADING": {
+ break;
+ }
+ case "READY": {
+ setLoadingMessage(null);
+ setIsReady(true);
+ break;
+ }
+ }
+ });
+ /*
+ TODO: Implement this stuff in the environment
const unsubscribe = listen((message) => {
if (message.type === "start" && message.firstLoad) {
setIsReady(false);
@@ -68,19 +61,9 @@ export const useSandpackPreviewProgress = (
case "starting":
return "[3/3] Starting";
}
-
- return null;
});
- } else if (message.type === "shell/progress" && !isReady) {
- if (!totalDependencies && message.data.state === "downloaded_module") {
- setTotalDependencies(message.data.totalPending);
- }
-
- if (totalDependencies !== undefined) {
- setLoadingMessage(
- mapProgressMessage(message.data, totalDependencies)
- );
- }
+ } else if (message.type === "vm/progress") {
+ setLoadingMessage(message.data);
}
if (message.type === "done" && message.compilatonError === false) {
@@ -96,7 +79,8 @@ export const useSandpackPreviewProgress = (
}
unsubscribe();
};
- }, [clientId, isReady, totalDependencies, timeout]);
+ */
+ }, [preview, isReady]);
return loadingMessage;
};
diff --git a/sandpack-react/src/hooks/useSandpackShell.ts b/sandpack-react/src/hooks/useSandpackShell.ts
index 547584531..bfd0b2e2b 100644
--- a/sandpack-react/src/hooks/useSandpackShell.ts
+++ b/sandpack-react/src/hooks/useSandpackShell.ts
@@ -1,4 +1,4 @@
-import { useSandpack } from "./useSandpack";
+// import { useSandpack } from "./useSandpack";
/**
* @category Hooks
@@ -9,10 +9,14 @@ export const useSandpackShell = (
restart: () => void;
openPreview: () => void;
} => {
- const { dispatch } = useSandpack();
+ // const { dispatch } = useSandpack();
return {
- restart: (): void => dispatch({ type: "shell/restart" }, clientId),
- openPreview: (): void => dispatch({ type: "shell/openPreview" }, clientId),
+ restart: (): void => {
+ // TODO
+ },
+ openPreview: (): void => {
+ // TODO
+ },
};
};
diff --git a/sandpack-react/src/index.ts b/sandpack-react/src/index.ts
index 3b5677948..7e5112fb1 100644
--- a/sandpack-react/src/index.ts
+++ b/sandpack-react/src/index.ts
@@ -8,7 +8,7 @@ export { useClassNames } from "./utils/classNames";
// Contexts
export { getCssText as getSandpackCssText } from "./styles";
export * from "./styles/themeContext";
-export * from "./contexts/sandpackContext";
+export * from "./components/SandpackProvider";
// Presets
export * from "./presets/";
diff --git a/sandpack-react/src/presets/Sandpack.tsx b/sandpack-react/src/presets/Sandpack.tsx
index fa74f1b03..527dd37b0 100644
--- a/sandpack-react/src/presets/Sandpack.tsx
+++ b/sandpack-react/src/presets/Sandpack.tsx
@@ -5,98 +5,101 @@ import type { CodeEditorProps } from "../components/CodeEditor";
import { SandpackCodeEditor } from "../components/CodeEditor";
import { SandpackConsole } from "../components/Console";
import { SandpackPreview } from "../components/Preview";
+import { SandpackProvider } from "../components/SandpackProvider";
import { SandpackTests } from "../components/Tests";
import { SandpackStack } from "../components/common";
import { SandpackLayout } from "../components/common/Layout";
import { RoundedButton } from "../components/common/RoundedButton";
import { ConsoleIcon } from "../components/icons";
-import { SandpackProvider } from "../contexts/sandpackContext";
import { css, THEME_PREFIX } from "../styles";
-import { SANDBOX_TEMPLATES } from "../templates";
-import type {
- SandpackInternal,
- SandpackInternalOptions,
- TemplateFiles,
- SandpackFiles,
- SandpackPredefinedTemplate,
-} from "../types";
+import type { SandpackProviderProps, SandpackCodeOptions } from "../types";
import { useClassNames } from "../utils/classNames";
-export const Sandpack: SandpackInternal = ({
- options,
- template,
- customSetup,
- files,
- theme,
+export type SandpackProps = SandpackProviderProps & {
+ editorWidthPercentage?: number;
+ editorHeight?: React.CSSProperties["height"];
+
+ /**
+ * right to left layout
+ * @default false
+ */
+ rtl?: boolean;
+ showNavigator?: boolean;
+ showLineNumbers?: boolean;
+ showInlineErrors?: boolean;
+ showRefreshButton?: boolean;
+ showTabs?: boolean;
+ showConsoleButton?: boolean;
+ showConsole?: boolean;
+ closableTabs?: boolean;
+ wrapContent?: boolean;
+ resizablePanels?: boolean;
+ codeEditor?: SandpackCodeOptions;
+
+ /**
+ * This disables editing of content by the user in all files.
+ */
+ readOnly?: boolean;
+
+ /**
+ * Controls the visibility of Read-only label, which will only
+ * appears when `readOnly` is `true`
+ */
+ showReadOnly?: boolean;
+
+ layout?: "preview" | "tests" | "console";
+};
+
+export function Sandpack({
+ resizablePanels,
+ editorWidthPercentage,
+ showConsole,
...props
-}) => {
- options ??= {};
- options.resizablePanels ??= true;
- options.editorWidthPercentage ??= 50;
- options.showConsole ??= false;
+}: SandpackProps) {
+ resizablePanels ??= true;
+ editorWidthPercentage ??= 50;
+ showConsole ??= false;
- const rtlLayout = options?.rtl ?? false;
+ const rtlLayout = props?.rtl ?? false;
const codeEditorOptions: CodeEditorProps = {
- showTabs: options.showTabs,
- showLineNumbers: options.showLineNumbers,
- showInlineErrors: options.showInlineErrors,
- wrapContent: options.wrapContent,
- closableTabs: options.closableTabs,
- initMode: options.initMode,
- extensions: options.codeEditor?.extensions,
- extensionsKeymap: options.codeEditor?.extensionsKeymap,
- readOnly: options.readOnly,
- showReadOnly: options.showReadOnly,
- additionalLanguages: options.codeEditor?.additionalLanguages,
- };
-
- const providerOptions: SandpackInternalOptions<
- SandpackFiles,
- SandpackPredefinedTemplate
- > = {
- /**
- * TS-why: Type 'string | number | symbol' is not assignable to type 'string'
- */
- activeFile: options.activeFile as unknown as string,
- visibleFiles: options.visibleFiles as unknown as string[],
- recompileMode: options.recompileMode,
- recompileDelay: options.recompileDelay,
- autorun: options.autorun,
- autoReload: options.autoReload,
- bundlerURL: options.bundlerURL,
- startRoute: options.startRoute,
- skipEval: options.skipEval,
- fileResolver: options.fileResolver,
- initMode: options.initMode,
- initModeObserverOptions: options.initModeObserverOptions,
- externalResources: options.externalResources,
- logLevel: options.logLevel,
- classes: options.classes,
- experimental_enableServiceWorker: options.experimental_enableServiceWorker,
- experimental_enableStableServiceWorkerId:
- options.experimental_enableStableServiceWorkerId,
+ showTabs: props.showTabs,
+ showLineNumbers: props.showLineNumbers,
+ showInlineErrors: props.showInlineErrors,
+ wrapContent: props.wrapContent,
+ closableTabs: props.closableTabs,
+ initMode: props.initMode,
+ extensions: props.codeEditor?.extensions,
+ extensionsKeymap: props.codeEditor?.extensionsKeymap,
+ readOnly: props.readOnly,
+ showReadOnly: props.showReadOnly,
+ additionalLanguages: props.codeEditor?.additionalLanguages,
};
/**
* Console
*/
- const [consoleVisibility, setConsoleVisibility] = React.useState(
- options.showConsole
- );
+ const [consoleVisibility, setConsoleVisibility] = React.useState(showConsole);
const [counter, setCounter] = React.useState(0);
- const hasRightColumn = options.showConsole || options.showConsoleButton;
-
- /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */
- const templateFiles = SANDBOX_TEMPLATES[template!] ?? {};
- const mode = (
- options?.layout
- ? options?.layout
- : "mode" in templateFiles
- ? templateFiles.mode
- : "preview"
- ) as typeof options.layout;
-
- const actionsChildren = options.showConsoleButton ? (
+ const hasRightColumn = showConsole || props.showConsoleButton;
+
+ function getMode() {
+ if (props?.layout) {
+ return props.layout;
+ }
+
+ // TODO: Do people actually use this?
+ /*
+ const templateFiles = SANDBOX_TEMPLATES[props.sandbox.template!];
+ if (typeof templateFiles === "object" && "mode" in templateFiles) {
+ return templateFiles.mode;
+ }
+ */
+
+ return "preview";
+ }
+ const mode = getMode();
+
+ const actionsChildren = props.showConsoleButton ? (
setConsoleVisibility((prev) => !prev)}
@@ -110,7 +113,7 @@ export const Sandpack: SandpackInternal = ({
const dragEventTargetRef = React.useRef(null);
const [horizontalSize, setHorizontalSize] = React.useState(
- options.editorWidthPercentage
+ editorWidthPercentage
);
const [verticalSize, setVerticalSize] = React.useState(70);
@@ -121,7 +124,7 @@ export const Sandpack: SandpackInternal = ({
flexBasis: 0,
width: 100 - horizontalSize + "%",
gap: consoleVisibility ? 1 : 0,
- height: options.editorHeight, // use the original editor height
+ height: props.editorHeight, // use the original editor height
};
const topRowStyle = hasRightColumn
@@ -179,7 +182,7 @@ export const Sandpack: SandpackInternal = ({
};
React.useEffect(() => {
- if (!options?.resizablePanels) return;
+ if (!resizablePanels) return;
document.body.addEventListener("mousemove", onDragMove);
document.body.addEventListener("mouseup", stopDragging);
@@ -187,11 +190,11 @@ export const Sandpack: SandpackInternal = ({
document.body.removeEventListener("mousemove", onDragMove);
document.body.removeEventListener("mouseup", stopDragging);
};
- }, [options]);
+ }, [resizablePanels]);
React.useEffect(() => {
- setConsoleVisibility(options?.showConsole ?? false);
- }, [options.showConsole]);
+ setConsoleVisibility(showConsole ?? false);
+ }, [showConsole]);
const rightColumnProps = hasRightColumn
? { className: THEME_PREFIX + "-preset-column", style: rightColumnStyle }
@@ -200,15 +203,7 @@ export const Sandpack: SandpackInternal = ({
const classNames = useClassNames();
return (
- }
- options={providerOptions}
- template={template}
- theme={theme}
- {...props}
- >
+
- {options.resizablePanels && (
+ {resizablePanels && (
)}
@@ -268,9 +263,9 @@ export const Sandpack: SandpackInternal = ({
/>
)}
- {(options.showConsoleButton || consoleVisibility) && (
+ {(props.showConsoleButton || consoleVisibility) && (
<>
- {options.resizablePanels && consoleVisibility && (
+ {resizablePanels && consoleVisibility && (
);
-};
+}
const dragHandler = css({
position: "absolute",
diff --git a/sandpack-react/src/templates/index.tsx b/sandpack-react/src/templates/index.tsx
index 5dcbbb2b9..5ed6b3559 100644
--- a/sandpack-react/src/templates/index.tsx
+++ b/sandpack-react/src/templates/index.tsx
@@ -1,15 +1,15 @@
-import { ASTRO_TEMPLATE } from "./node/astro";
-import { NEXTJS_TEMPLATE } from "./node/nexjs";
-import { NODE_TEMPLATE } from "./node/node";
-import { VITE_TEMPLATE } from "./node/vite";
-import { VITE_PREACT_TEMPLATE } from "./node/vite-preact";
-import { VITE_PREACT_TS_TEMPLATE } from "./node/vite-preact-ts";
-import { VITE_REACT_TEMPLATE } from "./node/vite-react";
-import { VITE_REACT_TS_TEMPLATE } from "./node/vite-react-ts";
-import { VITE_SVELTE_TEMPLATE } from "./node/vite-svelte";
-import { VITE_SVELTE_TS_TEMPLATE } from "./node/vite-svelte-ts";
-import { VITE_VUE_TEMPLATE } from "./node/vite-vue";
-import { VITE_VUE_TS_TEMPLATE } from "./node/vite-vue-ts";
+// import { ASTRO_TEMPLATE } from "./node/astro";
+// import { NEXTJS_TEMPLATE } from "./node/nexjs";
+// import { NODE_TEMPLATE } from "./node/node";
+// import { VITE_TEMPLATE } from "./node/vite";
+// import { VITE_PREACT_TEMPLATE } from "./node/vite-preact";
+// import { VITE_PREACT_TS_TEMPLATE } from "./node/vite-preact-ts";
+// import { VITE_REACT_TEMPLATE } from "./node/vite-react";
+// import { VITE_REACT_TS_TEMPLATE } from "./node/vite-react-ts";
+// import { VITE_SVELTE_TEMPLATE } from "./node/vite-svelte";
+// import { VITE_SVELTE_TS_TEMPLATE } from "./node/vite-svelte-ts";
+// import { VITE_VUE_TEMPLATE } from "./node/vite-vue";
+// import { VITE_VUE_TS_TEMPLATE } from "./node/vite-vue-ts";
import { ANGULAR_TEMPLATE } from "./runtime/angular";
import { REACT_TEMPLATE } from "./runtime/react";
import { REACT_TYPESCRIPT_TEMPLATE } from "./runtime/react-typescript";
@@ -45,16 +45,21 @@ export const SANDBOX_TEMPLATES = {
vue: VUE_TEMPLATE,
"vue-ts": VUE_TS_TEMPLATE,
- node: NODE_TEMPLATE,
- nextjs: NEXTJS_TEMPLATE,
- vite: VITE_TEMPLATE,
- "vite-react": VITE_REACT_TEMPLATE,
- "vite-react-ts": VITE_REACT_TS_TEMPLATE,
- "vite-preact": VITE_PREACT_TEMPLATE,
- "vite-preact-ts": VITE_PREACT_TS_TEMPLATE,
- "vite-vue": VITE_VUE_TEMPLATE,
- "vite-vue-ts": VITE_VUE_TS_TEMPLATE,
- "vite-svelte": VITE_SVELTE_TEMPLATE,
- "vite-svelte-ts": VITE_SVELTE_TS_TEMPLATE,
- astro: ASTRO_TEMPLATE,
+ // node: NODE_TEMPLATE,
+ // vite: VITE_TEMPLATE,
+ // "vite-react": VITE_REACT_TEMPLATE,
+ // "vite-react-ts": VITE_REACT_TS_TEMPLATE,
+ // "vite-preact": VITE_PREACT_TEMPLATE,
+ // "vite-preact-ts": VITE_PREACT_TS_TEMPLATE,
+ // "vite-vue": VITE_VUE_TEMPLATE,
+ // "vite-vue-ts": VITE_VUE_TS_TEMPLATE,
+ // "vite-svelte": VITE_SVELTE_TEMPLATE,
+ // "vite-svelte-ts": VITE_SVELTE_TS_TEMPLATE,
+ // astro: ASTRO_TEMPLATE,
+
+ nextjs: { environment: "vm", templateID: "1bvd7d" },
+ "vite-react-ts": { environment: "vm", templateID: "9qputt" }, // TODO: orignal template is `9qputt`
+ python: { environment: "vm", templateID: "in2qez" },
+ rust: { environment: "vm", templateID: "rk69p3" },
+ node: { environment: "vm", templateID: "compassionate-thompson-node" },
};
diff --git a/sandpack-react/src/templates/node/nexjs.ts b/sandpack-react/src/templates/node/nexjs.ts
index 1aeaf4542..304a6e44c 100644
--- a/sandpack-react/src/templates/node/nexjs.ts
+++ b/sandpack-react/src/templates/node/nexjs.ts
@@ -57,5 +57,5 @@ module.exports = nextConfig
},
},
main: "/pages/index.js",
- environment: "node",
+ environment: "vm",
};
diff --git a/sandpack-react/src/types.ts b/sandpack-react/src/types.ts
index e4082fc41..4b949ef8c 100644
--- a/sandpack-react/src/types.ts
+++ b/sandpack-react/src/types.ts
@@ -1,11 +1,9 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
-
import type { LanguageSupport } from "@codemirror/language";
import type {
BundlerState,
ListenerFunction,
ReactDevToolsMode,
- SandpackBundlerFiles,
SandpackClient,
SandpackError,
SandpackMessage,
@@ -13,6 +11,11 @@ import type {
SandpackLogLevel,
NpmRegistry,
} from "@codesandbox/sandpack-client";
+import type {
+ BundlerType,
+ SandpackEnvironmentOptions,
+} from "@codesandbox/sandpack-environments";
+import type { SessionData } from "@codesandbox/sdk";
import type React from "react";
import type { ClientPropsOverride } from "./contexts/utils/useClient";
@@ -29,7 +32,7 @@ import type { CodeEditorProps } from ".";
* general usage.
*/
-export interface SandpackProps {
+export interface OLDSandpackProps {
/**
* It accepts an object, where each key is the relative
* path of that file in the sandbox folder structure. Files passed in
@@ -75,12 +78,6 @@ export interface SandpackProps {
* of the sandbox, such as initialization mode, recompile mode, files resolver, etc.
*/
options?: SandpackOptions;
-
- /**
- * CodeSandbox team id: with this information, bundler can connect to CodeSandbox
- * and unlock a few capabilities, like private dependencies.
- */
- teamId?: string;
}
/**
@@ -172,6 +169,8 @@ export interface SandpackOptions {
skipEval?: boolean;
fileResolver?: FileResolver;
externalResources?: string[];
+
+ vmEnvironmentApiUrl?: (id: string) => string;
}
/**
@@ -273,7 +272,8 @@ export type SandboxEnvironment =
| "vue-cli"
| "static"
| "solid"
- | "node";
+ | "node"
+ | "vm";
/**
* @category Setup
@@ -406,7 +406,9 @@ export type SandpackThemeProp =
*/
export type TemplateFiles =
- keyof typeof SANDBOX_TEMPLATES[Name]["files"];
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore
+ keyof (typeof SANDBOX_TEMPLATES)[Name]["files"];
export interface SandpackInternal {
<
@@ -429,7 +431,7 @@ export interface SandpackInternalProvider {
* Infer files & template values
*/
props: React.PropsWithChildren<
- SandpackProviderProps & {
+ OLDSandpackProviderProps & {
files?: Files;
template?: TemplateName;
}
@@ -473,15 +475,10 @@ export interface SandpackInternalOptions<
recompileDelay?: number;
id?: string;
logLevel?: SandpackLogLevel;
- bundlerURL?: string;
bundlerTimeOut?: number;
startRoute?: string;
skipEval?: boolean;
- fileResolver?: FileResolver;
- externalResources?: string[];
classes?: Record;
- experimental_enableServiceWorker?: boolean;
- experimental_enableStableServiceWorkerId?: boolean;
}
interface SandpackInternalProps<
@@ -521,15 +518,120 @@ interface SandpackInternalProps<
showReadOnly?: boolean;
layout?: "preview" | "tests" | "console";
+ vmEnvironmentApiUrl?: (id: string) => string;
};
}
-export interface SandpackProviderProps<
+export type SandboxFiles = Record<
+ string,
+ {
+ code: string;
+ metadata?: object;
+ }
+>;
+
+export interface StaticSandbox {
+ environment: "static";
+ files: SandboxFiles;
+ externalResources?: string[];
+ entry: string;
+ sandboxId?: string;
+}
+
+export interface BundlerSandbox {
+ environment: "bundler";
+ bundler: BundlerType;
+ files: SandboxFiles;
+ externalResources?: string[];
+ entry: string;
+ sandboxId?: string;
+}
+
+export interface VMSandbox {
+ environment: "vm";
+ session: SessionData;
+ sandboxId?: string;
+}
+
+export type Sandbox = StaticSandbox | BundlerSandbox | VMSandbox;
+
+export type SandboxChangeEvent =
+ | {
+ type: "add";
+ path: string;
+ content: string;
+ }
+ | {
+ type: "update";
+ path: string;
+ content: string;
+ metadata: object;
+ }
+ | {
+ type: "delete";
+ path: string;
+ metadata: object;
+ };
+
+export type OnChangeFunction = (
+ event: SandboxChangeEvent,
+ sandbox: Sandbox
+) => void;
+
+export interface StaticSandboxConfiguration {
+ environment: "static";
+ activeFile?: string;
+ files: SandboxFiles;
+ externalResources?: string[];
+ entry: string;
+}
+
+export interface BundlerSandboxConfiguration {
+ environment: "bundler";
+ bundler: BundlerType;
+ activeFile?: string;
+ files: SandboxFiles;
+ externalResources?: string[];
+ entry: string;
+}
+
+// TODO: WIP
+export interface VMSandboxConfiguration {
+ environment: "vm";
+ activeFile?: string;
+ files: SandboxFiles;
+}
+
+export type SandboxConfiguration =
+ | StaticSandboxConfiguration
+ | BundlerSandboxConfiguration
+ | VMSandboxConfiguration;
+
+export interface SandpackProviderProps {
+ children?: React.ReactNode;
+ sandbox: SandboxConfiguration | (() => Promise);
+ onChange?: OnChangeFunction;
+ style?: React.CSSProperties;
+ className?: string;
+ environmentOptions?: {
+ [K in SandpackEnvironmentOptions["type"]]: SandpackEnvironmentOptions & {
+ type: K;
+ };
+ };
+ theme?: SandpackThemeProp;
+ classes?: Record;
+ initMode?: SandpackInitMode;
+ initModeObserverOptions?: IntersectionObserverInit;
+}
+
+export interface OLDSandpackProviderProps<
Files extends SandpackFiles = SandpackFiles,
TemplateName extends SandpackPredefinedTemplate = SandpackPredefinedTemplate
-> extends SandpackRootProps,
- React.HTMLAttributes {
+> extends SandpackRootProps {
+ style?: React.CSSProperties;
+ className?: string;
options?: SandpackInternalOptions;
+ environmentOptions?: SandpackEnvironmentOptions;
children?: React.ReactNode;
}
@@ -583,7 +685,7 @@ export interface SandpackState {
teamId?: string;
exportOptions?: SandpackExportOptions;
error: SandpackError | null;
- files: SandpackBundlerFiles;
+ files: SandboxFiles;
environment?: SandboxEnvironment;
status: SandpackStatus;
initMode: SandpackInitMode;
@@ -638,15 +740,6 @@ export type SandpackStatus =
export type EditorState = "pristine" | "dirty";
-export interface SandboxTemplate {
- files: SandpackBundlerFiles;
- dependencies: Record;
- devDependencies?: Record;
- entry?: string;
- main: string;
- environment: SandboxEnvironment;
-}
-
export type SandpackFiles = Record;
/**
@@ -682,7 +775,7 @@ export interface FileResolver {
}
export interface SandpackProviderState {
- files: SandpackBundlerFiles;
+ files: SandboxFiles;
environment?: SandboxEnvironment;
visibleFiles: Array | string>;
visibleFilesFromProps: Array<
diff --git a/sandpack-react/src/utils/sandpackUtils.ts b/sandpack-react/src/utils/sandpackUtils.ts
index fe4516565..c4349e006 100644
--- a/sandpack-react/src/utils/sandpackUtils.ts
+++ b/sandpack-react/src/utils/sandpackUtils.ts
@@ -1,21 +1,7 @@
-import type {
- SandpackBundlerFile,
- SandpackBundlerFiles,
-} from "@codesandbox/sandpack-client";
-import {
- addPackageJSONIfNeeded,
- normalizePath,
-} from "@codesandbox/sandpack-client";
-
-import { SANDBOX_TEMPLATES } from "../templates";
-import type {
- SandboxTemplate,
- SandpackPredefinedTemplate,
- SandpackProviderProps,
- SandpackSetup,
- SandpackFiles,
- SandboxEnvironment,
-} from "../types";
+import type { SandpackBundlerFile } from "@codesandbox/sandpack-client";
+import { normalizePath } from "@codesandbox/sandpack-client";
+
+import type { SandpackFiles, SandboxEnvironment } from "../types";
export interface SandpackContextInfo {
activeFile: string;
@@ -23,6 +9,7 @@ export interface SandpackContextInfo {
files: Record;
environment: SandboxEnvironment;
shouldUpdatePreview: true;
+ templateID?: string;
}
/**
@@ -31,6 +18,7 @@ export interface SandpackContextInfo {
* the reliable way to ensure a consistent and predictable
* sandpack-content throughout application
*/
+/*
export const getSandpackStateFromProps = (
props: SandpackProviderProps
): SandpackContextInfo => {
@@ -72,17 +60,15 @@ export const getSandpackStateFromProps = (
});
}
- if (visibleFiles.length === 0) {
+ if (visibleFiles.length === 0 && projectSetup.main) {
// If no files are received, use the project setup / template
visibleFiles = [projectSetup.main];
}
// Make sure it resolves the entry file
if (projectSetup.entry && !projectSetup.files[projectSetup.entry]) {
- /* eslint-disable */
// @ts-ignore
projectSetup.entry = resolveFile(projectSetup.entry, projectSetup.files);
- /* eslint-enable */
}
if (!activeFile && projectSetup.main) {
@@ -99,24 +85,29 @@ export const getSandpackStateFromProps = (
visibleFiles.push(activeFile);
}
- const files = addPackageJSONIfNeeded(
- projectSetup.files,
- projectSetup.dependencies ?? {},
- projectSetup.devDependencies ?? {},
- projectSetup.entry
- );
+ let files = projectSetup.files;
+
+ if (projectSetup.environment !== "vm") {
+ files = addPackageJSONIfNeeded(
+ projectSetup.files,
+ projectSetup.dependencies ?? {},
+ projectSetup.devDependencies ?? {},
+ projectSetup.entry
+ );
+ }
const existOpenPath = visibleFiles.filter((path) => files[path]);
return {
visibleFiles: existOpenPath,
- /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */
- activeFile: activeFile!,
+ activeFile: activeFile,
files,
environment: projectSetup.environment,
shouldUpdatePreview: true,
+ templateID: projectSetup.templateID,
};
};
+*/
/**
* Given a file tree and a file, it uses a couple of rules
@@ -164,6 +155,7 @@ export const resolveFile = (
* The setup can overwrite anything from the template
* (eg: files, dependencies, environment, etc.)
*/
+/*
const combineTemplateFilesToSetup = ({
files,
template,
@@ -210,6 +202,20 @@ const combineTemplateFilesToSetup = ({
);
}
+
+ // Sandbox template id for VM env
+
+ if (baseTemplate.templateID) {
+ return {
+ files: convertedFilesToBundlerFiles(files),
+ dependencies: customSetup?.dependencies ?? {},
+ devDependencies: customSetup?.devDependencies,
+ entry: normalizePath(customSetup?.entry),
+ environment: customSetup?.environment || baseTemplate.environment,
+ templateID: baseTemplate.templateID,
+ };
+ }
+
// If no setup and not files, the template is used entirely
if (!customSetup && !files) {
return baseTemplate;
@@ -217,15 +223,15 @@ const combineTemplateFilesToSetup = ({
// Merge the setup on top of the template
return {
- /**
- * The input setup might have files in the simple form Record
- * so we convert them to the sandbox template format
- */
+
+ // The input setup might have files in the simple form Record
+ // so we convert them to the sandbox template format
+
files: convertedFilesToBundlerFiles({ ...baseTemplate.files, ...files }),
- /**
- * Merge template dependencies and user custom dependencies.
- * As a rule, the custom dependencies must overwrite the template ones.
- */
+
+ // Merge template dependencies and user custom dependencies.
+ // As a rule, the custom dependencies must overwrite the template ones.
+
dependencies: {
...baseTemplate.dependencies,
...customSetup?.dependencies,
@@ -240,13 +246,13 @@ const combineTemplateFilesToSetup = ({
} as SandboxTemplate;
};
-/**
- * Transform an regular object, which contain files to
- * an object that sandpack-client can understand
- *
- * From: Record
- * To: Record
- */
+
+ // Transform an regular object, which contain files to
+ // an object that sandpack-client can understand
+
+ // From: Record
+ // To: Record
+
export const convertedFilesToBundlerFiles = (
files?: SandpackFiles
): SandpackBundlerFiles => {
@@ -262,3 +268,27 @@ export const convertedFilesToBundlerFiles = (
return acc;
}, {});
};
+
+export const DEFAULT_FILES_TO_OPEN = [
+ "/src/App.js",
+ "/src/App.tsx",
+ "/src/index.js",
+ "/src/index.ts",
+ "/src/index.tsx",
+ "/app/page.tsx",
+ "/app/page.jsx",
+ "/index.js",
+ "/index.ts",
+ "/src/main.tsx",
+ "/src/main.jsx",
+ "/main.ts",
+ "/src/main.rs",
+ "/src/lib.rs",
+ "/index.html",
+ "/src/index.html",
+ "/src/index.vue",
+ "/src/App.vue",
+ "/src/main.astro",
+ "/package.json",
+];
+*/
diff --git a/sandpack-react/tsconfig.json b/sandpack-react/tsconfig.json
index a6c9ab29c..21a8b2da0 100644
--- a/sandpack-react/tsconfig.json
+++ b/sandpack-react/tsconfig.json
@@ -2,6 +2,9 @@
"compilerOptions": {
"lib": ["es2015", "es2016", "es2017", "dom"],
"strict": true,
+ "target": "ES2015",
+ "moduleResolution": "node",
+ "esModuleInterop": true,
"sourceMap": false,
"emitDeclarationOnly": true,
"declaration": true,
diff --git a/website/codesandbox-theme-docs/src/index.tsx b/website/codesandbox-theme-docs/src/index.tsx
index a85633965..4f70909b2 100644
--- a/website/codesandbox-theme-docs/src/index.tsx
+++ b/website/codesandbox-theme-docs/src/index.tsx
@@ -90,7 +90,10 @@ const Body = ({
"nextra-body-typesetting-article"
)}
>
-
+
{breadcrumb}
{body}
diff --git a/website/docs/next-env.d.ts b/website/docs/next-env.d.ts
index 4f11a03dc..a4a7b3f5c 100644
--- a/website/docs/next-env.d.ts
+++ b/website/docs/next-env.d.ts
@@ -2,4 +2,4 @@
///
// NOTE: This file should not be edited
-// see https://nextjs.org/docs/basic-features/typescript for more information.
+// see https://nextjs.org/docs/pages/building-your-application/configuring/typescript for more information.
diff --git a/yarn.lock b/yarn.lock
index 40687fa2c..91724ace1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -65,6 +65,15 @@
"@babel/highlight" "^7.22.13"
chalk "^2.4.2"
+"@babel/code-frame@^7.26.2":
+ version "7.26.2"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85"
+ integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.25.9"
+ js-tokens "^4.0.0"
+ picocolors "^1.0.0"
+
"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.19.4", "@babel/compat-data@^7.20.0":
version "7.20.5"
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.5.tgz#86f172690b093373a933223b4745deeb6049e733"
@@ -75,6 +84,11 @@
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc"
integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==
+"@babel/compat-data@^7.26.8":
+ version "7.26.8"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.8.tgz#821c1d35641c355284d4a870b8a4a7b0c141e367"
+ integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==
+
"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0":
version "7.20.5"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.5.tgz#45e2114dc6cd4ab167f81daf7820e8fa1250d113"
@@ -117,6 +131,27 @@
json5 "^2.2.3"
semver "^6.3.1"
+"@babel/core@^7.26.0":
+ version "7.26.10"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.10.tgz#5c876f83c8c4dcb233ee4b670c0606f2ac3000f9"
+ integrity sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==
+ dependencies:
+ "@ampproject/remapping" "^2.2.0"
+ "@babel/code-frame" "^7.26.2"
+ "@babel/generator" "^7.26.10"
+ "@babel/helper-compilation-targets" "^7.26.5"
+ "@babel/helper-module-transforms" "^7.26.0"
+ "@babel/helpers" "^7.26.10"
+ "@babel/parser" "^7.26.10"
+ "@babel/template" "^7.26.9"
+ "@babel/traverse" "^7.26.10"
+ "@babel/types" "^7.26.10"
+ convert-source-map "^2.0.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.3"
+ semver "^6.3.1"
+
"@babel/generator@^7.20.5", "@babel/generator@^7.7.2":
version "7.20.5"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.5.tgz#cb25abee3178adf58d6814b68517c62bdbfdda95"
@@ -136,6 +171,17 @@
"@jridgewell/trace-mapping" "^0.3.17"
jsesc "^2.5.1"
+"@babel/generator@^7.26.10", "@babel/generator@^7.27.0":
+ version "7.27.0"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.0.tgz#764382b5392e5b9aff93cadb190d0745866cbc2c"
+ integrity sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==
+ dependencies:
+ "@babel/parser" "^7.27.0"
+ "@babel/types" "^7.27.0"
+ "@jridgewell/gen-mapping" "^0.3.5"
+ "@jridgewell/trace-mapping" "^0.3.25"
+ jsesc "^3.0.2"
+
"@babel/helper-annotate-as-pure@^7.16.7", "@babel/helper-annotate-as-pure@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb"
@@ -186,6 +232,17 @@
lru-cache "^5.1.1"
semver "^6.3.1"
+"@babel/helper-compilation-targets@^7.26.5":
+ version "7.27.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz#de0c753b1cd1d9ab55d473c5a5cf7170f0a81880"
+ integrity sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==
+ dependencies:
+ "@babel/compat-data" "^7.26.8"
+ "@babel/helper-validator-option" "^7.25.9"
+ browserslist "^4.24.0"
+ lru-cache "^5.1.1"
+ semver "^6.3.1"
+
"@babel/helper-create-class-features-plugin@^7.17.12", "@babel/helper-create-class-features-plugin@^7.18.6":
version "7.19.0"
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz#bfd6904620df4e46470bae4850d66be1054c404b"
@@ -329,6 +386,14 @@
dependencies:
"@babel/types" "^7.22.15"
+"@babel/helper-module-imports@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715"
+ integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==
+ dependencies:
+ "@babel/traverse" "^7.25.9"
+ "@babel/types" "^7.25.9"
+
"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.0", "@babel/helper-module-transforms@^7.20.2":
version "7.20.2"
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712"
@@ -354,6 +419,15 @@
"@babel/helper-split-export-declaration" "^7.22.6"
"@babel/helper-validator-identifier" "^7.22.20"
+"@babel/helper-module-transforms@^7.26.0":
+ version "7.26.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae"
+ integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==
+ dependencies:
+ "@babel/helper-module-imports" "^7.25.9"
+ "@babel/helper-validator-identifier" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
+
"@babel/helper-optimise-call-expression@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe"
@@ -378,6 +452,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295"
integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==
+"@babel/helper-plugin-utils@^7.25.9":
+ version "7.26.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz#18580d00c9934117ad719392c4f6585c9333cc35"
+ integrity sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==
+
"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9":
version "7.18.9"
resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519"
@@ -469,6 +548,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f"
integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==
+"@babel/helper-string-parser@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c"
+ integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==
+
"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1":
version "7.19.1"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
@@ -479,6 +563,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0"
integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==
+"@babel/helper-validator-identifier@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7"
+ integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
+
"@babel/helper-validator-option@^7.16.7", "@babel/helper-validator-option@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8"
@@ -489,6 +578,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040"
integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==
+"@babel/helper-validator-option@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72"
+ integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==
+
"@babel/helper-wrap-function@^7.18.9":
version "7.19.0"
resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz#89f18335cff1152373222f76a4b37799636ae8b1"
@@ -526,6 +620,14 @@
"@babel/traverse" "^7.23.2"
"@babel/types" "^7.23.0"
+"@babel/helpers@^7.26.10":
+ version "7.27.0"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.0.tgz#53d156098defa8243eab0f32fa17589075a1b808"
+ integrity sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==
+ dependencies:
+ "@babel/template" "^7.27.0"
+ "@babel/types" "^7.27.0"
+
"@babel/highlight@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf"
@@ -554,6 +656,13 @@
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719"
integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==
+"@babel/parser@^7.26.10", "@babel/parser@^7.27.0":
+ version "7.27.0"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.0.tgz#3d7d6ee268e41d2600091cbd4e145ffee85a44ec"
+ integrity sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==
+ dependencies:
+ "@babel/types" "^7.27.0"
+
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2"
@@ -1427,6 +1536,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.22.5"
+"@babel/plugin-transform-react-jsx-self@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz#c0b6cae9c1b73967f7f9eb2fca9536ba2fad2858"
+ integrity sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
"@babel/plugin-transform-react-jsx-source@^7.19.6":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz#49af1615bfdf6ed9d3e9e43e425e0b2b65d15b6c"
@@ -1434,6 +1550,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.22.5"
+"@babel/plugin-transform-react-jsx-source@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz#4c6b8daa520b5f155b5fb55547d7c9fa91417503"
+ integrity sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.25.9"
+
"@babel/plugin-transform-react-jsx@^7.17.12", "@babel/plugin-transform-react-jsx@^7.18.6":
version "7.19.0"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz#b3cbb7c3a00b92ec8ae1027910e331ba5c500eb9"
@@ -1911,6 +2034,15 @@
"@babel/parser" "^7.22.15"
"@babel/types" "^7.22.15"
+"@babel/template@^7.26.9", "@babel/template@^7.27.0":
+ version "7.27.0"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.0.tgz#b253e5406cc1df1c57dcd18f11760c2dbf40c0b4"
+ integrity sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==
+ dependencies:
+ "@babel/code-frame" "^7.26.2"
+ "@babel/parser" "^7.27.0"
+ "@babel/types" "^7.27.0"
+
"@babel/traverse@^7.18.9", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.20.1", "@babel/traverse@^7.20.5", "@babel/traverse@^7.22.8", "@babel/traverse@^7.23.2", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2":
version "7.23.2"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8"
@@ -1927,6 +2059,19 @@
debug "^4.1.0"
globals "^11.1.0"
+"@babel/traverse@^7.25.9", "@babel/traverse@^7.26.10":
+ version "7.27.0"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.0.tgz#11d7e644779e166c0442f9a07274d02cd91d4a70"
+ integrity sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==
+ dependencies:
+ "@babel/code-frame" "^7.26.2"
+ "@babel/generator" "^7.27.0"
+ "@babel/parser" "^7.27.0"
+ "@babel/template" "^7.27.0"
+ "@babel/types" "^7.27.0"
+ debug "^4.3.1"
+ globals "^11.1.0"
+
"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.4", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0":
version "7.20.5"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.5.tgz#e206ae370b5393d94dfd1d04cd687cace53efa84"
@@ -1945,6 +2090,14 @@
"@babel/helper-validator-identifier" "^7.22.20"
to-fast-properties "^2.0.0"
+"@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.27.0":
+ version "7.27.0"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.0.tgz#ef9acb6b06c3173f6632d993ecb6d4ae470b4559"
+ integrity sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==
+ dependencies:
+ "@babel/helper-string-parser" "^7.25.9"
+ "@babel/helper-validator-identifier" "^7.25.9"
+
"@base2/pretty-print-object@1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz#371ba8be66d556812dc7fb169ebc3c08378f69d4"
@@ -2064,13 +2217,40 @@
style-mod "^4.0.0"
w3c-keyname "^2.2.4"
-"@codesandbox/nodebox@0.1.8":
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/@codesandbox/nodebox/-/nodebox-0.1.8.tgz#2dc701005cedefac386f17a69a4c9a4f38c2325d"
- integrity sha512-2VRS6JDSk+M+pg56GA6CryyUSGPjBEe8Pnae0QL3jJF1mJZJVMDKr93gJRtBbLkfZN6LD/DwMtf+2L0bpWrjqg==
- dependencies:
- outvariant "^1.4.0"
- strict-event-emitter "^0.4.3"
+"@codesandbox/sandpack-react@workspace:*":
+ version "2.20.0"
+ resolved "https://registry.yarnpkg.com/@codesandbox/sandpack-react/-/sandpack-react-2.20.0.tgz#b298ad7159d01ae415a35612738a68251bc01323"
+ integrity sha512-takd1YpW/PMQ6KPQfvseWLHWklJovGY8QYj8MtWnskGKbjOGJ6uZfyZbcJ6aCFLQMpNyjTqz9AKNbvhCOZ1TUQ==
+ dependencies:
+ "@codemirror/autocomplete" "^6.4.0"
+ "@codemirror/commands" "^6.1.3"
+ "@codemirror/lang-css" "^6.0.1"
+ "@codemirror/lang-html" "^6.4.0"
+ "@codemirror/lang-javascript" "^6.1.2"
+ "@codemirror/language" "^6.3.2"
+ "@codemirror/state" "^6.2.0"
+ "@codemirror/view" "^6.7.1"
+ "@codesandbox/sandpack-client" "^2.19.8"
+ "@lezer/highlight" "^1.1.3"
+ "@react-hook/intersection-observer" "^3.1.1"
+ "@stitches/core" "^1.2.6"
+ anser "^2.1.1"
+ clean-set "^1.1.2"
+ dequal "^2.0.2"
+ escape-carriage "^1.3.1"
+ lz-string "^1.4.4"
+ react-devtools-inline "4.4.0"
+ react-is "^17.0.2"
+
+"@codesandbox/sdk@^0.11.1":
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/@codesandbox/sdk/-/sdk-0.11.1.tgz#026a9164093e8f3dbdab1ab5afaf4137e823b11f"
+ integrity sha512-MKil+626cDuHOZTuHukAVgOyk3GIogDXLJPnPpCTQNwVq49UaEN6BlkEIuWmSOWE09X66lbXmuU96lJKUJ4aDA==
+
+"@codesandbox/sdk@workspace:*":
+ version "0.11.2"
+ resolved "https://registry.yarnpkg.com/@codesandbox/sdk/-/sdk-0.11.2.tgz#2710e9156d6416779072bf37f734761767a08e1a"
+ integrity sha512-sn8+rdrdfRiQ/BeJxHLLXV+J1fiMtL0KGCgFzN8tg/VEHQVvVD31o1xL6j8pg9fm2FVPFWCnZbhMFaj6jOaqyQ==
"@colors/colors@1.5.0":
version "1.5.0"
@@ -2184,11 +2364,21 @@
resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46"
integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==
+"@esbuild/aix-ppc64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz#b87036f644f572efb2b3c75746c97d1d2d87ace8"
+ integrity sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==
+
"@esbuild/android-arm64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622"
integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==
+"@esbuild/android-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz#5ca7dc20a18f18960ad8d5e6ef5cf7b0a256e196"
+ integrity sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==
+
"@esbuild/android-arm@0.15.13":
version "0.15.13"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.13.tgz#ce11237a13ee76d5eae3908e47ba4ddd380af86a"
@@ -2199,46 +2389,91 @@
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682"
integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==
+"@esbuild/android-arm@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.2.tgz#3c49f607b7082cde70c6ce0c011c362c57a194ee"
+ integrity sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==
+
"@esbuild/android-x64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2"
integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==
+"@esbuild/android-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.2.tgz#8a00147780016aff59e04f1036e7cb1b683859e2"
+ integrity sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==
+
"@esbuild/darwin-arm64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1"
integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==
+"@esbuild/darwin-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz#486efe7599a8d90a27780f2bb0318d9a85c6c423"
+ integrity sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==
+
"@esbuild/darwin-x64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d"
integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==
+"@esbuild/darwin-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz#95ee222aacf668c7a4f3d7ee87b3240a51baf374"
+ integrity sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==
+
"@esbuild/freebsd-arm64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54"
integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==
+"@esbuild/freebsd-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz#67efceda8554b6fc6a43476feba068fb37fa2ef6"
+ integrity sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==
+
"@esbuild/freebsd-x64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e"
integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==
+"@esbuild/freebsd-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz#88a9d7ecdd3adadbfe5227c2122d24816959b809"
+ integrity sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==
+
"@esbuild/linux-arm64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0"
integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==
+"@esbuild/linux-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz#87be1099b2bbe61282333b084737d46bc8308058"
+ integrity sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==
+
"@esbuild/linux-arm@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0"
integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==
+"@esbuild/linux-arm@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz#72a285b0fe64496e191fcad222185d7bf9f816f6"
+ integrity sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==
+
"@esbuild/linux-ia32@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7"
integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==
+"@esbuild/linux-ia32@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz#337a87a4c4dd48a832baed5cbb022be20809d737"
+ integrity sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==
+
"@esbuild/linux-loong64@0.15.13":
version "0.15.13"
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.13.tgz#64e8825bf0ce769dac94ee39d92ebe6272020dfc"
@@ -2249,61 +2484,131 @@
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d"
integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==
+"@esbuild/linux-loong64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz#1b81aa77103d6b8a8cfa7c094ed3d25c7579ba2a"
+ integrity sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==
+
"@esbuild/linux-mips64el@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231"
integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==
+"@esbuild/linux-mips64el@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz#afbe380b6992e7459bf7c2c3b9556633b2e47f30"
+ integrity sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==
+
"@esbuild/linux-ppc64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb"
integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==
+"@esbuild/linux-ppc64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz#6bf8695cab8a2b135cca1aa555226dc932d52067"
+ integrity sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==
+
"@esbuild/linux-riscv64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6"
integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==
+"@esbuild/linux-riscv64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz#43c2d67a1a39199fb06ba978aebb44992d7becc3"
+ integrity sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==
+
"@esbuild/linux-s390x@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071"
integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==
+"@esbuild/linux-s390x@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz#419e25737ec815c6dce2cd20d026e347cbb7a602"
+ integrity sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==
+
"@esbuild/linux-x64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338"
integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==
+"@esbuild/linux-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz#22451f6edbba84abe754a8cbd8528ff6e28d9bcb"
+ integrity sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==
+
+"@esbuild/netbsd-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz#744affd3b8d8236b08c5210d828b0698a62c58ac"
+ integrity sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==
+
"@esbuild/netbsd-x64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1"
integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==
+"@esbuild/netbsd-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz#dbbe7521fd6d7352f34328d676af923fc0f8a78f"
+ integrity sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==
+
+"@esbuild/openbsd-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz#f9caf987e3e0570500832b487ce3039ca648ce9f"
+ integrity sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==
+
"@esbuild/openbsd-x64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae"
integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==
+"@esbuild/openbsd-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz#d2bb6a0f8ffea7b394bb43dfccbb07cabd89f768"
+ integrity sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==
+
"@esbuild/sunos-x64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d"
integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==
+"@esbuild/sunos-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz#49b437ed63fe333b92137b7a0c65a65852031afb"
+ integrity sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==
+
"@esbuild/win32-arm64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9"
integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==
+"@esbuild/win32-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz#081424168463c7d6c7fb78f631aede0c104373cf"
+ integrity sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==
+
"@esbuild/win32-ia32@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102"
integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==
+"@esbuild/win32-ia32@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz#3f9e87143ddd003133d21384944a6c6cadf9693f"
+ integrity sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==
+
"@esbuild/win32-x64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d"
integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==
+"@esbuild/win32-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz#839f72c2decd378f86b8f525e1979a97b920c67d"
+ integrity sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==
+
"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
version "4.4.0"
resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
@@ -2613,6 +2918,15 @@
"@jridgewell/sourcemap-codec" "^1.4.10"
"@jridgewell/trace-mapping" "^0.3.9"
+"@jridgewell/gen-mapping@^0.3.5":
+ version "0.3.8"
+ resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142"
+ integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==
+ dependencies:
+ "@jridgewell/set-array" "^1.2.1"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+ "@jridgewell/trace-mapping" "^0.3.24"
+
"@jridgewell/resolve-uri@^3.0.3":
version "3.0.7"
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe"
@@ -2628,6 +2942,11 @@
resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
+"@jridgewell/set-array@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280"
+ integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
+
"@jridgewell/source-map@^0.3.3":
version "0.3.5"
resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91"
@@ -2646,6 +2965,11 @@
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
+"@jridgewell/sourcemap-codec@^1.5.0":
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a"
+ integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
+
"@jridgewell/trace-mapping@^0.3.17":
version "0.3.20"
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f"
@@ -2654,6 +2978,14 @@
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
+"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
+ version "0.3.25"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0"
+ integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.1.0"
+ "@jridgewell/sourcemap-codec" "^1.4.14"
+
"@jridgewell/trace-mapping@^0.3.9":
version "0.3.13"
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea"
@@ -3451,53 +3783,53 @@
resolved "https://registry.yarnpkg.com/@react-hook/passive-layout-effect/-/passive-layout-effect-1.2.1.tgz#c06dac2d011f36d61259aa1c6df4f0d5e28bc55e"
integrity sha512-IwEphTD75liO8g+6taS+4oqz+nnroocNfWVHWz7j+N+ZO2vYrc6PV1q7GQhuahL0IOR7JccFTsFKQ/mb6iZWAg==
-"@rollup/plugin-commonjs@^24.0.0":
- version "24.0.0"
- resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-24.0.0.tgz#fb7cf4a6029f07ec42b25daa535c75b05a43f75c"
- integrity sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==
+"@rollup/plugin-commonjs@^28.0.3":
+ version "28.0.3"
+ resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.3.tgz#44c2cc7c955c6113b96696b55e6bc2446bd67913"
+ integrity sha512-pyltgilam1QPdn+Zd9gaCfOLcnjMEJ9gV+bTw6/r73INdvzf1ah9zLIJBm+kW7R6IUFIQ1YO+VqZtYxZNWFPEQ==
dependencies:
"@rollup/pluginutils" "^5.0.1"
commondir "^1.0.1"
estree-walker "^2.0.2"
- glob "^8.0.3"
+ fdir "^6.2.0"
is-reference "1.2.1"
- magic-string "^0.27.0"
+ magic-string "^0.30.3"
+ picomatch "^4.0.2"
-"@rollup/plugin-node-resolve@^15.0.1":
- version "15.0.1"
- resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.1.tgz#72be449b8e06f6367168d5b3cd5e2802e0248971"
- integrity sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==
+"@rollup/plugin-node-resolve@^16.0.1":
+ version "16.0.1"
+ resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.1.tgz#2fc6b54ca3d77e12f3fb45b2a55b50720de4c95d"
+ integrity sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA==
dependencies:
"@rollup/pluginutils" "^5.0.1"
"@types/resolve" "1.20.2"
deepmerge "^4.2.2"
- is-builtin-module "^3.2.0"
is-module "^1.0.0"
resolve "^1.22.1"
-"@rollup/plugin-replace@^5.0.2":
- version "5.0.2"
- resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.2.tgz#45f53501b16311feded2485e98419acb8448c61d"
- integrity sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==
+"@rollup/plugin-replace@^6.0.2":
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-6.0.2.tgz#2f565d312d681e4570ff376c55c5c08eb6f1908d"
+ integrity sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==
dependencies:
"@rollup/pluginutils" "^5.0.1"
- magic-string "^0.27.0"
+ magic-string "^0.30.3"
-"@rollup/plugin-terser@^0.4.0":
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/@rollup/plugin-terser/-/plugin-terser-0.4.0.tgz#4c76249ad337f3eb04ab409332f23717af2c1fbf"
- integrity sha512-Ipcf3LPNerey1q9ZMjiaWHlNPEHNU/B5/uh9zXLltfEQ1lVSLLeZSgAtTPWGyw8Ip1guOeq+mDtdOlEj/wNxQw==
+"@rollup/plugin-terser@^0.4.4":
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz#15dffdb3f73f121aa4fbb37e7ca6be9aeea91962"
+ integrity sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==
dependencies:
- serialize-javascript "^6.0.0"
- smob "^0.0.6"
- terser "^5.15.1"
+ serialize-javascript "^6.0.1"
+ smob "^1.0.0"
+ terser "^5.17.4"
-"@rollup/plugin-typescript@^10.0.1":
- version "10.0.1"
- resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-10.0.1.tgz#270b515b116ea28320e6bb62451c4767d49072d6"
- integrity sha512-wBykxRLlX7EzL8BmUqMqk5zpx2onnmRMSw/l9M1sVfkJvdwfxogZQVNUM9gVMJbjRLDR5H6U0OMOrlDGmIV45A==
+"@rollup/plugin-typescript@^12.1.2":
+ version "12.1.2"
+ resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-12.1.2.tgz#ebaeec2e7376faa889030ccd7cb485a649e63118"
+ integrity sha512-cdtSp154H5sv637uMr1a8OTWB0L1SWDSm1rDGiyfcGcvQ6cuTs4MDk2BVEBGysUWago4OJN4EQZqOTl/QY3Jgg==
dependencies:
- "@rollup/pluginutils" "^5.0.1"
+ "@rollup/pluginutils" "^5.1.0"
resolve "^1.22.1"
"@rollup/pluginutils@^5.0.1":
@@ -3518,6 +3850,115 @@
estree-walker "^2.0.2"
picomatch "^2.3.1"
+"@rollup/pluginutils@^5.1.0":
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.4.tgz#bb94f1f9eaaac944da237767cdfee6c5b2262d4a"
+ integrity sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==
+ dependencies:
+ "@types/estree" "^1.0.0"
+ estree-walker "^2.0.2"
+ picomatch "^4.0.2"
+
+"@rollup/rollup-android-arm-eabi@4.39.0":
+ version "4.39.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.39.0.tgz#1d8cc5dd3d8ffe569d8f7f67a45c7909828a0f66"
+ integrity sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==
+
+"@rollup/rollup-android-arm64@4.39.0":
+ version "4.39.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.39.0.tgz#9c136034d3d9ed29d0b138c74dd63c5744507fca"
+ integrity sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==
+
+"@rollup/rollup-darwin-arm64@4.39.0":
+ version "4.39.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.39.0.tgz#830d07794d6a407c12b484b8cf71affd4d3800a6"
+ integrity sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==
+
+"@rollup/rollup-darwin-x64@4.39.0":
+ version "4.39.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.39.0.tgz#b26f0f47005c1fa5419a880f323ed509dc8d885c"
+ integrity sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==
+
+"@rollup/rollup-freebsd-arm64@4.39.0":
+ version "4.39.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.39.0.tgz#2b60c81ac01ff7d1bc8df66aee7808b6690c6d19"
+ integrity sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==
+
+"@rollup/rollup-freebsd-x64@4.39.0":
+ version "4.39.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.39.0.tgz#4826af30f4d933d82221289068846c9629cc628c"
+ integrity sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==
+
+"@rollup/rollup-linux-arm-gnueabihf@4.39.0":
+ version "4.39.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.39.0.tgz#a1f4f963d5dcc9e5575c7acf9911824806436bf7"
+ integrity sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==
+
+"@rollup/rollup-linux-arm-musleabihf@4.39.0":
+ version "4.39.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.39.0.tgz#e924b0a8b7c400089146f6278446e6b398b75a06"
+ integrity sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==
+
+"@rollup/rollup-linux-arm64-gnu@4.39.0":
+ version "4.39.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.39.0.tgz#cb43303274ec9a716f4440b01ab4e20c23aebe20"
+ integrity sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==
+
+"@rollup/rollup-linux-arm64-musl@4.39.0":
+ version "4.39.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.39.0.tgz#531c92533ce3d167f2111bfcd2aa1a2041266987"
+ integrity sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==
+
+"@rollup/rollup-linux-loongarch64-gnu@4.39.0":
+ version "4.39.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.39.0.tgz#53403889755d0c37c92650aad016d5b06c1b061a"
+ integrity sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==
+
+"@rollup/rollup-linux-powerpc64le-gnu@4.39.0":
+ version "4.39.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.39.0.tgz#f669f162e29094c819c509e99dbeced58fc708f9"
+ integrity sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==
+
+"@rollup/rollup-linux-riscv64-gnu@4.39.0":
+ version "4.39.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.39.0.tgz#4bab37353b11bcda5a74ca11b99dea929657fd5f"
+ integrity sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==
+
+"@rollup/rollup-linux-riscv64-musl@4.39.0":
+ version "4.39.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.39.0.tgz#4d66be1ce3cfd40a7910eb34dddc7cbd4c2dd2a5"
+ integrity sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==
+
+"@rollup/rollup-linux-s390x-gnu@4.39.0":
+ version "4.39.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.39.0.tgz#7181c329395ed53340a0c59678ad304a99627f6d"
+ integrity sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==
+
+"@rollup/rollup-linux-x64-gnu@4.39.0":
+ version "4.39.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.39.0.tgz#00825b3458094d5c27cb4ed66e88bfe9f1e65f90"
+ integrity sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==
+
+"@rollup/rollup-linux-x64-musl@4.39.0":
+ version "4.39.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.39.0.tgz#81caac2a31b8754186f3acc142953a178fcd6fba"
+ integrity sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==
+
+"@rollup/rollup-win32-arm64-msvc@4.39.0":
+ version "4.39.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.39.0.tgz#3a3f421f5ce9bd99ed20ce1660cce7cee3e9f199"
+ integrity sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==
+
+"@rollup/rollup-win32-ia32-msvc@4.39.0":
+ version "4.39.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.39.0.tgz#a44972d5cdd484dfd9cf3705a884bf0c2b7785a7"
+ integrity sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==
+
+"@rollup/rollup-win32-x64-msvc@4.39.0":
+ version "4.39.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.39.0.tgz#bfe0214e163f70c4fec1c8f7bb8ce266f4c05b7e"
+ integrity sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==
+
"@rushstack/eslint-patch@^1.3.3":
version "1.5.1"
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz#5f1b518ec5fa54437c0b7c4a821546c64fed6922"
@@ -4060,6 +4501,17 @@
"@types/babel__template" "*"
"@types/babel__traverse" "*"
+"@types/babel__core@^7.20.5":
+ version "7.20.5"
+ resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017"
+ integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==
+ dependencies:
+ "@babel/parser" "^7.20.7"
+ "@babel/types" "^7.20.7"
+ "@types/babel__generator" "*"
+ "@types/babel__template" "*"
+ "@types/babel__traverse" "*"
+
"@types/babel__generator@*":
version "7.6.4"
resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7"
@@ -4116,6 +4568,11 @@
dependencies:
"@types/node" "*"
+"@types/cookie@^0.6.0":
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.6.0.tgz#eac397f28bf1d6ae0ae081363eca2f425bedf0d5"
+ integrity sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==
+
"@types/cross-spawn@^6.0.2":
version "6.0.4"
resolved "https://registry.yarnpkg.com/@types/cross-spawn/-/cross-spawn-6.0.4.tgz#e658d29e2308a01f48b7b30fd8cdf07aeb2e5a82"
@@ -4172,6 +4629,11 @@
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2"
integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==
+"@types/estree@1.0.7":
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.7.tgz#4158d3105276773d5b7695cd4834b1722e4f37a8"
+ integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==
+
"@types/estree@^0.0.51":
version "0.0.51"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40"
@@ -4318,6 +4780,11 @@
resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.3.tgz#43fd32414f17fcbeced3578109a6edd877a2d96e"
integrity sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ==
+"@types/mime-db@^1.43.5":
+ version "1.43.5"
+ resolved "https://registry.yarnpkg.com/@types/mime-db/-/mime-db-1.43.5.tgz#7a3f53dc2125a91f4e0e41f1353f60f8b6af609e"
+ integrity sha512-/bfTiIUTNPUBnwnYvUxXAre5MhD88jgagLEQiQtIASjU+bwxd8kS/ASDA4a8ufd8m0Lheu6eeMJHEUpLHoJ28A==
+
"@types/mime-types@^2.1.0":
version "2.1.3"
resolved "https://registry.yarnpkg.com/@types/mime-types/-/mime-types-2.1.3.tgz#0688436864f87a0c8e33ca12be60cd791cc24b36"
@@ -4366,6 +4833,11 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.6.tgz#6bef7a2a0ad684cf6e90fcfe31cecabd9ce0a3ae"
integrity sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==
+"@types/node@18.15.11":
+ version "18.15.11"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f"
+ integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==
+
"@types/node@^18.0.0":
version "18.18.7"
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.7.tgz#bb3a7068dc4ba421b6968f2a259298b3a4e129e8"
@@ -4418,6 +4890,13 @@
resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.6.tgz#7cb33992049fd7340d5b10c0098e104184dfcd2a"
integrity sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA==
+"@types/react-dom@18.0.11":
+ version "18.0.11"
+ resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.11.tgz#321351c1459bc9ca3d216aefc8a167beec334e33"
+ integrity sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==
+ dependencies:
+ "@types/react" "*"
+
"@types/react-dom@^18.0.6":
version "18.0.8"
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.8.tgz#d2606d855186cd42cc1b11e63a71c39525441685"
@@ -4425,6 +4904,11 @@
dependencies:
"@types/react" "*"
+"@types/react-dom@^18.3.1":
+ version "18.3.6"
+ resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.6.tgz#fa59a5e9a33499a792af6c1130f55921ef49d268"
+ integrity sha512-nf22//wEbKXusP6E9pfOCDwFdHAX4u172eaJI4YkDRQEZiorm6KfYnSC2SWLDMVWUOWPERmJnN0ujeAfTBLvrw==
+
"@types/react@*", "@types/react@>=16", "@types/react@^18.0.15":
version "18.0.25"
resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.25.tgz#8b1dcd7e56fe7315535a4af25435e0bb55c8ae44"
@@ -4434,6 +4918,15 @@
"@types/scheduler" "*"
csstype "^3.0.2"
+"@types/react@18.0.37":
+ version "18.0.37"
+ resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.37.tgz#7a784e2a8b8f83abb04dc6b9ed9c9b4c0aee9be7"
+ integrity sha512-4yaZZtkRN3ZIQD3KSEwkfcik8s0SWV+82dlJot1AbGYHCzJkWP3ENBY6wYeDRmKZ6HkrgoGAmR2HqdwYGp6OEw==
+ dependencies:
+ "@types/prop-types" "*"
+ "@types/scheduler" "*"
+ csstype "^3.0.2"
+
"@types/resolve@1.20.2":
version "1.20.2"
resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975"
@@ -4589,6 +5082,17 @@
magic-string "^0.27.0"
react-refresh "^0.14.0"
+"@vitejs/plugin-react@^4.3.4":
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz#c64be10b54c4640135a5b28a2432330e88ad7c20"
+ integrity sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==
+ dependencies:
+ "@babel/core" "^7.26.0"
+ "@babel/plugin-transform-react-jsx-self" "^7.25.9"
+ "@babel/plugin-transform-react-jsx-source" "^7.25.9"
+ "@types/babel__core" "^7.20.5"
+ react-refresh "^0.14.2"
+
"@yarnpkg/esbuild-plugin-pnp@^3.0.0-rc.10":
version "3.0.0-rc.15"
resolved "https://registry.yarnpkg.com/@yarnpkg/esbuild-plugin-pnp/-/esbuild-plugin-pnp-3.0.0-rc.15.tgz#4e40e7d2eb28825c9a35ab9d04c363931d7c0e67"
@@ -4650,6 +5154,14 @@ abbrev@^1.0.0:
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
+accepts@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-2.0.0.tgz#bbcf4ba5075467f3f2131eab3cffc73c2f5d7895"
+ integrity sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==
+ dependencies:
+ mime-types "^3.0.0"
+ negotiator "^1.0.0"
+
accepts@~1.3.5, accepts@~1.3.8:
version "1.3.8"
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
@@ -5598,6 +6110,21 @@ body-parser@1.20.3:
type-is "~1.6.18"
unpipe "1.0.0"
+body-parser@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-2.2.0.tgz#f7a9656de305249a715b549b7b8fd1ab9dfddcfa"
+ integrity sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==
+ dependencies:
+ bytes "^3.1.2"
+ content-type "^1.0.5"
+ debug "^4.4.0"
+ http-errors "^2.0.0"
+ iconv-lite "^0.6.3"
+ on-finished "^2.4.1"
+ qs "^6.14.0"
+ raw-body "^3.0.0"
+ type-is "^2.0.0"
+
boxen@^5.0.0:
version "5.1.2"
resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50"
@@ -5701,6 +6228,16 @@ browserslist@^4.21.9, browserslist@^4.22.1:
node-releases "^2.0.13"
update-browserslist-db "^1.0.13"
+browserslist@^4.24.0:
+ version "4.24.4"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b"
+ integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==
+ dependencies:
+ caniuse-lite "^1.0.30001688"
+ electron-to-chromium "^1.5.73"
+ node-releases "^2.0.19"
+ update-browserslist-db "^1.1.1"
+
bser@2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05"
@@ -5739,11 +6276,6 @@ buffer@^6.0.3:
base64-js "^1.3.1"
ieee754 "^1.2.1"
-builtin-modules@^3.3.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6"
- integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==
-
builtins@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88"
@@ -5780,12 +6312,12 @@ bytes@3.0.0:
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==
-bytes@3.1.2:
+bytes@3.1.2, bytes@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
-cac@^6.7.12:
+cac@^6.7.12, cac@^6.7.14:
version "6.7.14"
resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959"
integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==
@@ -5872,6 +6404,14 @@ cache-base@^1.0.1:
union-value "^1.0.0"
unset-value "^1.0.0"
+call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6"
+ integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==
+ dependencies:
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+
call-bind@^1.0.0, call-bind@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
@@ -5900,6 +6440,14 @@ call-bind@^1.0.7:
get-intrinsic "^1.2.4"
set-function-length "^1.2.1"
+call-bound@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a"
+ integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==
+ dependencies:
+ call-bind-apply-helpers "^1.0.2"
+ get-intrinsic "^1.3.0"
+
callsites@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
@@ -5939,6 +6487,11 @@ caniuse-lite@^1.0.30001400, caniuse-lite@^1.0.30001426, caniuse-lite@^1.0.300015
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz#31218de3463fabb44d0b7607b652e56edf2e2355"
integrity sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==
+caniuse-lite@^1.0.30001688:
+ version "1.0.30001713"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001713.tgz#6b33a8857e6c7dcb41a0caa2dd0f0489c823a52d"
+ integrity sha512-wCIWIg+A4Xr7NfhTuHdX+/FKh3+Op3LBbSp2N5Pfx6T/LhdQy3GTyoTg48BReaW/MyMNZAkTadsBtai3ldWK0Q==
+
ccount@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5"
@@ -6476,16 +7029,23 @@ content-disposition@0.5.4:
dependencies:
safe-buffer "5.2.1"
-content-type@~1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
- integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
+content-disposition@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-1.0.0.tgz#844426cb398f934caefcbb172200126bc7ceace2"
+ integrity sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==
+ dependencies:
+ safe-buffer "5.2.1"
-content-type@~1.0.5:
+content-type@^1.0.5, content-type@~1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
+content-type@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
+ integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
+
conventional-changelog-angular@6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-6.0.0.tgz#a9a9494c28b7165889144fd5b91573c4aa9ca541"
@@ -6576,11 +7136,26 @@ cookie-signature@1.0.6:
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
+cookie-signature@^1.2.1:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.2.2.tgz#57c7fc3cc293acab9fec54d73e15690ebe4a1793"
+ integrity sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==
+
cookie@0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051"
integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==
+cookie@^0.7.1:
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7"
+ integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==
+
+cookie@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-1.0.2.tgz#27360701532116bd3f1f9416929d176afe1e4610"
+ integrity sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==
+
copy-descriptor@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
@@ -6773,6 +7348,13 @@ debug@^3.2.7:
dependencies:
ms "^2.1.1"
+debug@^4.3.5, debug@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a"
+ integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==
+ dependencies:
+ ms "^2.1.3"
+
decamelize-keys@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9"
@@ -7107,6 +7689,15 @@ dotenv@^16.0.3:
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07"
integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==
+dunder-proto@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a"
+ integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==
+ dependencies:
+ call-bind-apply-helpers "^1.0.1"
+ es-errors "^1.3.0"
+ gopd "^1.2.0"
+
duplexer@0.1.1:
version "0.1.1"
resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
@@ -7162,6 +7753,11 @@ electron-to-chromium@^1.4.535:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.569.tgz#1298b67727187ffbaac005a7425490d157f3ad03"
integrity sha512-LsrJjZ0IbVy12ApW3gpYpcmHS3iRxH4bkKOW98y1/D+3cvDUWGcbzbsFinfUS8knpcZk/PG/2p/RnkMCYN7PVg==
+electron-to-chromium@^1.5.73:
+ version "1.5.135"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.135.tgz#6d835020fa0c7f02f30d7608c2f3c0a764236699"
+ integrity sha512-8gXUdEmvb+WCaYUhA0Svr08uSeRjM2w3x5uHOc1QbaEVzJXB8rgm5eptieXzyKoVEtinLvW6MtTcurA65PeS1Q==
+
emittery@^0.8.1:
version "0.8.1"
resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860"
@@ -7191,16 +7787,16 @@ emotion-theming@^10.0.10:
"@emotion/weak-memoize" "0.2.5"
hoist-non-react-statics "^3.3.0"
+encodeurl@^2.0.0, encodeurl@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58"
+ integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==
+
encodeurl@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
-encodeurl@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58"
- integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==
-
encoding@^0.1.12, encoding@^0.1.13:
version "0.1.13"
resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
@@ -7338,6 +7934,11 @@ es-define-property@^1.0.0:
dependencies:
get-intrinsic "^1.2.4"
+es-define-property@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa"
+ integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==
+
es-errors@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
@@ -7368,6 +7969,18 @@ es-module-lexer@^0.9.3:
resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19"
integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==
+es-module-lexer@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.6.0.tgz#da49f587fd9e68ee2404fe4e256c0c7d3a81be21"
+ integrity sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==
+
+es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1"
+ integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==
+ dependencies:
+ es-errors "^1.3.0"
+
es-set-tostringtag@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9"
@@ -7598,17 +8211,53 @@ esbuild@^0.18.0:
"@esbuild/win32-ia32" "0.18.20"
"@esbuild/win32-x64" "0.18.20"
+esbuild@^0.25.0:
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.2.tgz#55a1d9ebcb3aa2f95e8bba9e900c1a5061bc168b"
+ integrity sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==
+ optionalDependencies:
+ "@esbuild/aix-ppc64" "0.25.2"
+ "@esbuild/android-arm" "0.25.2"
+ "@esbuild/android-arm64" "0.25.2"
+ "@esbuild/android-x64" "0.25.2"
+ "@esbuild/darwin-arm64" "0.25.2"
+ "@esbuild/darwin-x64" "0.25.2"
+ "@esbuild/freebsd-arm64" "0.25.2"
+ "@esbuild/freebsd-x64" "0.25.2"
+ "@esbuild/linux-arm" "0.25.2"
+ "@esbuild/linux-arm64" "0.25.2"
+ "@esbuild/linux-ia32" "0.25.2"
+ "@esbuild/linux-loong64" "0.25.2"
+ "@esbuild/linux-mips64el" "0.25.2"
+ "@esbuild/linux-ppc64" "0.25.2"
+ "@esbuild/linux-riscv64" "0.25.2"
+ "@esbuild/linux-s390x" "0.25.2"
+ "@esbuild/linux-x64" "0.25.2"
+ "@esbuild/netbsd-arm64" "0.25.2"
+ "@esbuild/netbsd-x64" "0.25.2"
+ "@esbuild/openbsd-arm64" "0.25.2"
+ "@esbuild/openbsd-x64" "0.25.2"
+ "@esbuild/sunos-x64" "0.25.2"
+ "@esbuild/win32-arm64" "0.25.2"
+ "@esbuild/win32-ia32" "0.25.2"
+ "@esbuild/win32-x64" "0.25.2"
+
escalade@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+escalade@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
+ integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
+
escape-carriage@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/escape-carriage/-/escape-carriage-1.3.1.tgz#842658e5422497b1232585e517dc813fc6a86170"
integrity sha512-GwBr6yViW3ttx1kb7/Oh+gKQ1/TrhYwxKqVmg5gS+BK+Qe2KrOa/Vh7w3HPBvgGf0LfcDGoY9I6NHKoA5Hozhw==
-escape-html@~1.0.3:
+escape-html@^1.0.3, escape-html@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
@@ -8020,7 +8669,7 @@ esutils@^2.0.2:
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
-etag@~1.8.1:
+etag@^1.8.1, etag@~1.8.1:
version "1.8.1"
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
@@ -8168,6 +8817,39 @@ express@^4.17.3:
utils-merge "1.0.1"
vary "~1.1.2"
+express@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/express/-/express-5.1.0.tgz#d31beaf715a0016f0d53f47d3b4d7acf28c75cc9"
+ integrity sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==
+ dependencies:
+ accepts "^2.0.0"
+ body-parser "^2.2.0"
+ content-disposition "^1.0.0"
+ content-type "^1.0.5"
+ cookie "^0.7.1"
+ cookie-signature "^1.2.1"
+ debug "^4.4.0"
+ encodeurl "^2.0.0"
+ escape-html "^1.0.3"
+ etag "^1.8.1"
+ finalhandler "^2.1.0"
+ fresh "^2.0.0"
+ http-errors "^2.0.0"
+ merge-descriptors "^2.0.0"
+ mime-types "^3.0.0"
+ on-finished "^2.4.1"
+ once "^1.4.0"
+ parseurl "^1.3.3"
+ proxy-addr "^2.0.7"
+ qs "^6.14.0"
+ range-parser "^1.2.1"
+ router "^2.2.0"
+ send "^1.1.0"
+ serve-static "^2.2.0"
+ statuses "^2.0.1"
+ type-is "^2.0.1"
+ vary "^1.1.2"
+
ext@^1.1.2:
version "1.6.0"
resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52"
@@ -8301,6 +8983,11 @@ fd-slicer@~1.1.0:
dependencies:
pend "~1.2.0"
+fdir@^6.2.0:
+ version "6.4.3"
+ resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.3.tgz#011cdacf837eca9b811c89dbb902df714273db72"
+ integrity sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==
+
fetch-retry@^5.0.2:
version "5.0.6"
resolved "https://registry.yarnpkg.com/fetch-retry/-/fetch-retry-5.0.6.tgz#17d0bc90423405b7a88b74355bf364acd2a7fa56"
@@ -8375,6 +9062,18 @@ finalhandler@1.3.1:
statuses "2.0.1"
unpipe "~1.0.0"
+finalhandler@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-2.1.0.tgz#72306373aa89d05a8242ed569ed86a1bff7c561f"
+ integrity sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==
+ dependencies:
+ debug "^4.4.0"
+ encodeurl "^2.0.0"
+ escape-html "^1.0.3"
+ on-finished "^2.4.1"
+ parseurl "^1.3.3"
+ statuses "^2.0.1"
+
find-cache-dir@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f"
@@ -8621,6 +9320,11 @@ fresh@0.5.2:
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
+fresh@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/fresh/-/fresh-2.0.0.tgz#8dd7df6a1b3a1b3a5cf186c05a5dd267622635a4"
+ integrity sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==
+
fs-constants@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
@@ -8685,6 +9389,11 @@ fsevents@^2.3.2, fsevents@~2.3.2:
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
+fsevents@~2.3.3:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
+ integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
+
function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
@@ -8784,6 +9493,22 @@ get-intrinsic@^1.2.4:
has-symbols "^1.0.3"
hasown "^2.0.0"
+get-intrinsic@^1.2.5, get-intrinsic@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01"
+ integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==
+ dependencies:
+ call-bind-apply-helpers "^1.0.2"
+ es-define-property "^1.0.1"
+ es-errors "^1.3.0"
+ es-object-atoms "^1.1.1"
+ function-bind "^1.1.2"
+ get-proto "^1.0.1"
+ gopd "^1.2.0"
+ has-symbols "^1.1.0"
+ hasown "^2.0.2"
+ math-intrinsics "^1.1.0"
+
get-npm-tarball-url@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/get-npm-tarball-url/-/get-npm-tarball-url-2.0.3.tgz#67dff908d699e9e2182530ae6e939a93e5f8dfdb"
@@ -8814,6 +9539,14 @@ get-port@5.1.1, get-port@^5.1.1:
resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193"
integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==
+get-proto@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1"
+ integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==
+ dependencies:
+ dunder-proto "^1.0.1"
+ es-object-atoms "^1.0.0"
+
get-stdin@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53"
@@ -9059,17 +9792,6 @@ glob@^8.0.1:
minimatch "^5.0.1"
once "^1.3.0"
-glob@^8.0.3:
- version "8.0.3"
- resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e"
- integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^5.0.1"
- once "^1.3.0"
-
glob@^9.2.0:
version "9.3.5"
resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21"
@@ -9112,6 +9834,11 @@ globals@^13.19.0:
dependencies:
type-fest "^0.20.2"
+globals@^15.15.0:
+ version "15.15.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-15.15.0.tgz#7c4761299d41c32b075715a4ce1ede7897ff72a8"
+ integrity sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==
+
globalthis@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf"
@@ -9145,6 +9872,11 @@ gopd@^1.0.1:
dependencies:
get-intrinsic "^1.1.3"
+gopd@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1"
+ integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
+
graceful-fs@4.2.11, graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9:
version "4.2.11"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
@@ -9291,6 +10023,11 @@ has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3:
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+has-symbols@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338"
+ integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==
+
has-tostringtag@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
@@ -9348,6 +10085,13 @@ hasown@^2.0.0:
dependencies:
function-bind "^1.1.2"
+hasown@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
+ integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
+ dependencies:
+ function-bind "^1.1.2"
+
hast-util-to-estree@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/hast-util-to-estree/-/hast-util-to-estree-2.1.0.tgz#aeac70aad0102ae309570907b3f56a08231d5323"
@@ -9456,7 +10200,7 @@ http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1:
resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a"
integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==
-http-errors@2.0.0:
+http-errors@2.0.0, http-errors@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
@@ -9540,7 +10284,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24:
dependencies:
safer-buffer ">= 2.1.2 < 3"
-iconv-lite@^0.6.2:
+iconv-lite@0.6.3, iconv-lite@^0.6.2, iconv-lite@^0.6.3:
version "0.6.3"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
@@ -9825,13 +10569,6 @@ is-buffer@^2.0.0:
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191"
integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==
-is-builtin-module@^3.2.0:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169"
- integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==
- dependencies:
- builtin-modules "^3.3.0"
-
is-callable@^1.1.3, is-callable@^1.2.7:
version "1.2.7"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
@@ -10116,6 +10853,11 @@ is-potential-custom-element-name@^1.0.1:
resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5"
integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==
+is-promise@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3"
+ integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==
+
is-reference@1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7"
@@ -10888,6 +11630,11 @@ jsesc@^2.5.1:
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+jsesc@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d"
+ integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==
+
jsesc@~0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
@@ -11546,6 +12293,13 @@ magic-string@^0.30.0:
dependencies:
"@jridgewell/sourcemap-codec" "^1.4.15"
+magic-string@^0.30.3:
+ version "0.30.17"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453"
+ integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==
+ dependencies:
+ "@jridgewell/sourcemap-codec" "^1.5.0"
+
make-dir@4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e"
@@ -11735,6 +12489,11 @@ material-colors@^1.2.1:
resolved "https://registry.yarnpkg.com/material-colors/-/material-colors-1.2.6.tgz#6d1958871126992ceecc72f4bcc4d8f010865f46"
integrity sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==
+math-intrinsics@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9"
+ integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==
+
mdast-util-definitions@^5.0.0:
version "5.1.1"
resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz#2c1d684b28e53f84938bb06317944bee8efa79db"
@@ -11914,6 +12673,11 @@ media-typer@0.3.0:
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
+media-typer@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-1.1.0.tgz#6ab74b8f2d3320f2064b2a87a38e7931ff3a5561"
+ integrity sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==
+
memoizerific@^1.11.3:
version "1.11.3"
resolved "https://registry.yarnpkg.com/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a"
@@ -11943,6 +12707,11 @@ merge-descriptors@1.0.3:
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5"
integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==
+merge-descriptors@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-2.0.0.tgz#ea922f660635a2249ee565e0449f951e6b603808"
+ integrity sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==
+
merge-stream@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
@@ -12355,6 +13124,11 @@ mime-db@1.52.0, "mime-db@>= 1.43.0 < 2", mime-db@^1.52.0:
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
+mime-db@^1.54.0:
+ version "1.54.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5"
+ integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==
+
mime-types@^2.1.12, mime-types@^2.1.25, mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34:
version "2.1.35"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
@@ -12362,6 +13136,13 @@ mime-types@^2.1.12, mime-types@^2.1.25, mime-types@^2.1.27, mime-types@~2.1.24,
dependencies:
mime-db "1.52.0"
+mime-types@^3.0.0, mime-types@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-3.0.1.tgz#b1d94d6997a9b32fd69ebaed0db73de8acb519ce"
+ integrity sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==
+ dependencies:
+ mime-db "^1.54.0"
+
mime@1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
@@ -12602,7 +13383,7 @@ ms@2.1.2:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-ms@2.1.3, ms@^2.0.0, ms@^2.1.1:
+ms@2.1.3, ms@^2.0.0, ms@^2.1.1, ms@^2.1.3:
version "2.1.3"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
@@ -12652,6 +13433,11 @@ nanoid@^3.3.6:
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
+nanoid@^3.3.8:
+ version "3.3.11"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b"
+ integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==
+
nanomatch@^1.2.9:
version "1.2.13"
resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
@@ -12679,6 +13465,11 @@ negotiator@0.6.3, negotiator@^0.6.2, negotiator@^0.6.3:
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
+negotiator@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-1.0.0.tgz#b6c91bb47172d69f93cfd7c357bbb529019b5f6a"
+ integrity sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==
+
neo-async@^2.5.0, neo-async@^2.6.0:
version "2.6.2"
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
@@ -12828,6 +13619,11 @@ node-releases@^2.0.13:
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d"
integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==
+node-releases@^2.0.19:
+ version "2.0.19"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314"
+ integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==
+
node-releases@^2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503"
@@ -13113,6 +13909,11 @@ object-inspect@^1.13.1:
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2"
integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==
+object-inspect@^1.13.3:
+ version "1.13.4"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213"
+ integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==
+
object-is@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
@@ -13266,7 +14067,7 @@ object.values@^1.1.6, object.values@^1.1.7:
define-properties "^1.2.0"
es-abstract "^1.22.1"
-on-finished@2.4.1:
+on-finished@2.4.1, on-finished@^2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
@@ -13368,7 +14169,7 @@ os-tmpdir@~1.0.2:
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
-outvariant@1.4.0, outvariant@^1.4.0:
+outvariant@1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/outvariant/-/outvariant-1.4.0.tgz#e742e4bda77692da3eca698ef5bfac62d9fba06e"
integrity sha512-AlWY719RF02ujitly7Kk/0QlV+pXGFDHrHf9O2OKqyqgBieaPOIeuSkL8sRK6j2WK+/ZAURq2kZsY0d8JapUiw==
@@ -13663,7 +14464,7 @@ parse5@^5.1.1:
resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178"
integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==
-parseurl@~1.3.3:
+parseurl@^1.3.3, parseurl@~1.3.3:
version "1.3.3"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
@@ -13740,6 +14541,11 @@ path-to-regexp@0.1.10:
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b"
integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==
+path-to-regexp@^8.0.0:
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.2.0.tgz#73990cc29e57a3ff2a0d914095156df5db79e8b4"
+ integrity sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==
+
path-type@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
@@ -13766,6 +14572,11 @@ pathe@^1.1.1:
resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.1.tgz#1dd31d382b974ba69809adc9a7a347e65d84829a"
integrity sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==
+pathe@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/pathe/-/pathe-2.0.3.tgz#3ecbec55421685b70a9da872b2cff3e1cbed1716"
+ integrity sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==
+
pathval@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d"
@@ -13798,11 +14609,21 @@ picocolors@^1.0.0:
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+picocolors@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
+ integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
+
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+picomatch@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab"
+ integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==
+
pify@5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f"
@@ -13981,6 +14802,15 @@ postcss@8.4.31, postcss@^8.4.14, postcss@^8.4.18:
picocolors "^1.0.0"
source-map-js "^1.0.2"
+postcss@^8.5.3:
+ version "8.5.3"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb"
+ integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==
+ dependencies:
+ nanoid "^3.3.8"
+ picocolors "^1.1.1"
+ source-map-js "^1.2.1"
+
prelude-ls@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
@@ -14091,7 +14921,7 @@ protocols@^2.0.0, protocols@^2.0.1:
resolved "https://registry.yarnpkg.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86"
integrity sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==
-proxy-addr@~2.0.7:
+proxy-addr@^2.0.7, proxy-addr@~2.0.7:
version "2.0.7"
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
@@ -14179,6 +15009,13 @@ qs@^6.10.0:
dependencies:
side-channel "^1.0.4"
+qs@^6.14.0:
+ version "6.14.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930"
+ integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==
+ dependencies:
+ side-channel "^1.1.0"
+
query-string@5:
version "5.1.1"
resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb"
@@ -14220,7 +15057,7 @@ randombytes@^2.1.0:
dependencies:
safe-buffer "^5.1.0"
-range-parser@~1.2.1:
+range-parser@^1.2.1, range-parser@~1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
@@ -14235,6 +15072,16 @@ raw-body@2.5.2:
iconv-lite "0.4.24"
unpipe "1.0.0"
+raw-body@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-3.0.0.tgz#25b3476f07a51600619dae3fe82ddc28a36e5e0f"
+ integrity sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==
+ dependencies:
+ bytes "3.1.2"
+ http-errors "2.0.0"
+ iconv-lite "0.6.3"
+ unpipe "1.0.0"
+
react-color@^2.19.3:
version "2.19.3"
resolved "https://registry.yarnpkg.com/react-color/-/react-color-2.19.3.tgz#ec6c6b4568312a3c6a18420ab0472e146aa5683d"
@@ -14284,6 +15131,13 @@ react-dom@^18.2.0:
loose-envify "^1.1.0"
scheduler "^0.23.0"
+react-dom@^19.1.0:
+ version "19.1.0"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.1.0.tgz#133558deca37fa1d682708df8904b25186793623"
+ integrity sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==
+ dependencies:
+ scheduler "^0.26.0"
+
react-element-to-jsx-string@^15.0.0:
version "15.0.0"
resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz#1cafd5b6ad41946ffc8755e254da3fc752a01ac6"
@@ -14344,6 +15198,21 @@ react-refresh@^0.14.0:
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e"
integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==
+react-refresh@^0.14.2:
+ version "0.14.2"
+ resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9"
+ integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==
+
+react-router@^7.5.0:
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/react-router/-/react-router-7.5.0.tgz#649568e7e3b4133dee1dcf333d8a3a37b1967f58"
+ integrity sha512-estOHrRlDMKdlQa6Mj32gIks4J+AxNsYoE0DbTTxiMy2mPzZuWSDU+N85/r1IlNR7kGfznF3VCUlvc5IUO+B9g==
+ dependencies:
+ "@types/cookie" "^0.6.0"
+ cookie "^1.0.1"
+ set-cookie-parser "^2.6.0"
+ turbo-stream "2.4.0"
+
react-shallow-renderer@^16.15.0:
version "16.15.0"
resolved "https://registry.yarnpkg.com/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz#48fb2cf9b23d23cde96708fe5273a7d3446f4457"
@@ -14375,6 +15244,11 @@ react@^18.2.0:
dependencies:
loose-envify "^1.1.0"
+react@^19.1.0:
+ version "19.1.0"
+ resolved "https://registry.yarnpkg.com/react/-/react-19.1.0.tgz#926864b6c48da7627f004795d6cce50e90793b75"
+ integrity sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==
+
reactcss@^1.2.0:
version "1.2.3"
resolved "https://registry.yarnpkg.com/reactcss/-/reactcss-1.2.3.tgz#c00013875e557b1cf0dfd9a368a1c3dab3b548dd"
@@ -14980,7 +15854,7 @@ rollup-pluginutils@^2.4.1:
dependencies:
estree-walker "^0.6.1"
-"rollup@^2.25.0 || ^3.3.0", rollup@^3.2.5, rollup@^3.9.1:
+"rollup@^2.25.0 || ^3.3.0", rollup@^3.2.5:
version "3.29.5"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.5.tgz#8a2e477a758b520fb78daf04bca4c522c1da8a54"
integrity sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==
@@ -14994,6 +15868,46 @@ rollup@^2.79.1:
optionalDependencies:
fsevents "~2.3.2"
+rollup@^4.30.1, rollup@^4.39.0:
+ version "4.39.0"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.39.0.tgz#9dc1013b70c0e2cb70ef28350142e9b81b3f640c"
+ integrity sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==
+ dependencies:
+ "@types/estree" "1.0.7"
+ optionalDependencies:
+ "@rollup/rollup-android-arm-eabi" "4.39.0"
+ "@rollup/rollup-android-arm64" "4.39.0"
+ "@rollup/rollup-darwin-arm64" "4.39.0"
+ "@rollup/rollup-darwin-x64" "4.39.0"
+ "@rollup/rollup-freebsd-arm64" "4.39.0"
+ "@rollup/rollup-freebsd-x64" "4.39.0"
+ "@rollup/rollup-linux-arm-gnueabihf" "4.39.0"
+ "@rollup/rollup-linux-arm-musleabihf" "4.39.0"
+ "@rollup/rollup-linux-arm64-gnu" "4.39.0"
+ "@rollup/rollup-linux-arm64-musl" "4.39.0"
+ "@rollup/rollup-linux-loongarch64-gnu" "4.39.0"
+ "@rollup/rollup-linux-powerpc64le-gnu" "4.39.0"
+ "@rollup/rollup-linux-riscv64-gnu" "4.39.0"
+ "@rollup/rollup-linux-riscv64-musl" "4.39.0"
+ "@rollup/rollup-linux-s390x-gnu" "4.39.0"
+ "@rollup/rollup-linux-x64-gnu" "4.39.0"
+ "@rollup/rollup-linux-x64-musl" "4.39.0"
+ "@rollup/rollup-win32-arm64-msvc" "4.39.0"
+ "@rollup/rollup-win32-ia32-msvc" "4.39.0"
+ "@rollup/rollup-win32-x64-msvc" "4.39.0"
+ fsevents "~2.3.2"
+
+router@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/router/-/router-2.2.0.tgz#019be620b711c87641167cc79b99090f00b146ef"
+ integrity sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==
+ dependencies:
+ debug "^4.4.0"
+ depd "^2.0.0"
+ is-promise "^4.0.0"
+ parseurl "^1.3.3"
+ path-to-regexp "^8.0.0"
+
run-async@^2.4.0:
version "2.4.1"
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
@@ -15098,6 +16012,11 @@ scheduler@^0.23.0:
dependencies:
loose-envify "^1.1.0"
+scheduler@^0.26.0:
+ version "0.26.0"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.26.0.tgz#4ce8a8c2a2095f13ea11bf9a445be50c555d6337"
+ integrity sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==
+
schema-utils@^3.0.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281"
@@ -15177,10 +16096,27 @@ send@0.19.0:
range-parser "~1.2.1"
statuses "2.0.1"
-serialize-javascript@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
- integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==
+send@^1.1.0, send@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/send/-/send-1.2.0.tgz#32a7554fb777b831dfa828370f773a3808d37212"
+ integrity sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==
+ dependencies:
+ debug "^4.3.5"
+ encodeurl "^2.0.0"
+ escape-html "^1.0.3"
+ etag "^1.8.1"
+ fresh "^2.0.0"
+ http-errors "^2.0.0"
+ mime-types "^3.0.1"
+ ms "^2.1.3"
+ on-finished "^2.4.1"
+ range-parser "^1.2.1"
+ statuses "^2.0.1"
+
+serialize-javascript@^6.0.1:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2"
+ integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==
dependencies:
randombytes "^2.1.0"
@@ -15194,11 +16130,26 @@ serve-static@1.16.2:
parseurl "~1.3.3"
send "0.19.0"
+serve-static@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-2.2.0.tgz#9c02564ee259bdd2251b82d659a2e7e1938d66f9"
+ integrity sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==
+ dependencies:
+ encodeurl "^2.0.0"
+ escape-html "^1.0.3"
+ parseurl "^1.3.3"
+ send "^1.2.0"
+
set-blocking@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+set-cookie-parser@^2.6.0:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz#3016f150072202dfbe90fadee053573cc89d2943"
+ integrity sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==
+
set-function-length@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed"
@@ -15290,6 +16241,35 @@ shiki@0.10.1:
vscode-oniguruma "^1.6.1"
vscode-textmate "5.2.0"
+side-channel-list@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad"
+ integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==
+ dependencies:
+ es-errors "^1.3.0"
+ object-inspect "^1.13.3"
+
+side-channel-map@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42"
+ integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==
+ dependencies:
+ call-bound "^1.0.2"
+ es-errors "^1.3.0"
+ get-intrinsic "^1.2.5"
+ object-inspect "^1.13.3"
+
+side-channel-weakmap@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea"
+ integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==
+ dependencies:
+ call-bound "^1.0.2"
+ es-errors "^1.3.0"
+ get-intrinsic "^1.2.5"
+ object-inspect "^1.13.3"
+ side-channel-map "^1.0.1"
+
side-channel@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
@@ -15309,6 +16289,17 @@ side-channel@^1.0.6:
get-intrinsic "^1.2.4"
object-inspect "^1.13.1"
+side-channel@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9"
+ integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==
+ dependencies:
+ es-errors "^1.3.0"
+ object-inspect "^1.13.3"
+ side-channel-list "^1.0.0"
+ side-channel-map "^1.0.1"
+ side-channel-weakmap "^1.0.2"
+
signal-exit@3.0.7, signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7:
version "3.0.7"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
@@ -15378,10 +16369,10 @@ smart-buffer@^4.2.0:
resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae"
integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==
-smob@^0.0.6:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/smob/-/smob-0.0.6.tgz#09b268fea916158a2781c152044c6155adbb8aa1"
- integrity sha512-V21+XeNni+tTyiST1MHsa84AQhT1aFZipzPpOFAVB8DkHzwJyjjAmt9bgwnuZiZWnIbMo2duE29wybxv/7HWUw==
+smob@^1.0.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/smob/-/smob-1.5.0.tgz#85d79a1403abf128d24d3ebc1cdc5e1a9548d3ab"
+ integrity sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==
snapdragon-node@^2.0.1:
version "2.1.1"
@@ -15451,6 +16442,11 @@ sort-keys@^2.0.0:
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
+source-map-js@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
+ integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
+
source-map-resolve@^0.5.0:
version "0.5.3"
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
@@ -15622,7 +16618,7 @@ static-extend@^0.1.1:
define-property "^0.2.5"
object-copy "^0.1.0"
-statuses@2.0.1:
+statuses@2.0.1, statuses@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
@@ -15649,11 +16645,6 @@ streamsearch@^1.1.0:
resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764"
integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==
-strict-event-emitter@^0.4.3:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/strict-event-emitter/-/strict-event-emitter-0.4.3.tgz#45d0f75e1dc071eeb7cfbdff864fd2b9172bc257"
- integrity sha512-uD0y7Wp3+ifPyfzIS+JrMvSnxFExHytmD5gTkndF1fi8Vrk2uiOY/2At73AwzLHz+RwrchegD8tHdowsfG7raQ==
-
strict-uri-encode@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
@@ -16138,7 +17129,17 @@ terminal-link@^2.0.0:
ansi-escapes "^4.2.1"
supports-hyperlinks "^2.0.0"
-terser@^5.15.1, terser@^5.6.0:
+terser@^5.17.4:
+ version "5.39.0"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.39.0.tgz#0e82033ed57b3ddf1f96708d123cca717d86ca3a"
+ integrity sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==
+ dependencies:
+ "@jridgewell/source-map" "^0.3.3"
+ acorn "^8.8.2"
+ commander "^2.20.0"
+ source-map-support "~0.5.20"
+
+terser@^5.6.0:
version "5.22.0"
resolved "https://registry.yarnpkg.com/terser/-/terser-5.22.0.tgz#4f18103f84c5c9437aafb7a14918273310a8a49d"
integrity sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw==
@@ -16483,6 +17484,11 @@ turbo-linux-arm64@1.5.5:
resolved "https://registry.yarnpkg.com/turbo-linux-arm64/-/turbo-linux-arm64-1.5.5.tgz#b9ce6912ae6477e829355d6f012500bfef58669d"
integrity sha512-q3q33tuo74R7gicnfvFbnZZvqmlq7Vakcvx0eshifnJw4PR+oMnTCb4w8ElVFx070zsb8DVTibq99y8NJH8T1Q==
+turbo-stream@2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/turbo-stream/-/turbo-stream-2.4.0.tgz#1e4fca6725e90fa14ac4adb782f2d3759a5695f0"
+ integrity sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==
+
turbo-windows-64@1.5.5:
version "1.5.5"
resolved "https://registry.yarnpkg.com/turbo-windows-64/-/turbo-windows-64-1.5.5.tgz#609098de3bc6178f733615d21b06d5c1602637eb"
@@ -16564,6 +17570,15 @@ type-fest@^2.19.0, type-fest@~2.19:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b"
integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==
+type-is@^2.0.0, type-is@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/type-is/-/type-is-2.0.1.tgz#64f6cf03f92fce4015c2b224793f6bdd4b068c97"
+ integrity sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==
+ dependencies:
+ content-type "^1.0.5"
+ media-typer "^1.1.0"
+ mime-types "^3.0.0"
+
type-is@~1.6.18:
version "1.6.18"
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
@@ -16638,11 +17653,21 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
+typescript@5.0.4:
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b"
+ integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==
+
"typescript@>=3 < 6", typescript@^5.2.2:
version "5.2.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78"
integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==
+typescript@~5.7.2:
+ version "5.7.3"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.3.tgz#919b44a7dbb8583a9b856d162be24a54bf80073e"
+ integrity sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==
+
uglify-js@^3.1.4:
version "3.15.5"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.15.5.tgz#2b10f9e0bfb3f5c15a8e8404393b6361eaeb33b3"
@@ -16968,6 +17993,14 @@ update-browserslist-db@^1.0.9:
escalade "^3.1.1"
picocolors "^1.0.0"
+update-browserslist-db@^1.1.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420"
+ integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==
+ dependencies:
+ escalade "^3.2.0"
+ picocolors "^1.1.1"
+
uri-js@^4.2.2:
version "4.4.1"
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
@@ -17102,7 +18135,7 @@ values.js@^2.0.0:
parse-css-color "0.2.0"
pure-color "1.3.0"
-vary@~1.1.2:
+vary@^1.1.2, vary@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
@@ -17181,6 +18214,17 @@ vinyl@^2.0.0:
remove-trailing-separator "^1.0.1"
replace-ext "^1.0.0"
+vite-node@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-3.1.1.tgz#ad186c07859a6e5fca7c7f563e55fb11b16557bc"
+ integrity sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w==
+ dependencies:
+ cac "^6.7.14"
+ debug "^4.4.0"
+ es-module-lexer "^1.6.0"
+ pathe "^2.0.3"
+ vite "^5.0.0 || ^6.0.0"
+
"vite@^2.9.12 || ^3.0.0-0":
version "3.2.11"
resolved "https://registry.yarnpkg.com/vite/-/vite-3.2.11.tgz#8d1c8e05ef2f24b04c8693f56d3e01fe8835e6d7"
@@ -17193,6 +18237,17 @@ vinyl@^2.0.0:
optionalDependencies:
fsevents "~2.3.2"
+"vite@^5.0.0 || ^6.0.0", vite@^6.2.0:
+ version "6.2.6"
+ resolved "https://registry.yarnpkg.com/vite/-/vite-6.2.6.tgz#7f0ccf2fdc0c1eda079ce258508728e2473d3f61"
+ integrity sha512-9xpjNl3kR4rVDZgPNdTL0/c6ao4km69a/2ihNQbcANz8RuCOK3hQBmLSJf3bRKVQjVMda+YvizNE8AwvogcPbw==
+ dependencies:
+ esbuild "^0.25.0"
+ postcss "^8.5.3"
+ rollup "^4.30.1"
+ optionalDependencies:
+ fsevents "~2.3.3"
+
vitest@^0.21.0:
version "0.21.1"
resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.21.1.tgz#b4f5b901c9a23a3aaec76d3404f3072821d93d00"