From 0fba9873435082313dd63b7847f477994a2b8462 Mon Sep 17 00:00:00 2001 From: tomaz jejcic Date: Sun, 25 Sep 2022 11:37:41 +0200 Subject: [PATCH] chor: eslint and prettier --- .eslintrc.json | 35 ++ .gitignore | 1 + .prettierignore | 1 + .vscode/settings.json | 38 ++ README.md | 1 + dist/ContentTree.d.ts | 14 - dist/ContentTree.js | 321 -------------- dist/ContentTree.styled.d.ts | 14 - dist/ContentTree.styled.js | 37 -- dist/ContentTreeNode.d.ts | 21 - dist/ContentTreeNode.js | 98 ----- dist/Icons.d.ts | 9 - dist/Icons.js | 80 ---- dist/index.d.ts | 3 - dist/index.js | 19 - package.json | 29 +- src/ContentTree.styled.tsx | 156 +++---- src/ContentTree.tsx | 462 +++++++++++--------- src/ContentTreeNode.tsx | 150 ++++--- src/Icons.tsx | 154 +++++-- src/index.ts | 6 +- yarn.lock | 815 ++++++++++++++++++++++++++++++++++- 22 files changed, 1447 insertions(+), 1017 deletions(-) create mode 100644 .eslintrc.json create mode 100644 .prettierignore create mode 100644 .vscode/settings.json delete mode 100644 dist/ContentTree.d.ts delete mode 100644 dist/ContentTree.js delete mode 100644 dist/ContentTree.styled.d.ts delete mode 100644 dist/ContentTree.styled.js delete mode 100644 dist/ContentTreeNode.d.ts delete mode 100644 dist/ContentTreeNode.js delete mode 100644 dist/Icons.d.ts delete mode 100644 dist/Icons.js delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..176c735 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,35 @@ +{ + "env": { + "es6": true, + "node": true, + "browser": true + }, + "extends": [ + "plugin:react/recommended", + "standard-with-typescript", + "plugin:prettier/recommended" + ], + "ignorePatterns": [ + "**/dist/**", + "**/node_modules/**", + ".eslintrc.json", + "tsconfig.json", + "package.json" + ], + "overrides": [], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 2018, + "sourceType": "module", + "project": "tsconfig.json" + }, + "plugins": [ + "react", + "prettier", + "@typescript-eslint" + ], + "rules": { + "@typescript-eslint/strict-boolean-expressions": 0, + "prettier/prettier": "error" + } +} diff --git a/.gitignore b/.gitignore index cf3af02..19f9d21 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. +dist node_modules # misc .DS_Store diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..53c37a1 --- /dev/null +++ b/.prettierignore @@ -0,0 +1 @@ +dist \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..e9ab253 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,38 @@ +{ + "typescript.tsdk": "node_modules/typescript/lib", + "editor.formatOnSave": true, + "[typescript]": { + "editor.formatOnSave": false, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + } + }, + "[javascript]": { + "editor.formatOnSave": false, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + } + }, + "[typescriptreact]": { + "editor.formatOnSave": false, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + } + }, + "[json]": { + "editor.formatOnSave": false, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + } + }, + "eslint.packageManager": "yarn", + "files.exclude": { + "**/.git": true, + "**/.svn": true, + "**/.hg": true, + "**/CVS": true, + "**/.DS_Store": true, + "**/Thumbs.db": true, + "**/node_modules": true + } +} diff --git a/README.md b/README.md index fe0cb92..4c4ed9b 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ # contentfultree + A React component to display a tree of entries and references in a contentful app diff --git a/dist/ContentTree.d.ts b/dist/ContentTree.d.ts deleted file mode 100644 index b7cca0d..0000000 --- a/dist/ContentTree.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { PlainClientAPI } from 'contentful-management'; -import { PageExtensionSDK } from 'contentful-ui-extensions-sdk'; -export interface ContentTreeProps { - sdkInstance: PageExtensionSDK; - cma: PlainClientAPI; - rootType: string; - nodeContentTypes: string[]; - titleFields: string[]; - locales: string[]; - iconRegistry?: { - [index: string]: string; - }; -} -export declare const ContentTree: (props: ContentTreeProps) => JSX.Element; diff --git a/dist/ContentTree.js b/dist/ContentTree.js deleted file mode 100644 index a2f6600..0000000 --- a/dist/ContentTree.js +++ /dev/null @@ -1,321 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { - if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { - if (ar || !(i in from)) { - if (!ar) ar = Array.prototype.slice.call(from, 0, i); - ar[i] = from[i]; - } - } - return to.concat(ar || Array.prototype.slice.call(from)); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ContentTree = 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 emptyNodeProps = function () { - return { id: '', name: '', expand: false, parentId: '' }; -}; -var ContentTree = function (props) { - var _a = (0, react_1.useState)(props.locales[0]), stLocale = _a[0], setStLocale = _a[1]; - var _b = (0, use_immer_1.useImmer)(emptyNodeProps()), stRoot = _b[0], setStRoot = _b[1]; - (0, react_1.useEffect)(function () { - if (props.sdkInstance) { - loadRootData(); - } - }, [props.sdkInstance]); - var addChildNodes = function (node) { return __awaiter(void 0, void 0, void 0, function () { - var childNodes, cfChildren; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - childNodes = []; - return [4, getContentfulChildEntries(node.id)]; - case 1: - cfChildren = _a.sent(); - childNodes = cfEntriesToNodes(cfChildren, node.id); - setStRoot(function (draft) { - recursiveProcessNodes(node.id, function (targetNode) { - targetNode.childNodes = childNodes; - targetNode.expand = true; - }, draft); - console.log('🎈draft', draft); - }); - return [2]; - } - }); - }); }; - var recursiveProcessNodes = function (targetNodeId, processNode, node) { - if (node.id === targetNodeId) { - processNode(node); - } - if (node.childNodes) { - for (var _i = 0, _a = node.childNodes; _i < _a.length; _i++) { - var targetNode = _a[_i]; - recursiveProcessNodes(targetNodeId, processNode, targetNode); - } - } - }; - var editEntry = function (entryId) { - props.sdkInstance.navigator.openEntry(entryId, { slideIn: true }); - }; - var getContentfulChildEntries = function (parentId) { return __awaiter(void 0, void 0, void 0, function () { - var parentItem, allChildIds, _i, _a, key, childNodeRefs, _b, childNodeRefs_1, childNodeRef, allItems, done, skip, col, cfChildren, idPositionMap, _c, allChildIds_1, childId; - return __generator(this, function (_d) { - switch (_d.label) { - case 0: return [4, props.cma.entry.get({ entryId: parentId })]; - case 1: - parentItem = _d.sent(); - allChildIds = []; - for (_i = 0, _a = Object.keys(parentItem.fields); _i < _a.length; _i++) { - key = _a[_i]; - if (props.nodeContentTypes.includes(key)) { - childNodeRefs = parentItem.fields[key][stLocale]; - if (Array.isArray(childNodeRefs)) { - for (_b = 0, childNodeRefs_1 = childNodeRefs; _b < childNodeRefs_1.length; _b++) { - childNodeRef = childNodeRefs_1[_b]; - allChildIds.push(childNodeRef.sys.id); - } - } - else { - allChildIds.push(childNodeRefs.sys.id); - } - } - } - allItems = []; - done = false; - skip = 0; - _d.label = 2; - case 2: - if (!!done) return [3, 4]; - return [4, props.cma.entry.getMany({ query: { - 'sys.id[in]': allChildIds.join(','), - skip: skip - } })]; - case 3: - col = _d.sent(); - allItems.push.apply(allItems, col.items); - if (allItems.length < col.total) { - skip += 100; - } - else { - done = true; - } - return [3, 2]; - case 4: - cfChildren = []; - idPositionMap = allItems.reduce(function (acc, el, i) { - acc[el.sys.id] = i; - return acc; - }, {}); - for (_c = 0, allChildIds_1 = allChildIds; _c < allChildIds_1.length; _c++) { - childId = allChildIds_1[_c]; - if (allItems[idPositionMap[childId]]) { - cfChildren.push(allItems[idPositionMap[childId]]); - } - } - return [2, cfChildren]; - } - }); - }); }; - var cfEntriesToNodes = function (entries, parentId) { - if (entries.length === 0) { - return []; - } - var nodeArray = []; - entries.forEach(function (entry) { - if (!entry) { - console.log('this entry is nil'); - return; - } - var name = ''; - for (var _i = 0, _a = props.titleFields; _i < _a.length; _i++) { - var titleField = _a[_i]; - if (entry.fields[titleField] && entry.fields[titleField][stLocale]) { - name = entry.fields[titleField][stLocale]; - break; - } - } - if (name === '') { - name = entry.sys.id; - } - var node = { - id: entry.sys.id, - name: name, - contentType: entry.sys.contentType.sys.id, - icon: props.iconRegistry ? props.iconRegistry[entry.sys.contentType.sys.id] : '', - expand: !parentId, - parentId: parentId, - hasChildNodes: cfEntryHasChildren(entry), - publishingStatus: cfEntryPublishingStatus(entry), - updatedAt: entry.sys.updatedAt, - publishedAt: entry.sys.publishedAt - }; - nodeArray.push(node); - }); - return nodeArray; - }; - var cfEntryHasChildren = function (entry) { - for (var _i = 0, _a = props.nodeContentTypes; _i < _a.length; _i++) { - var nodeContentType = _a[_i]; - for (var _b = 0, _c = props.locales; _b < _c.length; _b++) { - var locale = _c[_b]; - if (entry.fields[nodeContentType] && entry.fields[nodeContentType][locale]) { - return true; - } - } - } - return false; - }; - var cfEntryPublishingStatus = function (entry) { - if (!entry.sys.publishedVersion) { - return 'draft'; - } - if (entry.sys.version - entry.sys.publishedVersion == 1) { - return 'published'; - } - return 'changed'; - }; - var loadRootData = function () { return __awaiter(void 0, void 0, void 0, function () { - var CfRootData, rootNodes, _loop_1, _i, rootNodes_1, rootNode; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4, props.cma.entry.getMany({ query: { content_type: props.rootType } })]; - case 1: - CfRootData = _a.sent(); - rootNodes = cfEntriesToNodes(CfRootData.items); - _loop_1 = function (rootNode) { - var childEntries, childNodes, nodes, newIdPositionMap_1, tree_1; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: return [4, getContentfulChildEntries(rootNode.id)]; - case 1: - childEntries = _b.sent(); - childNodes = cfEntriesToNodes(childEntries, rootNode.id); - nodes = __spreadArray([rootNode], childNodes, true); - if (nodes.length > 0) { - newIdPositionMap_1 = nodes.reduce(function (acc, el, i) { - acc[el.id] = i; - return acc; - }, {}); - tree_1 = emptyNodeProps(); - nodes.forEach(function (node) { - node.childNodes = []; - if (!node.parentId) { - tree_1 = node; - return; - } - var parentEl = nodes[newIdPositionMap_1[node.parentId]]; - if (parentEl) { - parentEl.childNodes = __spreadArray(__spreadArray([], (parentEl.childNodes || []), true), [node], false); - parentEl.expand = true; - } - }); - console.log('🌴 tree', tree_1); - setStRoot(tree_1); - } - return [2]; - } - }); - }; - _i = 0, rootNodes_1 = rootNodes; - _a.label = 2; - case 2: - if (!(_i < rootNodes_1.length)) return [3, 5]; - rootNode = rootNodes_1[_i]; - return [5, _loop_1(rootNode)]; - case 3: - _a.sent(); - _a.label = 4; - case 4: - _i++; - return [3, 2]; - case 5: return [2]; - } - }); - }); }; - var removeChildNodes = function (node) { - setStRoot(function (draft) { - recursiveProcessNodes(node.id, function (targetNode) { - targetNode.childNodes = []; - targetNode.expand = false; - }, draft); - console.log('🎈draft', draft); - }); - }; - console.log('=============================== RENDER ====================================', stRoot); - return (react_1.default.createElement(react_1.default.Fragment, null, - react_1.default.createElement(ContentTree_styled_1.StyledContentTreeTable, null, - react_1.default.createElement("tbody", null, - react_1.default.createElement("tr", null, - react_1.default.createElement("th", null, "Nodes"), - react_1.default.createElement("th", null, "Content Type"), - react_1.default.createElement("th", null, "Status"), - react_1.default.createElement("th", null, "Last Modified"), - react_1.default.createElement("th", null, "Last Published")), - react_1.default.createElement(ContentTreeNode_1.default, { node: stRoot, depth: 0, addChildNodes: addChildNodes, removeChildNodes: removeChildNodes, editEntry: editEntry }))))); -}; -exports.ContentTree = ContentTree; diff --git a/dist/ContentTree.styled.d.ts b/dist/ContentTree.styled.d.ts deleted file mode 100644 index acb03ca..0000000 --- a/dist/ContentTree.styled.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -export interface UiPalette { - publishingStatusBg?: string; - publishingStatusFg?: string; -} -export declare const StyledContentTreeTable: import("styled-components").StyledComponent<"table", any, {}, never>; -export declare const StyledContentTreeTableNodeCell: import("styled-components").StyledComponent<"td", any, { - depth?: number | undefined; -}, never>; -export declare const StyledContentTreeNodeWedge: import("styled-components").StyledComponent<"div", any, {}, never>; -export declare const StyledContentTreeNodeName: import("styled-components").StyledComponent<"div", any, {}, never>; -export declare const StyledContentTreeNodePublishingStatus: import("styled-components").StyledComponent<"div", any, { - status: string; -}, never>; -export declare const StyledSpinner: import("styled-components").StyledComponent<"div", any, {}, never>; diff --git a/dist/ContentTree.styled.js b/dist/ContentTree.styled.js deleted file mode 100644 index 7980323..0000000 --- a/dist/ContentTree.styled.js +++ /dev/null @@ -1,37 +0,0 @@ -"use strict"; -var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.StyledSpinner = exports.StyledContentTreeNodePublishingStatus = exports.StyledContentTreeNodeName = exports.StyledContentTreeNodeWedge = exports.StyledContentTreeTableNodeCell = exports.StyledContentTreeTable = void 0; -var styled_components_1 = __importDefault(require("styled-components")); -exports.StyledContentTreeTable = styled_components_1.default.table(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n color: black;\n border: 0;\n margin: 0 auto;\n td {\n padding: 0.2em 1em 0.2em 0.2em;\n color: #999999; \n border-bottom: 1px solid #efefef;\n }\n th {\n text-align: left;\n font-weight: normal;\n font-size: 85%;\n color: #666666;\n background: #efefef;\n padding: 0.2em;\n }\n th.first {\n font-weight: bold !important;\n color:black !important;\n }\n"], ["\n color: black;\n border: 0;\n margin: 0 auto;\n td {\n padding: 0.2em 1em 0.2em 0.2em;\n color: #999999; \n border-bottom: 1px solid #efefef;\n }\n th {\n text-align: left;\n font-weight: normal;\n font-size: 85%;\n color: #666666;\n background: #efefef;\n padding: 0.2em;\n }\n th.first {\n font-weight: bold !important;\n color:black !important;\n }\n"]))); -exports.StyledContentTreeTableNodeCell = styled_components_1.default.td(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n padding-left: ", "em !important;\n padding-right: 2em !important;\n color: black !important;\n min-width: 450px !important;\n"], ["\n padding-left: ", "em !important;\n padding-right: 2em !important;\n color: black !important;\n min-width: 450px !important;\n"])), function (props) { return 0.2 + props.depth; }); -exports.StyledContentTreeNodeWedge = styled_components_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n display: inline-block;\n width: 1em;\n text-align: left;\n a {\n cursor:pointer;\n font-size: 130%;\n line-height: 100%;\n }\n"], ["\n display: inline-block;\n width: 1em;\n text-align: left;\n a {\n cursor:pointer;\n font-size: 130%;\n line-height: 100%;\n }\n"]))); -exports.StyledContentTreeNodeName = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n display: inline-block;\n a {\n cursor: pointer; \n }\n a:hover {\n text-decoration:underline;\n }\n"], ["\n display: inline-block;\n a {\n cursor: pointer; \n }\n a:hover {\n text-decoration:underline;\n }\n"]))); -var getPublishingStatusColors = function (status) { - switch (status) { - case 'draft': - return { - publishingStatusBg: 'rgb(253, 229, 192)', - publishingStatusFg: 'rgb(177, 45, 0)' - }; - case 'changed': - return { - publishingStatusBg: 'rgb(206, 236, 255)', - publishingStatusFg: 'rgb(0, 89, 200)' - }; - case 'published': - return { - publishingStatusBg: 'rgb(205, 243, 198)', - publishingStatusFg: 'rgb(0, 109, 35)' - }; - } -}; -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.StyledSpinner = styled_components_1.default.div(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n display:inline-block;\n width: 1em;\n animation: rotate 1s infinite;\n @keyframes rotate {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n"], ["\n display:inline-block;\n width: 1em;\n animation: rotate 1s infinite;\n @keyframes rotate {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n"]))); -var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6; diff --git a/dist/ContentTreeNode.d.ts b/dist/ContentTreeNode.d.ts deleted file mode 100644 index a00486d..0000000 --- a/dist/ContentTreeNode.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -export interface ContentTreeNodeProps { - id: string; - name: string; - contentType: string; - icon: string; - expand: boolean; - parentId: string; - childNodes?: ContentTreeNodeProps[]; - hasChildNodes?: boolean; - publishingStatus: string; - updatedAt?: string; - publishedAt?: string; -} -declare const ContentTreeNode: (props: { - node: ContentTreeNodeProps; - depth?: number | undefined; - addChildNodes: (node: ContentTreeNodeProps) => void; - removeChildNodes: (node: ContentTreeNodeProps) => void; - editEntry: (nodeId: string) => void; -}) => JSX.Element; -export default ContentTreeNode; diff --git a/dist/ContentTreeNode.js b/dist/ContentTreeNode.js deleted file mode 100644 index 934c272..0000000 --- a/dist/ContentTreeNode.js +++ /dev/null @@ -1,98 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var react_1 = __importStar(require("react")); -var ContentTree_styled_1 = require("./ContentTree.styled"); -var Icons_1 = require("./Icons"); -var ContentTreeNode = function (props) { - var _a; - var _b = (0, react_1.useState)(false), loading = _b[0], setLoading = _b[1]; - var _c = (0, react_1.useState)(props.node), node = _c[0], setNode = _c[1]; - var addChildren = function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - setLoading(true); - return [4, props.addChildNodes(node)]; - case 1: - _a.sent(); - setLoading(false); - return [2]; - } - }); - }); }; - 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 props.removeChildNodes(props.node); } }, "-")) : (react_1.default.createElement("a", { onClick: function () { return addChildren(); } }, "+")) : 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 props.editEntry(props.node.id); }, 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: props.node.publishingStatus }, props.node.publishingStatus)), - react_1.default.createElement("td", null, props.node.updatedAt), - react_1.default.createElement("td", null, props.node.publishedAt)), (_a = props.node.childNodes) === null || _a === void 0 ? void 0 : - _a.map(function (node, i) { - return react_1.default.createElement(ContentTreeNode, { key: i, node: node, depth: props.depth + 1, addChildNodes: props.addChildNodes, removeChildNodes: props.removeChildNodes, editEntry: props.editEntry }); - }))); -}; -exports.default = ContentTreeNode; diff --git a/dist/Icons.d.ts b/dist/Icons.d.ts deleted file mode 100644 index acc20fb..0000000 --- a/dist/Icons.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { FC, SVGProps } from 'react'; -export declare type SVGIcon = FC>; -export interface IconProps { - icon?: SVGIcon; -} -export declare const Icon: (props: { - id?: string; -}) => JSX.Element; -export declare const StyledIcon: import("styled-components").StyledComponent<"span", any, {}, never>; diff --git a/dist/Icons.js b/dist/Icons.js deleted file mode 100644 index 1fb434b..0000000 --- a/dist/Icons.js +++ /dev/null @@ -1,80 +0,0 @@ -"use strict"; -var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.StyledIcon = exports.Icon = void 0; -var react_1 = __importDefault(require("react")); -var styled_components_1 = __importDefault(require("styled-components")); -var Icon = function (props) { - switch (props.id) { - case 'WORLD': - return react_1.default.createElement(exports.StyledIcon, null, - react_1.default.createElement("svg", { id: "Layer_1", "data-name": "Layer 1", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 128 128" }, - react_1.default.createElement("title", null, "WORLD"), - react_1.default.createElement("path", { d: "M113.66,23.69q-.345-.435-.72-.87A63.786,63.786,0,0,0,64.92.02C64.61.01,64.31,0,64,0s-.61.01-.92.02A63.789,63.789,0,0,0,14.93,22.98a6.164,6.164,0,0,0-.47.57.138.138,0,0,1-.03.04,63.8,63.8,0,0,0,0,80.82.138.138,0,0,1,.03.04,6.171,6.171,0,0,0,.47.57l.01.01a63.776,63.776,0,0,0,48.14,22.95c.614.02,1.226.02,1.84,0a63.786,63.786,0,0,0,48.02-22.8q.375-.435.72-.87a63.826,63.826,0,0,0,0-80.62ZM99.49,62.25a106.208,106.208,0,0,0-4.07-28.03,69.57,69.57,0,0,0,16.19-7.51,60.158,60.158,0,0,1,12.86,35.54ZM65.75,3.59c10.69,1.1,19.99,12.14,25.36,28.3a100.612,100.612,0,0,1-25.36,3.58Zm-3.5,31.88a100.612,100.612,0,0,1-25.36-3.58c5.37-16.16,14.67-27.2,25.36-28.3Zm0,3.5V62.25H32.01a104.4,104.4,0,0,1,3.85-27.02A104.159,104.159,0,0,0,62.25,38.97Zm0,26.78V89.03a104.161,104.161,0,0,0-26.39,3.74,104.4,104.4,0,0,1-3.85-27.02Zm0,26.78v31.88c-10.69-1.1-19.99-12.14-25.36-28.3A100.612,100.612,0,0,1,62.25,92.53Zm3.5,0a100.612,100.612,0,0,1,25.36,3.58c-5.37,16.16-14.67,27.2-25.36,28.3Zm0-3.5V65.75H95.99a104.477,104.477,0,0,1-3.85,27.03A103.333,103.333,0,0,0,65.75,89.03Zm0-26.78V38.97a103.33,103.33,0,0,0,26.39-3.75,104.478,104.478,0,0,1,3.85,27.03Zm43.6-38.26A66.171,66.171,0,0,1,94.37,30.9C90.53,19.48,84.76,10.4,77.89,5.11A60.6,60.6,0,0,1,109.35,23.99ZM50.11,5.11C43.24,10.4,37.47,19.48,33.63,30.9A67.031,67.031,0,0,1,18.65,24,60.513,60.513,0,0,1,50.11,5.11ZM16.39,26.7a69.605,69.605,0,0,0,16.19,7.53,106.07,106.07,0,0,0-4.07,28.02H3.53A60.188,60.188,0,0,1,16.39,26.7ZM28.51,65.75a106.069,106.069,0,0,0,4.07,28.02v.01a69.183,69.183,0,0,0-16.19,7.52A60.188,60.188,0,0,1,3.53,65.75ZM18.65,104a67.031,67.031,0,0,1,14.98-6.9c3.84,11.42,9.61,20.5,16.48,25.79A60.514,60.514,0,0,1,18.65,104Zm59.24,18.89c6.87-5.29,12.64-14.37,16.48-25.79a66.169,66.169,0,0,1,14.98,6.91A60.6,60.6,0,0,1,77.89,122.89Zm33.72-21.6a69.573,69.573,0,0,0-16.19-7.51,106.208,106.208,0,0,0,4.07-28.03h24.98A60.158,60.158,0,0,1,111.61,101.29Z" }))); - case 'PAGE': - return react_1.default.createElement(exports.StyledIcon, null, - react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 48 48" }, - react_1.default.createElement("defs", null), - react_1.default.createElement("title", null, "Asset 47ldpi"), - react_1.default.createElement("g", { id: "Layer_2", "data-name": "Layer 2" }, - react_1.default.createElement("g", { id: "layer_1-2", "data-name": "layer 1" }, - react_1.default.createElement("path", { d: "M47,48H1a1,1,0,0,1-1-1V1A1,1,0,0,1,1,0H47a1,1,0,0,1,1,1V47A1,1,0,0,1,47,48ZM2,46H46V2H2Z" }), - react_1.default.createElement("rect", { x: "34", y: "25", width: "8", height: "2" }), - react_1.default.createElement("rect", { x: "22", y: "25", width: "10", height: "2" }), - react_1.default.createElement("rect", { x: "31", y: "30", width: "7", height: "2" }), - react_1.default.createElement("rect", { x: "22", y: "30", width: "7", height: "2" }), - react_1.default.createElement("rect", { x: "36", y: "35", width: "6", height: "2" }), - react_1.default.createElement("rect", { x: "22", y: "35", width: "12", height: "2" }), - react_1.default.createElement("rect", { x: "22", y: "40", width: "9", height: "2" }), - react_1.default.createElement("path", { d: "M18,42H7a1,1,0,0,1-1-1V26a1,1,0,0,1,1-1H18a1,1,0,0,1,1,1V41A1,1,0,0,1,18,42ZM8,40h9V27H8Z" }), - react_1.default.createElement("path", { d: "M41,22H7a1,1,0,0,1-1-1V15a1,1,0,0,1,1-1H41a1,1,0,0,1,1,1v6A1,1,0,0,1,41,22ZM8,20H40V16H8Z" }), - react_1.default.createElement("rect", { x: "4", y: "4", width: "2", height: "2" }), - react_1.default.createElement("rect", { x: "8", y: "4", width: "2", height: "2" }), - react_1.default.createElement("rect", { x: "12", y: "4", width: "2", height: "2" }), - react_1.default.createElement("rect", { x: "1", y: "8", width: "46", height: "2" }))))); - case 'APP': - return react_1.default.createElement(exports.StyledIcon, null, - react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 32 32" }, - react_1.default.createElement("title", null, "8-Book"), - react_1.default.createElement("g", { id: "_8-Book", "data-name": "8-Book" }, - react_1.default.createElement("path", { d: "M27,23a5,5,0,0,0-3-1H6a5,5,0,0,0-3,1V5A3,3,0,0,1,6,2H18V0H6A5,5,0,0,0,1,5V27a5,5,0,0,0,5,5H28a1,1,0,0,0,1-1V19H27Zm0,7H6a3,3,0,0,1,0-6H24a3,3,0,0,1,2.82,2H10v2H27Z" }), - react_1.default.createElement("rect", { x: "6", y: "26", width: "2", height: "2" }), - react_1.default.createElement("path", { d: "M15,7V5H7A1,1,0,0,0,6,6v4a1,1,0,0,0,1,1h8V9H8V7Z" }), - react_1.default.createElement("rect", { x: "6", y: "14", width: "2", height: "2" }), - react_1.default.createElement("rect", { x: "10", y: "14", width: "2", height: "2" }), - react_1.default.createElement("path", { d: "M31,11V9H28.9a5,5,0,0,0-.73-1.75l1.54-1.54L28.29,4.29,26.75,5.83A5,5,0,0,0,25,5.1V3H23V5.1a5,5,0,0,0-1.75.73L19.71,4.29,18.29,5.71l1.54,1.54A5,5,0,0,0,19.1,9H17v2h2.1a5,5,0,0,0,.73,1.75l-1.54,1.54,1.41,1.41,1.54-1.54A5,5,0,0,0,23,14.9V17h2V14.9a5,5,0,0,0,1.75-.73l1.54,1.54,1.41-1.41-1.54-1.54A5,5,0,0,0,28.9,11Zm-7,2a3,3,0,1,1,3-3A3,3,0,0,1,24,13Z" })))); - case 'CART': - return react_1.default.createElement(exports.StyledIcon, null, - react_1.default.createElement("svg", { version: "1.1", id: "shopping_x5F_carts_1_", xmlns: "http://www.w3.org/2000/svg", x: "0", y: "0", viewBox: "0 0 128 128" }, - react_1.default.createElement("g", { id: "_x31__1_" }, - react_1.default.createElement("path", { d: "M92.1 96c-5.2 0-9.3 4.2-9.3 9.3 0 5.2 4.2 9.3 9.3 9.3s9.3-4.2 9.3-9.3c0-5.1-4.1-9.3-9.3-9.3zm0 16a6.7 6.7 0 1 1 6.7-6.7c0 3.8-3 6.7-6.7 6.7zM41.4 96c-5.2 0-9.3 4.2-9.3 9.3 0 5.2 4.2 9.3 9.3 9.3s9.3-4.2 9.3-9.3c0-5.1-4.2-9.3-9.3-9.3zm0 16a6.7 6.7 0 1 1 6.7-6.7c0 3.8-3 6.7-6.7 6.7zm86.2-73.5c-.5-.8-1.3-1.2-2.2-1.2h-102L19 15.4c-.3-1.2-1.3-2.1-2.6-2.1H2.7C1.2 13.3 0 14.5 0 16c0 1.5 1.2 2.7 2.7 2.7h11.4l14.6 72.6c.3 1.2 1.3 2.1 2.6 2.1h72.2c1.1 0 2-.6 2.4-1.6L127.8 41c.3-.8.3-1.7-.2-2.5zM101.7 88H33.5l-2.7-13.3h76.7L101.7 88zm6.9-16H30.3l-2.7-13.3h86.8L108.6 72zm6.9-16H27l-2.7-13.3h96.9L115.5 56z", id: "icon_14_" })))); - case 'FOLDER': - return react_1.default.createElement(exports.StyledIcon, null, - react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 64 64" }, - react_1.default.createElement("path", { d: "M64 15v37a5.006 5.006 0 0 1-5 5H5a5.006 5.006 0 0 1-5-5V12a5.006 5.006 0 0 1 5-5h14.116a6.966 6.966 0 0 1 5.466 2.627l5 6.247A2.983 2.983 0 0 0 31.922 17H59a1 1 0 0 1 0 2H31.922a4.979 4.979 0 0 1-3.9-1.876l-5-6.247A4.976 4.976 0 0 0 19.116 9H5a3 3 0 0 0-3 3v40a3 3 0 0 0 3 3h54a3 3 0 0 0 3-3V15a3 3 0 0 0-3-3H30a1 1 0 0 1 0-2h29a5.006 5.006 0 0 1 5 5z" }))); - case 'LOVE': - return react_1.default.createElement(exports.StyledIcon, null, - react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24" }, - react_1.default.createElement("path", { d: "M22.813 7.338a6.736 6.736 0 0 0-3.8-4.49c-3.206-1.471-6 .878-7.016 1.9-1.013-1.025-3.813-3.374-7.016-1.9a6.736 6.736 0 0 0-3.8 4.49 5.818 5.818 0 0 0 1 4.98c1.708 2.215 9.156 8.891 9.472 9.174a.514.514 0 0 0 .688 0c.316-.283 7.764-6.959 9.472-9.174a5.815 5.815 0 0 0 1-4.98zM21 11.689c-1.448 1.878-7.488 7.362-9 8.726-1.512-1.364-7.552-6.848-9-8.726a4.8 4.8 0 0 1-.812-4.1 5.711 5.711 0 0 1 3.226-3.8c2.229-1.027 4.731.311 6.186 2.05a.516.516 0 0 0 .4.188.516.516 0 0 0 .4-.188c.029-.035 2.958-3.536 6.188-2.055a5.714 5.714 0 0 1 3.226 3.8A4.8 4.8 0 0 1 21 11.689z" }), - react_1.default.createElement("path", { d: "M6.346 5a4.39 4.39 0 0 0-2.473 2.928 3.818 3.818 0 0 0 .656 3.272.515.515 0 0 0 .816-.629 2.8 2.8 0 0 1-.472-2.392 3.366 3.366 0 0 1 1.9-2.237A.515.515 0 0 0 6.346 5z" }))); - case 'SHORTCUT': - return react_1.default.createElement(exports.StyledIcon, null, - react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24" }, - react_1.default.createElement("g", { "data-name": "13.Arrow up" }, - react_1.default.createElement("path", { d: "M12 24a12 12 0 1 1 12-12 12.013 12.013 0 0 1-12 12zm0-22a10 10 0 1 0 10 10A10.011 10.011 0 0 0 12 2z" }), - react_1.default.createElement("path", { d: "M18 12h-2V9h-4V7h6v5z" }), - react_1.default.createElement("path", { d: "m3.707 17.707-1.414-1.414L6.586 12h5l4.707-4.707 1.414 1.414L12.414 14h-5l-3.707 3.707z" })))); - } - return react_1.default.createElement(exports.StyledIcon, null, - react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20.088", height: "20.087" }, - react_1.default.createElement("path", { d: "M10.044 0a10.044 10.044 0 1 0 10.044 10.043A10.043 10.043 0 0 0 10.044 0zm.047 15.033a4.99 4.99 0 1 1 4.99-4.99 4.989 4.989 0 0 1-4.99 4.99z" }))); -}; -exports.Icon = Icon; -exports.StyledIcon = styled_components_1.default.span(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n line-height: 1px;\n position: relative;\n display: inline-block;\n vertical-align: top;\n width: 16px;\n height: 16px;\n margin: 2px 4px;\n"], ["\n line-height: 1px;\n position: relative;\n display: inline-block;\n vertical-align: top;\n width: 16px;\n height: 16px;\n margin: 2px 4px;\n"]))); -var templateObject_1; diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 675a7ea..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./ContentTree"; -export * from "./ContentTree.styled"; -export * from "./ContentTreeNode"; diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index c0397f5..0000000 --- a/dist/index.js +++ /dev/null @@ -1,19 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -__exportStar(require("./ContentTree"), exports); -__exportStar(require("./ContentTree.styled"), exports); -__exportStar(require("./ContentTreeNode"), exports); diff --git a/package.json b/package.json index 1187953..f91fc92 100644 --- a/package.json +++ b/package.json @@ -7,27 +7,46 @@ "scripts": { "clean": "rm -f ./tsconfig.tsbuildinfo && rm -rvf dist", "build": "yarn clean && tsc -b -v .", - "dev": "yarn tsc -b tsconfig.json -w" + "dev": "yarn tsc -b tsconfig.json -w", + "lint": "eslint --ext=js,jsx,ts,tsx,json .", + "lint:fix": "eslint --ext=js,jsx,ts,tsx,json . --fix" + }, + "prettier": { + "useTabs": true, + "tabWidth": 2, + "singleQuote": true }, "devDependencies": { "@types/react": "^18.0.20", "@types/styled-components": "^5.1.26", + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.38.0", "contentful-management": "^10.6.3", "contentful-ui-extensions-sdk": "^4.8.1", - "eslint": "^8.23.1", + "eslint": "^8.0.1", + "eslint-config-prettier": "^8.5.0", + "eslint-config-standard-with-typescript": "^23.0.0", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-json": "3.1.0", + "eslint-plugin-n": "^15.0.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.0.0", + "eslint-plugin-react": "^7.31.8", "immer": "^9.0.15", "install-peers": "^1.0.4", + "prettier": "2.7.1", "react": "18.2.0", "styled-components": "^5.3.5", - "typescript": "^4.8.3", + "typescript": "*", "use-immer": "^0.7.0" }, - "peerDependencies": {}, + "peerDependencies": { + "install-peers": "^1.0.4" + }, "dependencies": { "contentful-management": "^10.15.0", "contentful-ui-extensions-sdk": "^4.12.1", "immer": "^9.0.15", - "install-peers": "^1.0.4", "react": "^18.2.0", "styled-components": "^5.3.5", "use-immer": "^0.7.0" diff --git a/src/ContentTree.styled.tsx b/src/ContentTree.styled.tsx index 38d739d..d210a29 100644 --- a/src/ContentTree.styled.tsx +++ b/src/ContentTree.styled.tsx @@ -1,82 +1,84 @@ import styled from 'styled-components'; export interface UiPalette { - publishingStatusBg?: string, - publishingStatusFg?: string, + publishingStatusBg?: string; + publishingStatusFg?: string; } export const StyledContentTreeTable = styled.table` - color: black; - border: 0; - margin: 0 auto; - td { - padding: 0.2em 1em 0.2em 0.2em; - color: #999999; - border-bottom: 1px solid #efefef; - } - th { - text-align: left; - font-weight: normal; - font-size: 85%; - color: #666666; - background: #efefef; - padding: 0.2em; - } - th.first { - font-weight: bold !important; - color:black !important; - } + color: black; + border: 0; + margin: 0 auto; + td { + padding: 0.2em 1em 0.2em 0.2em; + color: #999999; + border-bottom: 1px solid #efefef; + } + th { + text-align: left; + font-weight: normal; + font-size: 85%; + color: #666666; + background: #efefef; + padding: 0.2em; + } + th.first { + font-weight: bold !important; + color: black !important; + } `; export const StyledContentTreeTableNodeCell = styled.td<{ depth?: number }>` - padding-left: ${(props) => 0.2 + props.depth!}em !important; - padding-right: 2em !important; - color: black !important; - min-width: 450px !important; + padding-left: ${(props) => props.depth}em !important; + padding-right: 2em !important; + color: black !important; + min-width: 450px !important; `; export const StyledContentTreeNodeWedge = styled.div` - display: inline-block; - width: 1em; - text-align: left; - a { - cursor:pointer; - font-size: 130%; - line-height: 100%; - } -` + display: inline-block; + width: 1em; + text-align: left; + a { + cursor: pointer; + font-size: 130%; + line-height: 100%; + } +`; export const StyledContentTreeNodeName = styled.div` - display: inline-block; - a { - cursor: pointer; - } - a:hover { - text-decoration:underline; - } -` + display: inline-block; + a { + cursor: pointer; + } + a:hover { + text-decoration: underline; + } +`; -const getPublishingStatusColors = (status: string):UiPalette|undefined => { - switch (status) { - case 'draft': - return { - publishingStatusBg: 'rgb(253, 229, 192)', - publishingStatusFg: 'rgb(177, 45, 0)' - } - case 'changed': - return { - publishingStatusBg: 'rgb(206, 236, 255)', - publishingStatusFg: 'rgb(0, 89, 200)' - } - case 'published': - return { - publishingStatusBg: 'rgb(205, 243, 198)', - publishingStatusFg: 'rgb(0, 109, 35)' - } - } -} +const getPublishingStatusColors = (status: string): UiPalette | undefined => { + switch (status) { + case 'draft': + return { + publishingStatusBg: 'rgb(253, 229, 192)', + publishingStatusFg: 'rgb(177, 45, 0)', + }; + case 'changed': + return { + publishingStatusBg: 'rgb(206, 236, 255)', + publishingStatusFg: 'rgb(0, 89, 200)', + }; + case 'published': + return { + publishingStatusBg: 'rgb(205, 243, 198)', + publishingStatusFg: 'rgb(0, 109, 35)', + }; + } +}; -export const StyledContentTreeNodePublishingStatus = styled.div<{ status: string }>` +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; @@ -85,17 +87,23 @@ export const StyledContentTreeNodePublishingStatus = styled.div<{ status: string letter-spacing: 0.06rem; border-radius: 4px; padding: 0 0.2rem; - color: ${(props) => getPublishingStatusColors(props.status)?.publishingStatusFg} !important; - background-color: ${(props) => getPublishingStatusColors(props.status)?.publishingStatusBg} !important; + color: ${(props) => + getPublishingStatusColors(props.status)?.publishingStatusFg} !important; + background-color: ${(props) => + getPublishingStatusColors(props.status)?.publishingStatusBg} !important; } -` +`; export const StyledSpinner = styled.div` - display:inline-block; - width: 1em; - animation: rotate 1s infinite; - @keyframes rotate { - from { transform: rotate(0deg); } - to { transform: rotate(360deg); } -} -` \ No newline at end of file + display: inline-block; + width: 1em; + animation: rotate 1s infinite; + @keyframes rotate { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } + } +`; diff --git a/src/ContentTree.tsx b/src/ContentTree.tsx index 7a3273f..e79afa6 100644 --- a/src/ContentTree.tsx +++ b/src/ContentTree.tsx @@ -1,238 +1,270 @@ -import { EntryProps, KeyValueMap, Link, PlainClientAPI } from 'contentful-management'; +import { + EntryProps, + KeyValueMap, + Link, + PlainClientAPI, +} from 'contentful-management'; import { PageExtensionSDK } from 'contentful-ui-extensions-sdk'; -import React, { useEffect, useState } from 'react'; +import React, { ReactElement, useEffect, useState } from 'react'; import { useImmer } from 'use-immer'; import { StyledContentTreeTable } from './ContentTree.styled'; import ContentTreeNode, { ContentTreeNodeProps } from './ContentTreeNode'; export interface ContentTreeProps { - sdkInstance: PageExtensionSDK; - cma: PlainClientAPI; - rootType: string; - nodeContentTypes: string[]; - titleFields: string[]; - locales: string[]; //the first is the default locale - iconRegistry?: {[index:string]:string} + sdkInstance: PageExtensionSDK; + cma: PlainClientAPI; + rootType: string; + nodeContentTypes: string[]; + titleFields: string[]; + locales: string[]; // the first is the default locale + iconRegistry?: { [index: string]: string }; } const emptyNodeProps = (): ContentTreeNodeProps => { - return { id: '', name: '', expand: false, parentId: '' } as ContentTreeNodeProps; + return { id: '', name: '', expand: false, parentId: '' }; }; +export const ContentTree = (props: ContentTreeProps): ReactElement => { + const [stLocale] = useState(props.locales[0]); + const [stRoot, setStRoot] = useImmer(emptyNodeProps()); -export const ContentTree = (props: ContentTreeProps) => { - const [stLocale, setStLocale] = useState(props.locales[0]); - const [stRoot, setStRoot] = useImmer(emptyNodeProps()); + // EFFECTS - // EFFECTS + useEffect(() => { + if (props.sdkInstance) { + loadRootData().catch((err) => { + throw new Error('loadRootData', err); + }); + } + }, [props.sdkInstance]); - useEffect(() => { - if (props.sdkInstance) { - loadRootData(); - } - }, [props.sdkInstance]); + // FUNCTIONS - // FUNCTIONS + const addChildNodes = async (node: ContentTreeNodeProps): Promise => { + let childNodes: ContentTreeNodeProps[] = []; + const cfChildren = await getContentfulChildEntries(node.id); + childNodes = cfEntriesToNodes(cfChildren, node.id); + setStRoot((draft) => { + recursiveProcessNodes( + node.id, + (targetNode) => { + targetNode.childNodes = childNodes; + targetNode.expand = true; + }, + draft + ); + console.log('🎈draft', draft); + }); + }; - const addChildNodes = async (node: ContentTreeNodeProps) => { - let childNodes: ContentTreeNodeProps[] = [] - const cfChildren = await getContentfulChildEntries(node.id) - childNodes = cfEntriesToNodes(cfChildren, node.id) - setStRoot((draft) => { - recursiveProcessNodes(node.id, - (targetNode) => { - targetNode.childNodes = childNodes - targetNode.expand = true - }, - draft) - console.log('🎈draft',draft) - }) - } - - const recursiveProcessNodes = ( - targetNodeId: string, - processNode: (node:ContentTreeNodeProps)=>void, - node: ContentTreeNodeProps - ) => { - if (node.id === targetNodeId) { - processNode(node) - } - if (node.childNodes) { - for (let targetNode of node.childNodes!) { - recursiveProcessNodes(targetNodeId,processNode, targetNode) - } - } - } + const recursiveProcessNodes = ( + targetNodeId: string, + processNode: (node: ContentTreeNodeProps) => void, + node: ContentTreeNodeProps + ): void => { + if (node.id === targetNodeId) { + processNode(node); + } + if (node.childNodes != null) { + for (const targetNode of node.childNodes) { + recursiveProcessNodes(targetNodeId, processNode, targetNode); + } + } + }; - const editEntry = (entryId: string) => { - props.sdkInstance.navigator.openEntry(entryId, {slideIn:true}) - } + const editEntry = async (entryId: string): Promise => { + await props.sdkInstance.navigator.openEntry(entryId, { slideIn: true }); + }; - const getContentfulChildEntries = async (parentId: string): Promise[]> => { - const parentItem = await props.cma.entry.get({ entryId: parentId }); - let allChildIds: string[] = []; - for (const key of Object.keys(parentItem.fields)) { - if (props.nodeContentTypes.includes(key)) { - const childNodeRefs = parentItem.fields[key][stLocale] as Link | Link[]; - if (Array.isArray(childNodeRefs)) { - for (const childNodeRef of childNodeRefs) { - allChildIds.push(childNodeRef.sys.id); - } - } else { - allChildIds.push(childNodeRefs.sys.id); - } - } - } - const allItems: EntryProps[] = [] - let done = false; - let skip=0; - while (!done) { - const col = await props.cma.entry.getMany({ query:{ - 'sys.id[in]': allChildIds.join(','), - skip: skip - }}) - allItems.push(...col.items) - if (allItems.length < col.total) { - skip += 100 - } else { - done = true - } - } - const cfChildren: EntryProps[] = []; - const idPositionMap: {[index:string]: number} = allItems.reduce((acc: any, el, i) => { - acc[el.sys.id] = i; - return acc; - }, {}); - for (const childId of allChildIds) { - if (allItems[idPositionMap[childId]]) { - cfChildren.push(allItems[idPositionMap[childId]]); - } - } - return cfChildren - }; + const getContentfulChildEntries = async ( + parentId: string + ): Promise>> => { + const parentItem = await props.cma.entry.get({ entryId: parentId }); + const allChildIds: string[] = []; + for (const key of Object.keys(parentItem.fields)) { + if (props.nodeContentTypes.includes(key)) { + const childNodeRefs = parentItem.fields[key][stLocale] as + | Link + | Array>; + if (Array.isArray(childNodeRefs)) { + for (const childNodeRef of childNodeRefs) { + allChildIds.push(childNodeRef.sys.id); + } + } else { + allChildIds.push(childNodeRefs.sys.id); + } + } + } + const allItems: Array> = []; + let done = false; + let skip = 0; + while (!done) { + const col = await props.cma.entry.getMany({ + query: { + 'sys.id[in]': allChildIds.join(','), + skip, + }, + }); + allItems.push(...col.items); + if (allItems.length < col.total) { + skip += 100; + } else { + done = true; + } + } + const cfChildren: Array> = []; + const idPositionMap: { [index: string]: number } = allItems.reduce( + (acc: any, el, i) => { + acc[el.sys.id] = i; + return acc; + }, + {} + ); + for (const childId of allChildIds) { + if (allItems[idPositionMap[childId]]) { + cfChildren.push(allItems[idPositionMap[childId]]); + } + } + return cfChildren; + }; - const cfEntriesToNodes = (entries: EntryProps[], parentId?: string): ContentTreeNodeProps[] => { - if (entries.length === 0) { - return []; - } - const nodeArray: ContentTreeNodeProps[] = []; - entries.forEach((entry) => { - if (!entry) { - console.log('this entry is nil'); - return - } - let name = ''; - for (const titleField of props.titleFields) { - if (entry.fields[titleField] && entry.fields[titleField][stLocale]) { - name = entry.fields[titleField][stLocale]; - break; - } - } - if (name === '') { - name = entry.sys.id; - } - const node: ContentTreeNodeProps = { - id: entry.sys.id, - name: name, - contentType: entry.sys.contentType.sys.id, - icon: props.iconRegistry ? props.iconRegistry[entry.sys.contentType.sys.id]:'', - expand: !parentId, - parentId: parentId!, - hasChildNodes: cfEntryHasChildren(entry), - publishingStatus: cfEntryPublishingStatus(entry), - updatedAt:entry.sys.updatedAt, - publishedAt:entry.sys.publishedAt - }; - nodeArray.push(node); - }); - return nodeArray; - }; - - const cfEntryHasChildren = (entry: EntryProps): boolean => { - for (const nodeContentType of props.nodeContentTypes) { - for (const locale of props.locales) { - if (entry.fields[nodeContentType] && entry.fields[nodeContentType][locale]) { - return true - } - } - } - return false; - } + const cfEntriesToNodes = ( + entries: Array>, + parentId?: string + ): ContentTreeNodeProps[] => { + if (entries.length === 0) { + return []; + } + const nodeArray: ContentTreeNodeProps[] = []; + entries.forEach((entry) => { + if (!entry) { + console.log('this entry is nil'); + return; + } + let name = ''; + for (const titleField of props.titleFields) { + if (entry.fields[titleField]?.[stLocale]) { + name = entry.fields[titleField][stLocale]; + break; + } + } + if (name === '') { + name = entry.sys.id; + } + const node: ContentTreeNodeProps = { + id: entry.sys.id, + name, + contentType: entry.sys.contentType.sys.id, + icon: + props.iconRegistry != null + ? props.iconRegistry[entry.sys.contentType.sys.id] + : '', + expand: !!parentId, + parentId, + hasChildNodes: cfEntryHasChildren(entry), + publishingStatus: cfEntryPublishingStatus(entry), + updatedAt: entry.sys.updatedAt, + publishedAt: entry.sys.publishedAt, + }; + nodeArray.push(node); + }); + return nodeArray; + }; - const cfEntryPublishingStatus = (entry: EntryProps): string => { - if (!entry.sys.publishedVersion) { - return 'draft'; - } - if (entry.sys.version - entry.sys.publishedVersion == 1) { - return 'published'; - } - return 'changed'; - } - - const loadRootData = async () => { - const CfRootData = await props.cma.entry.getMany({ query: { content_type: props.rootType } }); - const rootNodes = cfEntriesToNodes(CfRootData.items); - for (const rootNode of rootNodes) { - const childEntries = await getContentfulChildEntries(rootNode.id) - const childNodes = cfEntriesToNodes(childEntries,rootNode.id) - const nodes = [rootNode,...childNodes] - if (nodes.length > 0) { - const newIdPositionMap = nodes.reduce((acc: any, el, i) => { - acc[el.id] = i; - return acc; - }, {}); - let tree: ContentTreeNodeProps = emptyNodeProps(); - nodes.forEach((node: ContentTreeNodeProps) => { - node.childNodes = [] - if (!node.parentId) { - tree = node; - return; - } - const parentEl = nodes[newIdPositionMap[node.parentId]]; - if (parentEl) { - parentEl.childNodes = [...(parentEl.childNodes || []), node]; - parentEl.expand = true - } - }); - console.log('🌴 tree',tree); - setStRoot(tree) - } - } - }; - - const removeChildNodes = (node: ContentTreeNodeProps) => { - setStRoot((draft) => { - recursiveProcessNodes(node.id, - (targetNode) => { - targetNode.childNodes = [] - targetNode.expand = false - },draft) - console.log('🎈draft',draft) - }) - } + const cfEntryHasChildren = (entry: EntryProps): boolean => { + for (const nodeContentType of props.nodeContentTypes) { + for (const locale of props.locales) { + if (entry.fields[nodeContentType]?.[locale]) { + return true; + } + } + } + return false; + }; - console.log('=============================== RENDER ====================================', stRoot); - // create ID mapping - return ( - <> - - - - Nodes - Content Type - Status - Last Modified - Last Published - - - - - - ); + const cfEntryPublishingStatus = (entry: EntryProps): string => { + if (!entry.sys.publishedVersion) { + return 'draft'; + } + if (entry.sys.version - entry.sys.publishedVersion === 1) { + return 'published'; + } + return 'changed'; + }; + + const loadRootData = async (): Promise => { + const CfRootData = await props.cma.entry.getMany({ + query: { content_type: props.rootType }, + }); + const rootNodes = cfEntriesToNodes(CfRootData.items); + for (const rootNode of rootNodes) { + const childEntries = await getContentfulChildEntries(rootNode.id); + const childNodes = cfEntriesToNodes(childEntries, rootNode.id); + const nodes = [rootNode, ...childNodes]; + if (nodes.length > 0) { + const newIdPositionMap = nodes.reduce((acc: any, el, i) => { + acc[el.id] = i; + return acc; + }, {}); + let tree: ContentTreeNodeProps = emptyNodeProps(); + nodes.forEach((node: ContentTreeNodeProps) => { + node.childNodes = []; + if (!node.parentId) { + tree = node; + return; + } + const parentEl = nodes[newIdPositionMap[node.parentId]]; + if (parentEl) { + parentEl.childNodes = [...(parentEl.childNodes ?? []), node]; + parentEl.expand = true; + } + }); + console.log('🌴 tree', tree); + setStRoot(tree); + } + } + }; + + const removeChildNodes = (node: ContentTreeNodeProps): void => { + setStRoot((draft) => { + recursiveProcessNodes( + node.id, + (targetNode) => { + targetNode.childNodes = []; + targetNode.expand = false; + }, + draft + ); + console.log('🎈draft', draft); + }); + }; + + console.log( + '=============================== RENDER ====================================', + stRoot + ); + // create ID mapping + return ( + <> + + + + Nodes + Content Type + Status + Last Modified + Last Published + + + + + + ); }; diff --git a/src/ContentTreeNode.tsx b/src/ContentTreeNode.tsx index cdc8904..492fa02 100644 --- a/src/ContentTreeNode.tsx +++ b/src/ContentTreeNode.tsx @@ -1,73 +1,105 @@ -import React, { useState } from 'react'; +import React, { ReactElement, useState } from 'react'; import { - StyledContentTreeNodeName, - StyledContentTreeNodePublishingStatus, - StyledContentTreeNodeWedge, - StyledContentTreeTableNodeCell, - StyledSpinner, + StyledContentTreeNodeName, + StyledContentTreeNodePublishingStatus, + StyledContentTreeNodeWedge, + StyledContentTreeTableNodeCell, + StyledSpinner, } from './ContentTree.styled'; import { Icon } from './Icons'; export interface ContentTreeNodeProps { - id: string; - name: string; - contentType: string; - icon: string; - expand: boolean; - parentId: string; - childNodes?: ContentTreeNodeProps[]; - hasChildNodes?: boolean; - publishingStatus: string; - updatedAt?: string; - publishedAt?: string; + id: string; + name: string; + contentType?: string; + icon?: string; + expand: boolean; + parentId?: string; + childNodes?: ContentTreeNodeProps[]; + hasChildNodes?: boolean; + publishingStatus?: string; + updatedAt?: string; + publishedAt?: string; } -const ContentTreeNode = (props: { - node: ContentTreeNodeProps; - depth?: number; - addChildNodes: (node: ContentTreeNodeProps) => void; - removeChildNodes: (node: ContentTreeNodeProps) => void; - editEntry: (nodeId:string) => void; - }) => { - - const [loading, setLoading] = useState(false); - const [node, setNode] = useState(props.node) +const ContentTreeNode = (props: { + node: ContentTreeNodeProps; + depth?: number; + addChildNodes: (node: ContentTreeNodeProps) => Promise; + removeChildNodes: (node: ContentTreeNodeProps) => void; + editEntry: (nodeId: string) => Promise; +}): ReactElement => { + const [loading, setLoading] = useState(false); + const [node] = useState(props.node); - // React.useEffect(()=>{setLoading(false)},[props.node.childNodes]) + // React.useEffect(()=>{setLoading(false)},[props.node.childNodes]) - const addChildren = async () => { - setLoading(true); - await props.addChildNodes(node) - setLoading(false); - } + const addChildren = async (): Promise => { + setLoading(true); + await props.addChildNodes(node); + setLoading(false); + }; - return ( - <> - - - - {loading? (-): props.node.hasChildNodes ? props.node.expand? ( - props.removeChildNodes(props.node)}>- - ) : ( - addChildren()}>+ - ): null} - - - - props.editEntry(props.node.id)} title={props.node.id}>{props.node.name} - - - {props.node.contentType} - {props.node.publishingStatus} - {props.node.updatedAt} - {props.node.publishedAt} - - {props.node.childNodes?.map((node, i) => { - return ; - })} - - ); + const handleEditEntry = (): void => { + props.editEntry(props.node.id).catch((err) => { + throw new Error('handleEditEntry', err); + }); + }; + + const handleAddChildren = (): void => { + addChildren().catch((err) => { + throw new Error('handleAddChildren', err); + }); + }; + + return ( + <> + + + + {loading ? ( + - + ) : props.node.hasChildNodes ? ( + props.node.expand ? ( + props.removeChildNodes(props.node)}>- + ) : ( + handleAddChildren()}>+ + ) + ) : null} + + + + handleEditEntry()} title={props.node.id}> + {props.node.name} + + + + {props.node.contentType} + + + {props.node.publishingStatus} + + + {props.node.updatedAt} + {props.node.publishedAt} + + {props.node.childNodes?.map((node, i) => { + return ( + + ); + })} + + ); }; export default ContentTreeNode; diff --git a/src/Icons.tsx b/src/Icons.tsx index 64d2e9b..cfe8196 100644 --- a/src/Icons.tsx +++ b/src/Icons.tsx @@ -1,37 +1,135 @@ -import React, { FC, MouseEvent, ReactElement, SVGProps } from 'react'; +import React, { FC, ReactElement, SVGProps } from 'react'; import styled from 'styled-components'; export type SVGIcon = FC>; export interface IconProps { - icon?: SVGIcon; -} -export const Icon = (props: {id?: string}) => { - switch (props.id) { - case 'WORLD': - return WORLD - case 'PAGE': - return Asset 47ldpi - case 'APP': - return 8-Book - case 'CART': - return - case 'FOLDER': - return - case 'LOVE': - return - case 'SHORTCUT': - return - } - return + icon?: SVGIcon; } +export const Icon = (props: { id?: string }): ReactElement => { + switch (props.id) { + case 'WORLD': + return ( + + + WORLD + + + + ); + case 'PAGE': + return ( + + + + Asset 47ldpi + + + + + + + + + + + + + + + + + + + + + ); + case 'APP': + return ( + + + 8-Book + + + + + + + + + + + ); + case 'CART': + return ( + + + + + + + + ); + case 'FOLDER': + return ( + + + + + + ); + case 'LOVE': + return ( + + + + + + + ); + case 'SHORTCUT': + return ( + + + + + + + + + + ); + } + return ( + + + + + + ); +}; export const StyledIcon = styled.span` - line-height: 1px; - position: relative; - display: inline-block; - vertical-align: top; - width: 16px; - height: 16px; - margin: 2px 4px; + line-height: 1px; + position: relative; + display: inline-block; + vertical-align: top; + width: 16px; + height: 16px; + margin: 2px 4px; `; diff --git a/src/index.ts b/src/index.ts index 675a7ea..cd4db23 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,3 @@ -export * from "./ContentTree"; -export * from "./ContentTree.styled"; -export * from "./ContentTreeNode"; +export * from './ContentTree'; +export * from './ContentTree.styled'; +export * from './ContentTreeNode'; diff --git a/yarn.lock b/yarn.lock index 85fe9f4..1b1299b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -148,7 +148,7 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@humanwhocodes/config-array@^0.10.4": +"@humanwhocodes/config-array@^0.10.5": version "0.10.5" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.5.tgz#bb679745224745fff1e9a41961c1d45a49f81c04" integrity sha512-XVVDtp+dVvRxMoxSiSfasYaG02VEe1qH5cKgMQJWhol6HwzbcqoCMJi8dAGoYAO57jhUyhI6cWuRiTcRaDaYug== @@ -238,6 +238,16 @@ resolved "https://registry.yarnpkg.com/@types/json-patch/-/json-patch-0.0.30.tgz#7c562173216c50529e70126ceb8e7a533f865e9b" integrity sha512-MhCUjojzDhVLnZnxwPwa+rETFRDQ0ffjxYdrqOP6TBO2O0/Z64PV5tNeYApo4bc4y4frbWOrRwv/eEkXlI13Rw== +"@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + "@types/prop-types@*": version "15.7.5" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" @@ -275,6 +285,86 @@ "@types/react" "*" csstype "^3.0.2" +"@typescript-eslint/eslint-plugin@^5.0.0": + version "5.38.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.0.tgz#ac919a199548861012e8c1fb2ec4899ac2bc22ae" + integrity sha512-GgHi/GNuUbTOeoJiEANi0oI6fF3gBQc3bGFYj40nnAPCbhrtEDf2rjBmefFadweBmO1Du1YovHeDP2h5JLhtTQ== + dependencies: + "@typescript-eslint/scope-manager" "5.38.0" + "@typescript-eslint/type-utils" "5.38.0" + "@typescript-eslint/utils" "5.38.0" + debug "^4.3.4" + ignore "^5.2.0" + regexpp "^3.2.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.38.0": + version "5.38.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.38.0.tgz#5a59a1ff41a7b43aacd1bb2db54f6bf1c02b2ff8" + integrity sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA== + dependencies: + "@typescript-eslint/scope-manager" "5.38.0" + "@typescript-eslint/types" "5.38.0" + "@typescript-eslint/typescript-estree" "5.38.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.38.0": + version "5.38.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.38.0.tgz#8f0927024b6b24e28671352c93b393a810ab4553" + integrity sha512-ByhHIuNyKD9giwkkLqzezZ9y5bALW8VNY6xXcP+VxoH4JBDKjU5WNnsiD4HJdglHECdV+lyaxhvQjTUbRboiTA== + dependencies: + "@typescript-eslint/types" "5.38.0" + "@typescript-eslint/visitor-keys" "5.38.0" + +"@typescript-eslint/type-utils@5.38.0": + version "5.38.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.38.0.tgz#c8b7f681da825fcfc66ff2b63d70693880496876" + integrity sha512-iZq5USgybUcj/lfnbuelJ0j3K9dbs1I3RICAJY9NZZpDgBYXmuUlYQGzftpQA9wC8cKgtS6DASTvF3HrXwwozA== + dependencies: + "@typescript-eslint/typescript-estree" "5.38.0" + "@typescript-eslint/utils" "5.38.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.38.0": + version "5.38.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.38.0.tgz#8cd15825e4874354e31800dcac321d07548b8a5f" + integrity sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA== + +"@typescript-eslint/typescript-estree@5.38.0": + version "5.38.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.0.tgz#89f86b2279815c6fb7f57d68cf9b813f0dc25d98" + integrity sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg== + dependencies: + "@typescript-eslint/types" "5.38.0" + "@typescript-eslint/visitor-keys" "5.38.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.38.0": + version "5.38.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.38.0.tgz#5b31f4896471818153790700eb02ac869a1543f4" + integrity sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.38.0" + "@typescript-eslint/types" "5.38.0" + "@typescript-eslint/typescript-estree" "5.38.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/visitor-keys@5.38.0": + version "5.38.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.0.tgz#60591ca3bf78aa12b25002c0993d067c00887e34" + integrity sha512-MxnrdIyArnTi+XyFLR+kt/uNAcdOnmT+879os7qDRI+EYySR4crXJq9BXPfRzzLGq0wgxkwidrCJ9WCAoacm1w== + dependencies: + "@typescript-eslint/types" "5.38.0" + eslint-visitor-keys "^3.3.0" + acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -319,11 +409,42 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +array-includes@^3.1.4, array-includes@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" + integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + get-intrinsic "^1.1.1" + is-string "^1.0.7" + array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +array.prototype.flat@^1.2.5: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" + integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" + integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -373,7 +494,14 @@ braces@^3.0.2: dependencies: fill-range "^7.0.1" -call-bind@^1.0.0: +builtins@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" + integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== + dependencies: + semver "^7.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== @@ -499,7 +627,21 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.0.tgz#4ddcac3718d787cf9df0d1b7d15033925c8f29f2" integrity sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA== -debug@^4.1.0, debug@^4.1.1, debug@^4.3.2: +debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -511,6 +653,14 @@ deep-is@^0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -523,6 +673,13 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -530,6 +687,52 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: + version "1.20.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.3.tgz#90b143ff7aedc8b3d189bcfac7f1e3e3f81e9da1" + integrity sha512-AyrnaKVpMzljIdwjzrj+LxGmj8ik2LckwXacHqrJJ/jxz6dDDBcZ7I7nlHM0FvEW8MfbWJwOd+yT2XzYW49Frw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.3" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + is-callable "^1.2.6" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-weakref "^1.0.2" + object-inspect "^1.12.2" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trimend "^1.0.5" + string.prototype.trimstart "^1.0.5" + unbox-primitive "^1.0.2" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -540,6 +743,128 @@ 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-prettier@^8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" + integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== + +eslint-config-standard-with-typescript@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-23.0.0.tgz#aa4b656740bbb2592d4cadec735d41e36245a44b" + integrity sha512-iaaWifImn37Z1OXbNW1es7KI+S7D408F9ys0bpaQf2temeBWlvb0Nc5qHkOgYaRb5QxTZT32GGeN1gtswASOXA== + dependencies: + "@typescript-eslint/parser" "^5.0.0" + eslint-config-standard "17.0.0" + +eslint-config-standard@17.0.0: + version "17.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz#fd5b6cf1dcf6ba8d29f200c461de2e19069888cf" + integrity sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg== + +eslint-import-resolver-node@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" + integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== + dependencies: + debug "^3.2.7" + resolve "^1.20.0" + +eslint-module-utils@^2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" + integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== + 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== + dependencies: + eslint-utils "^2.0.0" + regexpp "^3.0.0" + +eslint-plugin-import@^2.25.2: + version "2.26.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" + integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== + dependencies: + array-includes "^3.1.4" + array.prototype.flat "^1.2.5" + debug "^2.6.9" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.6" + eslint-module-utils "^2.7.3" + has "^1.0.3" + is-core-module "^2.8.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.values "^1.1.5" + resolve "^1.22.0" + tsconfig-paths "^3.14.1" + +eslint-plugin-json@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-json/-/eslint-plugin-json-3.1.0.tgz#251108ba1681c332e0a442ef9513bd293619de67" + integrity sha512-MrlG2ynFEHe7wDGwbUuFPsaT2b1uhuEFhJ+W1f1u+1C2EkXmTYJp4B1aAdQQ8M+CC3t//N/oRKiIVw14L2HR1g== + dependencies: + lodash "^4.17.21" + vscode-json-languageservice "^4.1.6" + +eslint-plugin-n@^15.0.0: + version "15.3.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-15.3.0.tgz#3e1ad236a17dce7ecc0760621c46cc251ef99560" + integrity sha512-IyzPnEWHypCWasDpxeJnim60jhlumbmq0pubL6IOcnk8u2y53s5QfT8JnXy7skjHJ44yWHRb11PLtDHuu1kg/Q== + dependencies: + builtins "^5.0.1" + eslint-plugin-es "^4.1.0" + eslint-utils "^3.0.0" + ignore "^5.1.1" + is-core-module "^2.10.0" + minimatch "^3.1.2" + resolve "^1.22.1" + semver "^7.3.7" + +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== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-promise@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.1.tgz#a8cddf96a67c4059bdabf4d724a29572188ae423" + integrity sha512-uM4Tgo5u3UWQiroOyDEsYcVMOo7re3zmno0IZmB5auxoaQNIceAbXEkSt8RNrKtaYehARHG06pYK6K1JhtP0Zw== + +eslint-plugin-react@^7.31.8: + version "7.31.8" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.8.tgz#3a4f80c10be1bcbc8197be9e8b641b2a3ef219bf" + integrity sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw== + dependencies: + array-includes "^3.1.5" + array.prototype.flatmap "^1.3.0" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.5" + object.fromentries "^2.0.5" + object.hasown "^1.1.1" + object.values "^1.1.5" + prop-types "^15.8.1" + resolve "^2.0.0-next.3" + semver "^6.3.0" + string.prototype.matchall "^4.0.7" + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + eslint-scope@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" @@ -548,6 +873,13 @@ eslint-scope@^7.1.1: 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" @@ -555,6 +887,11 @@ eslint-utils@^3.0.0: 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" @@ -565,13 +902,13 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@^8.23.1: - version "8.23.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.23.1.tgz#cfd7b3f7fdd07db8d16b4ac0516a29c8d8dca5dc" - integrity sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg== +eslint@^8.0.1: + version "8.24.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.24.0.tgz#489516c927a5da11b3979dbfb2679394523383c8" + integrity sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ== dependencies: "@eslint/eslintrc" "^1.3.2" - "@humanwhocodes/config-array" "^0.10.4" + "@humanwhocodes/config-array" "^0.10.5" "@humanwhocodes/gitignore-to-minimatch" "^1.0.2" "@humanwhocodes/module-importer" "^1.0.1" ajv "^6.10.0" @@ -633,7 +970,12 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^5.1.0, estraverse@^5.2.0: +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== @@ -660,6 +1002,11 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + fast-glob@^3.2.9: version "3.2.12" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" @@ -752,6 +1099,21 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + get-intrinsic@^1.0.2: version "1.1.2" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598" @@ -761,6 +1123,23 @@ get-intrinsic@^1.0.2: has "^1.0.3" has-symbols "^1.0.3" +get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" + integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -816,6 +1195,11 @@ grapheme-splitter@^1.0.4: resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -826,11 +1210,25 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.3: +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -845,7 +1243,7 @@ hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.3.0: dependencies: react-is "^16.7.0" -ignore@^5.2.0: +ignore@^5.1.1, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== @@ -888,6 +1286,49 @@ install-peers@^1.0.4: dependencies: executioner "^2.0.1" +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.4, is-callable@^1.2.6: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.10.0, is-core-module@^2.8.1, 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" + integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -900,11 +1341,59 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: dependencies: is-extglob "^2.1.1" +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -942,6 +1431,26 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +jsonc-parser@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== + +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.3.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" + integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== + dependencies: + array-includes "^3.1.5" + object.assign "^4.1.3" + levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -972,18 +1481,25 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@^4.17.11: +lodash@^4.17.11, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -loose-envify@^1.1.0: +loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" @@ -1016,6 +1532,11 @@ minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + mixly@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/mixly/-/mixly-1.0.0.tgz#9b5a2e1f63e6dfba0d30e6797ffae62ab1dc24ef" @@ -1023,21 +1544,86 @@ mixly@^1.0.0: dependencies: fulcon "^1.0.1" +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -object-inspect@^1.9.0: +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.12.2, object-inspect@^1.9.0: version "1.12.2" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.3, object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.entries@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" + integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.fromentries@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" + integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.hasown@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" + integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== + dependencies: + define-properties "^1.1.4" + es-abstract "^1.19.5" + +object.values@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" + integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -1098,6 +1684,11 @@ path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -1118,6 +1709,27 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== + +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -1135,7 +1747,7 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -react-is@^16.7.0: +react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -1147,7 +1759,16 @@ react@^18.2.0: dependencies: loose-envify "^1.1.0" -regexpp@^3.2.0: +regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" + +regexpp@^3.0.0, regexpp@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== @@ -1157,6 +1778,24 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.3: + version "2.0.0-next.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -1176,6 +1815,27 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + +semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.0.0, semver@^7.3.7: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + shallowequal@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" @@ -1207,6 +1867,38 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +string.prototype.matchall@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" + integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.4.1" + side-channel "^1.0.4" + +string.prototype.trimend@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" + integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string.prototype.trimstart@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" + integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -1214,6 +1906,11 @@ strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +strip-bom@^3.0.0: + version "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: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" @@ -1249,6 +1946,11 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-preserve-symlinks-flag@^1.0.0: + version "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== + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -1266,6 +1968,28 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +tsconfig-paths@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" + integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.6" + strip-bom "^3.0.0" + +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== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -1278,11 +2002,21 @@ type-fest@^0.20.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -typescript@^4.8.3: +typescript@*: version "4.8.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.3.tgz#d59344522c4bc464a65a730ac695007fdb66dd88" integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig== +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -1295,6 +2029,48 @@ use-immer@^0.7.0: resolved "https://registry.yarnpkg.com/use-immer/-/use-immer-0.7.0.tgz#e3bfbb806b5e3ff6e37441be74c306d91c1e0962" integrity sha512-Re4hjrP3a/2ABZjAc0b7AK9s626bnO+H33RO2VUhiDZ2StBz5B663K6WNNlr4QtHWaGUmvLpwt3whFvvWuolQw== +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" + integrity sha512-xGmv9QIWs2H8obGbWg+sIPI/3/pFgj/5OWBhNzs00BkYQ9UaB2F6JJaGB/2/YOZJ3BvLXQTC4Q7muqU25QgAhA== + dependencies: + jsonc-parser "^3.0.0" + vscode-languageserver-textdocument "^1.0.3" + vscode-languageserver-types "^3.16.0" + vscode-nls "^5.0.0" + vscode-uri "^3.0.3" + +vscode-languageserver-textdocument@^1.0.3: + version "1.0.7" + resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.7.tgz#16df468d5c2606103c90554ae05f9f3d335b771b" + integrity sha512-bFJH7UQxlXT8kKeyiyu41r22jCZXG8kuuVVA33OEJn1diWOZK5n8zBSPZFHVBOu8kXZ6h0LIRhf5UnCo61J4Hg== + +vscode-languageserver-types@^3.16.0: + version "3.17.2" + resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2.tgz#b2c2e7de405ad3d73a883e91989b850170ffc4f2" + integrity sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA== + +vscode-nls@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-5.2.0.tgz#3cb6893dd9bd695244d8a024bdf746eea665cc3f" + integrity sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng== + +vscode-uri@^3.0.3: + version "3.0.6" + resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.6.tgz#5e6e2e1a4170543af30151b561a41f71db1d6f91" + integrity sha512-fmL7V1eiDBFRRnu+gfRWTzyPpNIHJTc4mWnFkwBUmO9U3KPgJAmTx7oxi2bl/Rh6HLdU7+4C9wlj0k2E4AdKFQ== + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -1312,6 +2088,11 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"