From 8d562ca7387b90337b52c500d4a06df9c3a60b00 Mon Sep 17 00:00:00 2001 From: sriram veeraghanta Date: Thu, 5 Dec 2024 19:38:57 +0530 Subject: [PATCH 1/2] fix: lint related changes and packaging fixes --- admin/core/components/admin-sidebar/root.tsx | 2 +- admin/package.json | 5 +- packages/editor/package.json | 3 +- .../core/extensions/callout/logo-selector.tsx | 2 +- .../src/core/extensions/callout/utils.ts | 2 +- packages/eslint-config/package.json | 2 +- packages/helpers/helpers/emoji.helper.ts | 22 - packages/helpers/helpers/index.ts | 2 - packages/helpers/index.ts | 2 - packages/hooks/.eslintignore | 3 + packages/hooks/.eslintrc.js | 9 + packages/hooks/.prettierignore | 4 + packages/hooks/.prettierrc | 5 + packages/hooks/package.json | 27 + .../{helpers/hooks => hooks/src}/index.ts | 0 .../hooks => hooks/src}/use-local-storage.tsx | 0 .../src}/use-outside-click-detector.tsx | 0 packages/{helpers => hooks}/tsconfig.json | 2 +- packages/ui/package.json | 6 +- packages/ui/src/dropdown/multi-select.tsx | 2 +- packages/ui/src/dropdown/single-select.tsx | 2 +- .../ui/src/dropdowns/context-menu/root.tsx | 2 +- packages/ui/src/dropdowns/custom-menu.tsx | 2 +- .../ui/src/dropdowns/custom-search-select.tsx | 27 +- packages/ui/src/dropdowns/custom-select.tsx | 2 +- .../ui/src/emoji/emoji-icon-picker-new.tsx | 2 +- packages/ui/src/emoji/emoji-icon-picker.tsx | 2 +- packages/ui/src/tabs/tabs.tsx | 2 +- packages/utils/.eslintignore | 3 + packages/utils/.eslintrc.js | 9 + packages/utils/.prettierrc | 5 + packages/{helpers => utils}/package.json | 17 +- packages/utils/src/color.ts | 47 + packages/utils/src/emoji.ts | 40 + packages/utils/src/index.ts | 3 + .../string.helper.ts => utils/src/string.ts} | 2 +- packages/utils/tsconfig.json | 9 + space/package.json | 2 +- web/.prettierignore | 5 +- .../[workspaceSlug]/(projects)/sidebar.tsx | 2 +- web/app/profile/sidebar.tsx | 2 +- web/ce/components/issues/quick-add/root.tsx | 2 +- web/core/components/common/logo.tsx | 3 + .../components/core/image-picker-popover.tsx | 2 +- .../cycles/archived-cycles/header.tsx | 2 +- .../components/cycles/cycles-view-header.tsx | 2 +- .../gantt-chart/sidebar/gantt-dnd-HOC.tsx | 2 +- .../calendar/issue-block-root.tsx | 2 +- .../issue-layouts/calendar/issue-block.tsx | 2 +- .../issues/issue-layouts/kanban/block.tsx | 2 +- .../issues/issue-layouts/list/block-root.tsx | 2 +- .../issue-layouts/properties/labels.tsx | 2 +- .../issue-layouts/spreadsheet/issue-row.tsx | 2 +- web/core/components/issues/select/label.tsx | 2 +- .../labels/label-block/label-item-block.tsx | 2 +- .../modules/archived-modules/header.tsx | 2 +- .../components/modules/module-view-header.tsx | 2 +- .../components/pages/list/search-input.tsx | 2 +- web/core/components/profile/sidebar.tsx | 2 +- web/core/components/project/header.tsx | 2 +- .../components/views/view-list-header.tsx | 2 +- .../sidebar/favorites/favorite-folder.tsx | 50 +- .../sidebar/favorites/favorite-items/root.tsx | 48 +- .../sidebar/favorites/new-fav-folder.tsx | 2 +- .../workspace/sidebar/projects-list-item.tsx | 4 +- .../workspace/sidebar/workspace-menu.tsx | 2 +- web/core/hooks/use-dropdown.ts | 2 +- web/core/hooks/use-dynamic-dropdown.tsx | 2 +- web/core/store/workspace/index.ts | 2 - web/package.json | 5 +- yarn.lock | 1535 ++++++++--------- 71 files changed, 1048 insertions(+), 932 deletions(-) delete mode 100644 packages/helpers/helpers/emoji.helper.ts delete mode 100644 packages/helpers/helpers/index.ts delete mode 100644 packages/helpers/index.ts create mode 100644 packages/hooks/.eslintignore create mode 100644 packages/hooks/.eslintrc.js create mode 100644 packages/hooks/.prettierignore create mode 100644 packages/hooks/.prettierrc create mode 100644 packages/hooks/package.json rename packages/{helpers/hooks => hooks/src}/index.ts (100%) rename packages/{helpers/hooks => hooks/src}/use-local-storage.tsx (100%) rename packages/{helpers/hooks => hooks/src}/use-outside-click-detector.tsx (100%) rename packages/{helpers => hooks}/tsconfig.json (88%) create mode 100644 packages/utils/.eslintignore create mode 100644 packages/utils/.eslintrc.js create mode 100644 packages/utils/.prettierrc rename packages/{helpers => utils}/package.json (63%) create mode 100644 packages/utils/src/color.ts create mode 100644 packages/utils/src/emoji.ts create mode 100644 packages/utils/src/index.ts rename packages/{helpers/helpers/string.helper.ts => utils/src/string.ts} (99%) create mode 100644 packages/utils/tsconfig.json diff --git a/admin/core/components/admin-sidebar/root.tsx b/admin/core/components/admin-sidebar/root.tsx index 9ef6b92bd0f..05dde0d8ab1 100644 --- a/admin/core/components/admin-sidebar/root.tsx +++ b/admin/core/components/admin-sidebar/root.tsx @@ -3,7 +3,7 @@ import { FC, useEffect, useRef } from "react"; import { observer } from "mobx-react"; // plane helpers -import { useOutsideClickDetector } from "@plane/helpers"; +import { useOutsideClickDetector } from "@plane/hooks"; // components import { HelpSection, SidebarMenu, SidebarDropdown } from "@/components/admin-sidebar"; // hooks diff --git a/admin/package.json b/admin/package.json index e4026da02e5..ff9bf6a67dd 100644 --- a/admin/package.json +++ b/admin/package.json @@ -14,9 +14,10 @@ "dependencies": { "@headlessui/react": "^1.7.19", "@plane/constants": "*", - "@plane/helpers": "*", + "@plane/hooks": "*", "@plane/types": "*", "@plane/ui": "*", + "@plane/utils": "*", "@sentry/nextjs": "^8.32.0", "@tailwindcss/typography": "^0.5.9", "@types/lodash": "^4.17.0", @@ -26,7 +27,7 @@ "lucide-react": "^0.356.0", "mobx": "^6.12.0", "mobx-react": "^9.1.1", - "next": "^14.2.12", + "next": "^14.2.20", "next-themes": "^0.2.1", "postcss": "^8.4.38", "react": "^18.3.1", diff --git a/packages/editor/package.json b/packages/editor/package.json index 8471513c97e..19c361629b9 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -27,6 +27,7 @@ "dev": "tsup --watch", "check-types": "tsc --noEmit", "lint": "eslint src --ext .ts,.tsx", + "lint:errors": "eslint src --ext .ts,.tsx --quiet", "format": "prettier --write \"**/*.{ts,tsx,md}\"" }, "peerDependencies": { @@ -36,8 +37,8 @@ "dependencies": { "@floating-ui/react": "^0.26.4", "@hocuspocus/provider": "^2.13.5", - "@plane/helpers": "*", "@plane/ui": "*", + "@plane/utils": "*", "@tiptap/core": "^2.1.13", "@tiptap/extension-blockquote": "^2.1.13", "@tiptap/extension-character-count": "^2.6.5", diff --git a/packages/editor/src/core/extensions/callout/logo-selector.tsx b/packages/editor/src/core/extensions/callout/logo-selector.tsx index 4e9f966aff8..4c78a2c0470 100644 --- a/packages/editor/src/core/extensions/callout/logo-selector.tsx +++ b/packages/editor/src/core/extensions/callout/logo-selector.tsx @@ -1,5 +1,5 @@ // plane helpers -import { convertHexEmojiToDecimal } from "@plane/helpers"; +import { convertHexEmojiToDecimal } from "@plane/utils"; // plane ui import { EmojiIconPicker, EmojiIconPickerTypes, Logo, TEmojiLogoProps } from "@plane/ui"; // helpers diff --git a/packages/editor/src/core/extensions/callout/utils.ts b/packages/editor/src/core/extensions/callout/utils.ts index c450cbdd2d7..6568a40e3ea 100644 --- a/packages/editor/src/core/extensions/callout/utils.ts +++ b/packages/editor/src/core/extensions/callout/utils.ts @@ -1,5 +1,5 @@ // plane helpers -import { sanitizeHTML } from "@plane/helpers"; +import { sanitizeHTML } from "@plane/utils"; // plane ui import { TEmojiLogoProps } from "@plane/ui"; // types diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index e8de3524ce4..8487dbb47db 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -10,7 +10,7 @@ "devDependencies": { "@typescript-eslint/eslint-plugin": "^8.6.0", "@typescript-eslint/parser": "^8.6.0", - "eslint": "8", + "eslint": "8.57.1", "eslint-config-next": "^14.1.0", "eslint-config-prettier": "^9.1.0", "eslint-config-turbo": "^1.12.4", diff --git a/packages/helpers/helpers/emoji.helper.ts b/packages/helpers/helpers/emoji.helper.ts deleted file mode 100644 index e0d5a1969c6..00000000000 --- a/packages/helpers/helpers/emoji.helper.ts +++ /dev/null @@ -1,22 +0,0 @@ -export const convertHexEmojiToDecimal = (emojiUnified: string): string => { - if (!emojiUnified) return ""; - - return emojiUnified - .toString() - .split("-") - .map((e) => parseInt(e, 16)) - .join("-"); -}; - -export const emojiCodeToUnicode = (emoji: string) => { - if (!emoji) return ""; - - // convert emoji code to unicode - const uniCodeEmoji = emoji - .toString() - .split("-") - .map((emoji) => parseInt(emoji, 10).toString(16)) - .join("-"); - - return uniCodeEmoji; -}; diff --git a/packages/helpers/helpers/index.ts b/packages/helpers/helpers/index.ts deleted file mode 100644 index e800e98fdcb..00000000000 --- a/packages/helpers/helpers/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./emoji.helper" -export * from "./string.helper" \ No newline at end of file diff --git a/packages/helpers/index.ts b/packages/helpers/index.ts deleted file mode 100644 index f1216272dde..00000000000 --- a/packages/helpers/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./helpers"; -export * from "./hooks"; diff --git a/packages/hooks/.eslintignore b/packages/hooks/.eslintignore new file mode 100644 index 00000000000..6019047c3e5 --- /dev/null +++ b/packages/hooks/.eslintignore @@ -0,0 +1,3 @@ +build/* +dist/* +out/* \ No newline at end of file diff --git a/packages/hooks/.eslintrc.js b/packages/hooks/.eslintrc.js new file mode 100644 index 00000000000..558b8f76ed4 --- /dev/null +++ b/packages/hooks/.eslintrc.js @@ -0,0 +1,9 @@ +/** @type {import("eslint").Linter.Config} */ +module.exports = { + root: true, + extends: ["@plane/eslint-config/library.js"], + parser: "@typescript-eslint/parser", + parserOptions: { + project: true, + }, +}; diff --git a/packages/hooks/.prettierignore b/packages/hooks/.prettierignore new file mode 100644 index 00000000000..d5be669c5e0 --- /dev/null +++ b/packages/hooks/.prettierignore @@ -0,0 +1,4 @@ +.turbo +out/ +dist/ +build/ \ No newline at end of file diff --git a/packages/hooks/.prettierrc b/packages/hooks/.prettierrc new file mode 100644 index 00000000000..87d988f1b26 --- /dev/null +++ b/packages/hooks/.prettierrc @@ -0,0 +1,5 @@ +{ + "printWidth": 120, + "tabWidth": 2, + "trailingComma": "es5" +} diff --git a/packages/hooks/package.json b/packages/hooks/package.json new file mode 100644 index 00000000000..4473a41321d --- /dev/null +++ b/packages/hooks/package.json @@ -0,0 +1,27 @@ +{ + "name": "@plane/hooks", + "version": "0.24.0", + "description": "React hooks that are shared across multiple apps internally", + "private": true, + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "files": [ + "dist/**" + ], + "scripts": { + "build": "tsup ./src/index.ts --format esm,cjs --dts --external react --minify", + "lint": "eslint . --ext .ts,.tsx", + "lint:errors": "eslint . --ext .ts,.tsx --quiet" + }, + "dependencies": { + "react": "^18.3.1" + }, + "devDependencies": { + "@plane/eslint-config": "*", + "@types/node": "^22.5.4", + "@types/react": "^18.3.11", + "tsup": "^7.2.0", + "typescript": "^5.3.3" + } +} diff --git a/packages/helpers/hooks/index.ts b/packages/hooks/src/index.ts similarity index 100% rename from packages/helpers/hooks/index.ts rename to packages/hooks/src/index.ts diff --git a/packages/helpers/hooks/use-local-storage.tsx b/packages/hooks/src/use-local-storage.tsx similarity index 100% rename from packages/helpers/hooks/use-local-storage.tsx rename to packages/hooks/src/use-local-storage.tsx diff --git a/packages/helpers/hooks/use-outside-click-detector.tsx b/packages/hooks/src/use-outside-click-detector.tsx similarity index 100% rename from packages/helpers/hooks/use-outside-click-detector.tsx rename to packages/hooks/src/use-outside-click-detector.tsx diff --git a/packages/helpers/tsconfig.json b/packages/hooks/tsconfig.json similarity index 88% rename from packages/helpers/tsconfig.json rename to packages/hooks/tsconfig.json index f9715d3d8b1..e8af9092ad7 100644 --- a/packages/helpers/tsconfig.json +++ b/packages/hooks/tsconfig.json @@ -4,6 +4,6 @@ "jsx": "react", "lib": ["esnext", "dom"] }, - "include": ["."], + "include": ["./src"], "exclude": ["dist", "build", "node_modules"] } diff --git a/packages/ui/package.json b/packages/ui/package.json index 27189f606d8..e4ebc0fe405 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -18,7 +18,8 @@ "storybook": "storybook dev -p 6006", "build-storybook": "storybook build", "postcss": "postcss styles/globals.css -o styles/output.css --watch", - "lint": "eslint src --ext .ts,.tsx" + "lint": "eslint src --ext .ts,.tsx", + "lint:errors": "eslint src --ext .ts,.tsx --quiet" }, "peerDependencies": { "react": "^18.3.1", @@ -31,7 +32,8 @@ "@blueprintjs/popover2": "^1.13.3", "@headlessui/react": "^1.7.3", "@popperjs/core": "^2.11.8", - "@plane/helpers": "*", + "@plane/hooks": "*", + "@plane/utils": "*", "clsx": "^2.0.0", "emoji-picker-react": "^4.5.16", "lodash": "^4.17.21", diff --git a/packages/ui/src/dropdown/multi-select.tsx b/packages/ui/src/dropdown/multi-select.tsx index 6b50183702c..25f22c6be4a 100644 --- a/packages/ui/src/dropdown/multi-select.tsx +++ b/packages/ui/src/dropdown/multi-select.tsx @@ -5,7 +5,7 @@ import { Combobox } from "@headlessui/react"; // popper-js import { usePopper } from "react-popper"; // plane helpers -import { useOutsideClickDetector } from "@plane/helpers"; +import { useOutsideClickDetector } from "@plane/hooks"; // components import { DropdownButton } from "./common"; import { DropdownOptions } from "./common/options"; diff --git a/packages/ui/src/dropdown/single-select.tsx b/packages/ui/src/dropdown/single-select.tsx index 1c3b05f5b6a..123c9e6982c 100644 --- a/packages/ui/src/dropdown/single-select.tsx +++ b/packages/ui/src/dropdown/single-select.tsx @@ -5,7 +5,7 @@ import { Combobox } from "@headlessui/react"; // popper-js import { usePopper } from "react-popper"; // plane helpers -import { useOutsideClickDetector } from "@plane/helpers"; +import { useOutsideClickDetector } from "@plane/hooks"; // components import { DropdownButton } from "./common"; import { DropdownOptions } from "./common/options"; diff --git a/packages/ui/src/dropdowns/context-menu/root.tsx b/packages/ui/src/dropdowns/context-menu/root.tsx index 03fe0cf7bc5..f251696d212 100644 --- a/packages/ui/src/dropdowns/context-menu/root.tsx +++ b/packages/ui/src/dropdowns/context-menu/root.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useRef, useState } from "react"; import ReactDOM from "react-dom"; // plane helpers -import { useOutsideClickDetector } from "@plane/helpers"; +import { useOutsideClickDetector } from "@plane/hooks"; // components import { ContextMenuItem } from "./item"; // helpers diff --git a/packages/ui/src/dropdowns/custom-menu.tsx b/packages/ui/src/dropdowns/custom-menu.tsx index e74fa594904..39f01d1ed27 100644 --- a/packages/ui/src/dropdowns/custom-menu.tsx +++ b/packages/ui/src/dropdowns/custom-menu.tsx @@ -4,7 +4,7 @@ import { Menu } from "@headlessui/react"; import { usePopper } from "react-popper"; import { ChevronDown, MoreHorizontal } from "lucide-react"; // plane helpers -import { useOutsideClickDetector } from "@plane/helpers"; +import { useOutsideClickDetector } from "@plane/hooks"; // hooks import { useDropdownKeyDown } from "../hooks/use-dropdown-key-down"; // helpers diff --git a/packages/ui/src/dropdowns/custom-search-select.tsx b/packages/ui/src/dropdowns/custom-search-select.tsx index 7842f1531de..4302c12fdc7 100644 --- a/packages/ui/src/dropdowns/custom-search-select.tsx +++ b/packages/ui/src/dropdowns/custom-search-select.tsx @@ -4,7 +4,7 @@ import { Combobox } from "@headlessui/react"; import { Check, ChevronDown, Info, Search } from "lucide-react"; import { createPortal } from "react-dom"; // plane helpers -import { useOutsideClickDetector } from "@plane/helpers"; +import { useOutsideClickDetector } from "@plane/hooks"; // hooks import { useDropdownKeyDown } from "../hooks/use-dropdown-key-down"; // helpers @@ -97,10 +97,11 @@ export const CustomSearchSelect = (props: ICustomSearchSelectProps) => {