feat: remove useImmer

This commit is contained in:
Nicola Turcato 2023-05-31 10:59:33 +02:00
parent e2656c8d4e
commit f6065c38eb
17 changed files with 162 additions and 148 deletions

12
dist/ContentTree.d.ts vendored
View File

@ -1,16 +1,14 @@
import { PlainClientAPI } from 'contentful-management';
import { PageExtensionSDK } from 'contentful-ui-extensions-sdk';
import { ReactElement } from 'react';
import { type PlainClientAPI } from 'contentful-management';
import { type PageAppSDK } from 'contentful-ui-extensions-sdk';
import { type ReactElement } from 'react';
export interface ContentTreeProps {
sdkInstance: PageExtensionSDK;
sdkInstance: PageAppSDK;
cma: PlainClientAPI;
rootType: string;
nodeContentTypes: string[];
titleFields: string[];
locales: string[];
indentation?: number;
iconRegistry?: {
[index: string]: string;
};
iconRegistry?: Record<string, string>;
}
export declare const ContentTree: ({ sdkInstance, cma, rootType, nodeContentTypes, titleFields, locales, indentation, iconRegistry, }: ContentTreeProps) => ReactElement;

3
dist/ContentTree.js vendored
View File

@ -61,13 +61,12 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.ContentTree = void 0;
var react_1 = __importStar(require("react"));
var use_immer_1 = require("use-immer");
var ContentTreeRoot_1 = require("./ContentTreeRoot");
var ContentTreeUtils_1 = require("./ContentTreeUtils");
var ContentTree = function (_a) {
var sdkInstance = _a.sdkInstance, cma = _a.cma, rootType = _a.rootType, nodeContentTypes = _a.nodeContentTypes, titleFields = _a.titleFields, locales = _a.locales, _b = _a.indentation, indentation = _b === void 0 ? 1 : _b, iconRegistry = _a.iconRegistry;
var stLocale = (0, react_1.useState)(locales[0])[0];
var _c = (0, use_immer_1.useImmer)([(0, ContentTreeUtils_1.emptyNodeProps)()]), rootNodes = _c[0], setRootNodes = _c[1];
var _c = (0, react_1.useState)([(0, ContentTreeUtils_1.emptyNodeProps)()]), rootNodes = _c[0], setRootNodes = _c[1];
(0, react_1.useEffect)(function () {
if (sdkInstance) {
loadData().catch(function (err) {

View File

@ -32,6 +32,6 @@ var getPublishingStatusColors = function (status) {
};
}
};
exports.StyledContentTreeNodePublishingStatus = styled_components_1.default.div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n display: inline-block;\n font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\n font-weight: 600;\n font-size: 80%;\n text-transform: uppercase;\n letter-spacing: 0.06rem;\n border-radius: 4px;\n padding: 0 0.2rem;\n color: ", " !important;\n background-color: ", " !important;\n}\n"], ["\n display: inline-block;\n font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\n font-weight: 600;\n font-size: 80%;\n text-transform: uppercase;\n letter-spacing: 0.06rem;\n border-radius: 4px;\n padding: 0 0.2rem;\n color: ", " !important;\n background-color: ", " !important;\n}\n"])), function (props) { var _a; return (_a = getPublishingStatusColors(props.status)) === null || _a === void 0 ? void 0 : _a.publishingStatusFg; }, function (props) { var _a; return (_a = getPublishingStatusColors(props.status)) === null || _a === void 0 ? void 0 : _a.publishingStatusBg; });
exports.StyledContentTreeNodePublishingStatus = styled_components_1.default.div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n\tdisplay: inline-block;\n\tfont-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial,\n\t\tsans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\n\tfont-weight: 600;\n\tfont-size: 80%;\n\ttext-transform: uppercase;\n\tletter-spacing: 0.06rem;\n\tborder-radius: 4px;\n\tpadding: 0 0.2rem;\n\tcolor: ", " !important;\n\tbackground-color: ", " !important;\n"], ["\n\tdisplay: inline-block;\n\tfont-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial,\n\t\tsans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\n\tfont-weight: 600;\n\tfont-size: 80%;\n\ttext-transform: uppercase;\n\tletter-spacing: 0.06rem;\n\tborder-radius: 4px;\n\tpadding: 0 0.2rem;\n\tcolor: ", " !important;\n\tbackground-color: ", " !important;\n"])), function (props) { var _a; return (_a = getPublishingStatusColors(props.status)) === null || _a === void 0 ? void 0 : _a.publishingStatusFg; }, function (props) { var _a; return (_a = getPublishingStatusColors(props.status)) === null || _a === void 0 ? void 0 : _a.publishingStatusBg; });
exports.StyledSpinner = styled_components_1.default.div(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n\tdisplay: inline-block;\n\twidth: 1em;\n\tanimation: rotate 1s infinite;\n\t@keyframes rotate {\n\t\tfrom {\n\t\t\ttransform: rotate(0deg);\n\t\t}\n\t\tto {\n\t\t\ttransform: rotate(360deg);\n\t\t}\n\t}\n"], ["\n\tdisplay: inline-block;\n\twidth: 1em;\n\tanimation: rotate 1s infinite;\n\t@keyframes rotate {\n\t\tfrom {\n\t\t\ttransform: rotate(0deg);\n\t\t}\n\t\tto {\n\t\t\ttransform: rotate(360deg);\n\t\t}\n\t}\n"])));
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;

View File

@ -1,4 +1,4 @@
import { ReactElement } from 'react';
import { type ReactElement } from 'react';
export interface ContentTreeNodeProps {
id: string;
name: string;

View File

@ -91,10 +91,16 @@ var ContentTreeNode = function (props) {
return (react_1.default.createElement(react_1.default.Fragment, null,
react_1.default.createElement("tr", null,
react_1.default.createElement(ContentTree_styled_1.StyledContentTreeTableNodeCell, { depth: props.depth },
react_1.default.createElement(ContentTree_styled_1.StyledContentTreeNodeWedge, null, loading ? (react_1.default.createElement(ContentTree_styled_1.StyledSpinner, null, "-")) : props.node.hasChildNodes ? (props.node.expand ? (react_1.default.createElement("a", { onClick: function () { return handleAddChildren(props.node); } }, "+")) : (react_1.default.createElement("a", { onClick: function () { return props.removeChildNodes(props.node); } }, "-"))) : null),
react_1.default.createElement(ContentTree_styled_1.StyledContentTreeNodeWedge, null, loading ? (react_1.default.createElement(ContentTree_styled_1.StyledSpinner, null, "-")) : props.node.hasChildNodes ? (props.node.expand ? (react_1.default.createElement("a", { onClick: function () {
handleAddChildren(props.node);
} }, "+")) : (react_1.default.createElement("a", { onClick: function () {
props.removeChildNodes(props.node);
} }, "-"))) : null),
react_1.default.createElement(Icons_1.Icon, { id: props.node.icon }),
react_1.default.createElement(ContentTree_styled_1.StyledContentTreeNodeName, null,
react_1.default.createElement("a", { onClick: function () { return handleEditEntry(); }, title: props.node.id }, props.node.name))),
react_1.default.createElement("a", { onClick: function () {
handleEditEntry();
}, title: props.node.id }, props.node.name))),
react_1.default.createElement("td", null, props.node.contentType),
react_1.default.createElement("td", null,
react_1.default.createElement(ContentTree_styled_1.StyledContentTreeNodePublishingStatus, { status: (_a = props.node.publishingStatus) !== null && _a !== void 0 ? _a : '' }, props.node.publishingStatus)),

View File

@ -1,17 +1,15 @@
import { PlainClientAPI } from 'contentful-management';
import { PageExtensionSDK } from 'contentful-ui-extensions-sdk';
import { ReactElement } from 'react';
import { ContentTreeNodeProps } from './ContentTreeNode';
import { type PlainClientAPI } from 'contentful-management';
import { type PageAppSDK } from 'contentful-ui-extensions-sdk';
import { type ReactElement } from 'react';
import { type ContentTreeNodeProps } from './ContentTreeNode';
export interface ContentTreeRootProps {
node: ContentTreeNodeProps;
sdkInstance: PageExtensionSDK;
sdkInstance: PageAppSDK;
cma: PlainClientAPI;
nodeContentTypes: string[];
titleFields: string[];
locales: string[];
depth: number;
iconRegistry?: {
[index: string]: string;
};
iconRegistry?: Record<string, string>;
}
export declare const ContentTreeRoot: ({ node, sdkInstance, cma, nodeContentTypes, titleFields, locales, depth, iconRegistry, }: ContentTreeRootProps) => ReactElement;

View File

@ -1,4 +1,15 @@
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
@ -73,14 +84,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.ContentTreeRoot = void 0;
var react_1 = __importStar(require("react"));
var use_immer_1 = require("use-immer");
var ContentTree_styled_1 = require("./ContentTree.styled");
var ContentTreeNode_1 = __importDefault(require("./ContentTreeNode"));
var ContentTreeUtils_1 = require("./ContentTreeUtils");
var ContentTreeRoot = function (_a) {
var node = _a.node, sdkInstance = _a.sdkInstance, cma = _a.cma, nodeContentTypes = _a.nodeContentTypes, titleFields = _a.titleFields, locales = _a.locales, depth = _a.depth, iconRegistry = _a.iconRegistry;
var stLocale = (0, react_1.useState)(locales[0])[0];
var _b = (0, use_immer_1.useImmer)((0, ContentTreeUtils_1.emptyNodeProps)()), stRoot = _b[0], setStRoot = _b[1];
var _b = (0, react_1.useState)((0, ContentTreeUtils_1.emptyNodeProps)()), stRoot = _b[0], setStRoot = _b[1];
(0, react_1.useEffect)(function () {
if (node.id) {
loadRootData(node).catch(function (err) {
@ -133,11 +143,13 @@ var ContentTreeRoot = function (_a) {
case 1:
cfChildren = _a.sent();
childNodes = (0, ContentTreeUtils_1.cfEntriesToNodes)(cfChildren, titleFields, stLocale, locales, nodeContentTypes, iconRegistry, node.id);
setStRoot(function (draft) {
setStRoot(function (prevState) {
var newState = __assign({}, prevState);
recursiveProcessNodes(node.id, function (targetNode) {
targetNode.childNodes = childNodes;
targetNode.expand = false;
}, draft);
}, newState);
return newState;
});
return [2];
}
@ -226,11 +238,13 @@ var ContentTreeRoot = function (_a) {
});
}); };
var removeChildNodes = function (node) {
setStRoot(function (draft) {
setStRoot(function (prevState) {
var newState = __assign({}, prevState);
recursiveProcessNodes(node.id, function (targetNode) {
targetNode.childNodes = [];
targetNode.expand = true;
}, draft);
}, newState);
return newState;
});
};
return (react_1.default.createElement(react_1.default.Fragment, null,

View File

@ -1,6 +1,4 @@
import { EntryProps, KeyValueMap } from 'contentful-management';
import { ContentTreeNodeProps } from './ContentTreeNode';
import { type EntryProps, type KeyValueMap } from 'contentful-management';
import { type ContentTreeNodeProps } from './ContentTreeNode';
export declare const emptyNodeProps: () => ContentTreeNodeProps;
export declare const cfEntriesToNodes: (entries: Array<EntryProps<KeyValueMap>>, titleFields: string[], stLocale: string, locales: string[], nodeContentTypes: string[], iconRegistry?: {
[index: string]: string;
} | undefined, parentId?: string) => ContentTreeNodeProps[];
export declare const cfEntriesToNodes: (entries: Array<EntryProps<KeyValueMap>>, titleFields: string[], stLocale: string, locales: string[], nodeContentTypes: string[], iconRegistry?: Record<string, string>, parentId?: string) => ContentTreeNodeProps[];

2
dist/Icons.d.ts vendored
View File

@ -1,4 +1,4 @@
import { FC, ReactElement, SVGProps } from 'react';
import { type FC, type ReactElement, type SVGProps } from 'react';
export type SVGIcon = FC<SVGProps<SVGSVGElement>>;
export interface IconProps {
icon?: SVGIcon;

View File

@ -26,13 +26,13 @@
"eslint-config-standard-with-typescript": "^34.0.0",
"eslint-plugin-import": "^2.27.5",
"eslint-plugin-json": "3.1.0",
"eslint-plugin-n": "^15.6.1",
"eslint-plugin-n": "^16.0.0",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-promise": "^6.1.1",
"eslint-plugin-react": "^7.32.2",
"install-peers": "^1.0.4",
"prettier": "2.8.4",
"typescript": "4.9.5"
"prettier": "2.8.8",
"typescript": "5.0.4"
},
"peerDependencies": {
"install-peers": "^1.0.4"
@ -40,9 +40,8 @@
"dependencies": {
"contentful-management": "10.35.4",
"contentful-ui-extensions-sdk": "4.17.2",
"immer": "9.0.19",
"immer": "10.0.2",
"react": "18.2.0",
"styled-components": "5.3.6",
"use-immer": "0.8.1"
"styled-components": "5.3.11"
}
}

View File

@ -81,19 +81,19 @@ const getPublishingStatusColors = (status: string): UiPalette | undefined => {
export const StyledContentTreeNodePublishingStatus = styled.div<{
status: string;
}>`
display: inline-block;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
font-weight: 600;
font-size: 80%;
text-transform: uppercase;
letter-spacing: 0.06rem;
border-radius: 4px;
padding: 0 0.2rem;
color: ${(props) =>
display: inline-block;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial,
sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
font-weight: 600;
font-size: 80%;
text-transform: uppercase;
letter-spacing: 0.06rem;
border-radius: 4px;
padding: 0 0.2rem;
color: ${(props) =>
getPublishingStatusColors(props.status)?.publishingStatusFg} !important;
background-color: ${(props) =>
background-color: ${(props) =>
getPublishingStatusColors(props.status)?.publishingStatusBg} !important;
}
`;
export const StyledSpinner = styled.div`

View File

@ -1,7 +1,6 @@
import { PlainClientAPI } from 'contentful-management';
import { PageAppSDK } from 'contentful-ui-extensions-sdk';
import React, { ReactElement, useEffect, useState } from 'react';
import { useImmer } from 'use-immer';
import { type PlainClientAPI } from 'contentful-management';
import { type PageAppSDK } from 'contentful-ui-extensions-sdk';
import React, { type ReactElement, useEffect, useState } from 'react';
import { ContentTreeRoot } from './ContentTreeRoot';
import { emptyNodeProps, cfEntriesToNodes } from './ContentTreeUtils';
@ -13,7 +12,7 @@ export interface ContentTreeProps {
titleFields: string[];
locales: string[]; // the first is the default locale
indentation?: number;
iconRegistry?: { [index: string]: string };
iconRegistry?: Record<string, string>;
}
export const ContentTree = ({
@ -27,7 +26,7 @@ export const ContentTree = ({
iconRegistry,
}: ContentTreeProps): ReactElement => {
const [stLocale] = useState(locales[0]);
const [rootNodes, setRootNodes] = useImmer([emptyNodeProps()]);
const [rootNodes, setRootNodes] = useState([emptyNodeProps()]);
useEffect(() => {
if (sdkInstance) {

View File

@ -1,4 +1,4 @@
import React, { ReactElement, useState } from 'react';
import React, { type ReactElement, useState } from 'react';
import {
StyledContentTreeNodeName,
@ -59,15 +59,32 @@ const ContentTreeNode = (props: {
<StyledSpinner>-</StyledSpinner>
) : props.node.hasChildNodes ? (
props.node.expand ? (
<a onClick={() => handleAddChildren(props.node)}>+</a>
<a
onClick={() => {
handleAddChildren(props.node);
}}
>
+
</a>
) : (
<a onClick={() => props.removeChildNodes(props.node)}>-</a>
<a
onClick={() => {
props.removeChildNodes(props.node);
}}
>
-
</a>
)
) : null}
</StyledContentTreeNodeWedge>
<Icon id={props.node.icon}></Icon>
<StyledContentTreeNodeName>
<a onClick={() => handleEditEntry()} title={props.node.id}>
<a
onClick={() => {
handleEditEntry();
}}
title={props.node.id}
>
{props.node.name}
</a>
</StyledContentTreeNodeName>

View File

@ -1,16 +1,15 @@
import {
EntryProps,
KeyValueMap,
Link,
PlainClientAPI,
type EntryProps,
type KeyValueMap,
type Link,
type PlainClientAPI,
} from 'contentful-management';
import { PageAppSDK } from 'contentful-ui-extensions-sdk';
import React, { ReactElement, useEffect, useState } from 'react';
import { useImmer } from 'use-immer';
import { type PageAppSDK } from 'contentful-ui-extensions-sdk';
import React, { type ReactElement, useEffect, useState } from 'react';
import { StyledContentTreeTable } from './ContentTree.styled';
import ContentTreeNode, { ContentTreeNodeProps } from './ContentTreeNode';
import { emptyNodeProps, cfEntriesToNodes } from './ContentTreeUtils';
import ContentTreeNode, { type ContentTreeNodeProps } from './ContentTreeNode';
import { cfEntriesToNodes, emptyNodeProps } from './ContentTreeUtils';
export interface ContentTreeRootProps {
node: ContentTreeNodeProps;
@ -20,7 +19,7 @@ export interface ContentTreeRootProps {
titleFields: string[];
locales: string[]; // the first is the default locale
depth: number;
iconRegistry?: { [index: string]: string };
iconRegistry?: Record<string, string>;
}
export const ContentTreeRoot = ({
@ -34,7 +33,7 @@ export const ContentTreeRoot = ({
iconRegistry,
}: ContentTreeRootProps): ReactElement => {
const [stLocale] = useState(locales[0]);
const [stRoot, setStRoot] = useImmer(emptyNodeProps());
const [stRoot, setStRoot] = useState(emptyNodeProps());
useEffect(() => {
if (node.id) {
@ -93,15 +92,18 @@ export const ContentTreeRoot = ({
iconRegistry,
node.id
);
setStRoot((draft) => {
setStRoot((prevState) => {
const newState = { ...prevState };
recursiveProcessNodes(
node.id,
(targetNode) => {
targetNode.childNodes = childNodes;
targetNode.expand = false;
},
draft
newState
);
return newState;
});
};
@ -161,7 +163,7 @@ export const ContentTreeRoot = ({
}
}
const cfChildren: Array<EntryProps<KeyValueMap>> = [];
const idPositionMap: { [index: string]: number } = allItems.reduce(
const idPositionMap: Record<string, number> = allItems.reduce(
(acc: any, el, i) => {
acc[el.sys.id] = i;
return acc;
@ -177,15 +179,17 @@ export const ContentTreeRoot = ({
};
const removeChildNodes = (node: ContentTreeNodeProps): void => {
setStRoot((draft) => {
setStRoot((prevState) => {
const newState = { ...prevState };
recursiveProcessNodes(
node.id,
(targetNode) => {
targetNode.childNodes = [];
targetNode.expand = true;
},
draft
newState
);
return newState;
});
};

View File

@ -1,5 +1,5 @@
import { EntryProps, KeyValueMap } from 'contentful-management';
import { ContentTreeNodeProps } from './ContentTreeNode';
import { type EntryProps, type KeyValueMap } from 'contentful-management';
import { type ContentTreeNodeProps } from './ContentTreeNode';
export const emptyNodeProps = (): ContentTreeNodeProps => {
return { id: '', name: '', expand: false, parentId: '' };
@ -36,7 +36,7 @@ export const cfEntriesToNodes = (
stLocale: string,
locales: string[],
nodeContentTypes: string[],
iconRegistry?: { [index: string]: string },
iconRegistry?: Record<string, string>,
parentId?: string
): ContentTreeNodeProps[] => {
if (entries.length === 0) {

View File

@ -1,4 +1,4 @@
import React, { FC, ReactElement, SVGProps } from 'react';
import React, { type FC, type ReactElement, type SVGProps } from 'react';
import styled from 'styled-components';
export type SVGIcon = FC<SVGProps<SVGSVGElement>>;

118
yarn.lock
View File

@ -138,14 +138,14 @@
resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed"
integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==
"@eslint-community/eslint-utils@^4.2.0":
"@eslint-community/eslint-utils@^4.1.2", "@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"
integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
dependencies:
eslint-visitor-keys "^3.3.0"
"@eslint-community/regexpp@^4.4.0":
"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.5.0":
version "4.5.1"
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884"
integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==
@ -873,13 +873,13 @@ eslint-module-utils@^2.7.4:
dependencies:
debug "^3.2.7"
eslint-plugin-es@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz#f0822f0c18a535a97c3e714e89f88586a7641ec9"
integrity sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==
eslint-plugin-es-x@^6.1.0:
version "6.2.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-es-x/-/eslint-plugin-es-x-6.2.1.tgz#34c9abc22483d7d49ff9ca8b5db29d54442d2e6b"
integrity sha512-uR34zUhZ9EBoiSD2DdV5kHLpydVEvwWqjteUr9sXRgJknwbKZJZhdJ7uFnaTtd+Nr/2G3ceJHnHXrFhJ67n3Tw==
dependencies:
eslint-utils "^2.0.0"
regexpp "^3.0.0"
"@eslint-community/eslint-utils" "^4.1.2"
"@eslint-community/regexpp" "^4.5.0"
eslint-plugin-import@^2.27.5:
version "2.27.5"
@ -910,19 +910,19 @@ eslint-plugin-json@3.1.0:
lodash "^4.17.21"
vscode-json-languageservice "^4.1.6"
eslint-plugin-n@^15.6.1:
version "15.7.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz#e29221d8f5174f84d18f2eb94765f2eeea033b90"
integrity sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==
eslint-plugin-n@^16.0.0:
version "16.0.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-16.0.0.tgz#de39e4dd6cf04fd78fd6f49cb39ecb20ea0167ff"
integrity sha512-akkZTE3hsHBrq6CwmGuYCzQREbVUrA855kzcHqe6i0FLBkeY7Y/6tThCVkjUnjhvRBAlc+8lILcSe5QvvDpeZQ==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
builtins "^5.0.1"
eslint-plugin-es "^4.1.0"
eslint-utils "^3.0.0"
eslint-plugin-es-x "^6.1.0"
ignore "^5.1.1"
is-core-module "^2.11.0"
is-core-module "^2.12.0"
minimatch "^3.1.2"
resolve "^1.22.1"
semver "^7.3.8"
resolve "^1.22.2"
semver "^7.5.0"
eslint-plugin-prettier@^4.2.1:
version "4.2.1"
@ -973,30 +973,6 @@ eslint-scope@^7.2.0:
esrecurse "^4.3.0"
estraverse "^5.2.0"
eslint-utils@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
dependencies:
eslint-visitor-keys "^1.1.0"
eslint-utils@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
dependencies:
eslint-visitor-keys "^2.0.0"
eslint-visitor-keys@^1.1.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
eslint-visitor-keys@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
eslint-visitor-keys@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
@ -1398,10 +1374,10 @@ ignore@^5.1.1, ignore@^5.2.0:
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
immer@9.0.19:
version "9.0.19"
resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.19.tgz#67fb97310555690b5f9cd8380d38fc0aabb6b38b"
integrity sha512-eY+Y0qcsB4TZKwgQzLaE/lqYMlKhv5J9dyd2RhhtGhNo2njPXDqU9XPfcNfa3MIDsdtZt5KlkIsirlo4dHsWdQ==
immer@10.0.2:
version "10.0.2"
resolved "https://registry.yarnpkg.com/immer/-/immer-10.0.2.tgz#11636c5b77acf529e059582d76faf338beb56141"
integrity sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA==
import-fresh@^3.0.0, import-fresh@^3.2.1:
version "3.3.0"
@ -1490,6 +1466,13 @@ is-core-module@^2.11.0:
dependencies:
has "^1.0.3"
is-core-module@^2.12.0:
version "2.12.1"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd"
integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==
dependencies:
has "^1.0.3"
is-core-module@^2.9.0:
version "2.10.0"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed"
@ -1902,10 +1885,10 @@ prettier-linter-helpers@^1.0.0:
dependencies:
fast-diff "^1.1.2"
prettier@2.8.4:
version "2.8.4"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.4.tgz#34dd2595629bfbb79d344ac4a91ff948694463c3"
integrity sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==
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==
prop-types@^15.8.1:
version "15.8.1"
@ -1954,11 +1937,6 @@ regexp.prototype.flags@^1.4.3:
define-properties "^1.1.3"
functions-have-names "^1.2.2"
regexpp@^3.0.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
resolve-from@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
@ -1973,6 +1951,15 @@ resolve@^1.22.1:
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
resolve@^1.22.2:
version "1.22.2"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f"
integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==
dependencies:
is-core-module "^2.11.0"
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
resolve@^2.0.0-next.4:
version "2.0.0-next.4"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660"
@ -2022,7 +2009,7 @@ semver@^7.0.0, semver@^7.3.7:
dependencies:
lru-cache "^6.0.0"
semver@^7.3.8:
semver@^7.5.0:
version "7.5.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec"
integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==
@ -2127,10 +2114,10 @@ strip-json-comments@^3.1.0, strip-json-comments@^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==
styled-components@5.3.6:
version "5.3.6"
resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.6.tgz#27753c8c27c650bee9358e343fc927966bfd00d1"
integrity sha512-hGTZquGAaTqhGWldX7hhfzjnIYBZ0IXQXkCYdvF1Sq3DsUaLx6+NTHC5Jj1ooM2F68sBiVz3lvhfwQs/S3l6qg==
styled-components@5.3.11:
version "5.3.11"
resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.11.tgz#9fda7bf1108e39bf3f3e612fcc18170dedcd57a8"
integrity sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==
dependencies:
"@babel/helper-module-imports" "^7.0.0"
"@babel/traverse" "^7.4.5"
@ -2227,10 +2214,10 @@ typed-array-length@^1.0.4:
for-each "^0.3.3"
is-typed-array "^1.1.9"
typescript@4.9.5:
version "4.9.5"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
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==
unbox-primitive@^1.0.2:
version "1.0.2"
@ -2249,11 +2236,6 @@ uri-js@^4.2.2:
dependencies:
punycode "^2.1.0"
use-immer@0.8.1:
version "0.8.1"
resolved "https://registry.yarnpkg.com/use-immer/-/use-immer-0.8.1.tgz#db7442bdd64ecf826ce274a91aa8cf821945cf0f"
integrity sha512-OfTFf1pL+ICjjcLPn9+ZnaJO/Yg4MBzYZtACEe2mZ/W2A5col28PNUnwowOAaBuOogACOK/37TU17KgsIhUpOw==
vscode-json-languageservice@^4.1.6:
version "4.2.1"
resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-4.2.1.tgz#94b6f471ece193bf4a1ef37f6ab5cce86d50a8b4"