mirror of
https://github.com/kremalicious/umami.git
synced 2024-12-18 15:23:38 +01:00
commit
ce35a2d0ab
@ -1,17 +1,15 @@
|
|||||||
import React, { useState, useMemo } from 'react';
|
import React, { useState, useMemo } from 'react';
|
||||||
|
import { useRouter } from 'next/router';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import ReactTooltip from 'react-tooltip';
|
import ReactTooltip from 'react-tooltip';
|
||||||
import { ComposableMap, Geographies, Geography, ZoomableGroup } from 'react-simple-maps';
|
import { ComposableMap, Geographies, Geography, ZoomableGroup } from 'react-simple-maps';
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import tinycolor from 'tinycolor2';
|
import tinycolor from 'tinycolor2';
|
||||||
import useTheme from 'hooks/useTheme';
|
import useTheme from 'hooks/useTheme';
|
||||||
import { THEME_COLORS } from 'lib/constants';
|
import { ISO_COUNTRIES, THEME_COLORS, MAP_FILE } from 'lib/constants';
|
||||||
import styles from './WorldMap.module.css';
|
import styles from './WorldMap.module.css';
|
||||||
import useCountryNames from 'hooks/useCountryNames';
|
import useCountryNames from 'hooks/useCountryNames';
|
||||||
import useLocale from 'hooks/useLocale';
|
import useLocale from 'hooks/useLocale';
|
||||||
import { useRouter } from 'next/router';
|
|
||||||
|
|
||||||
const geoUrl = '/world-110m.json';
|
|
||||||
|
|
||||||
function WorldMap({ data, className }) {
|
function WorldMap({ data, className }) {
|
||||||
const { basePath } = useRouter();
|
const { basePath } = useRouter();
|
||||||
@ -60,10 +58,10 @@ function WorldMap({ data, className }) {
|
|||||||
>
|
>
|
||||||
<ComposableMap projection="geoMercator">
|
<ComposableMap projection="geoMercator">
|
||||||
<ZoomableGroup zoom={0.8} minZoom={0.7} center={[0, 40]}>
|
<ZoomableGroup zoom={0.8} minZoom={0.7} center={[0, 40]}>
|
||||||
<Geographies geography={`${basePath}${geoUrl}`}>
|
<Geographies geography={`${basePath}${MAP_FILE}`}>
|
||||||
{({ geographies }) => {
|
{({ geographies }) => {
|
||||||
return geographies.map(geo => {
|
return geographies.map(geo => {
|
||||||
const code = geo.properties.ISO_A2;
|
const code = ISO_COUNTRIES[geo.id];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Geography
|
<Geography
|
||||||
|
@ -72,7 +72,7 @@ export default function WebsiteEditForm({ values, onSave, onClose }) {
|
|||||||
<FormattedMessage id="label.domain" defaultMessage="Domain" />
|
<FormattedMessage id="label.domain" defaultMessage="Domain" />
|
||||||
</label>
|
</label>
|
||||||
<div>
|
<div>
|
||||||
<Field name="domain" type="text" />
|
<Field name="domain" type="text" placeholder="example.com" />
|
||||||
<FormError name="domain" />
|
<FormError name="domain" />
|
||||||
</div>
|
</div>
|
||||||
</FormRow>
|
</FormRow>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import React from 'react';
|
import React, { useState } from 'react';
|
||||||
import { FormattedMessage } from 'react-intl';
|
import { FormattedMessage } from 'react-intl';
|
||||||
import { useSelector } from 'react-redux';
|
import { useSelector } from 'react-redux';
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
@ -13,40 +13,66 @@ import styles from './Header.module.css';
|
|||||||
|
|
||||||
export default function Header() {
|
export default function Header() {
|
||||||
const user = useSelector(state => state.user);
|
const user = useSelector(state => state.user);
|
||||||
|
const [active, setActive] = useState(false);
|
||||||
|
|
||||||
|
function handleClick() {
|
||||||
|
setActive(state => !state);
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<header className="container">
|
<nav className="container">
|
||||||
{user?.is_admin && <UpdateNotice />}
|
{user?.is_admin && <UpdateNotice />}
|
||||||
<div className={classNames(styles.header, 'row align-items-center')}>
|
<div className={classNames(styles.header, 'row align-items-center')}>
|
||||||
<div className="col-6 col-lg-3 order-1 order-lg-1">
|
<div className={styles.nav}>
|
||||||
<div className={styles.title}>
|
<div className="">
|
||||||
<Icon icon={<Logo />} size="large" className={styles.logo} />
|
<div className={styles.title}>
|
||||||
<Link href={user ? '/' : 'https://umami.is'}>umami</Link>
|
<Icon icon={<Logo />} size="large" className={styles.logo} />
|
||||||
|
<Link href={user ? '/' : 'https://umami.is'}>umami</Link>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<button
|
||||||
<div className="col-12 col-lg-6 order-3 order-lg-2">
|
onClick={handleClick}
|
||||||
|
role="button"
|
||||||
|
className={styles.burger}
|
||||||
|
aria-label="menu"
|
||||||
|
aria-expanded="false"
|
||||||
|
>
|
||||||
|
{active ? (
|
||||||
|
<div> X </div>
|
||||||
|
) : (
|
||||||
|
<>
|
||||||
|
<span></span>
|
||||||
|
<span></span>
|
||||||
|
<span></span>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
</button>
|
||||||
{user && (
|
{user && (
|
||||||
<div className={styles.nav}>
|
<div className={styles.items}>
|
||||||
<Link href="/dashboard">
|
<div className={active ? classNames(styles.active) : ''}>
|
||||||
<FormattedMessage id="label.dashboard" defaultMessage="Dashboard" />
|
<Link href="/dashboard">
|
||||||
</Link>
|
<FormattedMessage id="label.dashboard" defaultMessage="Dashboard" />
|
||||||
<Link href="/realtime">
|
</Link>
|
||||||
<FormattedMessage id="label.realtime" defaultMessage="Realtime" />
|
<Link href="/realtime">
|
||||||
</Link>
|
<FormattedMessage id="label.realtime" defaultMessage="Realtime" />
|
||||||
<Link href="/settings">
|
</Link>
|
||||||
<FormattedMessage id="label.settings" defaultMessage="Settings" />
|
<Link href="/settings">
|
||||||
</Link>
|
<FormattedMessage id="label.settings" defaultMessage="Settings" />
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
<div className={styles.items}>
|
||||||
<div className="col-6 col-lg-3 order-2 order-lg-3">
|
<div className={active ? classNames(styles.active) : ''}>
|
||||||
<div className={styles.buttons}>
|
<div className={styles.buttons}>
|
||||||
<ThemeButton />
|
<ThemeButton />
|
||||||
<LanguageButton menuAlign="right" />
|
<LanguageButton menuAlign="right" />
|
||||||
{user && <UserButton />}
|
{user && <UserButton />}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</nav>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,19 @@
|
|||||||
|
.navbar {
|
||||||
|
align-items: stretch;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: space-between;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.burger {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
display: flex;
|
display: flex;
|
||||||
min-height: 100px;
|
min-height: 100px;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
@ -15,6 +28,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.nav {
|
.nav {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
font-size: var(--font-size-normal);
|
||||||
|
font-weight: 600;
|
||||||
|
width: 100%;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.items {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@ -35,16 +57,75 @@
|
|||||||
@media only screen and (max-width: 992px) {
|
@media only screen and (max-width: 992px) {
|
||||||
.nav {
|
.nav {
|
||||||
font-size: var(--font-size-large);
|
font-size: var(--font-size-large);
|
||||||
justify-content: center;
|
justify-content: space-between;
|
||||||
padding: 20px 0;
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
.items {
|
||||||
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 576px) {
|
@media only screen and (max-width: 768px) {
|
||||||
.header {
|
.header {
|
||||||
padding: 0 15px;
|
padding: 0 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav {
|
.nav {
|
||||||
font-size: var(--font-size-normal);
|
font-size: var(--font-size-normal);
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
flex-direction: column;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.items {
|
||||||
|
display: flex;
|
||||||
|
justify-content: unset;
|
||||||
|
align-items: left;
|
||||||
|
font-size: var(--font-size-normal);
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.items > div {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header .active {
|
||||||
|
display: inherit;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.items a {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.burger {
|
||||||
|
display: block;
|
||||||
|
/* color: #4a4a4a; */
|
||||||
|
cursor: pointer;
|
||||||
|
height: 3.25rem;
|
||||||
|
width: 3.25rem;
|
||||||
|
margin-left: auto;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.burger span {
|
||||||
|
transform: translateX(-50%);
|
||||||
|
padding: 1px 0px;
|
||||||
|
margin: 6px 0;
|
||||||
|
width: 20px;
|
||||||
|
display: block;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.burger div {
|
||||||
|
height: 100%;
|
||||||
|
color: white;
|
||||||
|
text-align: center;
|
||||||
|
margin: auto;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
transform: translateX(-50%);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,21 +1,13 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import Head from 'next/head';
|
import Head from 'next/head';
|
||||||
import { useRouter } from 'next/router';
|
|
||||||
import Header from 'components/layout/Header';
|
import Header from 'components/layout/Header';
|
||||||
import Footer from 'components/layout/Footer';
|
import Footer from 'components/layout/Footer';
|
||||||
|
|
||||||
export default function Layout({ title, children, header = true, footer = true }) {
|
export default function Layout({ title, children, header = true, footer = true }) {
|
||||||
const { basePath } = useRouter();
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Head>
|
<Head>
|
||||||
<title>umami{title && ` - ${title}`}</title>
|
<title>umami{title && ` - ${title}`}</title>
|
||||||
<link rel="icon" href={`${basePath}/favicon.ico`} />
|
|
||||||
<link
|
|
||||||
href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600&display=swap"
|
|
||||||
rel="stylesheet"
|
|
||||||
/>
|
|
||||||
</Head>
|
</Head>
|
||||||
{header && <Header />}
|
{header && <Header />}
|
||||||
<main className="container">{children}</main>
|
<main className="container">{children}</main>
|
||||||
|
@ -40,7 +40,7 @@ export default function BarChart({
|
|||||||
function renderXLabel(label, index, values) {
|
function renderXLabel(label, index, values) {
|
||||||
if (loading) return '';
|
if (loading) return '';
|
||||||
const d = new Date(values[index].value);
|
const d = new Date(values[index].value);
|
||||||
const w = canvas.current.width;
|
const sw = canvas.current.width / window.devicePixelRatio;
|
||||||
|
|
||||||
switch (unit) {
|
switch (unit) {
|
||||||
case 'minute':
|
case 'minute':
|
||||||
@ -48,18 +48,27 @@ export default function BarChart({
|
|||||||
case 'hour':
|
case 'hour':
|
||||||
return dateFormat(d, 'p', locale);
|
return dateFormat(d, 'p', locale);
|
||||||
case 'day':
|
case 'day':
|
||||||
if (records > 31) {
|
if (records > 25) {
|
||||||
if (w <= 500) {
|
if (sw <= 275) {
|
||||||
return index % 10 === 0 ? dateFormat(d, 'M/d', locale) : '';
|
return index % 10 === 0 ? dateFormat(d, 'M/d', locale) : '';
|
||||||
}
|
}
|
||||||
return index % 5 === 0 ? dateFormat(d, 'M/d', locale) : '';
|
if (sw <= 550) {
|
||||||
|
return index % 5 === 0 ? dateFormat(d, 'M/d', locale) : '';
|
||||||
|
}
|
||||||
|
if (sw <= 700) {
|
||||||
|
return index % 2 === 0 ? dateFormat(d, 'M/d', locale) : '';
|
||||||
|
}
|
||||||
|
return dateFormat(d, 'MMM d', locale);
|
||||||
}
|
}
|
||||||
if (w <= 500) {
|
if (sw <= 375) {
|
||||||
return index % 2 === 0 ? dateFormat(d, 'MMM d', locale) : '';
|
return index % 2 === 0 ? dateFormat(d, 'MMM d', locale) : '';
|
||||||
}
|
}
|
||||||
|
if (sw <= 425) {
|
||||||
|
return dateFormat(d, 'MMM d', locale);
|
||||||
|
}
|
||||||
return dateFormat(d, 'EEE M/d', locale);
|
return dateFormat(d, 'EEE M/d', locale);
|
||||||
case 'month':
|
case 'month':
|
||||||
if (w <= 660) {
|
if (sw <= 330) {
|
||||||
return index % 2 === 0 ? dateFormat(d, 'MMM', locale) : '';
|
return index % 2 === 0 ? dateFormat(d, 'MMM', locale) : '';
|
||||||
}
|
}
|
||||||
return dateFormat(d, 'MMM', locale);
|
return dateFormat(d, 'MMM', locale);
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
padding-bottom: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.button svg {
|
.button svg {
|
||||||
|
100
lang/ms-MY.json
Normal file
100
lang/ms-MY.json
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
{
|
||||||
|
"label.accounts": "Akaun",
|
||||||
|
"label.add-account": "Tambah akaun",
|
||||||
|
"label.add-website": "Tambah laman web",
|
||||||
|
"label.administrator": "Pentadbir",
|
||||||
|
"label.all": "Semua",
|
||||||
|
"label.all-websites": "Semua laman web",
|
||||||
|
"label.all-events": "Semua peristiwa",
|
||||||
|
"label.back": "Kembali",
|
||||||
|
"label.cancel": "Batal",
|
||||||
|
"label.change-password": "Tukar kata laluan",
|
||||||
|
"label.confirm-password": "Sahkan kata laluan",
|
||||||
|
"label.copy-to-clipboard": "Salin ke papan keratan",
|
||||||
|
"label.current-password": "Kata laluan semasa",
|
||||||
|
"label.custom-range": "Julat khas",
|
||||||
|
"label.dashboard": "Papan pemuka",
|
||||||
|
"label.date-range": "Julat tarikh",
|
||||||
|
"label.default-date-range": "Julat tarikh lalai",
|
||||||
|
"label.delete": "Padam",
|
||||||
|
"label.delete-account": "Padam akaun",
|
||||||
|
"label.delete-website": "Padam laman web",
|
||||||
|
"label.dismiss": "Ketepikan",
|
||||||
|
"label.domain": "Domain",
|
||||||
|
"label.edit": "Edit",
|
||||||
|
"label.edit-account": "Edit akaun",
|
||||||
|
"label.edit-website": "Edit laman web",
|
||||||
|
"label.enable-share-url": "Aktifkan url berkongsi",
|
||||||
|
"label.invalid": "Tidak sah",
|
||||||
|
"label.invalid-domain": "Domain tidak sah",
|
||||||
|
"label.last-days": "{x} hari lepas",
|
||||||
|
"label.last-hours": "{x} jam lepas",
|
||||||
|
"label.logged-in-as": "Log masuk sebagai {username}",
|
||||||
|
"label.login": "Log masuk",
|
||||||
|
"label.logout": "Log keluar",
|
||||||
|
"label.more": "Lebih banyak lagi",
|
||||||
|
"label.name": "Nama",
|
||||||
|
"label.new-password": "Kata laluan baru",
|
||||||
|
"label.password": "Kata laluan",
|
||||||
|
"label.passwords-dont-match": "Kata laluan tidak sepadan",
|
||||||
|
"label.profile": "Profil",
|
||||||
|
"label.realtime": "Siaran langsung",
|
||||||
|
"label.realtime-logs": "Log secara siaran langsung",
|
||||||
|
"label.refresh": "Muat semula",
|
||||||
|
"label.required": "Diperlukan",
|
||||||
|
"label.reset": "Tetapkan semula",
|
||||||
|
"label.save": "Simpan",
|
||||||
|
"label.settings": "Tetapan",
|
||||||
|
"label.share-url": "Kongsikan URL",
|
||||||
|
"label.single-day": "Satu hari",
|
||||||
|
"label.this-month": "Bulan ini",
|
||||||
|
"label.this-week": "Minggu ini",
|
||||||
|
"label.this-year": "Tahun ini",
|
||||||
|
"label.timezone": "Zon masa",
|
||||||
|
"label.today": "Hari ini",
|
||||||
|
"label.tracking-code": "Kod penjejakan",
|
||||||
|
"label.unknown": "Tidak diketahui",
|
||||||
|
"label.username": "Nama pengguna",
|
||||||
|
"label.view-details": "Lihat butiran",
|
||||||
|
"label.websites": "Laman web",
|
||||||
|
"message.active-users": "{x} semasa {x, plural, one {pelawat} other {pelawat}}",
|
||||||
|
"message.confirm-delete": "Pastikah anda ingin memadam {target}?",
|
||||||
|
"message.copied": "Disalin!",
|
||||||
|
"message.delete-warning": "Semua data yang berkaitan juga akan dihapuskan.",
|
||||||
|
"message.failure": "Ada yang tidak kena.",
|
||||||
|
"message.get-share-url": "Dapatkan URL berkongsi",
|
||||||
|
"message.get-tracking-code": "Dapatkan kod penjejakan",
|
||||||
|
"message.go-to-settings": "Pergi ke tetapan",
|
||||||
|
"message.incorrect-username-password": "Pengguna/kata laluan tidak betul.",
|
||||||
|
"message.log.visitor": "Pelawat dari {country} mengguna {browser} pada {os} {device}",
|
||||||
|
"message.new-version-available": "Versi baru umami {version} boleh didapati!",
|
||||||
|
"message.no-data-available": "Tiada data yang boleh didapati.",
|
||||||
|
"message.no-websites-configured": "Anda tidak ada sebarang laman web yang telah dikonfigurasikan.",
|
||||||
|
"message.page-not-found": "Halaman tidak dijumpai.",
|
||||||
|
"message.powered-by": "Disediakan oleh {name}",
|
||||||
|
"message.save-success": "Berjaya disimpan.",
|
||||||
|
"message.share-url": "Ini adalah URL berkongsi untuk {target}.",
|
||||||
|
"message.track-stats": "Untuk menjejak statistik bagi {target}, letakkan kod berikut di bahagian {head} laman web anda.",
|
||||||
|
"message.type-delete": "Taip {delete} di dalam kotak di bawah untuk pengesahan.",
|
||||||
|
"metrics.actions": "Aksi",
|
||||||
|
"metrics.average-visit-time": "Purata tempoh masa lawatan",
|
||||||
|
"metrics.bounce-rate": "Kadar lantunan",
|
||||||
|
"metrics.browsers": "Pelayar web",
|
||||||
|
"metrics.countries": "Negara",
|
||||||
|
"metrics.device.desktop": "Desktop",
|
||||||
|
"metrics.device.laptop": "Laptop",
|
||||||
|
"metrics.device.mobile": "Telefon bimbit",
|
||||||
|
"metrics.device.tablet": "Tablet",
|
||||||
|
"metrics.devices": "Peranti",
|
||||||
|
"metrics.events": "Peristiwa",
|
||||||
|
"metrics.filter.combined": "Digabungkan",
|
||||||
|
"metrics.filter.domain-only": "Domain sahaja",
|
||||||
|
"metrics.filter.raw": "Mentah",
|
||||||
|
"metrics.operating-systems": "Sistem operasi",
|
||||||
|
"metrics.page-views": "Paparan halaman",
|
||||||
|
"metrics.pages": "Halaman",
|
||||||
|
"metrics.referrers": "Perujuk",
|
||||||
|
"metrics.unique-visitors": "Pelawat unik",
|
||||||
|
"metrics.views": "Lawatan",
|
||||||
|
"metrics.visitors": "Pelawat"
|
||||||
|
}
|
@ -29,7 +29,7 @@
|
|||||||
"label.last-days": "Ostatnie {x} dni",
|
"label.last-days": "Ostatnie {x} dni",
|
||||||
"label.last-hours": "Ostatnie {x} godzin",
|
"label.last-hours": "Ostatnie {x} godzin",
|
||||||
"label.logged-in-as": "Zalogowano jako {username}",
|
"label.logged-in-as": "Zalogowano jako {username}",
|
||||||
"label.login": "Zaloguj sie",
|
"label.login": "Zaloguj się",
|
||||||
"label.logout": "Wyloguj",
|
"label.logout": "Wyloguj",
|
||||||
"label.more": "Więcej",
|
"label.more": "Więcej",
|
||||||
"label.name": "Nazwa",
|
"label.name": "Nazwa",
|
||||||
|
99
lang/sk-SK.json
Normal file
99
lang/sk-SK.json
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
{
|
||||||
|
"label.accounts": "Účty",
|
||||||
|
"label.add-account": "Pridať účet",
|
||||||
|
"label.add-website": "Pridať web",
|
||||||
|
"label.administrator": "Administrátor",
|
||||||
|
"label.all": "Všetko",
|
||||||
|
"label.all-websites": "Všetky weby",
|
||||||
|
"label.back": "Späť",
|
||||||
|
"label.cancel": "Zrušiť",
|
||||||
|
"label.change-password": "Zmeniť heslo",
|
||||||
|
"label.confirm-password": "Potvrdiť heslo",
|
||||||
|
"label.copy-to-clipboard": "Kopírovať do schránky",
|
||||||
|
"label.current-password": "Aktuálne heslo",
|
||||||
|
"label.custom-range": "Vlastný rozsah",
|
||||||
|
"label.dashboard": "Prehlad",
|
||||||
|
"label.date-range": "Obdobie",
|
||||||
|
"label.default-date-range": "Predvolené obdobie",
|
||||||
|
"label.delete": "Zmazať",
|
||||||
|
"label.delete-account": "Zmazať účet",
|
||||||
|
"label.delete-website": "Zmazať web",
|
||||||
|
"label.dismiss": "Odísť",
|
||||||
|
"label.domain": "Doména",
|
||||||
|
"label.edit": "Upraviť",
|
||||||
|
"label.edit-account": "Upraviť účet",
|
||||||
|
"label.edit-website": "Upraviť web",
|
||||||
|
"label.enable-share-url": "Povoliť zdielanie URL",
|
||||||
|
"label.invalid": "Neplatný",
|
||||||
|
"label.invalid-domain": "Neplatná doména",
|
||||||
|
"label.last-days": "Posledných {x} dní",
|
||||||
|
"label.last-hours": "Posledných {x} hodín",
|
||||||
|
"label.logged-in-as": "Prihlásený ako {username}",
|
||||||
|
"label.login": "Prihlásiť",
|
||||||
|
"label.logout": "Odhlásiť",
|
||||||
|
"label.more": "Viac",
|
||||||
|
"label.name": "Meno",
|
||||||
|
"label.new-password": "Nové heslo",
|
||||||
|
"label.password": "Heslo",
|
||||||
|
"label.passwords-dont-match": "Hesla se nezhodujú",
|
||||||
|
"label.profile": "Profil",
|
||||||
|
"label.realtime": "Aktuálne",
|
||||||
|
"label.realtime-logs": "Aktuálne záznamy",
|
||||||
|
"label.refresh": "Obnoviť",
|
||||||
|
"label.required": "Povinné",
|
||||||
|
"label.reset": "Reset",
|
||||||
|
"label.save": "Uložiť",
|
||||||
|
"label.settings": "Nastavenia",
|
||||||
|
"label.share-url": "Zdielanie URL",
|
||||||
|
"label.single-day": "Jeden deň",
|
||||||
|
"label.this-month": "Tento mesiac",
|
||||||
|
"label.this-week": "Tento týždeň",
|
||||||
|
"label.this-year": "Tento rok",
|
||||||
|
"label.timezone": "Časová zóna",
|
||||||
|
"label.today": "Dnes",
|
||||||
|
"label.tracking-code": "Sledovací kód",
|
||||||
|
"label.unknown": "Neznámý",
|
||||||
|
"label.username": "Užívateľské meno",
|
||||||
|
"label.view-details": "Zobraziť detaily",
|
||||||
|
"label.websites": "Weby",
|
||||||
|
"message.active-users": "{x} aktuálne {x, plural, one {návštevník} other {návštěvníci}}",
|
||||||
|
"message.confirm-delete": "Naozaj zmazať {target}?",
|
||||||
|
"message.copied": "Skopírované!",
|
||||||
|
"message.delete-warning": "Všetky príbuzné data budu tiež zmazané.",
|
||||||
|
"message.failure": "Niečo sa pokazilo.",
|
||||||
|
"message.get-share-url": "Získať zdielané URL",
|
||||||
|
"message.get-tracking-code": "Získať tracking kód",
|
||||||
|
"message.go-to-settings": "Ísť do nastavení",
|
||||||
|
"message.incorrect-username-password": "Nesprávné meno/heslo.",
|
||||||
|
"message.log.visitor": "Návštevník z {country} s prehliadačom {browser} na {os} {device}",
|
||||||
|
"message.new-version-available": "Nová verzia umami {version} je k dispozícii!",
|
||||||
|
"message.no-data-available": "Žiadne data.",
|
||||||
|
"message.no-websites-configured": "Nemáte nastavený žiadny web.",
|
||||||
|
"message.page-not-found": "Stránka sa nenašla.",
|
||||||
|
"message.powered-by": "Powered by {name}",
|
||||||
|
"message.save-success": "Úspešne uložené.",
|
||||||
|
"message.share-url": "Toto je zdielané URL pre {target}.",
|
||||||
|
"message.track-stats": "Pre sledovanie návštev na {target}, pridajte následujúci kód do {head} časti vašeho webu.",
|
||||||
|
"message.type-delete": "Napíšte {delete} pre potvrdenie.",
|
||||||
|
"metrics.actions": "Akcie",
|
||||||
|
"metrics.average-visit-time": "Priemerný čas návštevy",
|
||||||
|
"metrics.bounce-rate": "Okamžité opustenie",
|
||||||
|
"metrics.browsers": "Prehliadač",
|
||||||
|
"metrics.countries": "Zem",
|
||||||
|
"metrics.device.desktop": "Stolný počítač",
|
||||||
|
"metrics.device.laptop": "Prenosný počítač",
|
||||||
|
"metrics.device.mobile": "Mobilný telefon",
|
||||||
|
"metrics.device.tablet": "Tablet",
|
||||||
|
"metrics.devices": "Zariadenie",
|
||||||
|
"metrics.events": "Udalosti",
|
||||||
|
"metrics.filter.combined": "Kombinácie",
|
||||||
|
"metrics.filter.domain-only": "Domény",
|
||||||
|
"metrics.filter.raw": "Nezpracované",
|
||||||
|
"metrics.operating-systems": "Operačný systém",
|
||||||
|
"metrics.page-views": "Zobrazenie stánok",
|
||||||
|
"metrics.pages": "Stránky",
|
||||||
|
"metrics.referrers": "Odkazy",
|
||||||
|
"metrics.unique-visitors": "Jedinečné návštevy",
|
||||||
|
"metrics.views": "Zobrazení",
|
||||||
|
"metrics.visitors": "Návštevy"
|
||||||
|
}
|
@ -4,6 +4,7 @@
|
|||||||
"label.add-website": "வலைத்தளத்தைச் சேர்க்க",
|
"label.add-website": "வலைத்தளத்தைச் சேர்க்க",
|
||||||
"label.administrator": "நிர்வாகியைச் சேர்க்க",
|
"label.administrator": "நிர்வாகியைச் சேர்க்க",
|
||||||
"label.all": "எல்லாம்",
|
"label.all": "எல்லாம்",
|
||||||
|
"label.all-events": "அனைத்து நிகழ்வுகளும்",
|
||||||
"label.all-websites": "அனைத்து வலைத்தளங்களும்",
|
"label.all-websites": "அனைத்து வலைத்தளங்களும்",
|
||||||
"label.back": "பின்னால்",
|
"label.back": "பின்னால்",
|
||||||
"label.cancel": "ரத்துசெய்",
|
"label.cancel": "ரத்துசெய்",
|
||||||
|
253
lib/constants.js
253
lib/constants.js
@ -142,3 +142,256 @@ export const BROWSERS = {
|
|||||||
'ios-webview': 'iOS (webview)',
|
'ios-webview': 'iOS (webview)',
|
||||||
searchbot: 'Searchbot',
|
searchbot: 'Searchbot',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const MAP_FILE = '/datamaps.world.json';
|
||||||
|
|
||||||
|
export const ISO_COUNTRIES = {
|
||||||
|
AFG: 'AF',
|
||||||
|
ALA: 'AX',
|
||||||
|
ALB: 'AL',
|
||||||
|
DZA: 'DZ',
|
||||||
|
ASM: 'AS',
|
||||||
|
AND: 'AD',
|
||||||
|
AGO: 'AO',
|
||||||
|
AIA: 'AI',
|
||||||
|
ATA: 'AQ',
|
||||||
|
ATG: 'AG',
|
||||||
|
ARG: 'AR',
|
||||||
|
ARM: 'AM',
|
||||||
|
ABW: 'AW',
|
||||||
|
AUS: 'AU',
|
||||||
|
AUT: 'AT',
|
||||||
|
AZE: 'AZ',
|
||||||
|
BHS: 'BS',
|
||||||
|
BHR: 'BH',
|
||||||
|
BGD: 'BD',
|
||||||
|
BRB: 'BB',
|
||||||
|
BLR: 'BY',
|
||||||
|
BEL: 'BE',
|
||||||
|
BLZ: 'BZ',
|
||||||
|
BEN: 'BJ',
|
||||||
|
BMU: 'BM',
|
||||||
|
BTN: 'BT',
|
||||||
|
BOL: 'BO',
|
||||||
|
BIH: 'BA',
|
||||||
|
BWA: 'BW',
|
||||||
|
BVT: 'BV',
|
||||||
|
BRA: 'BR',
|
||||||
|
VGB: 'VG',
|
||||||
|
IOT: 'IO',
|
||||||
|
BRN: 'BN',
|
||||||
|
BGR: 'BG',
|
||||||
|
BFA: 'BF',
|
||||||
|
BDI: 'BI',
|
||||||
|
KHM: 'KH',
|
||||||
|
CMR: 'CM',
|
||||||
|
CAN: 'CA',
|
||||||
|
CPV: 'CV',
|
||||||
|
CYM: 'KY',
|
||||||
|
CAF: 'CF',
|
||||||
|
TCD: 'TD',
|
||||||
|
CHL: 'CL',
|
||||||
|
CHN: 'CN',
|
||||||
|
HKG: 'HK',
|
||||||
|
MAC: 'MO',
|
||||||
|
CXR: 'CX',
|
||||||
|
CCK: 'CC',
|
||||||
|
COL: 'CO',
|
||||||
|
COM: 'KM',
|
||||||
|
COG: 'CG',
|
||||||
|
COD: 'CD',
|
||||||
|
COK: 'CK',
|
||||||
|
CRI: 'CR',
|
||||||
|
CIV: 'CI',
|
||||||
|
HRV: 'HR',
|
||||||
|
CUB: 'CU',
|
||||||
|
CYP: 'CY',
|
||||||
|
CZE: 'CZ',
|
||||||
|
DNK: 'DK',
|
||||||
|
DJI: 'DJ',
|
||||||
|
DMA: 'DM',
|
||||||
|
DOM: 'DO',
|
||||||
|
ECU: 'EC',
|
||||||
|
EGY: 'EG',
|
||||||
|
SLV: 'SV',
|
||||||
|
GNQ: 'GQ',
|
||||||
|
ERI: 'ER',
|
||||||
|
EST: 'EE',
|
||||||
|
ETH: 'ET',
|
||||||
|
FLK: 'FK',
|
||||||
|
FRO: 'FO',
|
||||||
|
FJI: 'FJ',
|
||||||
|
FIN: 'FI',
|
||||||
|
FRA: 'FR',
|
||||||
|
GUF: 'GF',
|
||||||
|
PYF: 'PF',
|
||||||
|
ATF: 'TF',
|
||||||
|
GAB: 'GA',
|
||||||
|
GMB: 'GM',
|
||||||
|
GEO: 'GE',
|
||||||
|
DEU: 'DE',
|
||||||
|
GHA: 'GH',
|
||||||
|
GIB: 'GI',
|
||||||
|
GRC: 'GR',
|
||||||
|
GRL: 'GL',
|
||||||
|
GRD: 'GD',
|
||||||
|
GLP: 'GP',
|
||||||
|
GUM: 'GU',
|
||||||
|
GTM: 'GT',
|
||||||
|
GGY: 'GG',
|
||||||
|
GIN: 'GN',
|
||||||
|
GNB: 'GW',
|
||||||
|
GUY: 'GY',
|
||||||
|
HTI: 'HT',
|
||||||
|
HMD: 'HM',
|
||||||
|
VAT: 'VA',
|
||||||
|
HND: 'HN',
|
||||||
|
HUN: 'HU',
|
||||||
|
ISL: 'IS',
|
||||||
|
IND: 'IN',
|
||||||
|
IDN: 'ID',
|
||||||
|
IRN: 'IR',
|
||||||
|
IRQ: 'IQ',
|
||||||
|
IRL: 'IE',
|
||||||
|
IMN: 'IM',
|
||||||
|
ISR: 'IL',
|
||||||
|
ITA: 'IT',
|
||||||
|
JAM: 'JM',
|
||||||
|
JPN: 'JP',
|
||||||
|
JEY: 'JE',
|
||||||
|
JOR: 'JO',
|
||||||
|
KAZ: 'KZ',
|
||||||
|
KEN: 'KE',
|
||||||
|
KIR: 'KI',
|
||||||
|
PRK: 'KP',
|
||||||
|
KOR: 'KR',
|
||||||
|
KWT: 'KW',
|
||||||
|
KGZ: 'KG',
|
||||||
|
LAO: 'LA',
|
||||||
|
LVA: 'LV',
|
||||||
|
LBN: 'LB',
|
||||||
|
LSO: 'LS',
|
||||||
|
LBR: 'LR',
|
||||||
|
LBY: 'LY',
|
||||||
|
LIE: 'LI',
|
||||||
|
LTU: 'LT',
|
||||||
|
LUX: 'LU',
|
||||||
|
MKD: 'MK',
|
||||||
|
MDG: 'MG',
|
||||||
|
MWI: 'MW',
|
||||||
|
MYS: 'MY',
|
||||||
|
MDV: 'MV',
|
||||||
|
MLI: 'ML',
|
||||||
|
MLT: 'MT',
|
||||||
|
MHL: 'MH',
|
||||||
|
MTQ: 'MQ',
|
||||||
|
MRT: 'MR',
|
||||||
|
MUS: 'MU',
|
||||||
|
MYT: 'YT',
|
||||||
|
MEX: 'MX',
|
||||||
|
FSM: 'FM',
|
||||||
|
MDA: 'MD',
|
||||||
|
MCO: 'MC',
|
||||||
|
MNG: 'MN',
|
||||||
|
MNE: 'ME',
|
||||||
|
MSR: 'MS',
|
||||||
|
MAR: 'MA',
|
||||||
|
MOZ: 'MZ',
|
||||||
|
MMR: 'MM',
|
||||||
|
NAM: 'NA',
|
||||||
|
NRU: 'NR',
|
||||||
|
NPL: 'NP',
|
||||||
|
NLD: 'NL',
|
||||||
|
ANT: 'AN',
|
||||||
|
NCL: 'NC',
|
||||||
|
NZL: 'NZ',
|
||||||
|
NIC: 'NI',
|
||||||
|
NER: 'NE',
|
||||||
|
NGA: 'NG',
|
||||||
|
NIU: 'NU',
|
||||||
|
NFK: 'NF',
|
||||||
|
MNP: 'MP',
|
||||||
|
NOR: 'NO',
|
||||||
|
OMN: 'OM',
|
||||||
|
PAK: 'PK',
|
||||||
|
PLW: 'PW',
|
||||||
|
PSE: 'PS',
|
||||||
|
PAN: 'PA',
|
||||||
|
PNG: 'PG',
|
||||||
|
PRY: 'PY',
|
||||||
|
PER: 'PE',
|
||||||
|
PHL: 'PH',
|
||||||
|
PCN: 'PN',
|
||||||
|
POL: 'PL',
|
||||||
|
PRT: 'PT',
|
||||||
|
PRI: 'PR',
|
||||||
|
QAT: 'QA',
|
||||||
|
REU: 'RE',
|
||||||
|
ROU: 'RO',
|
||||||
|
RUS: 'RU',
|
||||||
|
RWA: 'RW',
|
||||||
|
BLM: 'BL',
|
||||||
|
SHN: 'SH',
|
||||||
|
KNA: 'KN',
|
||||||
|
LCA: 'LC',
|
||||||
|
MAF: 'MF',
|
||||||
|
SPM: 'PM',
|
||||||
|
VCT: 'VC',
|
||||||
|
WSM: 'WS',
|
||||||
|
SMR: 'SM',
|
||||||
|
STP: 'ST',
|
||||||
|
SAU: 'SA',
|
||||||
|
SEN: 'SN',
|
||||||
|
SRB: 'RS',
|
||||||
|
SYC: 'SC',
|
||||||
|
SLE: 'SL',
|
||||||
|
SGP: 'SG',
|
||||||
|
SVK: 'SK',
|
||||||
|
SVN: 'SI',
|
||||||
|
SLB: 'SB',
|
||||||
|
SOM: 'SO',
|
||||||
|
ZAF: 'ZA',
|
||||||
|
SGS: 'GS',
|
||||||
|
SSD: 'SS',
|
||||||
|
ESP: 'ES',
|
||||||
|
LKA: 'LK',
|
||||||
|
SDN: 'SD',
|
||||||
|
SUR: 'SR',
|
||||||
|
SJM: 'SJ',
|
||||||
|
SWZ: 'SZ',
|
||||||
|
SWE: 'SE',
|
||||||
|
CHE: 'CH',
|
||||||
|
SYR: 'SY',
|
||||||
|
TWN: 'TW',
|
||||||
|
TJK: 'TJ',
|
||||||
|
TZA: 'TZ',
|
||||||
|
THA: 'TH',
|
||||||
|
TLS: 'TL',
|
||||||
|
TGO: 'TG',
|
||||||
|
TKL: 'TK',
|
||||||
|
TON: 'TO',
|
||||||
|
TTO: 'TT',
|
||||||
|
TUN: 'TN',
|
||||||
|
TUR: 'TR',
|
||||||
|
TKM: 'TM',
|
||||||
|
TCA: 'TC',
|
||||||
|
TUV: 'TV',
|
||||||
|
UGA: 'UG',
|
||||||
|
UKR: 'UA',
|
||||||
|
ARE: 'AE',
|
||||||
|
GBR: 'GB',
|
||||||
|
USA: 'US',
|
||||||
|
UMI: 'UM',
|
||||||
|
URY: 'UY',
|
||||||
|
UZB: 'UZ',
|
||||||
|
VUT: 'VU',
|
||||||
|
VEN: 'VE',
|
||||||
|
VNM: 'VN',
|
||||||
|
VIR: 'VI',
|
||||||
|
WLF: 'WF',
|
||||||
|
ESH: 'EH',
|
||||||
|
YEM: 'YE',
|
||||||
|
ZMB: 'ZM',
|
||||||
|
ZWE: 'ZW',
|
||||||
|
XKX: 'XK',
|
||||||
|
};
|
||||||
|
10
lib/lang.js
10
lib/lang.js
@ -1,5 +1,6 @@
|
|||||||
import {
|
import {
|
||||||
cs,
|
cs,
|
||||||
|
sk,
|
||||||
da,
|
da,
|
||||||
de,
|
de,
|
||||||
el,
|
el,
|
||||||
@ -13,6 +14,7 @@ import {
|
|||||||
id,
|
id,
|
||||||
it,
|
it,
|
||||||
ja,
|
ja,
|
||||||
|
ms,
|
||||||
nb,
|
nb,
|
||||||
nl,
|
nl,
|
||||||
pl,
|
pl,
|
||||||
@ -50,12 +52,14 @@ import idMessages from 'lang-compiled/id-ID.json';
|
|||||||
import ukMessages from 'lang-compiled/uk-UA.json';
|
import ukMessages from 'lang-compiled/uk-UA.json';
|
||||||
import fiMessages from 'lang-compiled/fi-FI.json';
|
import fiMessages from 'lang-compiled/fi-FI.json';
|
||||||
import csMessages from 'lang-compiled/cs-CZ.json';
|
import csMessages from 'lang-compiled/cs-CZ.json';
|
||||||
|
import skMessages from 'lang-compiled/sk-SK.json';
|
||||||
import plMessages from 'lang-compiled/pl-PL.json';
|
import plMessages from 'lang-compiled/pl-PL.json';
|
||||||
import taMessages from 'lang-compiled/ta-IN.json';
|
import taMessages from 'lang-compiled/ta-IN.json';
|
||||||
import hiMessages from 'lang-compiled/hi-IN.json';
|
import hiMessages from 'lang-compiled/hi-IN.json';
|
||||||
import heMessages from 'lang-compiled/he-IL.json';
|
import heMessages from 'lang-compiled/he-IL.json';
|
||||||
import itMessages from 'lang-compiled/it-IT.json';
|
import itMessages from 'lang-compiled/it-IT.json';
|
||||||
import faIRMessages from 'lang-compiled/fa-IR.json';
|
import faIRMessages from 'lang-compiled/fa-IR.json';
|
||||||
|
import msMYMessages from 'lang-compiled/ms-MY.json';
|
||||||
|
|
||||||
export const messages = {
|
export const messages = {
|
||||||
'en-US': enMessages,
|
'en-US': enMessages,
|
||||||
@ -81,12 +85,14 @@ export const messages = {
|
|||||||
'uk-UA': ukMessages,
|
'uk-UA': ukMessages,
|
||||||
'fi-FI': fiMessages,
|
'fi-FI': fiMessages,
|
||||||
'cs-CZ': csMessages,
|
'cs-CZ': csMessages,
|
||||||
|
'sk-SK': skMessages,
|
||||||
'pl-PL': plMessages,
|
'pl-PL': plMessages,
|
||||||
'ta-IN': taMessages,
|
'ta-IN': taMessages,
|
||||||
'hi-IN': hiMessages,
|
'hi-IN': hiMessages,
|
||||||
'he-IL': heMessages,
|
'he-IL': heMessages,
|
||||||
'it-IT': itMessages,
|
'it-IT': itMessages,
|
||||||
'fa-IR': faIRMessages,
|
'fa-IR': faIRMessages,
|
||||||
|
'ms-MY': msMYMessages,
|
||||||
};
|
};
|
||||||
|
|
||||||
export const dateLocales = {
|
export const dateLocales = {
|
||||||
@ -113,12 +119,14 @@ export const dateLocales = {
|
|||||||
'uk-UA': uk,
|
'uk-UA': uk,
|
||||||
'fi-FI': fi,
|
'fi-FI': fi,
|
||||||
'cs-CZ': cs,
|
'cs-CZ': cs,
|
||||||
|
'sk-SK': sk,
|
||||||
'pl-PL': pl,
|
'pl-PL': pl,
|
||||||
'ta-In': ta,
|
'ta-In': ta,
|
||||||
'hi-IN': hi,
|
'hi-IN': hi,
|
||||||
'he-IL': he,
|
'he-IL': he,
|
||||||
'it-IT': it,
|
'it-IT': it,
|
||||||
'fa-IR': faIR,
|
'fa-IR': faIR,
|
||||||
|
'ms-MY': ms,
|
||||||
};
|
};
|
||||||
|
|
||||||
export const menuOptions = [
|
export const menuOptions = [
|
||||||
@ -138,6 +146,7 @@ export const menuOptions = [
|
|||||||
{ label: 'Italiano', value: 'it-IT', display: 'it' },
|
{ label: 'Italiano', value: 'it-IT', display: 'it' },
|
||||||
{ label: 'Bahasa Indonesia', value: 'id-ID', display: 'id' },
|
{ label: 'Bahasa Indonesia', value: 'id-ID', display: 'id' },
|
||||||
{ label: '日本語', value: 'ja-JP', display: 'ja' },
|
{ label: '日本語', value: 'ja-JP', display: 'ja' },
|
||||||
|
{ label: 'Malay', value: 'ms-MY', display: 'ms' },
|
||||||
{ label: 'Монгол', value: 'mn-MN', display: 'mn' },
|
{ label: 'Монгол', value: 'mn-MN', display: 'mn' },
|
||||||
{ label: 'Nederlands', value: 'nl-NL', display: 'nl' },
|
{ label: 'Nederlands', value: 'nl-NL', display: 'nl' },
|
||||||
{ label: 'Norsk Bokmål', value: 'nb-NO', display: 'nb' },
|
{ label: 'Norsk Bokmål', value: 'nb-NO', display: 'nb' },
|
||||||
@ -146,6 +155,7 @@ export const menuOptions = [
|
|||||||
{ label: 'Português do Brasil', value: 'pt-BR', display: 'pt-BR' },
|
{ label: 'Português do Brasil', value: 'pt-BR', display: 'pt-BR' },
|
||||||
{ label: 'Русский', value: 'ru-RU', display: 'ru' },
|
{ label: 'Русский', value: 'ru-RU', display: 'ru' },
|
||||||
{ label: 'Română', value: 'ro-RO', display: 'ro' },
|
{ label: 'Română', value: 'ro-RO', display: 'ro' },
|
||||||
|
{ label: 'Slovenčina', value: 'sk-SK', display: 'sk' },
|
||||||
{ label: 'Suomi', value: 'fi-FI', display: 'fi' },
|
{ label: 'Suomi', value: 'fi-FI', display: 'fi' },
|
||||||
{ label: 'Svenska', value: 'sv-SE', display: 'sv' },
|
{ label: 'Svenska', value: 'sv-SE', display: 'sv' },
|
||||||
{ label: 'தமிழ்', value: 'ta-IN', display: 'ta' },
|
{ label: 'தமிழ்', value: 'ta-IN', display: 'ta' },
|
||||||
|
@ -158,11 +158,7 @@ export async function createSession(website_id, data) {
|
|||||||
return runQuery(
|
return runQuery(
|
||||||
prisma.session.create({
|
prisma.session.create({
|
||||||
data: {
|
data: {
|
||||||
website: {
|
website_id,
|
||||||
connect: {
|
|
||||||
website_id,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
...data,
|
...data,
|
||||||
},
|
},
|
||||||
select: {
|
select: {
|
||||||
@ -186,18 +182,10 @@ export async function savePageView(website_id, session_id, url, referrer) {
|
|||||||
return runQuery(
|
return runQuery(
|
||||||
prisma.pageview.create({
|
prisma.pageview.create({
|
||||||
data: {
|
data: {
|
||||||
website: {
|
website_id,
|
||||||
connect: {
|
session_id,
|
||||||
website_id,
|
url: url?.substr(0, URL_LENGTH),
|
||||||
},
|
referrer: referrer?.substr(0, URL_LENGTH),
|
||||||
},
|
|
||||||
session: {
|
|
||||||
connect: {
|
|
||||||
session_id,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
url: url.substr(0, URL_LENGTH),
|
|
||||||
referrer: referrer.substr(0, URL_LENGTH),
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
@ -207,19 +195,11 @@ export async function saveEvent(website_id, session_id, url, event_type, event_v
|
|||||||
return runQuery(
|
return runQuery(
|
||||||
prisma.event.create({
|
prisma.event.create({
|
||||||
data: {
|
data: {
|
||||||
website: {
|
website_id,
|
||||||
connect: {
|
session_id,
|
||||||
website_id,
|
url: url?.substr(0, URL_LENGTH),
|
||||||
},
|
event_type: event_type?.substr(0, 50),
|
||||||
},
|
event_value: event_value?.substr(0, 50),
|
||||||
session: {
|
|
||||||
connect: {
|
|
||||||
session_id,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
url: url.substr(0, URL_LENGTH),
|
|
||||||
event_type,
|
|
||||||
event_value,
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
22
package.json
22
package.json
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "umami",
|
"name": "umami",
|
||||||
"version": "1.15.0",
|
"version": "1.16.0",
|
||||||
"description": "A simple, fast, website analytics alternative to Google Analytics. ",
|
"description": "A simple, fast, website analytics alternative to Google Analytics. ",
|
||||||
"author": "Mike Cao <mike@mikecao.com>",
|
"author": "Mike Cao <mike@mikecao.com>",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -27,7 +27,7 @@
|
|||||||
"build-postgresql-client": "dotenv prisma generate -- --schema=./prisma/schema.postgresql.prisma",
|
"build-postgresql-client": "dotenv prisma generate -- --schema=./prisma/schema.postgresql.prisma",
|
||||||
"copy-db-schema": "node scripts/copy-db-schema.js",
|
"copy-db-schema": "node scripts/copy-db-schema.js",
|
||||||
"generate-lang": "npm-run-all extract-lang merge-lang",
|
"generate-lang": "npm-run-all extract-lang merge-lang",
|
||||||
"extract-lang": "formatjs extract {pages,components}/**/*.js --out-file build/messages.json",
|
"extract-lang": "formatjs extract '{pages,components}/**/*.js' --out-file build/messages.json",
|
||||||
"merge-lang": "node scripts/merge-lang.js",
|
"merge-lang": "node scripts/merge-lang.js",
|
||||||
"format-lang": "node scripts/format-lang.js",
|
"format-lang": "node scripts/format-lang.js",
|
||||||
"compile-lang": "formatjs compile-folder --ast build lang-compiled",
|
"compile-lang": "formatjs compile-folder --ast build lang-compiled",
|
||||||
@ -56,7 +56,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@prisma/client": "2.18.0",
|
"@prisma/client": "2.19.0",
|
||||||
"@reduxjs/toolkit": "^1.5.0",
|
"@reduxjs/toolkit": "^1.5.0",
|
||||||
"bcrypt": "^5.0.0",
|
"bcrypt": "^5.0.0",
|
||||||
"chalk": "^4.1.0",
|
"chalk": "^4.1.0",
|
||||||
@ -75,17 +75,17 @@
|
|||||||
"jose": "2.0.3",
|
"jose": "2.0.3",
|
||||||
"maxmind": "^4.3.1",
|
"maxmind": "^4.3.1",
|
||||||
"moment-timezone": "^0.5.32",
|
"moment-timezone": "^0.5.32",
|
||||||
"next": "^10.0.8",
|
"next": "^10.0.9",
|
||||||
"prompts": "2.4.0",
|
"prompts": "2.4.0",
|
||||||
"prop-types": "^15.7.2",
|
"prop-types": "^15.7.2",
|
||||||
"react": "^17.0.1",
|
"react": "^17.0.2",
|
||||||
"react-dom": "^17.0.1",
|
"react-dom": "^17.0.2",
|
||||||
"react-intl": "^5.12.3",
|
"react-intl": "^5.14.1",
|
||||||
"react-redux": "^7.2.2",
|
"react-redux": "^7.2.3",
|
||||||
"react-simple-maps": "^2.3.0",
|
"react-simple-maps": "^2.3.0",
|
||||||
"react-spring": "^8.0.27",
|
"react-spring": "^8.0.27",
|
||||||
"react-tooltip": "^4.2.14",
|
"react-tooltip": "^4.2.17",
|
||||||
"react-use-measure": "^2.0.3",
|
"react-use-measure": "^2.0.4",
|
||||||
"react-window": "^1.8.6",
|
"react-window": "^1.8.6",
|
||||||
"redux": "^4.0.5",
|
"redux": "^4.0.5",
|
||||||
"redux-thunk": "^2.3.0",
|
"redux-thunk": "^2.3.0",
|
||||||
@ -98,7 +98,6 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@formatjs/cli": "^2.13.16",
|
"@formatjs/cli": "^2.13.16",
|
||||||
"@prisma/cli": "2.18.0",
|
|
||||||
"@rollup/plugin-buble": "^0.21.3",
|
"@rollup/plugin-buble": "^0.21.3",
|
||||||
"@rollup/plugin-node-resolve": "^11.1.1",
|
"@rollup/plugin-node-resolve": "^11.1.1",
|
||||||
"@rollup/plugin-replace": "^2.3.4",
|
"@rollup/plugin-replace": "^2.3.4",
|
||||||
@ -121,6 +120,7 @@
|
|||||||
"postcss-preset-env": "^6.7.0",
|
"postcss-preset-env": "^6.7.0",
|
||||||
"prettier": "^2.2.1",
|
"prettier": "^2.2.1",
|
||||||
"prettier-eslint": "^12.0.0",
|
"prettier-eslint": "^12.0.0",
|
||||||
|
"prisma": "2.19.0",
|
||||||
"rollup": "^2.38.3",
|
"rollup": "^2.38.3",
|
||||||
"rollup-plugin-hashbang": "^2.2.2",
|
"rollup-plugin-hashbang": "^2.2.2",
|
||||||
"rollup-plugin-terser": "^7.0.2",
|
"rollup-plugin-terser": "^7.0.2",
|
||||||
|
@ -31,12 +31,17 @@ export default function App({ Component, pageProps }) {
|
|||||||
return (
|
return (
|
||||||
<Provider store={store}>
|
<Provider store={store}>
|
||||||
<Head>
|
<Head>
|
||||||
|
<link rel="icon" href={`${basePath}/favicon.ico`} />
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href={`${basePath}/apple-touch-icon.png`} />
|
<link rel="apple-touch-icon" sizes="180x180" href={`${basePath}/apple-touch-icon.png`} />
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href={`${basePath}/favicon-32x32.png`} />
|
<link rel="icon" type="image/png" sizes="32x32" href={`${basePath}/favicon-32x32.png`} />
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href={`${basePath}/favicon-16x16.png`} />
|
<link rel="icon" type="image/png" sizes="16x16" href={`${basePath}/favicon-16x16.png`} />
|
||||||
<link rel="manifest" href={`${basePath}/site.webmanifest`} />
|
<link rel="manifest" href={`${basePath}/site.webmanifest`} />
|
||||||
<link rel="mask-icon" href={`${basePath}/safari-pinned-tab.svg`} color="#5bbad5" />
|
<link rel="mask-icon" href={`${basePath}/safari-pinned-tab.svg`} color="#5bbad5" />
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" />
|
<link rel="preconnect" href="https://fonts.gstatic.com" />
|
||||||
|
<link
|
||||||
|
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&display=swap"
|
||||||
|
rel="stylesheet"
|
||||||
|
/>
|
||||||
<meta name="msapplication-TileColor" content="#da532c" />
|
<meta name="msapplication-TileColor" content="#da532c" />
|
||||||
<meta name="theme-color" content="#ffffff" />
|
<meta name="theme-color" content="#ffffff" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
99
prisma/mysql/migrations/20210320112658_init/migration.sql
Normal file
99
prisma/mysql/migrations/20210320112658_init/migration.sql
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE `account` (
|
||||||
|
`user_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`username` VARCHAR(255) NOT NULL,
|
||||||
|
`password` VARCHAR(60) NOT NULL,
|
||||||
|
`is_admin` BOOLEAN NOT NULL DEFAULT false,
|
||||||
|
`created_at` TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP(0),
|
||||||
|
`updated_at` TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP(0),
|
||||||
|
UNIQUE INDEX `account.username_unique`(`username`),
|
||||||
|
|
||||||
|
PRIMARY KEY (`user_id`)
|
||||||
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE `event` (
|
||||||
|
`event_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`website_id` INTEGER UNSIGNED NOT NULL,
|
||||||
|
`session_id` INTEGER UNSIGNED NOT NULL,
|
||||||
|
`created_at` TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP(0),
|
||||||
|
`url` VARCHAR(500) NOT NULL,
|
||||||
|
`event_type` VARCHAR(50) NOT NULL,
|
||||||
|
`event_value` VARCHAR(50) NOT NULL,
|
||||||
|
INDEX `event_created_at_idx`(`created_at`),
|
||||||
|
INDEX `event_session_id_idx`(`session_id`),
|
||||||
|
INDEX `event_website_id_idx`(`website_id`),
|
||||||
|
|
||||||
|
PRIMARY KEY (`event_id`)
|
||||||
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE `pageview` (
|
||||||
|
`view_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`website_id` INTEGER UNSIGNED NOT NULL,
|
||||||
|
`session_id` INTEGER UNSIGNED NOT NULL,
|
||||||
|
`created_at` TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP(0),
|
||||||
|
`url` VARCHAR(500) NOT NULL,
|
||||||
|
`referrer` VARCHAR(500),
|
||||||
|
INDEX `pageview_created_at_idx`(`created_at`),
|
||||||
|
INDEX `pageview_session_id_idx`(`session_id`),
|
||||||
|
INDEX `pageview_website_id_created_at_idx`(`website_id`, `created_at`),
|
||||||
|
INDEX `pageview_website_id_idx`(`website_id`),
|
||||||
|
INDEX `pageview_website_id_session_id_created_at_idx`(`website_id`, `session_id`, `created_at`),
|
||||||
|
|
||||||
|
PRIMARY KEY (`view_id`)
|
||||||
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE `session` (
|
||||||
|
`session_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`session_uuid` VARCHAR(36) NOT NULL,
|
||||||
|
`website_id` INTEGER UNSIGNED NOT NULL,
|
||||||
|
`created_at` TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP(0),
|
||||||
|
`hostname` VARCHAR(100),
|
||||||
|
`browser` VARCHAR(20),
|
||||||
|
`os` VARCHAR(20),
|
||||||
|
`device` VARCHAR(20),
|
||||||
|
`screen` VARCHAR(11),
|
||||||
|
`language` VARCHAR(35),
|
||||||
|
`country` CHAR(2),
|
||||||
|
UNIQUE INDEX `session.session_uuid_unique`(`session_uuid`),
|
||||||
|
INDEX `session_created_at_idx`(`created_at`),
|
||||||
|
INDEX `session_website_id_idx`(`website_id`),
|
||||||
|
|
||||||
|
PRIMARY KEY (`session_id`)
|
||||||
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE `website` (
|
||||||
|
`website_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`website_uuid` VARCHAR(36) NOT NULL,
|
||||||
|
`user_id` INTEGER UNSIGNED NOT NULL,
|
||||||
|
`name` VARCHAR(100) NOT NULL,
|
||||||
|
`domain` VARCHAR(500),
|
||||||
|
`share_id` VARCHAR(64),
|
||||||
|
`created_at` TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP(0),
|
||||||
|
UNIQUE INDEX `website.website_uuid_unique`(`website_uuid`),
|
||||||
|
UNIQUE INDEX `website.share_id_unique`(`share_id`),
|
||||||
|
INDEX `website_user_id_idx`(`user_id`),
|
||||||
|
|
||||||
|
PRIMARY KEY (`website_id`)
|
||||||
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE `event` ADD FOREIGN KEY (`session_id`) REFERENCES `session`(`session_id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE `event` ADD FOREIGN KEY (`website_id`) REFERENCES `website`(`website_id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE `pageview` ADD FOREIGN KEY (`session_id`) REFERENCES `session`(`session_id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE `pageview` ADD FOREIGN KEY (`website_id`) REFERENCES `website`(`website_id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE `session` ADD FOREIGN KEY (`website_id`) REFERENCES `website`(`website_id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE `website` ADD FOREIGN KEY (`user_id`) REFERENCES `account`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
3
prisma/mysql/migrations/migration_lock.toml
Normal file
3
prisma/mysql/migrations/migration_lock.toml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Please do not edit this file manually
|
||||||
|
# It should be added in your version-control system (i.e. Git)
|
||||||
|
provider = "mysql"
|
1
prisma/mysql/schema.mysql.prisma
Symbolic link
1
prisma/mysql/schema.mysql.prisma
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../schema.mysql.prisma
|
1
prisma/mysql/seed.js
Symbolic link
1
prisma/mysql/seed.js
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../seed.js
|
129
prisma/postgresql/migrations/20210320112717_init/migration.sql
Normal file
129
prisma/postgresql/migrations/20210320112717_init/migration.sql
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "account" (
|
||||||
|
"user_id" SERIAL NOT NULL,
|
||||||
|
"username" VARCHAR(255) NOT NULL,
|
||||||
|
"password" VARCHAR(60) NOT NULL,
|
||||||
|
"is_admin" BOOLEAN NOT NULL DEFAULT false,
|
||||||
|
"created_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updated_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
|
||||||
|
PRIMARY KEY ("user_id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "event" (
|
||||||
|
"event_id" SERIAL NOT NULL,
|
||||||
|
"website_id" INTEGER NOT NULL,
|
||||||
|
"session_id" INTEGER NOT NULL,
|
||||||
|
"created_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"url" VARCHAR(500) NOT NULL,
|
||||||
|
"event_type" VARCHAR(50) NOT NULL,
|
||||||
|
"event_value" VARCHAR(50) NOT NULL,
|
||||||
|
|
||||||
|
PRIMARY KEY ("event_id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "pageview" (
|
||||||
|
"view_id" SERIAL NOT NULL,
|
||||||
|
"website_id" INTEGER NOT NULL,
|
||||||
|
"session_id" INTEGER NOT NULL,
|
||||||
|
"created_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"url" VARCHAR(500) NOT NULL,
|
||||||
|
"referrer" VARCHAR(500),
|
||||||
|
|
||||||
|
PRIMARY KEY ("view_id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "session" (
|
||||||
|
"session_id" SERIAL NOT NULL,
|
||||||
|
"session_uuid" UUID NOT NULL,
|
||||||
|
"website_id" INTEGER NOT NULL,
|
||||||
|
"created_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"hostname" VARCHAR(100),
|
||||||
|
"browser" VARCHAR(20),
|
||||||
|
"os" VARCHAR(20),
|
||||||
|
"device" VARCHAR(20),
|
||||||
|
"screen" VARCHAR(11),
|
||||||
|
"language" VARCHAR(35),
|
||||||
|
"country" CHAR(2),
|
||||||
|
|
||||||
|
PRIMARY KEY ("session_id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "website" (
|
||||||
|
"website_id" SERIAL NOT NULL,
|
||||||
|
"website_uuid" UUID NOT NULL,
|
||||||
|
"user_id" INTEGER NOT NULL,
|
||||||
|
"name" VARCHAR(100) NOT NULL,
|
||||||
|
"domain" VARCHAR(500),
|
||||||
|
"share_id" VARCHAR(64),
|
||||||
|
"created_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
|
||||||
|
PRIMARY KEY ("website_id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "account.username_unique" ON "account"("username");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE INDEX "event_created_at_idx" ON "event"("created_at");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE INDEX "event_session_id_idx" ON "event"("session_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE INDEX "event_website_id_idx" ON "event"("website_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE INDEX "pageview_created_at_idx" ON "pageview"("created_at");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE INDEX "pageview_session_id_idx" ON "pageview"("session_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE INDEX "pageview_website_id_created_at_idx" ON "pageview"("website_id", "created_at");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE INDEX "pageview_website_id_idx" ON "pageview"("website_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE INDEX "pageview_website_id_session_id_created_at_idx" ON "pageview"("website_id", "session_id", "created_at");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "session.session_uuid_unique" ON "session"("session_uuid");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE INDEX "session_created_at_idx" ON "session"("created_at");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE INDEX "session_website_id_idx" ON "session"("website_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "website.website_uuid_unique" ON "website"("website_uuid");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "website.share_id_unique" ON "website"("share_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE INDEX "website_user_id_idx" ON "website"("user_id");
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "event" ADD FOREIGN KEY ("session_id") REFERENCES "session"("session_id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "event" ADD FOREIGN KEY ("website_id") REFERENCES "website"("website_id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "pageview" ADD FOREIGN KEY ("session_id") REFERENCES "session"("session_id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "pageview" ADD FOREIGN KEY ("website_id") REFERENCES "website"("website_id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "session" ADD FOREIGN KEY ("website_id") REFERENCES "website"("website_id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "website" ADD FOREIGN KEY ("user_id") REFERENCES "account"("user_id") ON DELETE CASCADE ON UPDATE CASCADE;
|
3
prisma/postgresql/migrations/migration_lock.toml
Normal file
3
prisma/postgresql/migrations/migration_lock.toml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Please do not edit this file manually
|
||||||
|
# It should be added in your version-control system (i.e. Git)
|
||||||
|
provider = "postgresql"
|
1
prisma/postgresql/schema.postgresql.prisma
Symbolic link
1
prisma/postgresql/schema.postgresql.prisma
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../schema.postgresql.prisma
|
1
prisma/postgresql/seed.js
Symbolic link
1
prisma/postgresql/seed.js
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../seed.js
|
@ -8,23 +8,23 @@ datasource db {
|
|||||||
}
|
}
|
||||||
|
|
||||||
model account {
|
model account {
|
||||||
user_id Int @default(autoincrement()) @id
|
user_id Int @id @default(autoincrement()) @db.UnsignedInt
|
||||||
username String @unique
|
username String @unique @db.VarChar(255)
|
||||||
password String
|
password String @db.VarChar(60)
|
||||||
is_admin Boolean @default(false)
|
is_admin Boolean @default(false)
|
||||||
created_at DateTime? @default(now())
|
created_at DateTime? @default(now()) @db.Timestamp(0)
|
||||||
updated_at DateTime? @default(now())
|
updated_at DateTime? @default(now()) @db.Timestamp(0)
|
||||||
website website[]
|
website website[]
|
||||||
}
|
}
|
||||||
|
|
||||||
model event {
|
model event {
|
||||||
event_id Int @default(autoincrement()) @id
|
event_id Int @id @default(autoincrement()) @db.UnsignedInt
|
||||||
website_id Int
|
website_id Int @db.UnsignedInt
|
||||||
session_id Int
|
session_id Int @db.UnsignedInt
|
||||||
created_at DateTime? @default(now())
|
created_at DateTime? @default(now()) @db.Timestamp(0)
|
||||||
url String
|
url String @db.VarChar(500)
|
||||||
event_type String
|
event_type String @db.VarChar(50)
|
||||||
event_value String
|
event_value String @db.VarChar(50)
|
||||||
session session @relation(fields: [session_id], references: [session_id])
|
session session @relation(fields: [session_id], references: [session_id])
|
||||||
website website @relation(fields: [website_id], references: [website_id])
|
website website @relation(fields: [website_id], references: [website_id])
|
||||||
|
|
||||||
@ -34,32 +34,34 @@ model event {
|
|||||||
}
|
}
|
||||||
|
|
||||||
model pageview {
|
model pageview {
|
||||||
view_id Int @default(autoincrement()) @id
|
view_id Int @id @default(autoincrement()) @db.UnsignedInt
|
||||||
website_id Int
|
website_id Int @db.UnsignedInt
|
||||||
session_id Int
|
session_id Int @db.UnsignedInt
|
||||||
created_at DateTime? @default(now())
|
created_at DateTime? @default(now()) @db.Timestamp(0)
|
||||||
url String
|
url String @db.VarChar(500)
|
||||||
referrer String?
|
referrer String? @db.VarChar(500)
|
||||||
session session @relation(fields: [session_id], references: [session_id])
|
session session @relation(fields: [session_id], references: [session_id])
|
||||||
website website @relation(fields: [website_id], references: [website_id])
|
website website @relation(fields: [website_id], references: [website_id])
|
||||||
|
|
||||||
@@index([created_at], name: "pageview_created_at_idx")
|
@@index([created_at], name: "pageview_created_at_idx")
|
||||||
@@index([session_id], name: "pageview_session_id_idx")
|
@@index([session_id], name: "pageview_session_id_idx")
|
||||||
|
@@index([website_id, created_at], name: "pageview_website_id_created_at_idx")
|
||||||
@@index([website_id], name: "pageview_website_id_idx")
|
@@index([website_id], name: "pageview_website_id_idx")
|
||||||
|
@@index([website_id, session_id, created_at], name: "pageview_website_id_session_id_created_at_idx")
|
||||||
}
|
}
|
||||||
|
|
||||||
model session {
|
model session {
|
||||||
session_id Int @default(autoincrement()) @id
|
session_id Int @id @default(autoincrement()) @db.UnsignedInt
|
||||||
session_uuid String @unique
|
session_uuid String @unique @db.VarChar(36)
|
||||||
website_id Int
|
website_id Int @db.UnsignedInt
|
||||||
created_at DateTime? @default(now())
|
created_at DateTime? @default(now()) @db.Timestamp(0)
|
||||||
hostname String?
|
hostname String? @db.VarChar(100)
|
||||||
browser String?
|
browser String? @db.VarChar(20)
|
||||||
os String?
|
os String? @db.VarChar(20)
|
||||||
device String?
|
device String? @db.VarChar(20)
|
||||||
screen String?
|
screen String? @db.VarChar(11)
|
||||||
language String?
|
language String? @db.VarChar(35)
|
||||||
country String?
|
country String? @db.Char(2)
|
||||||
website website @relation(fields: [website_id], references: [website_id])
|
website website @relation(fields: [website_id], references: [website_id])
|
||||||
event event[]
|
event event[]
|
||||||
pageview pageview[]
|
pageview pageview[]
|
||||||
@ -69,13 +71,13 @@ model session {
|
|||||||
}
|
}
|
||||||
|
|
||||||
model website {
|
model website {
|
||||||
website_id Int @default(autoincrement()) @id
|
website_id Int @id @default(autoincrement()) @db.UnsignedInt
|
||||||
website_uuid String @unique
|
website_uuid String @unique @db.VarChar(36)
|
||||||
user_id Int
|
user_id Int @db.UnsignedInt
|
||||||
name String
|
name String @db.VarChar(100)
|
||||||
domain String?
|
domain String? @db.VarChar(500)
|
||||||
created_at DateTime? @default(now())
|
share_id String? @unique @db.VarChar(64)
|
||||||
share_id String? @unique
|
created_at DateTime? @default(now()) @db.Timestamp(0)
|
||||||
account account @relation(fields: [user_id], references: [user_id])
|
account account @relation(fields: [user_id], references: [user_id])
|
||||||
event event[]
|
event event[]
|
||||||
pageview pageview[]
|
pageview pageview[]
|
||||||
|
@ -8,23 +8,23 @@ datasource db {
|
|||||||
}
|
}
|
||||||
|
|
||||||
model account {
|
model account {
|
||||||
user_id Int @default(autoincrement()) @id
|
user_id Int @id @default(autoincrement())
|
||||||
username String @unique
|
username String @unique @db.VarChar(255)
|
||||||
password String
|
password String @db.VarChar(60)
|
||||||
is_admin Boolean @default(false)
|
is_admin Boolean @default(false)
|
||||||
created_at DateTime? @default(now())
|
created_at DateTime? @default(now()) @db.Timestamptz(6)
|
||||||
updated_at DateTime? @default(now())
|
updated_at DateTime? @default(now()) @db.Timestamptz(6)
|
||||||
website website[]
|
website website[]
|
||||||
}
|
}
|
||||||
|
|
||||||
model event {
|
model event {
|
||||||
event_id Int @default(autoincrement()) @id
|
event_id Int @id @default(autoincrement())
|
||||||
website_id Int
|
website_id Int
|
||||||
session_id Int
|
session_id Int
|
||||||
created_at DateTime? @default(now())
|
created_at DateTime? @default(now()) @db.Timestamptz(6)
|
||||||
url String
|
url String @db.VarChar(500)
|
||||||
event_type String
|
event_type String @db.VarChar(50)
|
||||||
event_value String
|
event_value String @db.VarChar(50)
|
||||||
session session @relation(fields: [session_id], references: [session_id])
|
session session @relation(fields: [session_id], references: [session_id])
|
||||||
website website @relation(fields: [website_id], references: [website_id])
|
website website @relation(fields: [website_id], references: [website_id])
|
||||||
|
|
||||||
@ -34,32 +34,34 @@ model event {
|
|||||||
}
|
}
|
||||||
|
|
||||||
model pageview {
|
model pageview {
|
||||||
view_id Int @default(autoincrement()) @id
|
view_id Int @id @default(autoincrement())
|
||||||
website_id Int
|
website_id Int
|
||||||
session_id Int
|
session_id Int
|
||||||
created_at DateTime? @default(now())
|
created_at DateTime? @default(now()) @db.Timestamptz(6)
|
||||||
url String
|
url String @db.VarChar(500)
|
||||||
referrer String?
|
referrer String? @db.VarChar(500)
|
||||||
session session @relation(fields: [session_id], references: [session_id])
|
session session @relation(fields: [session_id], references: [session_id])
|
||||||
website website @relation(fields: [website_id], references: [website_id])
|
website website @relation(fields: [website_id], references: [website_id])
|
||||||
|
|
||||||
@@index([created_at], name: "pageview_created_at_idx")
|
@@index([created_at], name: "pageview_created_at_idx")
|
||||||
@@index([session_id], name: "pageview_session_id_idx")
|
@@index([session_id], name: "pageview_session_id_idx")
|
||||||
|
@@index([website_id, created_at], name: "pageview_website_id_created_at_idx")
|
||||||
@@index([website_id], name: "pageview_website_id_idx")
|
@@index([website_id], name: "pageview_website_id_idx")
|
||||||
|
@@index([website_id, session_id, created_at], name: "pageview_website_id_session_id_created_at_idx")
|
||||||
}
|
}
|
||||||
|
|
||||||
model session {
|
model session {
|
||||||
session_id Int @default(autoincrement()) @id
|
session_id Int @id @default(autoincrement())
|
||||||
session_uuid String @unique
|
session_uuid String @unique @db.Uuid
|
||||||
website_id Int
|
website_id Int
|
||||||
created_at DateTime? @default(now())
|
created_at DateTime? @default(now()) @db.Timestamptz(6)
|
||||||
hostname String?
|
hostname String? @db.VarChar(100)
|
||||||
browser String?
|
browser String? @db.VarChar(20)
|
||||||
os String?
|
os String? @db.VarChar(20)
|
||||||
screen String?
|
device String? @db.VarChar(20)
|
||||||
language String?
|
screen String? @db.VarChar(11)
|
||||||
country String?
|
language String? @db.VarChar(35)
|
||||||
device String?
|
country String? @db.Char(2)
|
||||||
website website @relation(fields: [website_id], references: [website_id])
|
website website @relation(fields: [website_id], references: [website_id])
|
||||||
event event[]
|
event event[]
|
||||||
pageview pageview[]
|
pageview pageview[]
|
||||||
@ -69,13 +71,13 @@ model session {
|
|||||||
}
|
}
|
||||||
|
|
||||||
model website {
|
model website {
|
||||||
website_id Int @default(autoincrement()) @id
|
website_id Int @id @default(autoincrement())
|
||||||
website_uuid String @unique
|
website_uuid String @unique @db.Uuid
|
||||||
name String
|
|
||||||
created_at DateTime? @default(now())
|
|
||||||
user_id Int
|
user_id Int
|
||||||
domain String?
|
name String @db.VarChar(100)
|
||||||
share_id String? @unique
|
domain String? @db.VarChar(500)
|
||||||
|
share_id String? @unique @db.VarChar(64)
|
||||||
|
created_at DateTime? @default(now()) @db.Timestamptz(6)
|
||||||
account account @relation(fields: [user_id], references: [user_id])
|
account account @relation(fields: [user_id], references: [user_id])
|
||||||
event event[]
|
event event[]
|
||||||
pageview pageview[]
|
pageview pageview[]
|
||||||
|
30
prisma/seed.js
Normal file
30
prisma/seed.js
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
const bcrypt = require('bcrypt');
|
||||||
|
const { PrismaClient } = require('@prisma/client');
|
||||||
|
const prisma = new PrismaClient();
|
||||||
|
const SALT_ROUNDS = 10;
|
||||||
|
|
||||||
|
const hashPassword = password => {
|
||||||
|
return bcrypt.hash(password, SALT_ROUNDS);
|
||||||
|
};
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
const password = await hashPassword(process.env.ADMIN_PASSWORD || 'umami');
|
||||||
|
await prisma.account.upsert({
|
||||||
|
where: { username: 'admin' },
|
||||||
|
update: {},
|
||||||
|
create: {
|
||||||
|
username: 'admin',
|
||||||
|
password: password,
|
||||||
|
is_admin: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
main()
|
||||||
|
.catch(e => {
|
||||||
|
console.error(e);
|
||||||
|
process.exit(1);
|
||||||
|
})
|
||||||
|
.finally(async () => {
|
||||||
|
await prisma.$disconnect();
|
||||||
|
});
|
1
public/country/ms-MY.json
Normal file
1
public/country/ms-MY.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"AF":"Afghanistan","ZA":"Afrika Selatan","AL":"Albania","DZ":"Algeria","US":"Amerika Syarikat","AD":"Andorra","AO":"Angola","AI":"Anguilla","AQ":"Antartika","AG":"Antigua dan Barbuda","SA":"Arab Saudi","AR":"Argentina","AM":"Armenia","AW":"Aruba","AU":"Australia","AT":"Austria","AZ":"Azerbaijan","BS":"Bahamas","BH":"Bahrain","BD":"Bangladesh","BB":"Barbados","NL":"Belanda","BQ":"Belanda Caribbean","BY":"Belarus","BE":"Belgium","BZ":"Belize","BJ":"Benin","BM":"Bermuda","BT":"Bhutan","BO":"Bolivia","BA":"Bosnia dan Herzegovina","BW":"Botswana","BR":"Brazil","BN":"Brunei","BG":"Bulgaria","BF":"Burkina Faso","BI":"Burundi","CM":"Cameroon","CV":"Cape Verde","TD":"Chad","CL":"Chile","CN":"China","CO":"Colombia","KM":"Comoros","CG":"Congo - Brazzaville","CD":"Congo - Kinshasa","CR":"Costa Rica","CI":"Cote d\u2019Ivoire","HR":"Croatia","CU":"Cuba","CW":"Curacao","CY":"Cyprus","CZ":"Czechia","DK":"Denmark","DJ":"Djibouti","DM":"Dominica","EC":"Ecuador","SV":"El Salvador","AE":"Emiriah Arab Bersatu","ER":"Eritrea","EE":"Estonia","ET":"Ethiopia","FJ":"Fiji","PH":"Filipina","FI":"Finland","GA":"Gabon","GM":"Gambia","GE":"Georgia","GH":"Ghana","GI":"Gibraltar","GR":"Greece","GL":"Greenland","GD":"Grenada","GP":"Guadeloupe","GU":"Guam","GT":"Guatemala","GG":"Guernsey","GF":"Guiana Perancis","GN":"Guinea","GW":"Guinea Bissau","GQ":"Guinea Khatulistiwa","GY":"Guyana","HT":"Haiti","HN":"Honduras","HK":"Hong Kong SAR China","HU":"Hungary","IS":"Iceland","IN":"India","ID":"Indonesia","IR":"Iran","IQ":"Iraq","IE":"Ireland","IM":"Isle of Man","IL":"Israel","IT":"Itali","JM":"Jamaica","JP":"Jepun","DE":"Jerman","JE":"Jersey","JO":"Jordan","CA":"Kanada","KZ":"Kazakhstan","KH":"Kemboja","KE":"Kenya","AX":"Kepulauan Aland","KY":"Kepulauan Cayman","CC":"Kepulauan Cocos (Keeling)","CK":"Kepulauan Cook","FK":"Kepulauan Falkland","FO":"Kepulauan Faroe","GS":"Kepulauan Georgia Selatan & Sandwich Selatan","HM":"Kepulauan Heard & McDonald","MP":"Kepulauan Mariana Utara","MH":"Kepulauan Marshall","PN":"Kepulauan Pitcairn","SB":"Kepulauan Solomon","UM":"Kepulauan Terpencil A.S.","TC":"Kepulauan Turks dan Caicos","VI":"Kepulauan Virgin A.S.","VG":"Kepulauan Virgin British","KI":"Kiribati","KR":"Korea Selatan","KP":"Korea Utara","VA":"Kota Vatican","KW":"Kuwait","KG":"Kyrgyzstan","LA":"Laos","LV":"Latvia","LS":"Lesotho","LR":"Liberia","LY":"Libya","LI":"Liechtenstein","LT":"Lithuania","LB":"Lubnan","LU":"Luxembourg","MO":"Macau SAR China","MK":"Macedonia Utara","MG":"Madagaskar","MA":"Maghribi","MW":"Malawi","MY":"Malaysia","MV":"Maldives","ML":"Mali","MT":"Malta","MQ":"Martinique","MR":"Mauritania","MU":"Mauritius","YT":"Mayotte","EG":"Mesir","MX":"Mexico","FM":"Micronesia","MD":"Moldova","MC":"Monaco","MN":"Mongolia","ME":"Montenegro","MS":"Montserrat","MZ":"Mozambique","MM":"Myanmar (Burma)","NA":"Namibia","NR":"Nauru","NP":"Nepal","NC":"New Caledonia","NZ":"New Zealand","NI":"Nicaragua","NE":"Niger","NG":"Nigeria","NU":"Niue","NO":"Norway","OM":"Oman","PK":"Pakistan","PW":"Palau","PA":"Panama","PG":"Papua New Guinea","PY":"Paraguay","FR":"Perancis","PE":"Peru","PL":"Poland","PF":"Polinesia Perancis","PT":"Portugal","PR":"Puerto Rico","BV":"Pulau Bouvet","CX":"Pulau Krismas","NF":"Pulau Norfolk","QA":"Qatar","CF":"Republik Afrika Tengah","DO":"Republik Dominica","RE":"Reunion","RO":"Romania","RU":"Rusia","RW":"Rwanda","EH":"Sahara Barat","SH":"Saint Helena","KN":"Saint Kitts dan Nevis","LC":"Saint Lucia","MF":"Saint Martin","PM":"Saint Pierre dan Miquelon","VC":"Saint Vincent dan Grenadines","WS":"Samoa","AS":"Samoa Amerika","SM":"San Marino","ST":"Sao Tome dan Principe","SN":"Senegal","ES":"Sepanyol","RS":"Serbia","SC":"Seychelles","SL":"Sierra Leone","SG":"Singapura","SX":"Sint Maarten","SK":"Slovakia","SI":"Slovenia","SO":"Somalia","LK":"Sri Lanka","BL":"St. Barthelemy","SD":"Sudan","SS":"Sudan Selatan","SR":"Surinam","SJ":"Svalbard dan Jan Mayen","SZ":"Swaziland","SE":"Sweden","CH":"Switzerland","SY":"Syria","TW":"Taiwan","TJ":"Tajikistan","TZ":"Tanzania","TH":"Thailand","TL":"Timor-Leste","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"Trinidad dan Tobago","TN":"Tunisia","TR":"Turki","TM":"Turkmenistan","TV":"Tuvalu","UG":"Uganda","UA":"Ukraine","GB":"United Kingdom","UY":"Uruguay","UZ":"Uzbekistan","VU":"Vanuatu","VE":"Venezuela","VN":"Vietnam","WF":"Wallis dan Futuna","IO":"Wilayah Lautan Hindi British","PS":"Wilayah Palestin","TF":"Wilayah Selatan Perancis","YE":"Yaman","ZM":"Zambia","ZW":"Zimbabwe"}
|
1
public/country/sk-SK.json
Normal file
1
public/country/sk-SK.json
Normal file
File diff suppressed because one or more lines are too long
180
public/datamaps.world.json
Normal file
180
public/datamaps.world.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -109,6 +109,7 @@ function mockPageView(
|
|||||||
hostname: 'localhost',
|
hostname: 'localhost',
|
||||||
screen: '1680x1050',
|
screen: '1680x1050',
|
||||||
url: '/LOADTESTING',
|
url: '/LOADTESTING',
|
||||||
|
referrer: '/REFERRER',
|
||||||
},
|
},
|
||||||
) {
|
) {
|
||||||
return {
|
return {
|
||||||
|
282
yarn.lock
282
yarn.lock
@ -1157,41 +1157,33 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
tslib "^2.0.1"
|
tslib "^2.0.1"
|
||||||
|
|
||||||
"@formatjs/ecma402-abstract@1.5.2":
|
"@formatjs/ecma402-abstract@1.6.4":
|
||||||
version "1.5.2"
|
version "1.6.4"
|
||||||
resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.5.2.tgz#6c20c24f814ebf8e9dd46e34310a67895853a931"
|
resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.6.4.tgz#cff5ef03837fb6bae70b16d04940213c17e87884"
|
||||||
integrity sha512-rscxoLyIwH2x+l15Z4eD580ioO3CkFVoWDLgDtgiOnWzDzpL5EigDRg9V4mINb8W6bQRT1xnCxiRwvw3bgvqrA==
|
integrity sha512-ukFjGD9dLsxcD9D5AEshJqQElPQeUAlTALT/lzIV6OcYojyuU81gw/uXDUOrs6XW79jtOJwQDkLqHbCJBJMOTw==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^2.0.1"
|
tslib "^2.1.0"
|
||||||
|
|
||||||
"@formatjs/ecma402-abstract@^1.2.2":
|
"@formatjs/ecma402-abstract@^1.2.2":
|
||||||
version "1.2.2"
|
version "1.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.2.2.tgz#4810bdbd696d3805c535fd0620b7c8f45ab3164f"
|
resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.2.2.tgz#4810bdbd696d3805c535fd0620b7c8f45ab3164f"
|
||||||
integrity sha512-mLCoAPGlXCVskb/ojBO6iurGqwo6sZvAl8pRC4N25bz4LPWExAM9LsOo057zN3Br1JxUM3RZHG4YGnVt+nSRYQ==
|
integrity sha512-mLCoAPGlXCVskb/ojBO6iurGqwo6sZvAl8pRC4N25bz4LPWExAM9LsOo057zN3Br1JxUM3RZHG4YGnVt+nSRYQ==
|
||||||
|
|
||||||
"@formatjs/intl-datetimeformat@3.2.7":
|
"@formatjs/intl-displaynames@4.0.12":
|
||||||
version "3.2.7"
|
version "4.0.12"
|
||||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-datetimeformat/-/intl-datetimeformat-3.2.7.tgz#2cd32add6d79242394c3f5057b8b6e385f8665b6"
|
resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-4.0.12.tgz#9af9992e544aa96b32c3a4994d6fef878e0376c9"
|
||||||
integrity sha512-DN3y19Hek9DhGSlwXhjgTQIHOf65XrPc7MbVw6JVnYUlsI/rkKV3fQFcEU77zCPHQjBqaM6R2OCkI4lj+uFrSA==
|
integrity sha512-2f3nf5IcPYk2SCS83rJoV5y47OTL+YtHDa5G42KDgSA8ZgmgkN5OaYs3WF6a2RweMG9jp4LCTUmqS42LcAhJSw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@formatjs/ecma402-abstract" "1.5.2"
|
"@formatjs/ecma402-abstract" "1.6.4"
|
||||||
tslib "^2.0.1"
|
tslib "^2.1.0"
|
||||||
|
|
||||||
"@formatjs/intl-displaynames@4.0.5":
|
"@formatjs/intl-listformat@5.0.13":
|
||||||
version "4.0.5"
|
version "5.0.13"
|
||||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-4.0.5.tgz#2102a2bc984ce8391bf1216f6cde8d68d9f741ae"
|
resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-5.0.13.tgz#5b13057a12642089108ddf4316bab976319fd941"
|
||||||
integrity sha512-+01kv4Lqao245SrNW1uhYjzYlUgg8xLjxqSlbWrkAplwGBG9JNnmOze1Jmv3ls+cUe9KA0oifL6Yn28u7Gm78g==
|
integrity sha512-z4vZ5FX6dsL2fbO7NCmmJXKXH9p0gubzZVSsmCOUBIuy6rODLD8kE2LVnefd4wnXEJi5/fAnwGT2NMjirWa71g==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@formatjs/ecma402-abstract" "1.5.2"
|
"@formatjs/ecma402-abstract" "1.6.4"
|
||||||
tslib "^2.0.1"
|
tslib "^2.1.0"
|
||||||
|
|
||||||
"@formatjs/intl-listformat@5.0.5":
|
|
||||||
version "5.0.5"
|
|
||||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-5.0.5.tgz#a00b5b9c5dc140fa81cba8dea7356fe40e91fb01"
|
|
||||||
integrity sha512-YHmAlmUkrnoJvZtUnEuxC0N8dWPABRNDdSJksjKC1xjdpZrzHplsiY4ugw7eO56lLjsBQ1DPOAfH10iZDtmzxA==
|
|
||||||
dependencies:
|
|
||||||
"@formatjs/ecma402-abstract" "1.5.2"
|
|
||||||
tslib "^2.0.1"
|
|
||||||
|
|
||||||
"@formatjs/intl-numberformat@^5.5.2":
|
"@formatjs/intl-numberformat@^5.5.2":
|
||||||
version "5.6.2"
|
version "5.6.2"
|
||||||
@ -1200,28 +1192,18 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@formatjs/ecma402-abstract" "^1.2.2"
|
"@formatjs/ecma402-abstract" "^1.2.2"
|
||||||
|
|
||||||
"@formatjs/intl-relativetimeformat@8.0.4":
|
"@formatjs/intl@1.8.5":
|
||||||
version "8.0.4"
|
version "1.8.5"
|
||||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-8.0.4.tgz#eca86236320802c7c7d0f7500573ebab679d607d"
|
resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-1.8.5.tgz#2c57b2a344033285270e23b35776f993bf49eb27"
|
||||||
integrity sha512-MUxsXa/cukBa4+8waUS7rQcVz0CKt7UufU9nXcUGh1FR85urqh42dz+3bM2klg51P5Mhove2mecQGeFwOhFYBQ==
|
integrity sha512-0ZAhhf3TgPwcTKITjYm31n9pIIXTks15fP+Uano0a5sTELKMHTaTPIwU7VHaodygtZvJgThIggK7zDNxng1/Jg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@formatjs/ecma402-abstract" "1.5.2"
|
"@formatjs/ecma402-abstract" "1.6.4"
|
||||||
tslib "^2.0.1"
|
"@formatjs/intl-displaynames" "4.0.12"
|
||||||
|
"@formatjs/intl-listformat" "5.0.13"
|
||||||
"@formatjs/intl@1.6.8":
|
|
||||||
version "1.6.8"
|
|
||||||
resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-1.6.8.tgz#c147cb3b5779e5a37bda791bc09be97a863d249a"
|
|
||||||
integrity sha512-cN4pUXFoUvbbLk9nq46QkDTSLzh8KN2ddK+Fi3py9Yv28xFQBl1HrSIZM4P8CFolzfoB3i7HsdI/yq0WocOx1A==
|
|
||||||
dependencies:
|
|
||||||
"@formatjs/ecma402-abstract" "1.5.2"
|
|
||||||
"@formatjs/intl-datetimeformat" "3.2.7"
|
|
||||||
"@formatjs/intl-displaynames" "4.0.5"
|
|
||||||
"@formatjs/intl-listformat" "5.0.5"
|
|
||||||
"@formatjs/intl-relativetimeformat" "8.0.4"
|
|
||||||
fast-memoize "^2.5.2"
|
fast-memoize "^2.5.2"
|
||||||
intl-messageformat "9.4.7"
|
intl-messageformat "9.5.4"
|
||||||
intl-messageformat-parser "6.3.2"
|
intl-messageformat-parser "6.4.4"
|
||||||
tslib "^2.0.1"
|
tslib "^2.1.0"
|
||||||
|
|
||||||
"@formatjs/ts-transformer@2.12.11":
|
"@formatjs/ts-transformer@2.12.11":
|
||||||
version "2.12.11"
|
version "2.12.11"
|
||||||
@ -1260,20 +1242,20 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.1.0.tgz#6c9eafc78c1529248f8f4d92b0799a712b6052c6"
|
resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.1.0.tgz#6c9eafc78c1529248f8f4d92b0799a712b6052c6"
|
||||||
integrity sha512-i9YbZPN3QgfighY/1X1Pu118VUz2Fmmhd6b2n0/O8YVgGGfw0FbUYoA97k7FkpGJ+pLCFEDLUmAPPV4D1kpeFw==
|
integrity sha512-i9YbZPN3QgfighY/1X1Pu118VUz2Fmmhd6b2n0/O8YVgGGfw0FbUYoA97k7FkpGJ+pLCFEDLUmAPPV4D1kpeFw==
|
||||||
|
|
||||||
"@next/env@10.0.8":
|
"@next/env@10.0.9":
|
||||||
version "10.0.8"
|
version "10.0.9"
|
||||||
resolved "https://registry.yarnpkg.com/@next/env/-/env-10.0.8.tgz#3306c9de20ef187438affbafce0ef966c9e43c3b"
|
resolved "https://registry.yarnpkg.com/@next/env/-/env-10.0.9.tgz#455fd364c8a5ee012b2cd4406d5294164990706d"
|
||||||
integrity sha512-vWdxAHD6gJn52tN5bxj1VoRgu5lNtRPc/HyYf7V014k2GZ9eKhqoFQGSSMNGHB7WgdUxLVw75+o9Ek9ClOOAjw==
|
integrity sha512-MERX3DY5u0Ed29eAsXeFBCZlFAGBtmjf7+Nht0hfgB25MPKKkIbC/0MRPcX/PQcAgLHsAHO6ay1u9xKzR4Vzjw==
|
||||||
|
|
||||||
"@next/polyfill-module@10.0.8":
|
"@next/polyfill-module@10.0.9":
|
||||||
version "10.0.8"
|
version "10.0.9"
|
||||||
resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-10.0.8.tgz#1d033f390389591f227499e286911e3db14c484b"
|
resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-10.0.9.tgz#0c21442dd73ec31ae30ac560bc5c5fdce068a98f"
|
||||||
integrity sha512-JCUGB4/SKQ4LXniv7LKGrpW+W2DGH/CLkrgXgSo/Ze+EJdMDLxC/VFhiuW+TgAaAWLE4gryoswlZBNyHtkPGQA==
|
integrity sha512-kPOP6ku/e8zdrK8hwxOrjUrPLcdDEj12huLHVz+DZU+20q6VlhMOtR8aKHW1460L4LoLE/DAa7YyIuxtArhDRg==
|
||||||
|
|
||||||
"@next/react-dev-overlay@10.0.8":
|
"@next/react-dev-overlay@10.0.9":
|
||||||
version "10.0.8"
|
version "10.0.9"
|
||||||
resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-10.0.8.tgz#a8e841647b74f9720cc60d3e3bd3da225ad12533"
|
resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-10.0.9.tgz#5162d66c05b2a0ca0d155f7e6663e8134d9d4ac9"
|
||||||
integrity sha512-ygVsvkzYTYIuME+dUUSjCxbNjrJ+Up9Y+CrWEmSSk6HuxajUvrB9vN6RT+PeAzEOQ5er1sWxmVHVdPknQPVWyQ==
|
integrity sha512-JsSh2Y004MEuPYqBD9eTl4PVZIjSzSy2GcD7MrW/gQcExYNpeMIJAbh8/OcyO1t+OnQeIHF5s/xTMsDHBGNcew==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/code-frame" "7.12.11"
|
"@babel/code-frame" "7.12.11"
|
||||||
anser "1.4.9"
|
anser "1.4.9"
|
||||||
@ -1287,10 +1269,10 @@
|
|||||||
stacktrace-parser "0.1.10"
|
stacktrace-parser "0.1.10"
|
||||||
strip-ansi "6.0.0"
|
strip-ansi "6.0.0"
|
||||||
|
|
||||||
"@next/react-refresh-utils@10.0.8":
|
"@next/react-refresh-utils@10.0.9":
|
||||||
version "10.0.8"
|
version "10.0.9"
|
||||||
resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-10.0.8.tgz#6129d633e2c0a9b5760de002e998932f08c8baae"
|
resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-10.0.9.tgz#cdf9e41f8854c113397853daf78469b0c8140f14"
|
||||||
integrity sha512-ZMO77Xs2ioGV/nZB4GRDHgsNT2jhOp+cZIh6c7wf0xw9o/1KoTWN8nxWzwU/laAtkoSS+E6YdhuR4Mw3Ar3CSg==
|
integrity sha512-LSoKnM+fI9MHHew+mBg1w2e4/gjwPQsI+mDTzmfwdBwje+j9U2Int6XOZftMqBPXSlL04vjC9SRBkp0+3h8cNA==
|
||||||
|
|
||||||
"@nodelib/fs.scandir@2.1.3":
|
"@nodelib/fs.scandir@2.1.3":
|
||||||
version "2.1.3"
|
version "2.1.3"
|
||||||
@ -1330,29 +1312,22 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@panva/asn1.js/-/asn1.js-1.0.0.tgz#dd55ae7b8129e02049f009408b97c61ccf9032f6"
|
resolved "https://registry.yarnpkg.com/@panva/asn1.js/-/asn1.js-1.0.0.tgz#dd55ae7b8129e02049f009408b97c61ccf9032f6"
|
||||||
integrity sha512-UdkG3mLEqXgnlKsWanWcgb6dOjUzJ+XC5f+aWw30qrtjxeNUSfKX1cd5FBzOaXQumoe9nIqeZUvrRJS03HCCtw==
|
integrity sha512-UdkG3mLEqXgnlKsWanWcgb6dOjUzJ+XC5f+aWw30qrtjxeNUSfKX1cd5FBzOaXQumoe9nIqeZUvrRJS03HCCtw==
|
||||||
|
|
||||||
"@prisma/cli@2.18.0":
|
"@prisma/client@2.19.0":
|
||||||
version "2.18.0"
|
version "2.19.0"
|
||||||
resolved "https://registry.yarnpkg.com/@prisma/cli/-/cli-2.18.0.tgz#33ba55977a198b7cdc2b1e11bd58e3280fd3c707"
|
resolved "https://registry.yarnpkg.com/@prisma/client/-/client-2.19.0.tgz#a45f17a59fd109e95b61bf4b56d4a7642169ec0e"
|
||||||
integrity sha512-40524ZtDEivaHG4GcCXM8QOZSUg+wTj7tGe0HziXiejgFytY2vJVkEbaCKSY8fIxXso+nPKKKZYT5IJ3fSuXjg==
|
integrity sha512-QK4M8TjJh1QesyO9aLM7DeAQUi5+UnNHpEAm5kwqBO1cq/4Ag5yU9ladctJFJleEE5BLewXHwV2t9A+VfCZslg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@prisma/engines" "2.18.0-34.da6fafb57b24e0b61ca20960c64e2d41f9e8cff1"
|
"@prisma/engines-version" "2.19.0-39.c1455d0b443d66b0d9db9bcb1bb9ee0d5bbc511d"
|
||||||
|
|
||||||
"@prisma/client@2.18.0":
|
"@prisma/engines-version@2.19.0-39.c1455d0b443d66b0d9db9bcb1bb9ee0d5bbc511d":
|
||||||
version "2.18.0"
|
version "2.19.0-39.c1455d0b443d66b0d9db9bcb1bb9ee0d5bbc511d"
|
||||||
resolved "https://registry.yarnpkg.com/@prisma/client/-/client-2.18.0.tgz#bff0a206f3caf7525583c703146f835dee0b5ad6"
|
resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-2.19.0-39.c1455d0b443d66b0d9db9bcb1bb9ee0d5bbc511d.tgz#a7f80d481ec6cb8e2975ab530664d4ca5fc9eba6"
|
||||||
integrity sha512-tRu0bdYNKIdWnFIbtgUmZyPgtDLV3AgwO8NYXirlbSn5poygbSaV87UfOBh1NmrvjS9EBP5dQv+bs62sVB84hA==
|
integrity sha512-NzhbwC4iMbRQwJxdhNQX6eaVcOuNGtHRk6aesWE4KMf/YmlW5kfi3HDy7WZ/C4P0Iyn9oURDuk+xZV6QDUVjTw==
|
||||||
dependencies:
|
|
||||||
"@prisma/engines-version" "2.18.0-34.da6fafb57b24e0b61ca20960c64e2d41f9e8cff1"
|
|
||||||
|
|
||||||
"@prisma/engines-version@2.18.0-34.da6fafb57b24e0b61ca20960c64e2d41f9e8cff1":
|
"@prisma/engines@2.19.0-39.c1455d0b443d66b0d9db9bcb1bb9ee0d5bbc511d":
|
||||||
version "2.18.0-34.da6fafb57b24e0b61ca20960c64e2d41f9e8cff1"
|
version "2.19.0-39.c1455d0b443d66b0d9db9bcb1bb9ee0d5bbc511d"
|
||||||
resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-2.18.0-34.da6fafb57b24e0b61ca20960c64e2d41f9e8cff1.tgz#c595c9d85ab2c67b67d0eb7bfbb0a3b05b41fdbe"
|
resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-2.19.0-39.c1455d0b443d66b0d9db9bcb1bb9ee0d5bbc511d.tgz#db2809a6f7f18584e3ca89b1f5bad884155629ec"
|
||||||
integrity sha512-+Eljsb1XItfq9B6vRTA1Oe4CQOGAxbsjtPAIORZwaU4Gt9RybnXapFlrQ8Mac89PXeSgcO4RnPSLEYhcd3kSVg==
|
integrity sha512-rEWpaG7wZvPuWJC5SwkBB/Iwue//oC5yv58Mse7r+ibtgkA7vGdWc1bFDQ32DT9tDL5WSC6bBwqEASGV/1Gm1Q==
|
||||||
|
|
||||||
"@prisma/engines@2.18.0-34.da6fafb57b24e0b61ca20960c64e2d41f9e8cff1":
|
|
||||||
version "2.18.0-34.da6fafb57b24e0b61ca20960c64e2d41f9e8cff1"
|
|
||||||
resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-2.18.0-34.da6fafb57b24e0b61ca20960c64e2d41f9e8cff1.tgz#647a7e2735b08fe28425be135120bb54ea408256"
|
|
||||||
integrity sha512-Q5q5mQePRFSSGbd/14Ogq1RNkebbbwskiTbWsvrSq14t9Us0rC9Xsecd4mr4rEAy8Yd6sXEJW4czZ/88DGzz2w==
|
|
||||||
|
|
||||||
"@reduxjs/toolkit@^1.5.0":
|
"@reduxjs/toolkit@^1.5.0":
|
||||||
version "1.5.0"
|
version "1.5.0"
|
||||||
@ -1582,7 +1557,7 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
"@types/hoist-non-react-statics@^3.3.1":
|
"@types/hoist-non-react-statics@^3.3.0", "@types/hoist-non-react-statics@^3.3.1":
|
||||||
version "3.3.1"
|
version "3.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f"
|
resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f"
|
||||||
integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==
|
integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==
|
||||||
@ -1649,6 +1624,16 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24"
|
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24"
|
||||||
integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==
|
integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==
|
||||||
|
|
||||||
|
"@types/react-redux@^7.1.16":
|
||||||
|
version "7.1.16"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.16.tgz#0fbd04c2500c12105494c83d4a3e45c084e3cb21"
|
||||||
|
integrity sha512-f/FKzIrZwZk7YEO9E1yoxIuDNRiDducxkFlkw/GNMGEnK9n4K8wJzlJBghpSuOVDgEUHoDkDF7Gi9lHNQR4siw==
|
||||||
|
dependencies:
|
||||||
|
"@types/hoist-non-react-statics" "^3.3.0"
|
||||||
|
"@types/react" "*"
|
||||||
|
hoist-non-react-statics "^3.3.0"
|
||||||
|
redux "^4.0.0"
|
||||||
|
|
||||||
"@types/react@*":
|
"@types/react@*":
|
||||||
version "16.9.49"
|
version "16.9.49"
|
||||||
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.49.tgz#09db021cf8089aba0cdb12a49f8021a69cce4872"
|
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.49.tgz#09db021cf8089aba0cdb12a49f8021a69cce4872"
|
||||||
@ -4126,13 +4111,13 @@ intl-messageformat-parser@6.1.0:
|
|||||||
"@formatjs/ecma402-abstract" "1.5.0"
|
"@formatjs/ecma402-abstract" "1.5.0"
|
||||||
tslib "^2.0.1"
|
tslib "^2.0.1"
|
||||||
|
|
||||||
intl-messageformat-parser@6.3.2:
|
intl-messageformat-parser@6.4.4:
|
||||||
version "6.3.2"
|
version "6.4.4"
|
||||||
resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-6.3.2.tgz#5104d23b175f1c9aaccacdc98d558930b6890d00"
|
resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-6.4.4.tgz#abbd94e96dc4ff41607376bfab024553450cc1e0"
|
||||||
integrity sha512-n6To2TG0ictSMDBXvenS+BalJDzbIAT/e6ByPXPEBhaouVEaHbqII02gZbusAoEUI3Xq19bKyrDkkOBP0PapIA==
|
integrity sha512-7AaFKNZEfzLQR6+jivOuz9e7yA8ka5KrmLebgY4QHTRLf8r64dp3LjnW98LkBWjdk8GK0sawD2dHDqW++A/pXA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@formatjs/ecma402-abstract" "1.5.2"
|
"@formatjs/ecma402-abstract" "1.6.4"
|
||||||
tslib "^2.0.1"
|
tslib "^2.1.0"
|
||||||
|
|
||||||
intl-messageformat-parser@^5.3.7:
|
intl-messageformat-parser@^5.3.7:
|
||||||
version "5.5.1"
|
version "5.5.1"
|
||||||
@ -4148,14 +4133,14 @@ intl-messageformat-parser@^6.0.7:
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@formatjs/ecma402-abstract" "^1.2.2"
|
"@formatjs/ecma402-abstract" "^1.2.2"
|
||||||
|
|
||||||
intl-messageformat@9.4.7:
|
intl-messageformat@9.5.4:
|
||||||
version "9.4.7"
|
version "9.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-9.4.7.tgz#02696a819ade1ae847639335199e3b6d8ba825c9"
|
resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-9.5.4.tgz#3e55b02a18224ca42701ea2dba54f8eed67accca"
|
||||||
integrity sha512-BUGRv2MI2m4CQFcZH09pf+zl1msaCe+G4e63dPT0wEEuySOMfoEilGftOJ/jxnOvDs6udD2OVCRUuv2/xt8bag==
|
integrity sha512-SmlachKBr6IaV21zcPWsEwD5KtmgSKtaHW0ud0+88nuDK8XiFeDqIFWESkwj6Hjoixj4AVErijZsLBwm49SaEA==
|
||||||
dependencies:
|
dependencies:
|
||||||
fast-memoize "^2.5.2"
|
fast-memoize "^2.5.2"
|
||||||
intl-messageformat-parser "6.3.2"
|
intl-messageformat-parser "6.4.4"
|
||||||
tslib "^2.0.1"
|
tslib "^2.1.0"
|
||||||
|
|
||||||
is-alphabetical@^1.0.0:
|
is-alphabetical@^1.0.0:
|
||||||
version "1.0.4"
|
version "1.0.4"
|
||||||
@ -5034,17 +5019,17 @@ next-tick@~1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
|
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
|
||||||
integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
|
integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
|
||||||
|
|
||||||
next@^10.0.8:
|
next@^10.0.9:
|
||||||
version "10.0.8"
|
version "10.0.9"
|
||||||
resolved "https://registry.yarnpkg.com/next/-/next-10.0.8.tgz#a2232c11ffad974d67f3d572b8db2acaa5ddedd7"
|
resolved "https://registry.yarnpkg.com/next/-/next-10.0.9.tgz#ad5d8e0368fee8363cdfd64d22dfbf71f683ae66"
|
||||||
integrity sha512-iDY65ce4Prn/9EnQpJGFMb5QJvtGWzZPk6KQqT7vDNu4D+jkivkk9NaAs/k1hR73pXdJHmhHer1s0YxLSghAKQ==
|
integrity sha512-HyoVjYydcM6LaFAUOHSxVQCcKOsIimVO/IKXCuWUu1rr6DDgXbWNg/8ckH084qD46MOYlLzjViiZ3KCmNQL4Cw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "7.12.5"
|
"@babel/runtime" "7.12.5"
|
||||||
"@hapi/accept" "5.0.1"
|
"@hapi/accept" "5.0.1"
|
||||||
"@next/env" "10.0.8"
|
"@next/env" "10.0.9"
|
||||||
"@next/polyfill-module" "10.0.8"
|
"@next/polyfill-module" "10.0.9"
|
||||||
"@next/react-dev-overlay" "10.0.8"
|
"@next/react-dev-overlay" "10.0.9"
|
||||||
"@next/react-refresh-utils" "10.0.8"
|
"@next/react-refresh-utils" "10.0.9"
|
||||||
"@opentelemetry/api" "0.14.0"
|
"@opentelemetry/api" "0.14.0"
|
||||||
ast-types "0.13.2"
|
ast-types "0.13.2"
|
||||||
browserslist "4.16.1"
|
browserslist "4.16.1"
|
||||||
@ -6053,6 +6038,13 @@ pretty-format@^23.0.1:
|
|||||||
ansi-regex "^3.0.0"
|
ansi-regex "^3.0.0"
|
||||||
ansi-styles "^3.2.0"
|
ansi-styles "^3.2.0"
|
||||||
|
|
||||||
|
prisma@2.19.0:
|
||||||
|
version "2.19.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/prisma/-/prisma-2.19.0.tgz#2c14f9cbbfb0ab69c8a9473e16736759713d29ad"
|
||||||
|
integrity sha512-iartCNVrtR4XT20ABN3zrSi3R/pCBe75Y0ZH8681QIGm8qjRQzf3DnbscPZgZ9iY4KFuVxL8ZrBQVDmRhpN0EQ==
|
||||||
|
dependencies:
|
||||||
|
"@prisma/engines" "2.19.0-39.c1455d0b443d66b0d9db9bcb1bb9ee0d5bbc511d"
|
||||||
|
|
||||||
process-nextick-args@~2.0.0:
|
process-nextick-args@~2.0.0:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
|
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
|
||||||
@ -6180,49 +6172,47 @@ rc@^1.2.7:
|
|||||||
minimist "^1.2.0"
|
minimist "^1.2.0"
|
||||||
strip-json-comments "~2.0.1"
|
strip-json-comments "~2.0.1"
|
||||||
|
|
||||||
react-dom@^17.0.1:
|
react-dom@^17.0.2:
|
||||||
version "17.0.1"
|
version "17.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.1.tgz#1de2560474ec9f0e334285662ede52dbc5426fc6"
|
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23"
|
||||||
integrity sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug==
|
integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==
|
||||||
dependencies:
|
dependencies:
|
||||||
loose-envify "^1.1.0"
|
loose-envify "^1.1.0"
|
||||||
object-assign "^4.1.1"
|
object-assign "^4.1.1"
|
||||||
scheduler "^0.20.1"
|
scheduler "^0.20.2"
|
||||||
|
|
||||||
react-fast-compare@^2.0.1:
|
react-fast-compare@^2.0.1:
|
||||||
version "2.0.4"
|
version "2.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9"
|
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9"
|
||||||
integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==
|
integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==
|
||||||
|
|
||||||
react-intl@^5.12.3:
|
react-intl@^5.14.1:
|
||||||
version "5.12.3"
|
version "5.14.1"
|
||||||
resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-5.12.3.tgz#edac4339ac28feb71923c5ec5965aa0c51672b4c"
|
resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-5.14.1.tgz#f600d18948f6b4e6bc8d717a7792e46e698f3ffd"
|
||||||
integrity sha512-xzqsorTC7LYYS29bokeg3HuEL4gZ4xhrrme7PHx+wum4S6d+TEMERJbdsJTrU95ClWiqZ8u7BsT7Ep+0yTXkyw==
|
integrity sha512-HC0fpaxnlc0Eua9f7odV04P1nO54M0NKlT3w6o/LFGEk49AoNj8axmBViQYeBCW3NdaZSbXN58VkFcvMEBuyfw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@formatjs/ecma402-abstract" "1.5.2"
|
"@formatjs/ecma402-abstract" "1.6.4"
|
||||||
"@formatjs/intl" "1.6.8"
|
"@formatjs/intl" "1.8.5"
|
||||||
"@formatjs/intl-displaynames" "4.0.5"
|
"@formatjs/intl-displaynames" "4.0.12"
|
||||||
"@formatjs/intl-listformat" "5.0.5"
|
"@formatjs/intl-listformat" "5.0.13"
|
||||||
"@formatjs/intl-relativetimeformat" "8.0.4"
|
|
||||||
"@types/hoist-non-react-statics" "^3.3.1"
|
"@types/hoist-non-react-statics" "^3.3.1"
|
||||||
fast-memoize "^2.5.2"
|
|
||||||
hoist-non-react-statics "^3.3.2"
|
hoist-non-react-statics "^3.3.2"
|
||||||
intl-messageformat "9.4.7"
|
intl-messageformat "9.5.4"
|
||||||
intl-messageformat-parser "6.3.2"
|
intl-messageformat-parser "6.4.4"
|
||||||
shallow-equal "^1.2.1"
|
tslib "^2.1.0"
|
||||||
tslib "^2.0.1"
|
|
||||||
|
|
||||||
react-is@16.13.1, react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1:
|
react-is@16.13.1, react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1:
|
||||||
version "16.13.1"
|
version "16.13.1"
|
||||||
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
|
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
|
||||||
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
|
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
|
||||||
|
|
||||||
react-redux@^7.2.2:
|
react-redux@^7.2.3:
|
||||||
version "7.2.2"
|
version "7.2.3"
|
||||||
resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.2.tgz#03862e803a30b6b9ef8582dadcc810947f74b736"
|
resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.3.tgz#4c084618600bb199012687da9e42123cca3f0be9"
|
||||||
integrity sha512-8+CQ1EvIVFkYL/vu6Olo7JFLWop1qRUeb46sGtIMDCSpgwPQq8fPLpirIB0iTqFe9XYEFPHssdX8/UwN6pAkEA==
|
integrity sha512-ZhAmQ1lrK+Pyi0ZXNMUZuYxYAZd59wFuVDGUt536kSGdD0ya9Q7BfsE95E3TsFLE3kOSFp5m6G5qbatE+Ic1+w==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.12.1"
|
"@babel/runtime" "^7.12.1"
|
||||||
|
"@types/react-redux" "^7.1.16"
|
||||||
hoist-non-react-statics "^3.3.2"
|
hoist-non-react-statics "^3.3.2"
|
||||||
loose-envify "^1.4.0"
|
loose-envify "^1.4.0"
|
||||||
prop-types "^15.7.2"
|
prop-types "^15.7.2"
|
||||||
@ -6251,18 +6241,18 @@ react-spring@^8.0.27:
|
|||||||
"@babel/runtime" "^7.3.1"
|
"@babel/runtime" "^7.3.1"
|
||||||
prop-types "^15.5.8"
|
prop-types "^15.5.8"
|
||||||
|
|
||||||
react-tooltip@^4.2.14:
|
react-tooltip@^4.2.17:
|
||||||
version "4.2.14"
|
version "4.2.17"
|
||||||
resolved "https://registry.yarnpkg.com/react-tooltip/-/react-tooltip-4.2.14.tgz#8e06b5926fdf6672e78d8ccadaa16bef40d131d7"
|
resolved "https://registry.yarnpkg.com/react-tooltip/-/react-tooltip-4.2.17.tgz#4884ce253ab298ee395950b24b752282efa8ac5d"
|
||||||
integrity sha512-hS2kAlpjyH5MXL9DaGKsdmEFCIEuMD2RZXkEJeNjmDe05dHpqj93o5JgpmczAgQFk099+JSsnHUDo7pIOuyMDQ==
|
integrity sha512-LzwUbQYzeRyrjbuuCbYUB0dlJpFPGPwigWS052umr1QulcF5N4czabDiWJ+Y585Q7ijvMFuBbeOvnI/azoTusw==
|
||||||
dependencies:
|
dependencies:
|
||||||
prop-types "^15.7.2"
|
prop-types "^15.7.2"
|
||||||
uuid "^7.0.3"
|
uuid "^7.0.3"
|
||||||
|
|
||||||
react-use-measure@^2.0.3:
|
react-use-measure@^2.0.4:
|
||||||
version "2.0.3"
|
version "2.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/react-use-measure/-/react-use-measure-2.0.3.tgz#7b56ae3ca19ccf62326933678625a8ff6b3f90a3"
|
resolved "https://registry.yarnpkg.com/react-use-measure/-/react-use-measure-2.0.4.tgz#cb675b36eaeaf3681b94d5f5e08b2a1e081fedc9"
|
||||||
integrity sha512-57O8Os9MbgFEHuOHOXNdPmBHhXjCBIwtB3YxyrM/MgaX44a1o97Mu9YqiOA6cAF8kXIw4fO3XK0r2Taa4SqaqQ==
|
integrity sha512-7K2HIGaPMl3Q9ZQiEVjen3tRXl4UDda8LiTPy/QxP8dP2rl5gPBhf7mMH6MVjjRNv3loU7sNzey/ycPNnHVTxQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
debounce "^1.2.0"
|
debounce "^1.2.0"
|
||||||
|
|
||||||
@ -6274,10 +6264,10 @@ react-window@^1.8.6:
|
|||||||
"@babel/runtime" "^7.0.0"
|
"@babel/runtime" "^7.0.0"
|
||||||
memoize-one ">=3.1.1 <6"
|
memoize-one ">=3.1.1 <6"
|
||||||
|
|
||||||
react@^17.0.1:
|
react@^17.0.2:
|
||||||
version "17.0.1"
|
version "17.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127"
|
resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
|
||||||
integrity sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==
|
integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==
|
||||||
dependencies:
|
dependencies:
|
||||||
loose-envify "^1.1.0"
|
loose-envify "^1.1.0"
|
||||||
object-assign "^4.1.1"
|
object-assign "^4.1.1"
|
||||||
@ -6634,10 +6624,10 @@ sax@^1.2.4, sax@~1.2.4:
|
|||||||
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
|
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
|
||||||
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
|
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
|
||||||
|
|
||||||
scheduler@^0.20.1:
|
scheduler@^0.20.2:
|
||||||
version "0.20.1"
|
version "0.20.2"
|
||||||
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.1.tgz#da0b907e24026b01181ecbc75efdc7f27b5a000c"
|
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91"
|
||||||
integrity sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw==
|
integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
loose-envify "^1.1.0"
|
loose-envify "^1.1.0"
|
||||||
object-assign "^4.1.1"
|
object-assign "^4.1.1"
|
||||||
@ -6718,11 +6708,6 @@ sha.js@^2.4.0, sha.js@^2.4.8:
|
|||||||
inherits "^2.0.1"
|
inherits "^2.0.1"
|
||||||
safe-buffer "^5.0.1"
|
safe-buffer "^5.0.1"
|
||||||
|
|
||||||
shallow-equal@^1.2.1:
|
|
||||||
version "1.2.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/shallow-equal/-/shallow-equal-1.2.1.tgz#4c16abfa56043aa20d050324efa68940b0da79da"
|
|
||||||
integrity sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==
|
|
||||||
|
|
||||||
shebang-command@^1.2.0:
|
shebang-command@^1.2.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
|
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
|
||||||
@ -7441,6 +7426,11 @@ tslib@^2.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e"
|
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e"
|
||||||
integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==
|
integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==
|
||||||
|
|
||||||
|
tslib@^2.1.0:
|
||||||
|
version "2.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"
|
||||||
|
integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==
|
||||||
|
|
||||||
tsutils@^3.17.1:
|
tsutils@^3.17.1:
|
||||||
version "3.17.1"
|
version "3.17.1"
|
||||||
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759"
|
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759"
|
||||||
|
Loading…
Reference in New Issue
Block a user