diff --git a/.eslintrc.json b/.eslintrc.json index 25e83d5ac..a77ed5bd8 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -19,22 +19,21 @@ "plugin:@typescript-eslint/recommended", "next" ], - "plugins": ["@typescript-eslint", "prettier"], "settings": { "import/resolver": { "alias": { "map": [ - ["assets", "./assets"], - ["components", "./components"], + ["assets", "./src/assets"], + ["components", "./src/components"], ["db", "./db"], - ["hooks", "./hooks"], - ["lang", "./lang"], - ["lib", "./lib"], + ["hooks", "./src/components/hooks"], + ["lang", "./src/lang"], + ["lib", "./src/lib"], ["public", "./public"], - ["queries", "./queries"], - ["store", "./store"], - ["styles", "./styles"] + ["queries", "./src/queries"], + ["store", "./src/store"], + ["styles", "./src/styles"] ], "extensions": [".ts", ".tsx", ".js", ".jsx", ".json"] } @@ -51,7 +50,8 @@ "@typescript-eslint/no-empty-function": "off", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-var-requires": "off", - "@typescript-eslint/no-empty-interface": "off" + "@typescript-eslint/no-empty-interface": "off", + "@typescript-eslint/no-unused-vars": ["error", { "ignoreRestSiblings": true }] }, "globals": { "React": "writable" diff --git a/.gitignore b/.gitignore index 99087ab50..050397c90 100644 --- a/.gitignore +++ b/.gitignore @@ -34,9 +34,7 @@ yarn-error.log* # local env files .env -.env.development.local -.env.test.local -.env.production.local +.env.* *.dev.yml diff --git a/Dockerfile b/Dockerfile index cefa9fa13..dffdf31c8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,8 +12,8 @@ RUN yarn install --frozen-lockfile FROM node:18-alpine AS builder WORKDIR /app COPY --from=deps /app/node_modules ./node_modules -COPY docker/middleware.js . COPY . . +COPY docker/middleware.js ./src ARG DATABASE_TYPE ARG BASE_PATH @@ -53,6 +53,7 @@ USER nextjs EXPOSE 3000 +ENV HOSTNAME 0.0.0.0 ENV PORT 3000 CMD ["yarn", "start-docker"] diff --git a/README.md b/README.md index 19935ed59..02a44e1e1 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ A detailed getting started guide can be found at [https://umami.is/docs/](https: ### Requirements -- A server with Node.js version 12 or newer +- A server with Node.js version 16.13 or newer - A database. Umami supports [MySQL](https://www.mysql.com/) and [Postgresql](https://www.postgresql.org/) databases. ### Install Yarn diff --git a/components/input/WebsiteDateFilter.js b/components/input/WebsiteDateFilter.js deleted file mode 100644 index 47e6f0160..000000000 --- a/components/input/WebsiteDateFilter.js +++ /dev/null @@ -1,23 +0,0 @@ -import useDateRange from 'hooks/useDateRange'; -import DateFilter from './DateFilter'; -import styles from './WebsiteDateFilter.module.css'; - -export default function WebsiteDateFilter({ websiteId }) { - const [dateRange, setDateRange] = useDateRange(websiteId); - const { value, startDate, endDate } = dateRange; - - const handleChange = async value => { - setDateRange(value); - }; - - return ( - - ); -} diff --git a/components/input/WebsiteDateFilter.module.css b/components/input/WebsiteDateFilter.module.css deleted file mode 100644 index 13234c55c..000000000 --- a/components/input/WebsiteDateFilter.module.css +++ /dev/null @@ -1,3 +0,0 @@ -.dropdown { - min-width: 200px; -} diff --git a/components/metrics/CitiesTable.js b/components/metrics/CitiesTable.js deleted file mode 100644 index 2e74780d4..000000000 --- a/components/metrics/CitiesTable.js +++ /dev/null @@ -1,32 +0,0 @@ -import MetricsTable from './MetricsTable'; -import { emptyFilter } from 'lib/filters'; -import FilterLink from 'components/common/FilterLink'; -import useLocale from 'hooks/useLocale'; -import useMessages from 'hooks/useMessages'; - -export function CitiesTable({ websiteId, ...props }) { - const { locale } = useLocale(); - const { formatMessage, labels } = useMessages(); - - function renderLink({ x }) { - return ( -
- -
- ); - } - - return ( - - ); -} - -export default CitiesTable; diff --git a/components/pages/settings/users/UserWebsites.js b/components/pages/settings/users/UserWebsites.js deleted file mode 100644 index 144fae444..000000000 --- a/components/pages/settings/users/UserWebsites.js +++ /dev/null @@ -1,26 +0,0 @@ -import { Loading } from 'react-basics'; -import useApi from 'hooks/useApi'; -import WebsitesTable from 'components/pages/settings/websites/WebsitesTable'; -import useMessages from 'hooks/useMessages'; - -export function UserWebsites({ userId }) { - const { formatMessage, messages } = useMessages(); - const { get, useQuery } = useApi(); - const { data, isLoading } = useQuery(['user:websites', userId], () => - get(`/users/${userId}/websites`), - ); - const hasData = data && data.length !== 0; - - if (isLoading) { - return ; - } - - return ( -
- {hasData && } - {!hasData && formatMessage(messages.noDataAvailable)} -
- ); -} - -export default UserWebsites; diff --git a/components/pages/settings/websites/TrackingCode.js b/components/pages/settings/websites/TrackingCode.js deleted file mode 100644 index c847ed0d2..000000000 --- a/components/pages/settings/websites/TrackingCode.js +++ /dev/null @@ -1,24 +0,0 @@ -import { TextArea } from 'react-basics'; -import useMessages from 'hooks/useMessages'; -import useConfig from 'hooks/useConfig'; - -export function TrackingCode({ websiteId }) { - const { formatMessage, messages } = useMessages(); - const { basePath, trackerScriptName } = useConfig(); - const url = trackerScriptName?.startsWith('http') - ? trackerScriptName - : `${location.origin}${basePath}/${ - trackerScriptName?.split(',')?.map(n => n.trim())?.[0] || 'script.js' - }`; - - const code = ``; - - return ( - <> -

{formatMessage(messages.trackingCode)}

-