diff --git a/.github/workflows/lint-test-build.yml b/.github/workflows/lint-test-build.yml index b6c1178..3a08205 100644 --- a/.github/workflows/lint-test-build.yml +++ b/.github/workflows/lint-test-build.yml @@ -35,6 +35,7 @@ jobs: run: npm ci - run: npm run tsc - run: npm run lint + - run: npm run prettier unit-tests: runs-on: ubuntu-latest diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..23a76b9 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,7 @@ +# Add files here to ignore them from prettier formatting + +/coverage +/mkdocs + +.next +node_modules diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..6c5a5cc --- /dev/null +++ b/.prettierrc @@ -0,0 +1,17 @@ +{ + "singleQuote": true, + "trailingComma": "all", + "bracketSpacing": true, + "importOrder": [ + "^react", + "^react-native", + "^[a-zA-Z]", + "^@?\\w", + "^@/?\\w", + "^[./]" + ], + "importOrderSeparation": true, + "importOrderSortSpecifiers": true, + "plugins": ["@trivago/prettier-plugin-sort-imports"], + "tabWidth": 4 +} diff --git a/package.json b/package.json index ecd62dc..3608b7d 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,8 @@ "build": "next build", "start": "next start", "lint": "next lint", + "prettier": "prettier -c \"{**/*,*}.{ts,tsx,json,js,md}\"", + "prettier-fix": "prettier --write \"{**/*,*}.{ts,tsx,json,js,md}\"", "prepare": "husky" }, "dependencies": { diff --git a/pages/_app.tsx b/pages/_app.tsx index 4213815..3b6d561 100644 --- a/pages/_app.tsx +++ b/pages/_app.tsx @@ -1,20 +1,19 @@ -import React, { useEffect, useState } from "react"; -import NoSSR from "react-no-ssr"; -import { QueryClient, QueryClientProvider } from "react-query"; -import { ReactQueryDevtools } from "react-query/devtools"; -import { QueryClientConfig } from "react-query/types/core/types"; - -import { SessionProvider } from "next-auth/react"; -import { NextAdapter } from "next-query-params"; -import App, { AppContext, AppInitialProps, AppProps } from "next/app"; -import Head from "next/head"; -import { useRouter } from "next/router"; -import { QueryParamProvider } from "use-query-params"; - -import type { EuiSideNavItemType } from "@elastic/eui"; -import { EuiProvider, EuiThemeColorMode } from "@elastic/eui"; -import "@elastic/eui/dist/eui_theme_light.min.css"; - +import React, { useEffect, useState } from 'react'; +import NoSSR from 'react-no-ssr'; +import { QueryClient, QueryClientProvider } from 'react-query'; +import { ReactQueryDevtools } from 'react-query/devtools'; +import { QueryClientConfig } from 'react-query/types/core/types'; + +import { SessionProvider } from 'next-auth/react'; +import { NextAdapter } from 'next-query-params'; +import App, { AppContext, AppInitialProps, AppProps } from 'next/app'; +import Head from 'next/head'; +import { useRouter } from 'next/router'; +import { QueryParamProvider } from 'use-query-params'; + +import type { EuiSideNavItemType } from '@elastic/eui'; +import { EuiProvider, EuiThemeColorMode } from '@elastic/eui'; +import '@elastic/eui/dist/eui_theme_light.min.css'; import { ColorModes, ConfirmationDialogContextWrapper, @@ -27,13 +26,13 @@ import { WfoPageTemplate, WfoToastsList, defaultOrchestratorTheme, -} from "@orchestrator-ui/orchestrator-ui-components"; +} from '@orchestrator-ui/orchestrator-ui-components'; -import { getAppLogo } from "@/components/AppLogo/AppLogo"; -import { getInitialOrchestratorConfig } from "@/configuration"; -import { TranslationsProvider } from "@/translations/translationsProvider"; +import { getAppLogo } from '@/components/AppLogo/AppLogo'; +import { getInitialOrchestratorConfig } from '@/configuration'; +import { TranslationsProvider } from '@/translations/translationsProvider'; -import "../font/inter.css"; +import '../font/inter.css'; type AppOwnProps = { orchestratorConfig: OrchestratorConfig }; @@ -55,17 +54,17 @@ function CustomApp({ const [queryClient] = useState(() => new QueryClient(queryClientConfig)); const [themeMode, setThemeMode] = useState( - ColorModes.LIGHT + ColorModes.LIGHT, ); const handleThemeSwitch = (newThemeMode: EuiThemeColorMode) => { setThemeMode(newThemeMode); - localStorage.setItem("themeMode", newThemeMode); + localStorage.setItem('themeMode', newThemeMode); }; useEffect(() => { // Initialize theme mode from localStorage or set it to 'light' if not present - const storedTheme = localStorage.getItem("themeMode"); + const storedTheme = localStorage.getItem('themeMode'); if ( !storedTheme || (storedTheme !== ColorModes.LIGHT && @@ -76,19 +75,19 @@ function CustomApp({ }, []); const addMenuItems = ( - defaultMenuItems: EuiSideNavItemType[] + defaultMenuItems: EuiSideNavItemType[], ): EuiSideNavItemType[] => [ ...defaultMenuItems, { - name: "Example form", - id: "10", - isSelected: router.pathname === "/example-form", - href: "/example-form", + name: 'Example form', + id: '10', + isSelected: router.pathname === '/example-form', + href: '/example-form', renderItem: () => ( ), }, @@ -168,7 +167,7 @@ function CustomApp({ } CustomApp.getInitialProps = async ( - context: AppContext + context: AppContext, ): Promise => { const ctx = await App.getInitialProps(context); diff --git a/pages/metadata/productblocks.tsx b/pages/metadata/productblocks.tsx index 4818248..7ecf32a 100644 --- a/pages/metadata/productblocks.tsx +++ b/pages/metadata/productblocks.tsx @@ -1,17 +1,19 @@ +import React from 'react'; + import { PolicyResource, WfoPolicyRenderPageFallback, WfoProductBlocksPage, - } from '@orchestrator-ui/orchestrator-ui-components'; - import React from 'react'; - - export const ProductBlocksPage = () => { +} from '@orchestrator-ui/orchestrator-ui-components'; + +export const ProductBlocksPage = () => { return ( - - - + + + ); - }; - - export default ProductBlocksPage; - \ No newline at end of file +}; + +export default ProductBlocksPage; diff --git a/pages/metadata/products.tsx b/pages/metadata/products.tsx index a2751a3..080b708 100644 --- a/pages/metadata/products.tsx +++ b/pages/metadata/products.tsx @@ -1,15 +1,15 @@ +import React from 'react'; + import { PolicyResource, WfoPolicyRenderPageFallback, WfoProductsPage, - } from '@orchestrator-ui/orchestrator-ui-components'; - import React from 'react'; - - export const ProductsPage = () => ( +} from '@orchestrator-ui/orchestrator-ui-components'; + +export const ProductsPage = () => ( - + - ); - - export default ProductsPage; - \ No newline at end of file +); + +export default ProductsPage; diff --git a/pages/metadata/resource-types.tsx b/pages/metadata/resource-types.tsx index ac8d0c2..5b48f08 100644 --- a/pages/metadata/resource-types.tsx +++ b/pages/metadata/resource-types.tsx @@ -1,15 +1,15 @@ +import React from 'react'; + import { PolicyResource, WfoPolicyRenderPageFallback, WfoResourceTypesPage, - } from '@orchestrator-ui/orchestrator-ui-components'; - import React from 'react'; - - export const ResourceTypesPage = () => ( +} from '@orchestrator-ui/orchestrator-ui-components'; + +export const ResourceTypesPage = () => ( - + - ); - - export default ResourceTypesPage; - \ No newline at end of file +); + +export default ResourceTypesPage; diff --git a/pages/metadata/tasks.tsx b/pages/metadata/tasks.tsx index 310db3f..0a5483e 100644 --- a/pages/metadata/tasks.tsx +++ b/pages/metadata/tasks.tsx @@ -1,15 +1,15 @@ +import React from 'react'; + import { PolicyResource, WfoPolicyRenderPageFallback, WfoTasksPage, - } from '@orchestrator-ui/orchestrator-ui-components'; - import React from 'react'; - - export const TasksPage = () => ( +} from '@orchestrator-ui/orchestrator-ui-components'; + +export const TasksPage = () => ( - + - ); - - export default TasksPage; - \ No newline at end of file +); + +export default TasksPage; diff --git a/pages/metadata/workflows.tsx b/pages/metadata/workflows.tsx index fa6de73..1f7d5dd 100644 --- a/pages/metadata/workflows.tsx +++ b/pages/metadata/workflows.tsx @@ -1,15 +1,15 @@ +import React from 'react'; + import { PolicyResource, WfoPolicyRenderPageFallback, WfoWorkflowsPage, - } from '@orchestrator-ui/orchestrator-ui-components'; - import React from 'react'; - - export const WorkflowsPage = () => ( +} from '@orchestrator-ui/orchestrator-ui-components'; + +export const WorkflowsPage = () => ( - + - ); - - export default WorkflowsPage; - \ No newline at end of file +); + +export default WorkflowsPage; diff --git a/pages/settings.tsx b/pages/settings.tsx index 4281090..ff54735 100644 --- a/pages/settings.tsx +++ b/pages/settings.tsx @@ -1,15 +1,15 @@ +import React from 'react'; + import { PolicyResource, WfoPolicyRenderPageFallback, WfoSettingsPage, - } from '@orchestrator-ui/orchestrator-ui-components'; - import React from 'react'; - - export const SettingsPage = () => ( +} from '@orchestrator-ui/orchestrator-ui-components'; + +export const SettingsPage = () => ( - + - ); - - export default SettingsPage; - \ No newline at end of file +); + +export default SettingsPage; diff --git a/pages/subscriptions/[subscriptionId].tsx b/pages/subscriptions/[subscriptionId].tsx index 934e43f..4616121 100644 --- a/pages/subscriptions/[subscriptionId].tsx +++ b/pages/subscriptions/[subscriptionId].tsx @@ -1,17 +1,17 @@ +import React from 'react'; + import { PolicyResource, WfoPolicyRenderPageFallback, WfoSubscriptionDetailPage, - } from '@orchestrator-ui/orchestrator-ui-components'; - import React from 'react'; - - const SubscriptionDetailPage = () => ( +} from '@orchestrator-ui/orchestrator-ui-components'; + +const SubscriptionDetailPage = () => ( - + - ); - - export default SubscriptionDetailPage; - \ No newline at end of file +); + +export default SubscriptionDetailPage; diff --git a/pages/tasks/[taskId].tsx b/pages/tasks/[taskId].tsx index ddf8893..04c1955 100644 --- a/pages/tasks/[taskId].tsx +++ b/pages/tasks/[taskId].tsx @@ -1,29 +1,30 @@ +import React from 'react'; + +import { useRouter } from 'next/router'; + import { PolicyResource, - usePolicy, WfoPageUnauthorized, WfoProcessDetailPage, - } from '@orchestrator-ui/orchestrator-ui-components'; - import { useRouter } from 'next/router'; - import React from 'react'; - - const TaskDetailPage = () => { + usePolicy, +} from '@orchestrator-ui/orchestrator-ui-components'; + +const TaskDetailPage = () => { const router = useRouter(); const { taskId } = router.query; - + const { isAllowed } = usePolicy(); if (!isAllowed(PolicyResource.NAVIGATION_TASKS)) { - return ; + return ; } - + return ( - <> - {(taskId && typeof taskId === 'string' && ( - - )) ||
Invalid taskId
} - + <> + {(taskId && typeof taskId === 'string' && ( + + )) ||
Invalid taskId
} + ); - }; - - export default TaskDetailPage; - \ No newline at end of file +}; + +export default TaskDetailPage;