chore: optimize bundle

This commit is contained in:
AykutSarac 2023-07-16 15:44:10 +03:00
parent 4787758551
commit 0e35c6a1e9
No known key found for this signature in database
60 changed files with 631 additions and 499 deletions

View File

@ -6,7 +6,24 @@
"space-in-parens": "error",
"no-empty": "error",
"no-multiple-empty-lines": "error",
"no-irregular-whitespace": "error"
"no-irregular-whitespace": "error",
"strict": ["error", "never"],
"linebreak-style": ["error", "unix"],
"quotes": ["error", "double", { "avoidEscape": true }],
"semi": ["error", "always"],
"padding-line-between-statements": [
"error",
{ "blankLine": "always", "prev": ["const", "let", "var"], "next": "*" },
{ "blankLine": "any", "prev": ["const", "let", "var"], "next": ["const", "let", "var"] }
],
"space-before-function-paren": [
"error",
{
"anonymous": "always",
"named": "never",
"asyncArrow": "always"
}
]
},
"extends": ["next/core-web-vitals"],
"plugins": ["prettier", "unused-imports"]

View File

@ -1,9 +1,13 @@
const { withSentryConfig } = require("@sentry/nextjs");
const withBundleAnalyzer = require("@next/bundle-analyzer")({
enabled: process.env.ANALYZE === "true",
});
/**
* @type {import('next').NextConfig}
*/
const config = {
output: "export",
reactStrictMode: false,
productionBrowserSourceMaps: true,
compiler: {
@ -11,17 +15,20 @@ const config = {
},
};
module.exports = withSentryConfig(
config,
{
silent: true,
org: "aykut-sarac",
project: "json-crack",
},
{
widenClientFileUpload: true,
hideSourceMaps: true,
disableLogger: true,
disableServerWebpackPlugin: true,
}
);
module.exports =
process.env.ANALYZE === "true"
? withBundleAnalyzer(config)
: withSentryConfig(
config,
{
silent: true,
org: "aykut-sarac",
project: "json-crack",
},
{
widenClientFileUpload: true,
hideSourceMaps: true,
disableLogger: true,
disableServerWebpackPlugin: true,
}
);

View File

@ -1,59 +1,60 @@
{
"name": "json-crack",
"private": true,
"version": "v2.8.0",
"version": "v3.0.0",
"author": "https://github.com/AykutSarac",
"homepage": "https://jsoncrack.com",
"scripts": {
"dev": "next dev",
"build": "next build && next export",
"build": "next build",
"analyze": "ANALYZE=true npm run build",
"start": "next start",
"lint": "tsc && eslint src && prettier --check src",
"lint:fix": "prettier --write src & eslint --fix src",
"lint:fix": "eslint --fix src & prettier --write src",
"deploy": "gh-pages -d out -t true"
},
"dependencies": {
"@emotion/react": "^11.11.1",
"@emotion/server": "^11.11.0",
"@mantine/core": "^6.0.13",
"@mantine/form": "^6.0.13",
"@mantine/hooks": "^6.0.13",
"@mantine/next": "^6.0.13",
"@mantine/prism": "^6.0.13",
"@mantine/core": "^6.0.16",
"@mantine/form": "^6.0.16",
"@mantine/hooks": "^6.0.16",
"@mantine/next": "^6.0.16",
"@mantine/prism": "^6.0.16",
"@monaco-editor/react": "^4.5.1",
"@sentry/nextjs": "^7.55.2",
"@tanstack/react-query": "^4.29.14",
"@tanstack/react-query": "^4.29.25",
"allotment": "^1.19.0",
"altogic": "^2.3.9",
"axios": "^1.4.0",
"dayjs": "^1.11.8",
"dayjs": "^1.11.9",
"html-to-image": "^1.11.11",
"json-2-csv": "^4.0.0",
"jsonc-parser": "^3.2.0",
"jsonwebtoken": "^9.0.0",
"jsonwebtoken": "^9.0.1",
"jxon": "^2.0.0-beta.5",
"lodash.debounce": "^4.0.8",
"lodash.get": "^4.4.2",
"lodash.set": "^4.3.2",
"lz-string": "^1.5.0",
"next": "13.2.3",
"next": "13.3.0",
"react": "^18.2.0",
"react-color": "^2.19.3",
"react-dom": "^18.2.0",
"react-hot-toast": "^2.4.1",
"react-icons": "^4.9.0",
"react-icons": "^4.10.1",
"react-linkify-it": "^1.0.7",
"react-simple-typewriter": "^5.0.1",
"react-syntax-highlighter": "^15.5.0",
"react-zoom-pan-pinch": "^3.0.8",
"react-zoom-pan-pinch": "^3.1.0",
"reaflow": "5.1.2",
"styled-components": "^5.3.8",
"toml": "^3.0.0",
"universal-cookie": "^4.0.4",
"zustand": "^4.3.8"
"zustand": "^4.3.9"
},
"devDependencies": {
"@next/bundle-analyzer": "^13.4.3",
"@next/bundle-analyzer": "^13.4.10",
"@testing-library/react": "^14.0.0",
"@trivago/prettier-plugin-sort-imports": "^4.1.1",
"@types/jsonwebtoken": "^9.0.2",
@ -61,17 +62,17 @@
"@types/lodash.get": "^4.4.7",
"@types/lodash.set": "^4.3.7",
"@types/lz-string": "^1.5.0",
"@types/node": "^20.2.1",
"@types/node": "^20.4.2",
"@types/react": "18.2.6",
"@types/react-color": "^3.0.6",
"@types/react-syntax-highlighter": "^15.5.7",
"@types/styled-components": "^5.1.26",
"eslint": "8.43.0",
"eslint-config-next": "13.4.6",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-unused-imports": "^2.0.0",
"prettier": "^2.8.8",
"eslint": "8.45.0",
"eslint-config-next": "13.4.10",
"eslint-plugin-prettier": "^5.0.0",
"eslint-plugin-unused-imports": "^3.0.0",
"prettier": "^3.0.0",
"ts-node": "^10.9.1",
"typescript": "5.0.4"
"typescript": "5.1.6"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -1,13 +0,0 @@
import { APIError, createClient } from "altogic";
let envUrl = process.env.NEXT_PUBLIC_ALTOGIC_ENV_URL as string;
let clientKey = process.env.NEXT_PUBLIC_ALTOGIC_CLIENT_KEY as string;
const altogic = createClient(envUrl, clientKey);
export interface AltogicResponse<T> {
data: T;
errors: APIError | null;
}
export { altogic };

View File

@ -45,13 +45,17 @@ const AdWrapper = styled.div`
background: #fff;
box-shadow: 0 1px 4px 1px hsla(0, 0%, 0%, 0.15);
opacity: 0;
transition: transform 0.2s ease-in-out, opacity 0.1s ease-in-out;
transition:
transform 0.2s ease-in-out,
opacity 0.1s ease-in-out;
transform: scale(1) translateY(-50px);
}
& #native-button:checked + .native-overlay {
opacity: 1;
transition: transform 0.2s ease-in-out, opacity 0.4s ease-in-out;
transition:
transform 0.2s ease-in-out,
opacity 0.4s ease-in-out;
transform: scale(1) translateY(0);
}
@ -119,6 +123,7 @@ export const AdTest = () => {
if (window.innerWidth < 660) return;
ref.current.innerHTML = "";
const s = document.createElement("script");
s.id = "_carbonads_js";
s.innerHTML = `(function() {
if (typeof _bsa !== 'undefined' && _bsa) {

View File

@ -9,8 +9,9 @@ export const CarbonAds = () => {
if (!premium) {
ref.current.innerHTML = "";
const s = document.createElement("script");
s.id = "_carbonads_js";
s.src = `//cdn.carbonads.com/carbon.js?serve=CE7IPKQL&placement=jsoncrackcom`;
s.src = "//cdn.carbonads.com/carbon.js?serve=CE7IPKQL&placement=jsoncrackcom";
ref.current.appendChild(s);
}
}, [premium]);

View File

@ -5,11 +5,12 @@ import * as Styled from "./styles";
const Node: React.FC<CustomNodeProps> = ({ node, x, y }) => {
const { text, width, height, data } = node;
if (data.isEmpty) return null;
if (data?.isEmpty) return null;
return (
<Styled.StyledForeignObject width={width} height={height} x={0} y={0} isObject>
{text.map((val, idx) => {
{(text as [string, unknown][]).map((val, idx) => {
return (
<Styled.StyledRow
data-key={JSON.stringify(val)}

View File

@ -2,9 +2,9 @@ import React from "react";
import styled from "styled-components";
import { MdLink, MdLinkOff } from "react-icons/md";
import { CustomNodeProps } from "src/components/CustomNode";
import { isContentImage } from "src/lib/utils/core/calculateNodeSize";
import useGraph from "src/store/useGraph";
import useStored from "src/store/useStored";
import { isContentImage } from "src/utils/core/calculateNodeSize";
import { TextRenderer } from "./TextRenderer";
import * as Styled from "./styles";
@ -56,7 +56,7 @@ const Node: React.FC<CustomNodeProps> = ({ node, x, y, hasCollapse = false }) =>
const expandNodes = useGraph(state => state.expandNodes);
const collapseNodes = useGraph(state => state.collapseNodes);
const isExpanded = useGraph(state => state.collapsedParents.includes(id));
const isImage = imagePreview && isContentImage(text);
const isImage = imagePreview && isContentImage(text as string);
const handleExpand = (e: React.MouseEvent<HTMLButtonElement>) => {
e.stopPropagation();
@ -75,7 +75,7 @@ const Node: React.FC<CustomNodeProps> = ({ node, x, y, hasCollapse = false }) =>
>
{isImage ? (
<StyledImageWrapper>
<StyledImage src={text} width="70" height="70" loading="lazy" />
<StyledImage src={text as string} width="70" height="70" loading="lazy" />
</StyledImageWrapper>
) : (
<StyledTextNodeWrapper

View File

@ -1,5 +1,6 @@
import React from "react";
import { Node, NodeProps } from "reaflow";
import { NodeData } from "src/types/models";
import { ObjectNode } from "./ObjectNode";
import { TextNode } from "./TextNode";

View File

@ -4,7 +4,7 @@ import Script from "next/script";
const isDevelopment = process.env.NODE_ENV === "development";
const GA_TRACKING_ID = process.env.NEXT_PUBLIC_GA_ID;
export const GoogleAnalytics: React.FC = () => {
const GoogleAnalytics: React.FC = () => {
if (isDevelopment) return null;
return (
@ -30,3 +30,5 @@ export const GoogleAnalytics: React.FC = () => {
</>
);
};
export default GoogleAnalytics;

View File

@ -64,20 +64,32 @@ const StyledPremiumView = styled.div`
.glowing span:nth-child(3n + 1)::before {
background: rgba(134, 255, 0, 1);
box-shadow: 0 0 20px rgba(134, 255, 0, 1), 0 0 40px rgba(134, 255, 0, 1),
0 0 60px rgba(134, 255, 0, 1), 0 0 80px rgba(134, 255, 0, 1), 0 0 0 8px rgba(134, 255, 0, 0.1);
box-shadow:
0 0 20px rgba(134, 255, 0, 1),
0 0 40px rgba(134, 255, 0, 1),
0 0 60px rgba(134, 255, 0, 1),
0 0 80px rgba(134, 255, 0, 1),
0 0 0 8px rgba(134, 255, 0, 0.1);
}
.glowing span:nth-child(3n + 2)::before {
background: rgba(255, 214, 0, 1);
box-shadow: 0 0 20px rgba(255, 214, 0, 1), 0 0 40px rgba(255, 214, 0, 1),
0 0 60px rgba(255, 214, 0, 1), 0 0 80px rgba(255, 214, 0, 1), 0 0 0 8px rgba(255, 214, 0, 0.1);
box-shadow:
0 0 20px rgba(255, 214, 0, 1),
0 0 40px rgba(255, 214, 0, 1),
0 0 60px rgba(255, 214, 0, 1),
0 0 80px rgba(255, 214, 0, 1),
0 0 0 8px rgba(255, 214, 0, 0.1);
}
.glowing span:nth-child(3n + 3)::before {
background: rgba(0, 226, 255, 1);
box-shadow: 0 0 20px rgba(0, 226, 255, 1), 0 0 40px rgba(0, 226, 255, 1),
0 0 60px rgba(0, 226, 255, 1), 0 0 80px rgba(0, 226, 255, 1), 0 0 0 8px rgba(0, 226, 255, 0.1);
box-shadow:
0 0 20px rgba(0, 226, 255, 1),
0 0 40px rgba(0, 226, 255, 1),
0 0 60px rgba(0, 226, 255, 1),
0 0 80px rgba(0, 226, 255, 1),
0 0 0 8px rgba(0, 226, 255, 0.1);
}
.glowing span:nth-child(3n + 1) {

View File

@ -8,11 +8,14 @@ import useToggleHide from "src/hooks/useToggleHide";
import useGraph from "src/store/useGraph";
import useModal from "src/store/useModal";
import useUser from "src/store/useUser";
import { NodeData } from "src/types/models";
import { Loading } from "../../layout/Loading";
import { ErrorView } from "./ErrorView";
import { PremiumView } from "./PremiumView";
const Canvas = dynamic(() => import("reaflow").then(r => r.Canvas));
const Canvas = dynamic(() => import("reaflow").then(r => r.Canvas), {
ssr: false,
});
interface GraphProps {
isWidget?: boolean;
@ -32,8 +35,16 @@ const StyledEditorWrapper = styled.div<{ widget: boolean }>`
linear-gradient(90deg, var(--line-color-1) 1.5px, transparent 1.5px),
linear-gradient(var(--line-color-2) 1px, transparent 1px),
linear-gradient(90deg, var(--line-color-2) 1px, transparent 1px);
background-position: -1.5px -1.5px, -1.5px -1.5px, -1px -1px, -1px -1px;
background-size: 100px 100px, 100px 100px, 20px 20px, 20px 20px;
background-position:
-1.5px -1.5px,
-1.5px -1.5px,
-1px -1px,
-1px -1px;
background-size:
100px 100px,
100px 100px,
20px 20px,
20px 20px;
:active {
cursor: move;
@ -116,6 +127,7 @@ export const Graph = ({ isWidget = false }: GraphProps) => {
const memoizedNode = React.useCallback(
(props: JSX.IntrinsicAttributes & NodeProps<any>) => (
// @ts-ignore
<CustomNode {...props} onClick={handleNodeClick} animated={false} />
),
[handleNodeClick]

View File

@ -6,6 +6,7 @@ export const HovercardAds = () => {
React.useEffect(() => {
const isAvailable = document.querySelectorAll("#_hellobar_")[0];
if (typeof window._bsa !== "undefined" && window._bsa && !!!isAvailable) {
window._bsa.init("hellobar", "CE7IPKQL", "placement:jsoncrackcom");
}

View File

@ -1,7 +1,7 @@
import localFont from "next/font/local";
const monaSans = localFont({
src: "../pages/Mona-Sans.woff2",
src: "../assets/fonts/Mona-Sans.woff2",
variable: "--mona-sans",
display: "swap",
fallback: ["Arial, Helvetica, sans-serif", "Tahoma, Verdana, sans-serif"],

View File

@ -1,11 +0,0 @@
/* eslint unused-imports/no-unused-imports: 0 */
enum FileFormat {
"JSON" = "json",
"YAML" = "yaml",
"XML" = "xml",
"TOML" = "toml",
"CSV" = "csv",
}
export { FileFormat };

View File

@ -16,3 +16,5 @@ export const JsonEditor: React.FC = () => {
</StyledEditorWrapper>
);
};
export default JsonEditor;

View File

@ -18,16 +18,16 @@ import {
VscSettingsGear,
} from "react-icons/vsc";
import { SearchInput } from "src/components/SearchInput";
import { FileFormat } from "src/constants/file";
import { JSONCrackLogo } from "src/layout/JsonCrackLogo";
import { getNextDirection } from "src/lib/utils/graph/getNextDirection";
import { isIframe } from "src/lib/utils/widget";
import useFile from "src/store/useFile";
import useGraph from "src/store/useGraph";
import useJson from "src/store/useJson";
import useModal from "src/store/useModal";
import useStored from "src/store/useStored";
import useUser from "src/store/useUser";
import { getNextDirection } from "src/utils/graph/getNextDirection";
import { isIframe } from "src/utils/widget";
import { FileFormat } from "src/types/models";
export const StyledTools = styled.div`
position: relative;
@ -121,6 +121,7 @@ export const Tools: React.FC<{ isWidget?: boolean }> = ({ isWidget = false }) =>
const toggleDirection = () => {
const nextDirection = getNextDirection(direction);
setDirection(nextDirection);
};
@ -149,6 +150,7 @@ export const Tools: React.FC<{ isWidget?: boolean }> = ({ isWidget = false }) =>
"mod+f",
() => {
const input = document.querySelector("#search-node") as HTMLInputElement;
input.focus();
},
],

View File

@ -3,7 +3,6 @@ import dynamic from "next/dynamic";
import styled from "styled-components";
import { Allotment } from "allotment";
import "allotment/dist/style.css";
import { JsonEditor } from "src/containers/Editor/JsonEditor";
import useGraph from "src/store/useGraph";
export const StyledEditor = styled(Allotment)`
@ -17,6 +16,10 @@ export const StyledEditor = styled(Allotment)`
}
`;
const JsonEditor = dynamic(() => import("src/containers/Editor/JsonEditor"), {
ssr: false,
});
const LiveEditor = dynamic(() => import("src/containers/Editor/LiveEditor"), {
ssr: false,
});

View File

@ -1,7 +1,7 @@
import React from "react";
import { Modal, Group, Button, Divider, ModalProps, Text, Image, Anchor } from "@mantine/core";
import { toast } from "react-hot-toast";
import { altogic } from "src/api/altogic";
import { altogic } from "src/lib/api/altogic";
export const CancelPremiumModal: React.FC<ModalProps> = ({ opened, onClose }) => {
const [cancelling, setCancelling] = React.useState(false);

View File

@ -43,6 +43,7 @@ const swatches = [
function downloadURI(uri: string, name: string) {
var link = document.createElement("a");
link.download = name;
link.href = uri;
document.body.appendChild(link);

View File

@ -10,6 +10,7 @@ export const JWTModal: React.FC<ModalProps> = ({ opened, onClose }) => {
const resolve = () => {
if (!token) return;
const json = decode(token);
setContents({ contents: JSON.stringify(json, null, 2) });
setToken("");
onClose();

View File

@ -6,12 +6,12 @@ import vsDark from "prism-react-renderer/themes/vsDark";
import vsLight from "prism-react-renderer/themes/vsLight";
import { VscLock } from "react-icons/vsc";
import { shallow } from "zustand/shallow";
import { isIframe } from "src/lib/utils/widget";
import useFile from "src/store/useFile";
import useGraph from "src/store/useGraph";
import useModal from "src/store/useModal";
import useStored from "src/store/useStored";
import useUser from "src/store/useUser";
import { isIframe } from "src/utils/widget";
const dataToString = (data: any) => {
const text = Array.isArray(data) ? Object.fromEntries(data) : data;
@ -53,9 +53,9 @@ export const NodeModal: React.FC<ModalProps> = ({ opened, onClose }) => {
const lightmode = useStored(state => (state.lightmode ? "light" : "vs-dark"));
const [nodeData, path, isParent] = useGraph(
state => [
dataToString(state.selectedNode.text),
state.selectedNode.path,
state.selectedNode.data?.isParent,
dataToString(state.selectedNode?.text),
state.selectedNode?.path,
state.selectedNode?.data?.isParent,
],
shallow
);

View File

@ -13,6 +13,7 @@ export const SchemaModal: React.FC<ModalProps> = ({ opened, onClose }) => {
const onApply = () => {
try {
const parsedSchema = JSON.parse(schema);
setJsonSchema(parsedSchema);
toast.success("Applied schema!");
onClose();

View File

@ -1,7 +1,7 @@
import React from "react";
import { useDebouncedValue } from "@mantine/hooks";
import { searchQuery, cleanupHighlight, highlightMatchedNodes } from "src/lib/utils/graph/search";
import useGraph from "src/store/useGraph";
import { searchQuery, cleanupHighlight, highlightMatchedNodes } from "src/utils/graph/search";
export const useFocusNode = () => {
const zoomPanPinch = useGraph(state => state.zoomPanPinch);
@ -34,6 +34,7 @@ export const useFocusNode = () => {
(ref.offsetLeft - y) * newScale +
ref.clientHeight / 8 -
matchedNode.getBoundingClientRect().height / 8;
highlightMatchedNodes(matchedNodes, selectedNode);
setNodeCount(matchedNodes.length);

View File

@ -16,15 +16,18 @@ const useToggleHide = () => {
const validateHiddenNodes = React.useCallback(() => {
const hiddenItems = document.body.querySelectorAll(".hide");
hiddenItems.forEach(item => item.classList.remove("hide"));
if (nodeList.length) {
const selectedNodes = document.body.querySelectorAll(nodeList.join(","));
selectedNodes.forEach(node => node.classList.add("hide"));
}
if (edgeList.length) {
const selectedEdges = document.body.querySelectorAll(edgeList.join(","));
selectedEdges.forEach(edge => edge.classList.add("hide"));
}
}, [nodeList, edgeList]);

View File

@ -43,8 +43,9 @@ const isExternal = () => {
return false;
};
export const ExternalMode = () => {
const ExternalMode = () => {
const [isOpen, setOpen] = React.useState(false);
if (!isExternal()) return null;
const closeModal = () => setOpen(false);
@ -84,3 +85,5 @@ export const ExternalMode = () => {
</StyledAlert>
);
};
export default ExternalMode;

View File

@ -1,43 +1,29 @@
import React from "react";
import { ModalProps } from "@mantine/core";
import {
AccountModal,
ClearModal,
DownloadModal,
ImportModal,
JWTModal,
LoginModal,
Modal,
NodeModal,
PremiumModal,
SchemaModal,
SettingsModal,
ShareModal,
CancelPremiumModal,
} from "src/containers/Modals";
import { CloudModal } from "src/containers/Modals/CloudModal";
import * as Modals from "src/containers/Modals";
import { Modal } from "src/containers/Modals";
import useModal from "src/store/useModal";
import { EditorMantine } from "../EditorMantine";
type ModalComponent = { key: Modal; component: React.FC<ModalProps> };
const modalComponents: ModalComponent[] = [
{ key: "import", component: ImportModal },
{ key: "clear", component: ClearModal },
{ key: "download", component: DownloadModal },
{ key: "settings", component: SettingsModal },
{ key: "cloud", component: CloudModal },
{ key: "account", component: AccountModal },
{ key: "premium", component: PremiumModal },
{ key: "login", component: LoginModal },
{ key: "share", component: ShareModal },
{ key: "jwt", component: JWTModal },
{ key: "node", component: NodeModal },
{ key: "schema", component: SchemaModal },
{ key: "cancelPremium", component: CancelPremiumModal },
{ key: "import", component: Modals.ImportModal },
{ key: "clear", component: Modals.ClearModal },
{ key: "download", component: Modals.DownloadModal },
{ key: "settings", component: Modals.SettingsModal },
{ key: "cloud", component: Modals.CloudModal },
{ key: "account", component: Modals.AccountModal },
{ key: "premium", component: Modals.PremiumModal },
{ key: "login", component: Modals.LoginModal },
{ key: "share", component: Modals.ShareModal },
{ key: "jwt", component: Modals.JWTModal },
{ key: "node", component: Modals.NodeModal },
{ key: "schema", component: Modals.SchemaModal },
{ key: "cancelPremium", component: Modals.CancelPremiumModal },
];
export const ModalController = () => {
const ModalController = () => {
const setVisible = useModal(state => state.setVisible);
const modalStates = useModal(state => modalComponents.map(modal => state[modal.key]));
@ -52,3 +38,5 @@ export const ModalController = () => {
</EditorMantine>
);
};
export default ModalController;

14
src/lib/api/altogic.ts Normal file
View File

@ -0,0 +1,14 @@
import { APIError, createClient } from "altogic";
const envUrl = process.env.NEXT_PUBLIC_ALTOGIC_ENV_URL as string;
const clientKey = process.env.NEXT_PUBLIC_ALTOGIC_CLIENT_KEY as string;
const altogic = createClient(envUrl, clientKey);
interface AltogicResponse<T> {
data: T;
errors: APIError | null;
}
export { altogic };
export type { AltogicResponse };

View File

@ -1,11 +1,12 @@
import { NodeType } from "jsonc-parser";
import { Graph } from "../json/jsonParser";
import { calculateNodeSize } from "./calculateNodeSize";
type Props = {
graph: Graph;
text: any;
text: string | [string, string][];
isEmpty?: boolean;
type?: "string" | "number" | "boolean" | "object" | "array" | "null";
type?: NodeType;
};
export const addNodeToGraph = ({ graph, text, type = "null", isEmpty = false }: Props) => {

View File

@ -12,6 +12,7 @@ export const isContentImage = (value: string | [string, string][]) => {
const isImageURL = /(https?:\/\/.*\.(?:png|jpg|gif))/i.test(value);
const isBase64 = value.startsWith("data:image/") && value.includes("base64");
return isImageURL || isBase64;
};
@ -21,6 +22,7 @@ const calculateWidthAndHeight = (str: string, single = false) => {
if (!str) return { width: 45, height: 45 };
const dummyElement = document.createElement("div");
dummyElement.style.whiteSpace = single ? "nowrap" : "pre-wrap";
dummyElement.innerHTML = str;
dummyElement.style.fontSize = "12px";
@ -34,6 +36,7 @@ const calculateWidthAndHeight = (str: string, single = false) => {
const width = dummyElement.offsetWidth + 4;
const height = dummyElement.offsetHeight;
document.body.removeChild(dummyElement);
return { width, height };
@ -49,6 +52,7 @@ export const calculateNodeSize = (text: string | [string, string][], isParent =
// check cache
if (sizeCache.has(cacheKey)) {
const size = sizeCache.get(cacheKey);
if (size) return size;
}
@ -59,6 +63,7 @@ export const calculateNodeSize = (text: string | [string, string][], isParent =
}
let sizes = calculateWidthAndHeight(lines, typeof text === "string");
if (isImage) sizes = { width: 80, height: 80 };
if (foldNodes) sizes.width = 300;
if (isParent && foldNodes) sizes.width = 170;

View File

@ -33,13 +33,14 @@ function handleNoChildren(
if (parentType === "property" && nextType !== "object" && nextType !== "array") {
states.brothersParentId = myParentId;
if (nextType === undefined) {
if (nextType === undefined && Array.isArray(states.brothersNode)) {
states.brothersNode.push([states.brotherKey, value]);
} else {
states.brotherKey = value;
}
} else if (parentType === "array") {
const nodeFromArrayId = addNodeToGraph({ graph, text: String(value) });
if (myParentId) {
addEdgeToGraph(graph, myParentId, nodeFromArrayId);
}
@ -77,8 +78,9 @@ function handleHasChildren(
const modifyNodes = [...graph.nodes];
const foundNode = modifyNodes[findNodeIndex];
foundNode.text = foundNode.text.concat(states.brothersNode);
foundNode.text = foundNode.text.concat(states.brothersNode as any);
const { width, height } = calculateNodeSize(foundNode.text, false);
foundNode.width = width;
foundNode.height = height;
@ -87,6 +89,7 @@ function handleHasChildren(
}
} else {
const brothersNodeId = addNodeToGraph({ graph, text: states.brothersNode });
states.brothersNode = [];
if (states.brothersParentId) {
@ -142,6 +145,7 @@ function handleHasChildren(
const traverseArray = () => {
children.forEach((objectToTraverse, index, array) => {
const nextType = array[index + 1]?.type;
traverseObject(objectToTraverse, nextType);
});
};
@ -166,10 +170,11 @@ function handleHasChildren(
const modifyNodes = [...graph.nodes];
const findNodeIndex = modifyNodes.findIndex(e => e.id === findBrothersNode?.id);
if (modifyNodes[findNodeIndex]) {
if (modifyNodes[findNodeIndex] && typeof states.brothersNode === "string") {
modifyNodes[findNodeIndex].text += states.brothersNode;
const { width, height } = calculateNodeSize(modifyNodes[findNodeIndex].text, false);
modifyNodes[findNodeIndex].width = width;
modifyNodes[findNodeIndex].height = height;
@ -178,6 +183,7 @@ function handleHasChildren(
}
} else {
const brothersNodeId = addNodeToGraph({ graph, text: states.brothersNode });
states.brothersNode = [];
if (states.brothersParentId) {
@ -191,6 +197,7 @@ function handleHasChildren(
parentId: states.brothersParentId,
objectsFromArrayId: states.objectsFromArray[states.objectsFromArray.length - 1],
};
states.brothersNodeProps = [...states.brothersNodeProps, brothersNodeProps];
}
}
@ -213,6 +220,7 @@ function handleHasChildren(
graph.nodes = graph.nodes.map((node, index) => {
if (index === parentIndex) {
const childrenCount = myChildren.length;
return { ...node, data: { ...node.data, childrenCount } };
}
return node;

View File

@ -1,3 +1,5 @@
import { NodeData, EdgeData } from "src/types/models";
export const getChildrenEdges = (nodes: NodeData[], edges: EdgeData[]): EdgeData[] => {
const nodeIds = nodes.map(node => node.id);

View File

@ -1,3 +1,5 @@
import { NodeData, EdgeData } from "src/types/models";
export const getOutgoers = (
nodeId: string,
nodes: NodeData[],
@ -9,6 +11,7 @@ export const getOutgoers = (
if (parent.includes(nodeId)) {
const initialParentNode = nodes.find(n => n.id === nodeId);
if (initialParentNode) outgoerNodes.push(initialParentNode);
}

View File

@ -13,6 +13,7 @@ export const cleanupHighlight = () => {
export const highlightMatchedNodes = (nodes: NodeListOf<Element>, selectedNode: number) => {
nodes.forEach(node => {
const foreignObject = node.parentElement?.closest("foreignObject");
if (foreignObject) {
foreignObject.classList.add("searched");
}

View File

@ -1,3 +1,5 @@
import { NodeData, EdgeData } from "src/types/models";
export function getNodePath(nodes: NodeData[], edges: EdgeData[], nodeId: string) {
const { getParentsForNodeId } = require("reaflow");
@ -16,6 +18,7 @@ export function getNodePath(nodes: NodeData[], edges: EdgeData[], nodeId: string
for (let i = 1; i < edges.length; i++) {
const curNodeId = edges[i].from!;
if (rootArrayElementIds.includes(curNodeId)) continue;
if (!edgesMap.has(curNodeId)) {
rootArrayElementIds.push(curNodeId);
@ -33,17 +36,18 @@ export function getNodePath(nodes: NodeData[], edges: EdgeData[], nodeId: string
const curNode = nodes[+curId - 1];
if (!curNode) break;
if (curNode.data.type === "array") {
if (curNode.data?.type === "array") {
resolvedPath += `.${curNode.text}`;
if (i !== path.length - 1) {
const toNodeId = path[i + 1];
const idx = edgesMap.get(curId).indexOf(toNodeId);
resolvedPath += `[${idx}]`;
}
}
if (curNode.data.type === "object") {
if (curNode.data?.type === "object") {
resolvedPath += `.${curNode.text}`;
}
}

View File

@ -2,7 +2,7 @@ import { load, dump } from "js-yaml";
import { csv2json, json2csv } from "json-2-csv";
import jxon from "jxon";
import toml from "toml";
import { FileFormat } from "src/constants/file";
import { FileFormat } from "src/types/models";
const keyExists = (obj: object, key: string) => {
if (!obj || (typeof obj !== "object" && !Array.isArray(obj))) {
@ -12,6 +12,7 @@ const keyExists = (obj: object, key: string) => {
} else if (Array.isArray(obj)) {
for (let i = 0; i < obj.length; i++) {
const result = keyExists(obj[i], key);
if (result) {
return result;
}
@ -19,6 +20,7 @@ const keyExists = (obj: object, key: string) => {
} else {
for (const k in obj) {
const result = keyExists(obj[k], key);
if (result) {
return result;
}
@ -31,6 +33,7 @@ const keyExists = (obj: object, key: string) => {
const contentToJson = async (value: string, format = FileFormat.JSON): Promise<object> => {
try {
let json: object = {};
if (format === FileFormat.JSON) json = JSON.parse(value);
if (format === FileFormat.YAML) json = load(value) as object;
if (format === FileFormat.XML) json = jxon.stringToJs(value);
@ -47,6 +50,7 @@ const contentToJson = async (value: string, format = FileFormat.JSON): Promise<o
const jsonToContent = async (json: string, format: FileFormat): Promise<string> => {
try {
let contents = json;
if (!json) return json;
if (format === FileFormat.JSON) contents = json;
if (format === FileFormat.YAML) contents = dump(JSON.parse(json));

View File

@ -1,4 +1,5 @@
import { parseTree } from "jsonc-parser";
import { EdgeData, NodeData } from "src/types/models";
import { addEdgeToGraph } from "../core/addEdgeToGraph";
import { addNodeToGraph } from "../core/addNodeToGraph";
import { traverse } from "../core/traverse";
@ -15,7 +16,7 @@ export type States = {
objectsFromArray: number[];
objectsFromArrayId: number;
notHaveParent: string[];
brothersNode: [string, string][];
brothersNode: [string, string][] | string;
brothersParentId: string | undefined;
brotherKey: string;
brothersNodeProps: {
@ -48,6 +49,7 @@ export function parser(jsonStr: string): Graph {
try {
const states = initializeStates();
const parsedJsonTree = parseTree(jsonStr);
if (!parsedJsonTree) {
throw new Error("Invalid document");
}
@ -55,9 +57,11 @@ export function parser(jsonStr: string): Graph {
traverse({ states, objectToTraverse: parsedJsonTree });
const { notHaveParent, graph } = states;
if (notHaveParent.length > 1 && parsedJsonTree.type !== "array") {
const emptyNode = { id: null, text: "", isEmpty: true, data: {} };
const emptyId = addNodeToGraph({ graph, ...emptyNode });
notHaveParent.forEach(childId => addEdgeToGraph(graph, emptyId, childId));
}
@ -74,6 +78,8 @@ export function parser(jsonStr: string): Graph {
path: getNodePath(states.graph.nodes, states.graph.edges, node.id),
}));
console.log(states.graph);
return states.graph;
} catch (error) {
console.error(error);

View File

@ -1,15 +1,17 @@
import React from "react";
import type { AppProps } from "next/app";
import dynamic from "next/dynamic";
import { ThemeProvider } from "styled-components";
import { MantineProvider } from "@mantine/core";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { Toaster } from "react-hot-toast";
import { GoogleAnalytics } from "src/components/GoogleAnalytics";
import { monaSans } from "src/constants/customFonts";
import GlobalStyle from "src/constants/globalStyle";
import { lightTheme } from "src/constants/theme";
import { ExternalMode } from "src/layout/DevMode";
import { ModalController } from "src/layout/ModalController";
const Toaster = dynamic(() => import("react-hot-toast").then(c => c.Toaster));
const ExternalMode = dynamic(() => import("src/layout/ExternalMode"));
const GoogleAnalytics = dynamic(() => import("src/components/GoogleAnalytics"));
const ModalController = dynamic(() => import("src/layout/ModalController"));
const queryClient = new QueryClient({
defaultOptions: {

View File

@ -133,7 +133,9 @@ const Docs = () => {
where json is a string and options is an object that may contain the following:
<MediaQuery smallerThan="sm" styles={{ display: "none" }}>
<Prism w={500} language="json">
{`{\n theme: "light" | "dark",\n direction: "TOP" | "RIGHT" | "DOWN" | "LEFT"\n}`}
{
'{\n theme: "light" | "dark",\n direction: "TOP" | "RIGHT" | "DOWN" | "LEFT"\n}'
}
</Prism>
</MediaQuery>
</StyledDescription>

View File

@ -1,17 +1,19 @@
import React from "react";
import dynamic from "next/dynamic";
import Head from "next/head";
import { useRouter } from "next/router";
import styled from "styled-components";
import { defaultJson } from "src/constants/data";
import { BottomBar } from "src/containers/Editor/BottomBar";
import { Tools } from "src/containers/Editor/LiveEditor/Tools";
import Panes from "src/containers/Editor/Panes";
import { EditorMantine } from "src/layout/EditorMantine";
import { Loading } from "src/layout/Loading";
import useFile from "src/store/useFile";
import useJson from "src/store/useJson";
import useUser from "src/store/useUser";
const Panes = dynamic(() => import("src/containers/Editor/Panes"));
export const StyledPageWrapper = styled.div`
height: calc(100vh - 27px);
width: 100%;

View File

@ -1,4 +1,5 @@
import React from "react";
import dynamic from "next/dynamic";
import Head from "next/head";
import Link from "next/link";
import styled, { ThemeProvider } from "styled-components";
@ -20,9 +21,10 @@ import { SiVisualstudiocode } from "react-icons/si";
import { Typewriter } from "react-simple-typewriter";
import { HovercardAds } from "src/components/HovercardAds";
import { lightTheme } from "src/constants/theme";
import { Footer } from "src/layout/Footer";
import { Navbar } from "src/layout/Navbar";
const Footer = dynamic(() => import("src/layout/Footer").then(c => c.Footer));
const StyledHeroSection = styled.div`
--bg-color: ${({ theme }) => theme.GRID_BG_COLOR};
--line-color-1: ${({ theme }) => theme.GRID_COLOR_PRIMARY};
@ -33,8 +35,16 @@ const StyledHeroSection = styled.div`
linear-gradient(90deg, var(--line-color-1) 1.5px, transparent 1.5px),
linear-gradient(var(--line-color-2) 1px, transparent 1px),
linear-gradient(90deg, var(--line-color-2) 1px, transparent 1px);
background-position: -1.5px -1.5px, -1.5px -1.5px, -1px -1px, -1px -1px;
background-size: 100px 100px, 100px 100px, 20px 20px, 20px 20px;
background-position:
-1.5px -1.5px,
-1.5px -1.5px,
-1px -1px,
-1px -1px;
background-size:
100px 100px,
100px 100px,
20px 20px,
20px 20px;
@media only screen and (max-width: 1240px) {
flex-direction: column;
@ -252,7 +262,7 @@ const Features = () => (
</Stack>
</Flex>
<Flex py="lg" align="center" gap="lg" direction="row-reverse">
<Image width={300} height={260} src="/assets/multidata.png" alt="multiple format support" />
<Image width={300} height={260} src="/assets/multidata.webp" alt="multiple format support" />
<Stack>
<Text color="dark" fz="1.5rem" fw="bold">
DYNAMIC DATA VISUALIZATION

View File

@ -4,10 +4,10 @@ import { useRouter } from "next/router";
import styled from "styled-components";
import { PaperProps, Center, Button, Group, Paper, Stack, TextInput, Text } from "@mantine/core";
import { toast } from "react-hot-toast";
import { altogic } from "src/api/altogic";
import { Footer } from "src/layout/Footer";
import { JSONCrackLogo } from "src/layout/JsonCrackLogo";
import { Navbar } from "src/layout/Navbar";
import { altogic } from "src/lib/api/altogic";
import useUser from "src/store/useUser";
const StyledPageWrapper = styled.div`

View File

@ -22,10 +22,10 @@ import { useForm } from "@mantine/form";
import { useToggle, upperFirst } from "@mantine/hooks";
import { toast } from "react-hot-toast";
import { AiOutlineGithub, AiOutlineGoogle } from "react-icons/ai";
import { altogic } from "src/api/altogic";
import { Footer } from "src/layout/Footer";
import { JSONCrackLogo } from "src/layout/JsonCrackLogo";
import { Navbar } from "src/layout/Navbar";
import { altogic } from "src/lib/api/altogic";
import useUser from "src/store/useUser";
export function AuthenticationForm(props: PaperProps) {
@ -54,6 +54,7 @@ export function AuthenticationForm(props: PaperProps) {
const onSubmit = (e: React.FormEvent<HTMLFormElement>) => {
e.preventDefault();
const validate = form.validate();
if (validate.hasErrors) return;
setLoading(true);

View File

@ -1,8 +1,8 @@
import dayjs from "dayjs";
import { decompressFromBase64 } from "lz-string";
import { altogic, AltogicResponse } from "src/api/altogic";
import { FileFormat } from "src/constants/file";
import { altogic, AltogicResponse } from "src/lib/api/altogic";
import { File } from "src/store/useFile";
import { FileFormat } from "src/types/models";
const saveToCloud = async (
id: string | null,
@ -21,6 +21,7 @@ const getFromCloud = async (id: string) => {
if (errors) throw errors;
const isCompressed = dayjs("2023-04-20T07:04:25.255Z").isAfter(data?.updatedAt);
if (isCompressed) {
return { ...data, json: decompressFromBase64(data.json) };
}
@ -29,7 +30,7 @@ const getFromCloud = async (id: string) => {
};
const getAllJson = async (): Promise<AltogicResponse<{ result: File[] }>> =>
await altogic.endpoint.get(`json`);
await altogic.endpoint.get("json");
const updateJson = async (id: string, data: object) =>
await altogic.endpoint.put(`json/${id}`, {

View File

@ -4,9 +4,9 @@ import _set from "lodash.set";
import { toast } from "react-hot-toast";
import { create } from "zustand";
import { defaultJson } from "src/constants/data";
import { FileFormat } from "src/constants/file";
import { contentToJson, jsonToContent } from "src/lib/utils/json/jsonAdapter";
import { getFromCloud, saveToCloud } from "src/services/json";
import { contentToJson, jsonToContent } from "src/utils/json/jsonAdapter";
import { FileFormat } from "src/types/models";
import useGraph from "./useGraph";
import useJson from "./useJson";
import useStored from "./useStored";
@ -99,9 +99,11 @@ const useFile = create<FileStates & JsonActions>()((set, get) => ({
setFormat: async format => {
try {
const prevFormat = get().format;
set({ format });
const contentJson = await contentToJson(get().contents, prevFormat);
const jsonContent = await jsonToContent(JSON.stringify(contentJson, null, 2), format);
get().setContents({ contents: jsonContent, hasChanges: false });
} catch (error) {
get().clear();
@ -112,6 +114,7 @@ const useFile = create<FileStates & JsonActions>()((set, get) => ({
try {
set({ ...(contents && { contents }), error: null, hasChanges });
const json = await contentToJson(get().contents, get().format);
if (!useStored.getState().liveTransform && skipUpdate) return;
debouncedUpdateJson(json);
@ -164,6 +167,7 @@ const useFile = create<FileStates & JsonActions>()((set, get) => ({
if (isURL(id)) return get().fetchUrl(id);
const file = await getFromCloud(id);
get().setFile(file);
} catch (error) {
useJson.setState({ loading: false });
@ -195,6 +199,7 @@ const useFile = create<FileStates & JsonActions>()((set, get) => ({
);
const contents = await jsonToContent(JSON.stringify(newJson, null, 2), get().format);
get().setContents({ contents });
if (callback) callback();
} catch (error) {

View File

@ -1,29 +1,44 @@
import { ReactZoomPanPinchRef } from "react-zoom-pan-pinch";
import { CanvasDirection } from "reaflow/dist/layout/elkLayout";
import { create } from "zustand";
import { getChildrenEdges } from "src/utils/graph/getChildrenEdges";
import { getOutgoers } from "src/utils/graph/getOutgoers";
import { parser } from "src/utils/json/jsonParser";
import { getChildrenEdges } from "src/lib/utils/graph/getChildrenEdges";
import { getOutgoers } from "src/lib/utils/graph/getOutgoers";
import { parser } from "src/lib/utils/json/jsonParser";
import { NodeData, EdgeData } from "src/types/models";
import useJson from "./useJson";
const initialStates = {
zoomPanPinch: null as ReactZoomPanPinchRef | null,
direction: "RIGHT" as CanvasDirection,
export interface Graph {
zoomPanPinch: ReactZoomPanPinchRef | null;
direction: CanvasDirection;
loading: boolean;
graphCollapsed: boolean;
foldNodes: boolean;
fullscreen: boolean;
nodes: NodeData[];
edges: EdgeData[];
collapsedNodes: string[];
collapsedEdges: string[];
collapsedParents: string[];
selectedNode: NodeData | null;
path: string;
}
const initialStates: Graph = {
zoomPanPinch: null,
direction: "RIGHT",
loading: true,
graphCollapsed: false,
foldNodes: false,
fullscreen: false,
nodes: [] as NodeData[],
edges: [] as EdgeData[],
collapsedNodes: [] as string[],
collapsedEdges: [] as string[],
collapsedParents: [] as string[],
selectedNode: {} as NodeData,
nodes: [],
edges: [],
collapsedNodes: [],
collapsedEdges: [],
collapsedParents: [],
selectedNode: null,
path: "",
};
export type Graph = typeof initialStates;
interface GraphActions {
setGraph: (json?: string, options?: Partial<Graph>[]) => void;
setLoading: (loading: boolean) => void;
@ -48,6 +63,7 @@ const useGraph = create<Graph & GraphActions>((set, get) => ({
setSelectedNode: nodeData => set({ selectedNode: nodeData }),
setGraph: (data, options) => {
const { nodes, edges } = parser(data ?? useJson.getState().json);
set({
nodes,
edges,
@ -119,7 +135,7 @@ const useGraph = create<Graph & GraphActions>((set, get) => ({
.map(edge => edge.to);
const collapsedParents = get()
.nodes.filter(node => !parentNodesIds.includes(node.id) && node.data.isParent)
.nodes.filter(node => !parentNodesIds.includes(node.id) && node.data?.isParent)
.map(node => node.id);
const collapsedNodes = get()
@ -151,6 +167,7 @@ const useGraph = create<Graph & GraphActions>((set, get) => ({
},
zoomIn: () => {
const zoomPanPinch = get().zoomPanPinch;
zoomPanPinch?.setTransform(
zoomPanPinch?.state.positionX,
zoomPanPinch?.state.positionY,
@ -159,6 +176,7 @@ const useGraph = create<Graph & GraphActions>((set, get) => ({
},
zoomOut: () => {
const zoomPanPinch = get().zoomPanPinch;
zoomPanPinch?.setTransform(
zoomPanPinch?.state.positionX,
zoomPanPinch?.state.positionY,
@ -168,6 +186,7 @@ const useGraph = create<Graph & GraphActions>((set, get) => ({
centerView: () => {
const zoomPanPinch = get().zoomPanPinch;
const canvas = document.querySelector(".jsoncrack-canvas") as HTMLElement;
if (zoomPanPinch && canvas) zoomPanPinch.zoomToElement(canvas);
},
toggleFold: foldNodes => {

View File

@ -1,8 +1,8 @@
import * as Sentry from "@sentry/nextjs";
import { setUser } from "@sentry/nextjs";
import toast from "react-hot-toast";
import { create } from "zustand";
import { altogic } from "src/api/altogic";
import { AltogicAuth, User } from "src/typings/altogic";
import { altogic } from "src/lib/api/altogic";
import { AltogicAuth, User } from "src/types/altogic";
import useModal from "./useModal";
const isDevelopment = process.env.NODE_ENV === "development";
@ -43,9 +43,11 @@ const useUser = create<UserStates & UserActions>()(set => ({
setUser: (key, value) => set({ [key]: value }),
logout: async () => {
const session = altogic.auth.getSession();
if (!session) return;
const { errors } = await altogic.auth.signOut(session.token);
if (errors?.items) return console.error(errors);
set(initialStates);
@ -63,6 +65,7 @@ const useUser = create<UserStates & UserActions>()(set => ({
if (currentSession) {
const { user, errors } = await altogic.auth.getUserFromDB();
if (errors?.items || !user) {
altogic.auth.clearLocalData();
return;
@ -72,10 +75,11 @@ const useUser = create<UserStates & UserActions>()(set => ({
altogic.auth.setSession(currentSession);
const { data: premiumData } = await altogic.endpoint.get("/isPremium");
Sentry.setUser({ id: user._id, email: user.email, username: user.name });
setUser({ id: user._id, email: user.email, username: user.name });
set({ user: user as User, isAuthenticated: true, premium: premiumData.premium });
} else if (new URLSearchParams(window.location.search).get("access_token")) {
const { errors, user } = await altogic.auth.getAuthGrant();
if (errors?.items) {
toast.error(errors.items[0].message);
return;
@ -84,7 +88,7 @@ const useUser = create<UserStates & UserActions>()(set => ({
if (user) {
const { data: premiumData } = await altogic.endpoint.get("/isPremium");
Sentry.setUser({ id: user._id, email: user.email, username: user.name });
setUser({ id: user._id, email: user.email, username: user.name });
set({ user: user as User, isAuthenticated: true, premium: premiumData.premium });
}
}

30
src/types/models.ts Normal file
View File

@ -0,0 +1,30 @@
/* eslint unused-imports/no-unused-imports: 0 */
import { NodeType } from "jsonc-parser";
export interface NodeData {
id: string;
text: string | [string, string][];
width: number;
height: number;
path?: string;
data: {
type: NodeType;
isParent: boolean;
isEmpty: boolean;
childrenCount: number;
};
}
export interface EdgeData {
id: string;
from: string;
to: string;
}
export enum FileFormat {
"JSON" = "json",
"YAML" = "yaml",
"XML" = "xml",
"TOML" = "toml",
"CSV" = "csv",
}

View File

@ -1,32 +0,0 @@
interface NodeData<T = any> {
id: string;
disabled?: boolean;
text?: any;
path?: string;
height?: number;
width?: number;
isParent?: string;
ports?: PortData[];
icon?: IconData;
nodePadding?: number | [number, number] | [number, number, number, number];
data?: T;
className?: string;
layoutOptions?: ElkNodeLayoutOptions;
selectionDisabled?: boolean;
}
interface EdgeData<T = any> {
id: string;
disabled?: boolean;
text?: any;
from?: string;
to?: string;
fromPort?: string;
toPort?: string;
data?: T;
className?: string;
containerClassName?: string;
arrowHeadType?: any;
parent?: string;
selectionDisabled?: boolean;
}

View File

@ -15,7 +15,8 @@
"isolatedModules": true,
"jsx": "preserve",
"incremental": true,
"noImplicitAny": false
"noImplicitAny": false,
"typeRoots": ["types"]
},
"include": ["src", "next-env.d.ts",],
"exclude": ["node_modules"]

594
yarn.lock
View File

@ -2,6 +2,11 @@
# yarn lockfile v1
"@aashutoshrathi/word-wrap@^1.2.3":
version "1.2.6"
resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf"
integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a"
@ -316,14 +321,14 @@
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884"
integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==
"@eslint/eslintrc@^2.0.3":
version "2.0.3"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.3.tgz#4910db5505f4d503f27774bf356e3704818a0331"
integrity sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==
"@eslint/eslintrc@^2.1.0":
version "2.1.0"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.0.tgz#82256f164cc9e0b59669efc19d57f8092706841d"
integrity sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==
dependencies:
ajv "^6.12.4"
debug "^4.3.2"
espree "^9.5.2"
espree "^9.6.0"
globals "^13.19.0"
ignore "^5.2.0"
import-fresh "^3.2.1"
@ -331,10 +336,10 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
"@eslint/js@8.43.0":
version "8.43.0"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.43.0.tgz#559ca3d9ddbd6bf907ad524320a0d14b85586af0"
integrity sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==
"@eslint/js@8.44.0":
version "8.44.0"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.44.0.tgz#961a5903c74139390478bdc808bcde3fc45ab7af"
integrity sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==
"@floating-ui/core@^1.2.2":
version "1.2.2"
@ -433,67 +438,67 @@
resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz#08d6c5e20cf7e4cc02fd181c4b0c225cd31dbb60"
integrity sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==
"@mantine/core@^6.0.13":
version "6.0.13"
resolved "https://registry.yarnpkg.com/@mantine/core/-/core-6.0.13.tgz#f05a952e1e2e3cc6eb24d4d77b6c96a1c23fb0bb"
integrity sha512-FjVUGgat2qISV9WD1maVJa81y7H0JjKJ3m0cJj65PzgrXT20hzdEda7S3i4j+a8vUnx+836x5q/yS+RDHvoSlA==
"@mantine/core@^6.0.16":
version "6.0.16"
resolved "https://registry.yarnpkg.com/@mantine/core/-/core-6.0.16.tgz#bd5271ec907cf2d7df2f9b791bc5d406f75dafe1"
integrity sha512-ai7HfWo214JLmf+QNEmFfTaBgxreMpY/ZK7dIDNkFfCmDAWjFxwCSc7flh8NHX2ZJN5uTc82p2i0MLJ/GZ5xrA==
dependencies:
"@floating-ui/react" "^0.19.1"
"@mantine/styles" "6.0.13"
"@mantine/utils" "6.0.13"
"@mantine/styles" "6.0.16"
"@mantine/utils" "6.0.16"
"@radix-ui/react-scroll-area" "1.0.2"
react-remove-scroll "^2.5.5"
react-textarea-autosize "8.3.4"
"@mantine/form@^6.0.13":
version "6.0.13"
resolved "https://registry.yarnpkg.com/@mantine/form/-/form-6.0.13.tgz#9d0e87efb0e139702b01f387fdec0d977ecdc385"
integrity sha512-oR/bnnJEd6T42N5pUhXYZ5RaKC4EZozEFW2jHCWDKIAJDjIgGUQrLL/tCjclQ2NwtghaoCTz+9zu32CuXer7TA==
"@mantine/form@^6.0.16":
version "6.0.16"
resolved "https://registry.yarnpkg.com/@mantine/form/-/form-6.0.16.tgz#c6b7064a87df17dad82101a71ebe96ccd37e686f"
integrity sha512-4TwxJKGQQRx7rj5yb9WgS0z/Ud8ckg0mMCiD3grKTxDCp0g8Tvk2Df7ptWFx2n+hxhBYVwMQSKggWuuDMFWBNA==
dependencies:
fast-deep-equal "^3.1.3"
klona "^2.0.5"
"@mantine/hooks@^6.0.13":
version "6.0.13"
resolved "https://registry.yarnpkg.com/@mantine/hooks/-/hooks-6.0.13.tgz#d90fa315ee30a900e0d9a460c6bb00c9a65f18e0"
integrity sha512-fHuE3zXo5OP/Q1dMOTnegU6U+tI9GuhO2tgOz6szVuOxrrk0Hzuq1Na9NUSv27HShSRbAfQk+hvyIh+iVV7KXA==
"@mantine/hooks@^6.0.16":
version "6.0.16"
resolved "https://registry.yarnpkg.com/@mantine/hooks/-/hooks-6.0.16.tgz#507c322347659424a915ec6b541d848f53abcf6a"
integrity sha512-DnfMYSTSjYxbQJ80TzKHO5gRXGTIQKxBnRQVc+n4RANTwgWMiwEmxIwqRjbulfLzIhEvplskhqGgElunIAfw7g==
"@mantine/next@^6.0.13":
version "6.0.13"
resolved "https://registry.yarnpkg.com/@mantine/next/-/next-6.0.13.tgz#018d9dc8a93430d45176df505978f8025e420588"
integrity sha512-dUQ3cxZ/6f6hxegx6zV4aCPAgZSb9NlCQkDlELvtiAJXpIKtogOcVxxKWaDSEHD5YHVeV2f+CBPVqaa3LddiYg==
"@mantine/next@^6.0.16":
version "6.0.16"
resolved "https://registry.yarnpkg.com/@mantine/next/-/next-6.0.16.tgz#3d266a96446a3da8ec8296f12b227e2e93cb4fc1"
integrity sha512-shIcYK/tK/jQpdJkzdgukgwwpqiBxoskaCJDcuZxPVckPYssKLscZlxaiyBShFmPqd1bxULJ0L9w+F73qibECw==
dependencies:
"@mantine/ssr" "6.0.13"
"@mantine/styles" "6.0.13"
"@mantine/ssr" "6.0.16"
"@mantine/styles" "6.0.16"
"@mantine/prism@^6.0.13":
version "6.0.13"
resolved "https://registry.yarnpkg.com/@mantine/prism/-/prism-6.0.13.tgz#ef840bf2cd59d567db203bba167e9c77155eda39"
integrity sha512-048dxoEw4XeJAVh8sBzMguhk+pG8ULDPVGI+aQBsuoERezSV4WVqeKl1+ddoOew3qXbsH/UH4ox5lmf1S4WTwg==
"@mantine/prism@^6.0.16":
version "6.0.16"
resolved "https://registry.yarnpkg.com/@mantine/prism/-/prism-6.0.16.tgz#a183d6899bb1dd8e0b90725a7d00708d9b8c4518"
integrity sha512-bWnwRMA7fBfSMpZO2YHIsJ4yt3JTZmPp1nQ62JKpey7rfCJMMuzuCXagCHZthEChZZoQnwmndr4agEzuNIIxmA==
dependencies:
"@mantine/utils" "6.0.13"
"@mantine/utils" "6.0.16"
prism-react-renderer "^1.2.1"
"@mantine/ssr@6.0.13":
version "6.0.13"
resolved "https://registry.yarnpkg.com/@mantine/ssr/-/ssr-6.0.13.tgz#5ccfdc8b7c26e16c326b7f91200f6a38bb58965e"
integrity sha512-IMeWkzTvBM5/LjAprdF6o0Xn6U8mv/Hi88YDZpTLDkRAc9QBEOy4P9zOmpHz3YLRFHQm+Hqr078YckDh5F+KXQ==
"@mantine/ssr@6.0.16":
version "6.0.16"
resolved "https://registry.yarnpkg.com/@mantine/ssr/-/ssr-6.0.16.tgz#020ea4d9509321206c1c0c4cdeb8d30fe2caac8c"
integrity sha512-caF6MQrYMlydVZBvqsZWetA1UECZsYH6EOUix2VNwRGC66PdWFXW98IROBTYZGVixNB1gxcTrcXsoJ1UrsFJwA==
dependencies:
"@mantine/styles" "6.0.13"
"@mantine/styles" "6.0.16"
html-react-parser "1.4.12"
"@mantine/styles@6.0.13":
version "6.0.13"
resolved "https://registry.yarnpkg.com/@mantine/styles/-/styles-6.0.13.tgz#a3dc542e1613e7cc461dd8b11c6069b5dd8143d7"
integrity sha512-+27oX8ObiBv8jHHDxXKjqe+7cfTJyaAV/Ie00T49EE4LuHuS6nL4vlXHmqamFtDCj2ypEWBV0sdXDev/DNAXSg==
"@mantine/styles@6.0.16":
version "6.0.16"
resolved "https://registry.yarnpkg.com/@mantine/styles/-/styles-6.0.16.tgz#625e5be80fc964fa6634f10e798c19f5a4c265ce"
integrity sha512-0rDE3BzJOKVdPAbnL3XokVWNYgo1z323UgAURdB+WvzwZY7PhblwvrxUDwvvV77qCUENg2vU0LKHqTQD1DDLTg==
dependencies:
clsx "1.1.1"
csstype "3.0.9"
"@mantine/utils@6.0.13":
version "6.0.13"
resolved "https://registry.yarnpkg.com/@mantine/utils/-/utils-6.0.13.tgz#a7adc128a2e7c07031c7221c1533800d0c80279a"
integrity sha512-iqIU9wurqAeccVbWjM0yr1JGne5VP+ob55M03QAXOEN4+ck93VDTjCkZJR2RFhDcs5q0twQFoOmU/gULR8aKIA==
"@mantine/utils@6.0.16":
version "6.0.16"
resolved "https://registry.yarnpkg.com/@mantine/utils/-/utils-6.0.16.tgz#b39e47ef8fa4463322e9aa10cdd5980f4310b705"
integrity sha512-UFel9DbifL3zS8pTJlr6GfwGd6464OWXCJdUq0oLydgimbC1VV2PnptBr6FMwIpPVcxouLOtY1cChzwFH95PSA==
"@monaco-editor/loader@^1.3.3":
version "1.3.3"
@ -562,89 +567,69 @@
hey-listen "^1.0.8"
tslib "^2.3.1"
"@next/bundle-analyzer@^13.4.3":
version "13.4.3"
resolved "https://registry.yarnpkg.com/@next/bundle-analyzer/-/bundle-analyzer-13.4.3.tgz#7e48a91eac582e32e4d235d8cf7503843f100000"
integrity sha512-jzWk6eaCFaIXfIswyQQWnR6FN22HpWoSWe3nLa3JCNkNd2ksriJgn86oQyZRxgAPaEbVKQXBp8GZi8e5DrhVJg==
"@next/bundle-analyzer@^13.4.10":
version "13.4.10"
resolved "https://registry.yarnpkg.com/@next/bundle-analyzer/-/bundle-analyzer-13.4.10.tgz#b4393f74567e6cedf6f31e6f3d0dfcbb2ef4d3dc"
integrity sha512-QwjRH/x1coj8+2Q2suXKez01Irc/rZQXiZ7qE96jj/xR1C+zze6cEdlhWzMlsBFlLmazBhFeOb0PeK6r4dVImA==
dependencies:
webpack-bundle-analyzer "4.7.0"
"@next/env@13.2.3":
version "13.2.3"
resolved "https://registry.yarnpkg.com/@next/env/-/env-13.2.3.tgz#77ca49edb3c1d7c5263bb8f2ebe686080e98279e"
integrity sha512-FN50r/E+b8wuqyRjmGaqvqNDuWBWYWQiigfZ50KnSFH0f+AMQQyaZl+Zm2+CIpKk0fL9QxhLxOpTVA3xFHgFow==
"@next/env@13.3.0":
version "13.3.0"
resolved "https://registry.yarnpkg.com/@next/env/-/env-13.3.0.tgz#cc2e49f03060a4684ce7ec7fd617a21bc5b9edba"
integrity sha512-AjppRV4uG3No7L1plinoTQETH+j2F10TEnrMfzbTUYwze5sBUPveeeBAPZPm8OkJZ1epq9OyYKhZrvbD6/9HCQ==
"@next/eslint-plugin-next@13.4.6":
version "13.4.6"
resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-13.4.6.tgz#6a291305226b3f762fdbc01e123efadeb63e5aaf"
integrity sha512-bPigeu0RI7bgy1ucBA2Yqcfg539y0Lzo38P2hIkrRB1GNvFSbYg6RTu8n6tGqPVrH3TTlPTNKLXG01wc+5NuwQ==
"@next/eslint-plugin-next@13.4.10":
version "13.4.10"
resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-13.4.10.tgz#ff19867396a7709ff75986645f2223787fbb2d9b"
integrity sha512-YJqyq6vk39JQfvaNtN83t/p5Jy45+bazRL+V4QI8FPd3FBqFYMEsULiwRLgSJMgFqkk4t4JbeZurz+gILEAFpA==
dependencies:
glob "7.1.7"
"@next/swc-android-arm-eabi@13.2.3":
version "13.2.3"
resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.2.3.tgz#85eed560c87c7996558c868a117be9780778f192"
integrity sha512-mykdVaAXX/gm+eFO2kPeVjnOCKwanJ9mV2U0lsUGLrEdMUifPUjiXKc6qFAIs08PvmTMOLMNnUxqhGsJlWGKSw==
"@next/swc-darwin-arm64@13.3.0":
version "13.3.0"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.3.0.tgz#38f18e0639cd4c7edc6a38d4b83fe00f38eea4f2"
integrity sha512-DmIQCNq6JtccLPPBzf0dgh2vzMWt5wjxbP71pCi5EWpWYE3MsP6FcRXi4MlAmFNDQOfcFXR2r7kBeG1LpZUh1w==
"@next/swc-android-arm64@13.2.3":
version "13.2.3"
resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-13.2.3.tgz#8ac54ca9795a48afc4631b4823a4864bd5db0129"
integrity sha512-8XwHPpA12gdIFtope+n9xCtJZM3U4gH4vVTpUwJ2w1kfxFmCpwQ4xmeGSkR67uOg80yRMuF0h9V1ueo05sws5w==
"@next/swc-darwin-x64@13.3.0":
version "13.3.0"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.3.0.tgz#b670ed1fd1d231aa21279173ec52e3ad56dc6aeb"
integrity sha512-oQoqFa88OGgwnYlnAGHVct618FRI/749se0N3S8t9Bzdv5CRbscnO0RcX901+YnNK4Q6yeiizfgO3b7kogtsZg==
"@next/swc-darwin-arm64@13.2.3":
version "13.2.3"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.2.3.tgz#f674e3c65aec505b6d218a662ade3fe248ccdbda"
integrity sha512-TXOubiFdLpMfMtaRu1K5d1I9ipKbW5iS2BNbu8zJhoqrhk3Kp7aRKTxqFfWrbliAHhWVE/3fQZUYZOWSXVQi1w==
"@next/swc-linux-arm64-gnu@13.3.0":
version "13.3.0"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.3.0.tgz#b114935f6b4c94c123f6cac55a4823d483209ba5"
integrity sha512-Wzz2p/WqAJUqTVoLo6H18WMeAXo3i+9DkPDae4oQG8LMloJ3if4NEZTnOnTUlro6cq+S/W4pTGa97nWTrOjbGw==
"@next/swc-darwin-x64@13.2.3":
version "13.2.3"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.2.3.tgz#a15ea7fb4c46034a8f5e387906d0cad08387075a"
integrity sha512-GZctkN6bJbpjlFiS5pylgB2pifHvgkqLAPumJzxnxkf7kqNm6rOGuNjsROvOWVWXmKhrzQkREO/WPS2aWsr/yw==
"@next/swc-linux-arm64-musl@13.3.0":
version "13.3.0"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.3.0.tgz#67a57309f8761c7d00d629d6785d56ed0567a0d2"
integrity sha512-xPVrIQOQo9WXJYgmoTlMnAD/HlR/1e1ZIWGbwIzEirXBVBqMARUulBEIKdC19zuvoJ477qZJgBDCKtKEykCpyQ==
"@next/swc-freebsd-x64@13.2.3":
version "13.2.3"
resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.2.3.tgz#f7ac6ae4f7d706ff2431f33e40230a554c8c2cbc"
integrity sha512-rK6GpmMt/mU6MPuav0/M7hJ/3t8HbKPCELw/Uqhi4732xoq2hJ2zbo2FkYs56y6w0KiXrIp4IOwNB9K8L/q62g==
"@next/swc-linux-x64-gnu@13.3.0":
version "13.3.0"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.3.0.tgz#11bd2bea7c00b40be111c0dd16e71171f3792086"
integrity sha512-jOFlpGuPD7W2tuXVJP4wt9a3cpNxWAPcloq5EfMJRiXsBBOjLVFZA7boXYxEBzSVgUiVVr1V9T0HFM7pULJ1qA==
"@next/swc-linux-arm-gnueabihf@13.2.3":
version "13.2.3"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.2.3.tgz#84ad9e9679d55542a23b590ad9f2e1e9b2df62f7"
integrity sha512-yeiCp/Odt1UJ4KUE89XkeaaboIDiVFqKP4esvoLKGJ0fcqJXMofj4ad3tuQxAMs3F+qqrz9MclqhAHkex1aPZA==
"@next/swc-linux-x64-musl@13.3.0":
version "13.3.0"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.3.0.tgz#d57e99f85890799b78719c3ea32a4624de8d701b"
integrity sha512-2OwKlzaBgmuet9XYHc3KwsEilzb04F540rlRXkAcjMHL7eCxB7uZIGtsVvKOnQLvC/elrUegwSw1+5f7WmfyOw==
"@next/swc-linux-arm64-gnu@13.2.3":
version "13.2.3"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.2.3.tgz#56f9175bc632d647c60b9e8bedc0875edf92d8b7"
integrity sha512-/miIopDOUsuNlvjBjTipvoyjjaxgkOuvlz+cIbbPcm1eFvzX2ltSfgMgty15GuOiR8Hub4FeTSiq3g2dmCkzGA==
"@next/swc-win32-arm64-msvc@13.3.0":
version "13.3.0"
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.3.0.tgz#0c209aa35d1c88b01e78259a89cd68f4139b5093"
integrity sha512-OeHiA6YEvndxT46g+rzFK/MQTfftKxJmzslERMu9LDdC6Kez0bdrgEYed5eXFK2Z1viKZJCGRlhd06rBusyztA==
"@next/swc-linux-arm64-musl@13.2.3":
version "13.2.3"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.2.3.tgz#7d4cf00e8f1729a3de464da0624773f5d0d14888"
integrity sha512-sujxFDhMMDjqhruup8LLGV/y+nCPi6nm5DlFoThMJFvaaKr/imhkXuk8uCTq4YJDbtRxnjydFv2y8laBSJVC2g==
"@next/swc-win32-ia32-msvc@13.3.0":
version "13.3.0"
resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.3.0.tgz#52ae74da1dd6d840c3743923367d27ed013803dd"
integrity sha512-4aB7K9mcVK1lYEzpOpqWrXHEZympU3oK65fnNcY1Qc4HLJFLJj8AViuqQd4jjjPNuV4sl8jAwTz3gN5VNGWB7w==
"@next/swc-linux-x64-gnu@13.2.3":
version "13.2.3"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.2.3.tgz#17de404910c4ebf7a1d366b19334d7e27e126ab0"
integrity sha512-w5MyxPknVvC9LVnMenAYMXMx4KxPwXuJRMQFvY71uXg68n7cvcas85U5zkdrbmuZ+JvsO5SIG8k36/6X3nUhmQ==
"@next/swc-linux-x64-musl@13.2.3":
version "13.2.3"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.2.3.tgz#07cb7b7f3a3a98034e2533f82638a9b099ba4ab1"
integrity sha512-CTeelh8OzSOVqpzMFMFnVRJIFAFQoTsI9RmVJWW/92S4xfECGcOzgsX37CZ8K982WHRzKU7exeh7vYdG/Eh4CA==
"@next/swc-win32-arm64-msvc@13.2.3":
version "13.2.3"
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.2.3.tgz#b9ac98c954c71ec9de45d3497a8585096b873152"
integrity sha512-7N1KBQP5mo4xf52cFCHgMjzbc9jizIlkTepe9tMa2WFvEIlKDfdt38QYcr9mbtny17yuaIw02FXOVEytGzqdOQ==
"@next/swc-win32-ia32-msvc@13.2.3":
version "13.2.3"
resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.2.3.tgz#5ec48653a48fd664e940c69c96bba698fdae92eb"
integrity sha512-LzWD5pTSipUXTEMRjtxES/NBYktuZdo7xExJqGDMnZU8WOI+v9mQzsmQgZS/q02eIv78JOCSemqVVKZBGCgUvA==
"@next/swc-win32-x64-msvc@13.2.3":
version "13.2.3"
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.2.3.tgz#cd432f280beb8d8de5b7cd2501e9f502e9f3dd72"
integrity sha512-aLG2MaFs4y7IwaMTosz2r4mVbqRyCnMoFqOcmfTi7/mAS+G4IMH0vJp4oLdbshqiVoiVuKrAfqtXj55/m7Qu1Q==
"@next/swc-win32-x64-msvc@13.3.0":
version "13.3.0"
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.3.0.tgz#db7b55fee834dc8c2c484c696469e65bae2ee770"
integrity sha512-Reer6rkLLcoOvB0dd66+Y7WrWVFH7sEEkF/4bJCIfsSKnTStTYaHtwIJAwbqnt9I392Tqvku0KkoqZOryWV9LQ==
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
@ -800,27 +785,27 @@
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728"
integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==
"@sentry-internal/tracing@7.55.2":
version "7.55.2"
resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.55.2.tgz#29687b8327cc9d980695603d451316706f2630ed"
integrity sha512-yBW+R7NfwLrOjpwOJHoOSvGDDoM3ZKod5OKXi7Gd5tYqVm1mCaL0n2/wlNMcGTbPbulLBtgzjoTU1bPJAGhmYw==
"@sentry-internal/tracing@7.58.1":
version "7.58.1"
resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.58.1.tgz#9be915092793da7f1e63eb0c56c7663c6e639933"
integrity sha512-kOWKqyjYdDgvO6CacXneE9UrFQHT3BXF1UpCAlnHchW/TqRFmg89sJAEUjEPGzN7y6IaX1G4j2dBPDE0OFQi3w==
dependencies:
"@sentry/core" "7.55.2"
"@sentry/types" "7.55.2"
"@sentry/utils" "7.55.2"
tslib "^1.9.3"
"@sentry/core" "7.58.1"
"@sentry/types" "7.58.1"
"@sentry/utils" "7.58.1"
tslib "^2.4.1 || ^1.9.3"
"@sentry/browser@7.55.2":
version "7.55.2"
resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.55.2.tgz#32a5cf7cc2af14b83926ea04ea140e1024f000a6"
integrity sha512-RgA4KOD6t8XHVLm6D2oTh9KW19g3DoQ0QsrUmAq4+giSj2AyDW67VP2V4E72mCZ9Ln9AkNhY0Eh3XuD3opiFQA==
"@sentry/browser@7.58.1":
version "7.58.1"
resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.58.1.tgz#ad6ab07339f814c46add84e5dc4390b738f38730"
integrity sha512-7+6Z/T7m0A/2/ImMCakpMOaWTPxmENzTdaojhkyVQKuYUZr7mCe4nco0jsongwY634zSUziuVsibi0jxMMTdBA==
dependencies:
"@sentry-internal/tracing" "7.55.2"
"@sentry/core" "7.55.2"
"@sentry/replay" "7.55.2"
"@sentry/types" "7.55.2"
"@sentry/utils" "7.55.2"
tslib "^1.9.3"
"@sentry-internal/tracing" "7.58.1"
"@sentry/core" "7.58.1"
"@sentry/replay" "7.58.1"
"@sentry/types" "7.58.1"
"@sentry/utils" "7.58.1"
tslib "^2.4.1 || ^1.9.3"
"@sentry/cli@^1.74.6":
version "1.75.0"
@ -834,89 +819,89 @@
proxy-from-env "^1.1.0"
which "^2.0.2"
"@sentry/core@7.55.2":
version "7.55.2"
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.55.2.tgz#a3988393ab791eba5d7fe735dfecea5a615e9e50"
integrity sha512-clzQirownxqADv9+fopyMJTHzaoWedkN2+mi4ro1LxjLgROdXBFurMCC1nT+7cH/xvQ5gMIRkM/y/4gRtKy2Ew==
"@sentry/core@7.58.1":
version "7.58.1"
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.58.1.tgz#d4010f2b0bcfe87b57fa490c0c7ab7a567ed4707"
integrity sha512-hpeB5fZ5T6Jg1CBqz486jHgWuJ5R/HD0wyYX+S3LDDsHCJo6V3TxNuoxYDlTTerRRfZdTwr9GYJXskehpU26IA==
dependencies:
"@sentry/types" "7.55.2"
"@sentry/utils" "7.55.2"
tslib "^1.9.3"
"@sentry/types" "7.58.1"
"@sentry/utils" "7.58.1"
tslib "^2.4.1 || ^1.9.3"
"@sentry/integrations@7.55.2":
version "7.55.2"
resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.55.2.tgz#f4d528f95a36748c10a5edf40e28207b2abe2d02"
integrity sha512-QgHx7MKMLMx1e5XgQyeUYtZA+xPc7IjS0MaZTpIRehtxD8Fg1tWkOxV4PP2nUXksLjfkoISo0jpYLtuDSCGFTw==
"@sentry/integrations@7.58.1":
version "7.58.1"
resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.58.1.tgz#da033779e244cbed56598f94382a9e1da2e50371"
integrity sha512-fKZV/QDPM7rIZhaJpFwgxD4rzWLtRuag7cOWfvHCsezJnhXEF8u45sBak/VWmSr8SbcvJAIJSZbWYi0N91hNHQ==
dependencies:
"@sentry/types" "7.55.2"
"@sentry/utils" "7.55.2"
"@sentry/types" "7.58.1"
"@sentry/utils" "7.58.1"
localforage "^1.8.1"
tslib "^1.9.3"
tslib "^2.4.1 || ^1.9.3"
"@sentry/nextjs@^7.55.2":
version "7.55.2"
resolved "https://registry.yarnpkg.com/@sentry/nextjs/-/nextjs-7.55.2.tgz#03a6d6779b30d25bb87e4bbfaba4457b40eae0ab"
integrity sha512-YIq/gLMCCdcKmPln5zglWHKwQB8KWGblOJ19t/JuHSyffWXL1x1IYyBYgpdjzn6q0AgwsK4IM6TqTb3ISN8wLQ==
version "7.58.1"
resolved "https://registry.yarnpkg.com/@sentry/nextjs/-/nextjs-7.58.1.tgz#16f87ed26e4f8f474ee41f16f6e20a7ac7672904"
integrity sha512-/wNVWNJ4vdVHBAvbnjbrRfAX3YhGvdC/CR9IAN5h0tTNjD/LFaHUN97/MUn9oZ7FpFgOOveM5bqK/5b6QRCBCg==
dependencies:
"@rollup/plugin-commonjs" "24.0.0"
"@sentry/core" "7.55.2"
"@sentry/integrations" "7.55.2"
"@sentry/node" "7.55.2"
"@sentry/react" "7.55.2"
"@sentry/types" "7.55.2"
"@sentry/utils" "7.55.2"
"@sentry/core" "7.58.1"
"@sentry/integrations" "7.58.1"
"@sentry/node" "7.58.1"
"@sentry/react" "7.58.1"
"@sentry/types" "7.58.1"
"@sentry/utils" "7.58.1"
"@sentry/webpack-plugin" "1.20.0"
chalk "3.0.0"
rollup "2.78.0"
stacktrace-parser "^0.1.10"
tslib "^1.9.3"
tslib "^2.4.1 || ^1.9.3"
"@sentry/node@7.55.2":
version "7.55.2"
resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.55.2.tgz#4d63bc585816b64fc1ce67cbdfd896b5733eb804"
integrity sha512-43lGfMFFUD38Xerc4DqIuQkEOETHCh31JHUTI6r/gXdzmcKpWRscgH4nAcAUoCu+Myrv0fVXsOa12FM4DPfr8A==
"@sentry/node@7.58.1":
version "7.58.1"
resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.58.1.tgz#fc48b8f6ddfa0402cfdec3706cf162df60052b32"
integrity sha512-XsSu0xg5SYcltMbatnRBcIZw9pXwGJoGbYDLuPhhuqBz2mnQ0mQ9Try9dn/agDU7KZzT0IyA1qkPXk0NkMe3rw==
dependencies:
"@sentry-internal/tracing" "7.55.2"
"@sentry/core" "7.55.2"
"@sentry/types" "7.55.2"
"@sentry/utils" "7.55.2"
"@sentry-internal/tracing" "7.58.1"
"@sentry/core" "7.58.1"
"@sentry/types" "7.58.1"
"@sentry/utils" "7.58.1"
cookie "^0.4.1"
https-proxy-agent "^5.0.0"
lru_map "^0.3.3"
tslib "^1.9.3"
tslib "^2.4.1 || ^1.9.3"
"@sentry/react@7.55.2":
version "7.55.2"
resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.55.2.tgz#2b13ffe30dd1e7f8fa6dc104e7b3736c8f41ae06"
integrity sha512-7LqM8vQ73boESaOJ9TOmyVKfkUuLHMHU89ltKYsi4s6816Z6cuJ6UcAVUt0Ks4iLzNCVRVJ5OqeY37ge7pEaTA==
"@sentry/react@7.58.1":
version "7.58.1"
resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.58.1.tgz#b0901f75ceddaa0ffa5afd36964da50314cd6e69"
integrity sha512-0fh2JfKBxPU6Pm11PBt/5DgDg+l0cKcOf1WGhCWsBcFmRE2gAax+Q09+1fWm6+dqtg3piVR8AEEU6ZCBk3l4OQ==
dependencies:
"@sentry/browser" "7.55.2"
"@sentry/types" "7.55.2"
"@sentry/utils" "7.55.2"
"@sentry/browser" "7.58.1"
"@sentry/types" "7.58.1"
"@sentry/utils" "7.58.1"
hoist-non-react-statics "^3.3.2"
tslib "^1.9.3"
tslib "^2.4.1 || ^1.9.3"
"@sentry/replay@7.55.2":
version "7.55.2"
resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.55.2.tgz#001eeb4d0dd900630ddfcea99185556b0699c12a"
integrity sha512-G9iAcI9bvy5X8fvdz0QxF3LJ8oGB0Vxt0iOPdRZYhjIcPbNpE3NaeT6xZlNX1pCcHLroE6BMRF/6TTalcl5Erw==
"@sentry/replay@7.58.1":
version "7.58.1"
resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.58.1.tgz#daa389ba215f90f6579c388f67a9cf34b613c3a9"
integrity sha512-KKlpIxGrH1deTr/R3BErX8y16MnOzEylBVVn2I31BglLoZETFS9JAle6JNOgGxS5apFjwdQmD+69vX/mlVhMow==
dependencies:
"@sentry/core" "7.55.2"
"@sentry/types" "7.55.2"
"@sentry/utils" "7.55.2"
"@sentry/core" "7.58.1"
"@sentry/types" "7.58.1"
"@sentry/utils" "7.58.1"
"@sentry/types@7.55.2":
version "7.55.2"
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.55.2.tgz#1abd2e02308fcd9ff3e0ac0a56c6d67e36764964"
integrity sha512-mAtkA8wvUDrLjAAmy9tjn+NiXcxVz/ltbslTKaIW6JNgVRz5kMt1Ny8RJsgqaZqa4LFP8q+IvWw4Vd91kb57rA==
"@sentry/types@7.58.1":
version "7.58.1"
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.58.1.tgz#c67f99f9af82ea930cdf895d71ae049575e38bf7"
integrity sha512-OnKG+yrilPBeVNQK3biF0u/4IDjwH+boJU1XzJOnYdMRO8uzTWxvaRqpt0C8sVE9VAetRi2eutkzOgCXZISRrw==
"@sentry/utils@7.55.2":
version "7.55.2"
resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.55.2.tgz#6a214c867c73305faac0997bdef4581f3bee0128"
integrity sha512-Yv9XtbOESdN7bkK2AMrKsmKMF5OOVv5v5hVcOqXtSTw1t2oMAtRjXXqGpUo+TkdTOjeoX6dr19ozVFHaGvqHkw==
"@sentry/utils@7.58.1":
version "7.58.1"
resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.58.1.tgz#b5e8ee53ce2f8ba7833a4a4e28044eaa1da9fa2f"
integrity sha512-iC9xZJBHp4+MDrZjKwcmMUhI5sTmpUcttwmsJL9HA6ACW+L1XX2eGSDky5pSlhhVFR7q7jJnQ7YUlMQ/jcd8eQ==
dependencies:
"@sentry/types" "7.55.2"
tslib "^1.9.3"
"@sentry/types" "7.58.1"
tslib "^2.4.1 || ^1.9.3"
"@sentry/webpack-plugin@1.20.0":
version "1.20.0"
@ -938,17 +923,17 @@
dependencies:
tslib "^2.4.0"
"@tanstack/query-core@4.29.14":
version "4.29.14"
resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-4.29.14.tgz#569de51719a0f4445fabff775012d5c09a173b96"
integrity sha512-ElEAahtLWA7Y7c2Haw10KdEf2tx+XZl/Z8dmyWxZehxWK3TPL5qtXtb7kUEhvt/8u2cSP62fLxgh2qqzMMGnDQ==
"@tanstack/query-core@4.29.25":
version "4.29.25"
resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-4.29.25.tgz#605d357968a740544af6754004eed1dfd4587cb8"
integrity sha512-DI4y4VC6Uw4wlTpOocEXDky69xeOScME1ezLKsj+hOk7DguC9fkqXtp6Hn39BVb9y0b5IBrY67q6kIX623Zj4Q==
"@tanstack/react-query@^4.29.14":
version "4.29.14"
resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-4.29.14.tgz#5e836d470c1c85d1aa3e53a6fc64f788dddb2ee5"
integrity sha512-wh4bd/QIy85YgTDBtj/7/9ZkpRX41QdZuUL8xKoSzuMCukXvAE1/oJ4p0F15lqQq9W3g2pgcbr2Aa+CNvqABhg==
"@tanstack/react-query@^4.29.25":
version "4.29.25"
resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-4.29.25.tgz#64df3260b65760fbd3c81ffae23b7b3802c71aa6"
integrity sha512-c1+Ezu+XboYrdAMdusK2fTdRqXPMgPAnyoTrzHOZQqr8Hqz6PNvV9DSKl8agUo6nXX4np7fdWabIprt+838dLg==
dependencies:
"@tanstack/query-core" "4.29.14"
"@tanstack/query-core" "4.29.25"
use-sync-external-store "^1.2.0"
"@testing-library/dom@^9.0.0":
@ -1086,10 +1071,10 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.1.2.tgz#8fd63447e3f99aba6c3168fd2ec4580d5b97886f"
integrity sha512-CTO/wa8x+rZU626cL2BlbCDzydgnFNgc19h4YvizpTO88MFQxab8wqisxaofQJ/9bLGugRdWIuX/TbIs6VVF6g==
"@types/node@^20.2.1":
version "20.3.1"
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.3.1.tgz#e8a83f1aa8b649377bb1fb5d7bac5cb90e784dfe"
integrity sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==
"@types/node@^20.4.2":
version "20.4.2"
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.2.tgz#129cc9ae69f93824f92fac653eebfb4812ab4af9"
integrity sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==
"@types/parse-json@^4.0.0":
version "4.0.0"
@ -1221,11 +1206,16 @@ acorn-walk@^8.0.0, acorn-walk@^8.1.1:
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
acorn@^8.0.4, acorn@^8.4.1, acorn@^8.8.0:
acorn@^8.0.4, acorn@^8.4.1:
version "8.8.2"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a"
integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
acorn@^8.9.0:
version "8.10.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5"
integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
agent-base@6:
version "6.0.2"
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
@ -1461,6 +1451,13 @@ buffer-from@~0.1.1:
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-0.1.2.tgz#15f4b9bcef012044df31142c14333caf6e0260d0"
integrity sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==
busboy@1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893"
integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==
dependencies:
streamsearch "^1.1.0"
calculate-size@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/calculate-size/-/calculate-size-1.1.1.tgz#ae7caa1c7795f82c4f035dc7be270e3581dae3ee"
@ -1683,10 +1680,10 @@ damerau-levenshtein@^1.0.8:
resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7"
integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==
dayjs@^1.11.8:
version "1.11.8"
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.8.tgz#4282f139c8c19dd6d0c7bd571e30c2d0ba7698ea"
integrity sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ==
dayjs@^1.11.9:
version "1.11.9"
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.9.tgz#9ca491933fadd0a60a2c19f6c237c03517d71d1a"
integrity sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==
debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2:
version "4.3.4"
@ -2026,12 +2023,12 @@ escape-string-regexp@^4.0.0:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
eslint-config-next@13.4.6:
version "13.4.6"
resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-13.4.6.tgz#ccccf5dad45b23a56418d66caad5339116297308"
integrity sha512-nlv4FYish1RYYHILbQwM5/rD37cOvEqtMfDjtQCYbXdE2O3MggqHu2q6IDeLE2Z6u8ZJyNPgWOA6OimWcxj3qw==
eslint-config-next@13.4.10:
version "13.4.10"
resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-13.4.10.tgz#59eaa37c805337972351b9920b1c28a79a14173e"
integrity sha512-+JjcM6lQmFR5Mw0ORm9o1CR29+z/uajgSfYAPEGIBxOhTHBgCMs7ysuwi72o7LkMmA8E3N7/h09pSGZxs0s85g==
dependencies:
"@next/eslint-plugin-next" "13.4.6"
"@next/eslint-plugin-next" "13.4.10"
"@rushstack/eslint-patch" "^1.1.3"
"@typescript-eslint/parser" "^5.42.0"
eslint-import-resolver-node "^0.3.6"
@ -2039,7 +2036,7 @@ eslint-config-next@13.4.6:
eslint-plugin-import "^2.26.0"
eslint-plugin-jsx-a11y "^6.5.1"
eslint-plugin-react "^7.31.7"
eslint-plugin-react-hooks "^4.5.0"
eslint-plugin-react-hooks "5.0.0-canary-7118f5dd7-20230705"
eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.7:
version "0.3.7"
@ -2113,17 +2110,18 @@ eslint-plugin-jsx-a11y@^6.5.1:
object.fromentries "^2.0.6"
semver "^6.3.0"
eslint-plugin-prettier@^4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b"
integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==
eslint-plugin-prettier@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz#6887780ed95f7708340ec79acfdf60c35b9be57a"
integrity sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==
dependencies:
prettier-linter-helpers "^1.0.0"
synckit "^0.8.5"
eslint-plugin-react-hooks@^4.5.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3"
integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==
eslint-plugin-react-hooks@5.0.0-canary-7118f5dd7-20230705:
version "5.0.0-canary-7118f5dd7-20230705"
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0-canary-7118f5dd7-20230705.tgz#4d55c50e186f1a2b0636433d2b0b2f592ddbccfd"
integrity sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw==
eslint-plugin-react@^7.31.7:
version "7.32.2"
@ -2146,10 +2144,10 @@ eslint-plugin-react@^7.31.7:
semver "^6.3.0"
string.prototype.matchall "^4.0.8"
eslint-plugin-unused-imports@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-2.0.0.tgz#d8db8c4d0cfa0637a8b51ce3fd7d1b6bc3f08520"
integrity sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==
eslint-plugin-unused-imports@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.0.0.tgz#d25175b0072ff16a91892c3aa72a09ca3a9e69e7"
integrity sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==
dependencies:
eslint-rule-composer "^0.3.0"
@ -2176,15 +2174,15 @@ eslint-visitor-keys@^3.4.1:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994"
integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==
eslint@8.43.0:
version "8.43.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.43.0.tgz#3e8c6066a57097adfd9d390b8fc93075f257a094"
integrity sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==
eslint@8.45.0:
version "8.45.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.45.0.tgz#bab660f90d18e1364352c0a6b7c6db8edb458b78"
integrity sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
"@eslint-community/regexpp" "^4.4.0"
"@eslint/eslintrc" "^2.0.3"
"@eslint/js" "8.43.0"
"@eslint/eslintrc" "^2.1.0"
"@eslint/js" "8.44.0"
"@humanwhocodes/config-array" "^0.11.10"
"@humanwhocodes/module-importer" "^1.0.1"
"@nodelib/fs.walk" "^1.2.8"
@ -2196,7 +2194,7 @@ eslint@8.43.0:
escape-string-regexp "^4.0.0"
eslint-scope "^7.2.0"
eslint-visitor-keys "^3.4.1"
espree "^9.5.2"
espree "^9.6.0"
esquery "^1.4.2"
esutils "^2.0.2"
fast-deep-equal "^3.1.3"
@ -2206,7 +2204,6 @@ eslint@8.43.0:
globals "^13.19.0"
graphemer "^1.4.0"
ignore "^5.2.0"
import-fresh "^3.0.0"
imurmurhash "^0.1.4"
is-glob "^4.0.0"
is-path-inside "^3.0.3"
@ -2216,17 +2213,16 @@ eslint@8.43.0:
lodash.merge "^4.6.2"
minimatch "^3.1.2"
natural-compare "^1.4.0"
optionator "^0.9.1"
optionator "^0.9.3"
strip-ansi "^6.0.1"
strip-json-comments "^3.1.0"
text-table "^0.2.0"
espree@^9.5.2:
version "9.5.2"
resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b"
integrity sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==
espree@^9.6.0:
version "9.6.1"
resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
dependencies:
acorn "^8.8.0"
acorn "^8.9.0"
acorn-jsx "^5.3.2"
eslint-visitor-keys "^3.4.1"
@ -2730,7 +2726,7 @@ immediate@~3.0.5:
resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==
import-fresh@^3.0.0, import-fresh@^3.2.1:
import-fresh@^3.2.1:
version "3.3.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
@ -3056,10 +3052,10 @@ jsonc-parser@^3.2.0:
resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76"
integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==
jsonwebtoken@^9.0.0:
version "9.0.0"
resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz#d0faf9ba1cc3a56255fe49c0961a67e520c1926d"
integrity sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==
jsonwebtoken@^9.0.1:
version "9.0.1"
resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz#81d8c901c112c24e497a55daf6b2be1225b40145"
integrity sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg==
dependencies:
jws "^3.2.2"
lodash "^4.17.21"
@ -3351,30 +3347,27 @@ natural-compare@^1.4.0:
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
next@13.2.3:
version "13.2.3"
resolved "https://registry.yarnpkg.com/next/-/next-13.2.3.tgz#92d170e7aca421321f230ff80c35c4751035f42e"
integrity sha512-nKFJC6upCPN7DWRx4+0S/1PIOT7vNlCT157w9AzbXEgKy6zkiPKEt5YyRUsRZkmpEqBVrGgOqNfwecTociyg+w==
next@13.3.0:
version "13.3.0"
resolved "https://registry.yarnpkg.com/next/-/next-13.3.0.tgz#40632d303d74fc8521faa0a5bf4a033a392749b1"
integrity sha512-OVTw8MpIPa12+DCUkPqRGPS3thlJPcwae2ZL4xti3iBff27goH024xy4q2lhlsdoYiKOi8Kz6uJoLW/GXwgfOA==
dependencies:
"@next/env" "13.2.3"
"@next/env" "13.3.0"
"@swc/helpers" "0.4.14"
busboy "1.6.0"
caniuse-lite "^1.0.30001406"
postcss "8.4.14"
styled-jsx "5.1.1"
optionalDependencies:
"@next/swc-android-arm-eabi" "13.2.3"
"@next/swc-android-arm64" "13.2.3"
"@next/swc-darwin-arm64" "13.2.3"
"@next/swc-darwin-x64" "13.2.3"
"@next/swc-freebsd-x64" "13.2.3"
"@next/swc-linux-arm-gnueabihf" "13.2.3"
"@next/swc-linux-arm64-gnu" "13.2.3"
"@next/swc-linux-arm64-musl" "13.2.3"
"@next/swc-linux-x64-gnu" "13.2.3"
"@next/swc-linux-x64-musl" "13.2.3"
"@next/swc-win32-arm64-msvc" "13.2.3"
"@next/swc-win32-ia32-msvc" "13.2.3"
"@next/swc-win32-x64-msvc" "13.2.3"
"@next/swc-darwin-arm64" "13.3.0"
"@next/swc-darwin-x64" "13.3.0"
"@next/swc-linux-arm64-gnu" "13.3.0"
"@next/swc-linux-arm64-musl" "13.3.0"
"@next/swc-linux-x64-gnu" "13.3.0"
"@next/swc-linux-x64-musl" "13.3.0"
"@next/swc-win32-arm64-msvc" "13.3.0"
"@next/swc-win32-ia32-msvc" "13.3.0"
"@next/swc-win32-x64-msvc" "13.3.0"
node-fetch@2.6.7:
version "2.6.7"
@ -3484,17 +3477,17 @@ opener@^1.5.2:
resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598"
integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==
optionator@^0.9.1:
version "0.9.1"
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
optionator@^0.9.3:
version "0.9.3"
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64"
integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==
dependencies:
"@aashutoshrathi/word-wrap" "^1.2.3"
deep-is "^0.1.3"
fast-levenshtein "^2.0.6"
levn "^0.4.1"
prelude-ls "^1.2.1"
type-check "^0.4.0"
word-wrap "^1.2.3"
p-cancelable@^3.0.0:
version "3.0.0"
@ -3610,10 +3603,10 @@ prettier-linter-helpers@^1.0.0:
dependencies:
fast-diff "^1.1.2"
prettier@^2.8.8:
version "2.8.8"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da"
integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==
prettier@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.0.tgz#e7b19f691245a21d618c68bc54dc06122f6105ae"
integrity sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==
pretty-format@^27.0.2:
version "27.5.1"
@ -3728,10 +3721,10 @@ react-hot-toast@^2.4.1:
dependencies:
goober "^2.1.10"
react-icons@^4.9.0:
version "4.9.0"
resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.9.0.tgz#ba44f436a053393adb1bdcafbc5c158b7b70d2a3"
integrity sha512-ijUnFr//ycebOqujtqtV9PFS7JjhWg0QU6ykURVHuL4cbofvRCf3f6GMn9+fBktEFQOIVZnuAYLZdiyadRQRFg==
react-icons@^4.10.1:
version "4.10.1"
resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.10.1.tgz#3f3b5eec1f63c1796f6a26174a1091ca6437a500"
integrity sha512-/ngzDP/77tlCfqthiiGNZeYFACw85fUjZtLbedmJ5DTlNDIwETxhwBzdOJ21zj4iJdvc0J3y7yOsX3PpxAJzrw==
react-is@^16.13.1, react-is@^16.7.0:
version "16.13.1"
@ -3811,10 +3804,10 @@ react-use-gesture@^8.0.1:
resolved "https://registry.yarnpkg.com/react-use-gesture/-/react-use-gesture-8.0.1.tgz#4360c0f7c9e26baf9fbe58f63fc9de7ef699c17f"
integrity sha512-CXzUNkulUdgouaAlvAsC5ZVo0fi9KGSBSk81WrE4kOIcJccpANe9zZkAYr5YZZhqpicIFxitsrGVS4wmoMun9A==
react-zoom-pan-pinch@^3.0.8:
version "3.0.8"
resolved "https://registry.yarnpkg.com/react-zoom-pan-pinch/-/react-zoom-pan-pinch-3.0.8.tgz#c649d644e8aef239afe678a65fd618e65746ddc9"
integrity sha512-z6O5SV5X+XBo/LLO59PgzNE2WT+tp8lw1w3M0y138jCXViwHWKK1MqorICbmSVSOOD5Fa2o6pcg1ppJj9vzqJA==
react-zoom-pan-pinch@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/react-zoom-pan-pinch/-/react-zoom-pan-pinch-3.1.0.tgz#d87a66fd22a97f5dd56b54076411a9dce1f448cd"
integrity sha512-a3LlP8QPgTikvteCNkZ3X6wIWC0lrg1geP5WkUJyx2MXXAhHQek3r17N1nT/esOiWGuPIECnsd9AGoK8jOeGcg==
react@^18.2.0:
version "18.2.0"
@ -4102,6 +4095,11 @@ stop-iteration-iterator@^1.0.0:
dependencies:
internal-slot "^1.0.4"
streamsearch@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764"
integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==
string.prototype.matchall@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3"
@ -4167,7 +4165,7 @@ strip-bom@^3.0.0:
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==
strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
strip-json-comments@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
@ -4233,7 +4231,7 @@ supports-preserve-symlinks-flag@^1.0.0:
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
synckit@^0.8.4:
synckit@^0.8.4, synckit@^0.8.5:
version "0.8.5"
resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.5.tgz#b7f4358f9bb559437f9f167eb6bc46b3c9818fa3"
integrity sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==
@ -4364,7 +4362,7 @@ tslib@2.4.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
tslib@^1.8.1, tslib@^1.9.3:
tslib@^1.8.1:
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
@ -4374,6 +4372,11 @@ tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
"tslib@^2.4.1 || ^1.9.3":
version "2.6.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3"
integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==
tsutils@^3.21.0:
version "3.21.0"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
@ -4407,10 +4410,10 @@ typed-array-length@^1.0.4:
for-each "^0.3.3"
is-typed-array "^1.1.9"
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@5.1.6:
version "5.1.6"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274"
integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==
unbox-primitive@^1.0.2:
version "1.0.2"
@ -4572,11 +4575,6 @@ which@^2.0.1, which@^2.0.2:
dependencies:
isexe "^2.0.0"
word-wrap@^1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
@ -4634,9 +4632,9 @@ yocto-queue@^0.1.0:
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
zustand@^4.3.8:
version "4.3.8"
resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.3.8.tgz#37113df8e9e1421b0be1b2dca02b49b76210e7c4"
integrity sha512-4h28KCkHg5ii/wcFFJ5Fp+k1J3gJoasaIbppdgZFO4BPJnsNxL0mQXBSFgOgAdCdBj35aDTPvdAJReTMntFPGg==
zustand@^4.3.9:
version "4.3.9"
resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.3.9.tgz#a7d4332bbd75dfd25c6848180b3df1407217f2ad"
integrity sha512-Tat5r8jOMG1Vcsj8uldMyqYKC5IZvQif8zetmLHs9WoZlntTHmIoNM8TpLRY31ExncuUvUOXehd0kvahkuHjDw==
dependencies:
use-sync-external-store "1.2.0"