Compare commits
46 Commits
Author | SHA1 | Date |
---|---|---|
![]() |
7e587198dd | |
![]() |
968574dda1 | |
![]() |
178a95f008 | |
![]() |
2ce62c1023 | |
![]() |
345dee5720 | |
![]() |
c167ccbbfb | |
![]() |
db7aff3ef0 | |
![]() |
f564d36dae | |
![]() |
c8ebb7695c | |
![]() |
97f4a3bccc | |
![]() |
d827bf1417 | |
![]() |
e92d958b24 | |
![]() |
e773451679 | |
![]() |
98e58581e2 | |
![]() |
37b94e5b96 | |
![]() |
2cd293726a | |
![]() |
bfa662c24a | |
![]() |
7306e35591 | |
![]() |
3f90c34f94 | |
![]() |
f02142eb8c | |
![]() |
016407773f | |
![]() |
4ab121a368 | |
![]() |
183c80539a | |
![]() |
9e2a478001 | |
![]() |
d5b413eb90 | |
![]() |
d00d4f7343 | |
![]() |
5692c0e07d | |
![]() |
c41fb5ee1b | |
![]() |
f01e3ad502 | |
![]() |
714a331cd2 | |
![]() |
65ebb26a70 | |
![]() |
004e5a954a | |
![]() |
0a1ed145af | |
![]() |
ac0efb29aa | |
![]() |
f5cb18b9b5 | |
![]() |
d38dc1b5ab | |
![]() |
c954bb2ce7 | |
![]() |
dcb9f69c43 | |
![]() |
9b349b53c4 | |
![]() |
388917b6e4 | |
![]() |
1522606e22 | |
![]() |
13e6bd46a3 | |
![]() |
6f2c2d9aa8 | |
![]() |
50f114bea2 | |
![]() |
135c4aacc0 | |
![]() |
fec284c904 |
|
@ -27,7 +27,6 @@
|
|||
gap: 10px;
|
||||
font-size: 16px;
|
||||
font-weight: 700;
|
||||
cursor: pointer;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -158,6 +158,10 @@ export const messages = defineMessages({
|
|||
id: 'message.team-already-member',
|
||||
defaultMessage: 'You are already a member of the team.',
|
||||
},
|
||||
deleteAccount: {
|
||||
id: 'message.delete-account',
|
||||
defaultMessage: 'To delete this account, type {confirmation} in the box below to confirm.',
|
||||
},
|
||||
deleteWebsite: {
|
||||
id: 'message.delete-website',
|
||||
defaultMessage: 'To delete this website, type {confirmation} in the box below to confirm.',
|
||||
|
|
|
@ -16,13 +16,13 @@ export function MetricsBar({ websiteId }) {
|
|||
const { startDate, endDate, modified } = dateRange;
|
||||
const [format, setFormat] = useState(true);
|
||||
const {
|
||||
query: { url, referrer, os, browser, device, country, region, city },
|
||||
query: { url, referrer, title, os, browser, device, country, region, city },
|
||||
} = usePageQuery();
|
||||
|
||||
const { data, error, isLoading, isFetched } = useQuery(
|
||||
[
|
||||
'websites:stats',
|
||||
{ websiteId, modified, url, referrer, os, browser, device, country, region, city },
|
||||
{ websiteId, modified, url, referrer, title, os, browser, device, country, region, city },
|
||||
],
|
||||
() =>
|
||||
get(`/websites/${websiteId}/stats`, {
|
||||
|
@ -30,6 +30,7 @@ export function MetricsBar({ websiteId }) {
|
|||
endAt: +endDate,
|
||||
url,
|
||||
referrer,
|
||||
title,
|
||||
os,
|
||||
browser,
|
||||
device,
|
||||
|
|
|
@ -30,7 +30,7 @@ export function MetricsTable({
|
|||
const {
|
||||
resolveUrl,
|
||||
router,
|
||||
query: { url, referrer, os, browser, device, country, region, city },
|
||||
query: { url, referrer, title, os, browser, device, country, region, city },
|
||||
} = usePageQuery();
|
||||
const { formatMessage, labels } = useMessages();
|
||||
const { get, useQuery } = useApi();
|
||||
|
@ -38,7 +38,20 @@ export function MetricsTable({
|
|||
const { data, isLoading, isFetched, error } = useQuery(
|
||||
[
|
||||
'websites:metrics',
|
||||
{ websiteId, type, modified, url, referrer, os, browser, device, country, region, city },
|
||||
{
|
||||
websiteId,
|
||||
type,
|
||||
modified,
|
||||
url,
|
||||
referrer,
|
||||
os,
|
||||
title,
|
||||
browser,
|
||||
device,
|
||||
country,
|
||||
region,
|
||||
city,
|
||||
},
|
||||
],
|
||||
() =>
|
||||
get(`/websites/${websiteId}/metrics`, {
|
||||
|
@ -46,6 +59,7 @@ export function MetricsTable({
|
|||
startAt: +startDate,
|
||||
endAt: +endDate,
|
||||
url,
|
||||
title,
|
||||
referrer,
|
||||
os,
|
||||
browser,
|
||||
|
@ -59,7 +73,10 @@ export function MetricsTable({
|
|||
|
||||
const filteredData = useMemo(() => {
|
||||
if (data) {
|
||||
let items = percentFilter(dataFilter ? dataFilter(data, filterOptions) : data);
|
||||
const dataWithoutNullValues = data.filter(val => val.x !== null);
|
||||
let items = percentFilter(
|
||||
dataFilter ? dataFilter(dataWithoutNullValues, filterOptions) : dataWithoutNullValues,
|
||||
);
|
||||
if (limit) {
|
||||
items = items.filter((e, i) => i < limit);
|
||||
}
|
||||
|
|
|
@ -30,6 +30,8 @@ export function TestConsole() {
|
|||
window.umami.track('track-event-with-data', {
|
||||
data: {
|
||||
test: 'test-data',
|
||||
boolean: true,
|
||||
booleanError: 'true',
|
||||
time: new Date(),
|
||||
number: 1,
|
||||
time2: new Date().toISOString(),
|
||||
|
|
|
@ -10,6 +10,7 @@ export function RealtimeUrls({ websiteDomain, data = {} }) {
|
|||
const { formatMessage, labels } = useMessages();
|
||||
const { pageviews } = data;
|
||||
const [filter, setFilter] = useState(FILTER_REFERRERS);
|
||||
const limit = 15;
|
||||
|
||||
const buttons = [
|
||||
{
|
||||
|
@ -47,7 +48,8 @@ export function RealtimeUrls({ websiteDomain, data = {} }) {
|
|||
}
|
||||
return arr;
|
||||
}, [])
|
||||
.sort(firstBy('y', -1)),
|
||||
.sort(firstBy('y', -1))
|
||||
.slice(0, limit),
|
||||
);
|
||||
|
||||
const pages = percentFilter(
|
||||
|
@ -62,7 +64,8 @@ export function RealtimeUrls({ websiteDomain, data = {} }) {
|
|||
}
|
||||
return arr;
|
||||
}, [])
|
||||
.sort(firstBy('y', -1)),
|
||||
.sort(firstBy('y', -1))
|
||||
.slice(0, limit),
|
||||
);
|
||||
|
||||
return [referrers, pages];
|
||||
|
|
|
@ -13,7 +13,7 @@ import useMessages from 'hooks/useMessages';
|
|||
const CONFIRM_VALUE = 'RESET';
|
||||
|
||||
export function WebsiteResetForm({ websiteId, onSave, onClose }) {
|
||||
const { formatMessage, labels, messages } = useMessages();
|
||||
const { formatMessage, labels, messages, FormattedMessage } = useMessages();
|
||||
const { post, useMutation } = useApi();
|
||||
const { mutate, error } = useMutation(data => post(`/websites/${websiteId}/reset`, data));
|
||||
|
||||
|
@ -28,7 +28,12 @@ export function WebsiteResetForm({ websiteId, onSave, onClose }) {
|
|||
|
||||
return (
|
||||
<Form onSubmit={handleSubmit} error={error}>
|
||||
<p>{formatMessage(messages.resetWebsite, { confirmation: CONFIRM_VALUE })}</p>
|
||||
<p>
|
||||
<FormattedMessage
|
||||
{...messages.resetWebsite}
|
||||
values={{ confirmation: <b>{CONFIRM_VALUE}</b> }}
|
||||
/>
|
||||
</p>
|
||||
<FormRow label={formatMessage(labels.confirm)}>
|
||||
<FormInput name="confirm" rules={{ validate: value => value === CONFIRM_VALUE }}>
|
||||
<TextField autoComplete="off" />
|
||||
|
|
|
@ -58,7 +58,10 @@ CREATE TABLE umami.website_event_queue (
|
|||
--event
|
||||
event_type UInt32,
|
||||
event_name String,
|
||||
created_at DateTime('UTC')
|
||||
created_at DateTime('UTC'),
|
||||
--virtual columns
|
||||
_error String,
|
||||
_raw_message String
|
||||
)
|
||||
ENGINE = Kafka
|
||||
SETTINGS kafka_broker_list = 'domain:9092,domain:9093,domain:9094', -- input broker list
|
||||
|
@ -66,7 +69,7 @@ SETTINGS kafka_broker_list = 'domain:9092,domain:9093,domain:9094', -- input bro
|
|||
kafka_group_name = 'event_consumer_group',
|
||||
kafka_format = 'JSONEachRow',
|
||||
kafka_max_block_size = 1048576,
|
||||
kafka_skip_broken_messages = 100;
|
||||
kafka_handle_error_mode = 'stream'
|
||||
|
||||
CREATE MATERIALIZED VIEW umami.website_event_queue_mv TO umami.website_event AS
|
||||
SELECT website_id,
|
||||
|
@ -93,6 +96,19 @@ SELECT website_id,
|
|||
created_at
|
||||
FROM umami.website_event_queue;
|
||||
|
||||
CREATE MATERIALIZED VIEW umami.website_event_errors_mv
|
||||
(
|
||||
error String,
|
||||
raw String
|
||||
)
|
||||
ENGINE = MergeTree
|
||||
ORDER BY (error, raw)
|
||||
SETTINGS index_granularity = 8192 AS
|
||||
SELECT _error AS error,
|
||||
_raw_message AS raw
|
||||
FROM umami.website_event_queue
|
||||
WHERE length(_error) > 0
|
||||
|
||||
CREATE TABLE umami.event_data
|
||||
(
|
||||
website_id UUID,
|
||||
|
@ -122,7 +138,10 @@ CREATE TABLE umami.event_data_queue (
|
|||
event_numeric_value Nullable(Decimal64(4)), --922337203685477.5625
|
||||
event_date_value Nullable(DateTime('UTC')),
|
||||
event_data_type UInt32,
|
||||
created_at DateTime('UTC')
|
||||
created_at DateTime('UTC'),
|
||||
--virtual columns
|
||||
_error String,
|
||||
_raw_message String
|
||||
)
|
||||
ENGINE = Kafka
|
||||
SETTINGS kafka_broker_list = 'domain:9092,domain:9093,domain:9094', -- input broker list
|
||||
|
@ -130,7 +149,7 @@ SETTINGS kafka_broker_list = 'domain:9092,domain:9093,domain:9094', -- input bro
|
|||
kafka_group_name = 'event_data_consumer_group',
|
||||
kafka_format = 'JSONEachRow',
|
||||
kafka_max_block_size = 1048576,
|
||||
kafka_skip_broken_messages = 100;
|
||||
kafka_handle_error_mode = 'stream'
|
||||
|
||||
CREATE MATERIALIZED VIEW umami.event_data_queue_mv TO umami.event_data AS
|
||||
SELECT website_id,
|
||||
|
@ -144,4 +163,17 @@ SELECT website_id,
|
|||
event_date_value,
|
||||
event_data_type,
|
||||
created_at
|
||||
FROM umami.event_data_queue;
|
||||
FROM umami.event_data_queue;
|
||||
|
||||
CREATE MATERIALIZED VIEW umami.event_data_errors_mv
|
||||
(
|
||||
error String,
|
||||
raw String
|
||||
)
|
||||
ENGINE = MergeTree
|
||||
ORDER BY (error, raw)
|
||||
SETTINGS index_granularity = 8192 AS
|
||||
SELECT _error AS error,
|
||||
_raw_message AS raw
|
||||
FROM umami.event_data_queue
|
||||
WHERE length(_error) > 0
|
|
@ -10,7 +10,8 @@ services:
|
|||
DATABASE_TYPE: postgresql
|
||||
APP_SECRET: replace-me-with-a-random-string
|
||||
depends_on:
|
||||
- db
|
||||
db:
|
||||
condition: service_healthy
|
||||
restart: always
|
||||
db:
|
||||
image: postgres:15-alpine
|
||||
|
@ -19,8 +20,12 @@ services:
|
|||
POSTGRES_USER: umami
|
||||
POSTGRES_PASSWORD: umami
|
||||
volumes:
|
||||
- ./sql/schema.postgresql.sql:/docker-entrypoint-initdb.d/schema.postgresql.sql:ro
|
||||
- umami-db-data:/var/lib/postgresql/data
|
||||
restart: always
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
volumes:
|
||||
umami-db-data:
|
||||
|
|
|
@ -1,16 +1,32 @@
|
|||
{
|
||||
"cs-CZ": ["label.reset", "metrics.device.tablet"],
|
||||
"de-DE": [
|
||||
"label.administrator",
|
||||
"label.name",
|
||||
"de-CH": [
|
||||
"label.admin",
|
||||
"label.analytics",
|
||||
"label.desktop",
|
||||
"label.details",
|
||||
"label.domain",
|
||||
"label.theme",
|
||||
"metrics.device.desktop",
|
||||
"metrics.device.laptop",
|
||||
"metrics.device.tablet",
|
||||
"metrics.referrers",
|
||||
"metrics.utm",
|
||||
"metrics.utm_medium"
|
||||
"label.laptop",
|
||||
"label.tablet",
|
||||
"label.name",
|
||||
"label.sessions",
|
||||
"label.team",
|
||||
"label.team-id",
|
||||
"label.teams"
|
||||
],
|
||||
"de-DE": [
|
||||
"label.admin",
|
||||
"label.analytics",
|
||||
"label.desktop",
|
||||
"label.details",
|
||||
"label.domain",
|
||||
"label.laptop",
|
||||
"label.tablet",
|
||||
"label.name",
|
||||
"label.sessions",
|
||||
"label.team",
|
||||
"label.team-id",
|
||||
"label.teams"
|
||||
],
|
||||
"en-GB": "*",
|
||||
"fr-FR": ["metrics.actions", "metrics.pages"],
|
||||
|
@ -22,12 +38,15 @@
|
|||
],
|
||||
"nb-NO": ["label.administrator", "label.dashboard"],
|
||||
"nl-NL": [
|
||||
"label.administrator",
|
||||
"label.websites",
|
||||
"metrics.browsers",
|
||||
"metrics.device.desktop",
|
||||
"metrics.device.laptop",
|
||||
"metrics.device.tablet"
|
||||
"label.analytics",
|
||||
"label.browsers",
|
||||
"label.laptop",
|
||||
"label.tablet",
|
||||
"label.team",
|
||||
"label.team-id",
|
||||
"label.teams",
|
||||
"label.website-id",
|
||||
"label.websites"
|
||||
],
|
||||
"it-IT": [
|
||||
"label.password",
|
||||
|
@ -37,9 +56,5 @@
|
|||
"metrics.device.tablet",
|
||||
"metrics.filter.raw"
|
||||
],
|
||||
"pt-PT": [
|
||||
"label.websites",
|
||||
"metrics.device.desktop",
|
||||
"metrics.device.tablet"
|
||||
]
|
||||
"pt-PT": ["label.websites", "metrics.device.desktop", "metrics.device.tablet"]
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"label.access-code": "Access code",
|
||||
"label.access-code": "Zuegangscode",
|
||||
"label.actions": "Aktione",
|
||||
"label.activity-log": "Activity log",
|
||||
"label.activity-log": "Aktivitätsverlauf",
|
||||
"label.add-website": "Websiite hinzuefüege",
|
||||
"label.admin": "Administrator",
|
||||
"label.all": "Alli",
|
||||
|
@ -13,24 +13,24 @@
|
|||
"label.browsers": "Browser",
|
||||
"label.cancel": "Abbreche",
|
||||
"label.change-password": "Passwort ändere",
|
||||
"label.cities": "Cities",
|
||||
"label.clear-all": "Clear all",
|
||||
"label.confirm": "Confirm",
|
||||
"label.cities": "Städt",
|
||||
"label.clear-all": "Alles lösche",
|
||||
"label.confirm": "Bestätige",
|
||||
"label.confirm-password": "Passwort widerhole",
|
||||
"label.continue": "Continue",
|
||||
"label.continue": "Wiiter",
|
||||
"label.countries": "Länder",
|
||||
"label.create-team": "Create team",
|
||||
"label.create-user": "Create user",
|
||||
"label.created": "Created",
|
||||
"label.create-team": "Team erstelle",
|
||||
"label.create-user": "Benutzer erstelle",
|
||||
"label.created": "Erstellt",
|
||||
"label.current-password": "Jetzigs Passwort",
|
||||
"label.custom-range": "Benutzerdefinierte Bereich",
|
||||
"label.dashboard": "Übersicht",
|
||||
"label.data": "Data",
|
||||
"label.data": "Datä",
|
||||
"label.date-range": "Datumsbereich",
|
||||
"label.default-date-range": "Vorigstellte Datumsbereich",
|
||||
"label.delete": "Lösche",
|
||||
"label.delete-team": "Delete team",
|
||||
"label.delete-user": "Delete user",
|
||||
"label.delete-team": "Team lösche",
|
||||
"label.delete-user": "Benutzer lösche",
|
||||
"label.delete-website": "Websiite lösche",
|
||||
"label.desktop": "Desktop",
|
||||
"label.details": "Details",
|
||||
|
@ -43,104 +43,104 @@
|
|||
"label.events": "Ereigniss",
|
||||
"label.filter-combined": "Kombiniert",
|
||||
"label.filter-raw": "Rohdate",
|
||||
"label.join": "Join",
|
||||
"label.join-team": "Join team",
|
||||
"label.join": "Biträte",
|
||||
"label.join-team": "Team biträte",
|
||||
"label.language": "Sprach",
|
||||
"label.languages": "Sprache",
|
||||
"label.laptop": "Laptop",
|
||||
"label.last-days": "Letzti {x} Täg",
|
||||
"label.last-hours": "Letzti {x} Stunde",
|
||||
"label.leave": "Leave",
|
||||
"label.leave-team": "Leave team",
|
||||
"label.login": "Login",
|
||||
"label.leave": "Verlah",
|
||||
"label.leave-team": "Team verlah",
|
||||
"label.login": "Aamelde",
|
||||
"label.logout": "Abmelde",
|
||||
"label.members": "Members",
|
||||
"label.members": "Mitglieder",
|
||||
"label.mobile": "Handy",
|
||||
"label.more": "Meh",
|
||||
"label.name": "Name",
|
||||
"label.new-password": "Neus Passwort",
|
||||
"label.none": "Keis",
|
||||
"label.operating-systems": "Betriebssystem",
|
||||
"label.operating-systems": "Betriibssystem",
|
||||
"label.owner": "Bsitzer",
|
||||
"label.page-views": "Siitenufrüef",
|
||||
"label.pages": "Siite",
|
||||
"label.password": "Passwort",
|
||||
"label.powered-by": "Betribe dur {name}",
|
||||
"label.profile": "Profil",
|
||||
"label.queries": "Queries",
|
||||
"label.queries": "Abfrage",
|
||||
"label.query-parameters": "Abfragparameter",
|
||||
"label.realtime": "Echtzit",
|
||||
"label.referrers": "Referrer",
|
||||
"label.refresh": "Aktualisiere",
|
||||
"label.regenerate": "Regenerate",
|
||||
"label.regions": "Regions",
|
||||
"label.remove": "Remove",
|
||||
"label.regenerate": "Erneuere",
|
||||
"label.regions": "Regionä",
|
||||
"label.remove": "Entferne",
|
||||
"label.required": "Erforderlich",
|
||||
"label.reset": "Zruggsetze",
|
||||
"label.reset-website": "Statistik zruggsetze",
|
||||
"label.role": "Role",
|
||||
"label.role": "Rollä",
|
||||
"label.save": "Speichere",
|
||||
"label.screens": "Bildschirmuflösige",
|
||||
"label.select-website": "Select website",
|
||||
"label.select-website": "Websiite uuswähle",
|
||||
"label.sessions": "Sessions",
|
||||
"label.settings": "Istellige",
|
||||
"label.share-url": "Freigab-URL",
|
||||
"label.single-day": "Ein Tag",
|
||||
"label.tablet": "Tablet",
|
||||
"label.team": "Team",
|
||||
"label.team-guest": "Team guest",
|
||||
"label.team-guest": "Team Gast",
|
||||
"label.team-id": "Team ID",
|
||||
"label.team-member": "Team member",
|
||||
"label.team-owner": "Team owner",
|
||||
"label.team-member": "Team Mitglied",
|
||||
"label.team-owner": "Team Bsitzer",
|
||||
"label.teams": "Teams",
|
||||
"label.theme": "Thema",
|
||||
"label.this-month": "De Monet",
|
||||
"label.this-week": "Die Wuche",
|
||||
"label.this-year": "Das Jahr",
|
||||
"label.timezone": "Zitzone",
|
||||
"label.title": "Title",
|
||||
"label.timezone": "Ziitzone",
|
||||
"label.title": "Titel",
|
||||
"label.today": "Hüt",
|
||||
"label.toggle-charts": "Schaubilder umschalte",
|
||||
"label.tracking-code": "Tracking Code",
|
||||
"label.unique-visitors": "Eidütigi Bsuecher",
|
||||
"label.unknown": "Unbekannt",
|
||||
"label.user": "User",
|
||||
"label.user": "Benutzer",
|
||||
"label.username": "Benutzername",
|
||||
"label.users": "Users",
|
||||
"label.view": "View",
|
||||
"label.users": "Benutzer",
|
||||
"label.view": "Azeige",
|
||||
"label.view-details": "Details azeige",
|
||||
"label.views": "Ufrüef",
|
||||
"label.visitors": "Bsuecher",
|
||||
"label.website-id": "Website ID",
|
||||
"label.website-id": "Websiite ID",
|
||||
"label.websites": "Websiite",
|
||||
"label.yesterday": "Gester",
|
||||
"message.active-users": "{x} {x, plural, one {aktive Bsuecher} other {aktivi Bsuecher}}",
|
||||
"message.confirm-delete": "Sind Sie sich sicher, {target} zlösche?",
|
||||
"message.confirm-leave": "Are you sure you want to leave {target}?",
|
||||
"message.confirm-leave": "Sind Sie sich sicher, {target} zverlah?",
|
||||
"message.confirm-reset": "Sind Sie sicher, dass Sie dStatistike vo {target} zruggsetze wend?",
|
||||
"message.delete-website": "Websiite lösche",
|
||||
"message.delete-website-warning": "Alli dezueghörige Date werdet ebefalls glöscht.",
|
||||
"message.error": "Es isch en Fehler uftrete.",
|
||||
"message.event-log": "{event} on {url}",
|
||||
"message.event-log": "{event} uf {url}",
|
||||
"message.go-to-settings": "Zu de Istellige",
|
||||
"message.incorrect-username-password": "Falschs Passwort oder Benutzername.",
|
||||
"message.invalid-domain": "Ungültigi Domain",
|
||||
"message.min-password-length": "Minimum length of {n} characters",
|
||||
"message.min-password-length": "Miminamli längi vo {n} Zeiche",
|
||||
"message.no-data-available": "Kei Date vorhande.",
|
||||
"message.no-match-password": "Passwörter stimmed ned überi",
|
||||
"message.no-teams": "You have not created any teams.",
|
||||
"message.no-users": "There are no users.",
|
||||
"message.no-teams": "Bisher sind no kei Teams erstellt worde.",
|
||||
"message.no-users": "Da gits kei Benutzer",
|
||||
"message.page-not-found": "Siite ned gfunde.",
|
||||
"message.reset-website": "Statistik zruggsetze",
|
||||
"message.reset-website-warning": "Alli Date für die Websiite werdet glöscht, nur de Tracking Code blibt bestah.",
|
||||
"message.saved": "Erfolgrich gspeichert.",
|
||||
"message.share-url": "Das isch die öffentlichi URL zum Teile für {target}.",
|
||||
"message.team-already-member": "You are already a member of the team.",
|
||||
"message.team-not-found": "Team not found.",
|
||||
"message.share-url": "Ihri Websiitestatistik isch under de folgende URL öffentlich zuegänglich:",
|
||||
"message.team-already-member": "Sie sind bereits es Mitglied vo dem Team.",
|
||||
"message.team-not-found": "Team nöd gfunde.",
|
||||
"message.tracking-code": "Tracking Code",
|
||||
"message.user-deleted": "User deleted.",
|
||||
"message.user-deleted": "Benutzer glöscht.",
|
||||
"message.visitor-log": "Bsuecher us {country} benutzt {browser} uf {os} {device}",
|
||||
"messages.no-team-websites": "This team does not have any websites.",
|
||||
"messages.no-team-websites": "Dem Team sind kei Websiite zuegordnet.",
|
||||
"messages.no-websites-configured": "Es isch kei Websiite vorhande.",
|
||||
"messages.team-websites-info": "Websites can be viewed by anyone on the team."
|
||||
"messages.team-websites-info": "Websiite chönd vo jedem im Team agluegt werde"
|
||||
}
|
||||
|
|
|
@ -19,8 +19,8 @@
|
|||
"label.confirm-password": "Passwort wiederholen",
|
||||
"label.continue": "Weiter",
|
||||
"label.countries": "Länder",
|
||||
"label.create-team": "Erstelle Team",
|
||||
"label.create-user": "Erstelle Nutzer",
|
||||
"label.create-team": "Team erstellen",
|
||||
"label.create-user": "Benutzer erstellen",
|
||||
"label.created": "Erstellt",
|
||||
"label.current-password": "Derzeitiges Passwort",
|
||||
"label.custom-range": "Benutzerdefinierter Bereich",
|
||||
|
@ -29,8 +29,8 @@
|
|||
"label.date-range": "Datumsbereich",
|
||||
"label.default-date-range": "Voreingestellter Datumsbereich",
|
||||
"label.delete": "Löschen",
|
||||
"label.delete-team": "Lösche Team",
|
||||
"label.delete-user": "Lösche Nutzer",
|
||||
"label.delete-team": "Team löschen",
|
||||
"label.delete-user": "Benutzer löschen",
|
||||
"label.delete-website": "Webseite löschen",
|
||||
"label.desktop": "Desktop",
|
||||
"label.details": "Details",
|
||||
|
@ -48,8 +48,8 @@
|
|||
"label.language": "Sprache",
|
||||
"label.languages": "Sprachen",
|
||||
"label.laptop": "Laptop",
|
||||
"label.last-days": "Letzten {x} Tage",
|
||||
"label.last-hours": "Letzten {x} Stunden",
|
||||
"label.last-days": "Letzte {x} Tage",
|
||||
"label.last-hours": "Letzte {x} Stunden",
|
||||
"label.leave": "Verlassen",
|
||||
"label.leave-team": "Team verlassen",
|
||||
"label.login": "Anmelden",
|
||||
|
@ -73,7 +73,7 @@
|
|||
"label.referrers": "Referrer",
|
||||
"label.refresh": "Aktualisieren",
|
||||
"label.regenerate": "Erneuern",
|
||||
"label.regions": "Regions",
|
||||
"label.regions": "Regionen",
|
||||
"label.remove": "Entfernen",
|
||||
"label.required": "Erforderlich",
|
||||
"label.reset": "Zurücksetzen",
|
||||
|
@ -101,17 +101,17 @@
|
|||
"label.title": "Titel",
|
||||
"label.today": "Heute",
|
||||
"label.toggle-charts": "Schaubilder umschalten",
|
||||
"label.tracking-code": "Tracking Kennung",
|
||||
"label.tracking-code": "Tracking Code",
|
||||
"label.unique-visitors": "Eindeutige Besucher",
|
||||
"label.unknown": "Unbekannt",
|
||||
"label.user": "User",
|
||||
"label.user": "Benutzer",
|
||||
"label.username": "Benutzername",
|
||||
"label.users": "Users",
|
||||
"label.view": "View",
|
||||
"label.users": "Benutzer",
|
||||
"label.view": "Anzeigen",
|
||||
"label.view-details": "Details anzeigen",
|
||||
"label.views": "Aufrufe",
|
||||
"label.visitors": "Besucher",
|
||||
"label.website-id": "Website ID",
|
||||
"label.website-id": "Webseite ID",
|
||||
"label.websites": "Webseiten",
|
||||
"label.yesterday": "Gestern",
|
||||
"message.active-users": "{x} {x, plural, one {aktiver Besucher} other {aktive Besucher}}",
|
||||
|
@ -121,7 +121,7 @@
|
|||
"message.delete-website": "Webseite löschen",
|
||||
"message.delete-website-warning": "Alle zugehörigen Daten werden ebenfalls gelöscht.",
|
||||
"message.error": "Es ist ein Fehler aufgetreten.",
|
||||
"message.event-log": "{event} on {url}",
|
||||
"message.event-log": "{event} auf {url}",
|
||||
"message.go-to-settings": "Zu den Einstellungen",
|
||||
"message.incorrect-username-password": "Falsches Passwort oder Benutzername.",
|
||||
"message.invalid-domain": "Ungültige Domain",
|
||||
|
@ -129,16 +129,16 @@
|
|||
"message.no-data-available": "Keine Daten vorhanden.",
|
||||
"message.no-match-password": "Passwörter stimmen nicht überein",
|
||||
"message.no-teams": "Bisher wurden keine Teams erstellt.",
|
||||
"message.no-users": "Hier gibt es keine Nutzer.",
|
||||
"message.no-users": "Hier gibt es keine Benutzer.",
|
||||
"message.page-not-found": "Seite nicht gefunden.",
|
||||
"message.reset-website": "Statistik zurücksetzen",
|
||||
"message.reset-website-warning": "Alle Daten für diese Webseite werden gelöscht, jedoch bleibt der Tracking Code bestehen.",
|
||||
"message.saved": "Erfolgreich gespeichert.",
|
||||
"message.share-url": "Dies ist die öffentliche URL zum Teilen für {target}.",
|
||||
"message.share-url": "Ihre Webseitenstatistik ist unter der folgenden URL öffentlich zugänglich:",
|
||||
"message.team-already-member": "Sie sind bereits Mitglied des Teams.",
|
||||
"message.team-not-found": "Team nicht gefunden.",
|
||||
"message.tracking-code": "Tracking Kennung",
|
||||
"message.user-deleted": "Nutzer gelöscht.",
|
||||
"message.tracking-code": "Tracking Code",
|
||||
"message.user-deleted": "Benutzer gelöscht.",
|
||||
"message.visitor-log": "Besucher aus {country} benutzt {browser} auf {os} {device}",
|
||||
"messages.no-team-websites": "Diesem Team sind keine Websites zugeordnet.",
|
||||
"messages.no-websites-configured": "Es ist keine Webseite vorhanden.",
|
||||
|
|
108
lang/mn-MN.json
108
lang/mn-MN.json
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"label.access-code": "Access code",
|
||||
"label.access-code": "Хандалтын код",
|
||||
"label.actions": "Үйлдлүүд",
|
||||
"label.activity-log": "Activity log",
|
||||
"label.activity-log": "Үйл ажиллагааны бүртгэл",
|
||||
"label.add-website": "Веб нэмэх",
|
||||
"label.admin": "Админ",
|
||||
"label.all": "Бүх",
|
||||
|
@ -13,27 +13,27 @@
|
|||
"label.browsers": "Хөтөч",
|
||||
"label.cancel": "Цуцлах",
|
||||
"label.change-password": "Нууц үг солих",
|
||||
"label.cities": "Cities",
|
||||
"label.clear-all": "Clear all",
|
||||
"label.confirm": "Confirm",
|
||||
"label.cities": "Хотууд",
|
||||
"label.clear-all": "Бүгдийг арилгах",
|
||||
"label.confirm": "Батлах",
|
||||
"label.confirm-password": "Шинэ нууц үгээ давтах",
|
||||
"label.continue": "Continue",
|
||||
"label.continue": "Үргэлжлүүлэх",
|
||||
"label.countries": "Улс",
|
||||
"label.create-team": "Create team",
|
||||
"label.create-user": "Create user",
|
||||
"label.created": "Created",
|
||||
"label.create-team": "Баг үүсгэх",
|
||||
"label.create-user": "Хэрэглэгч үүсгэх",
|
||||
"label.created": "Үүсгэсэн",
|
||||
"label.current-password": "Ашиглаж буй нууц үг",
|
||||
"label.custom-range": "Дурын хугацаа",
|
||||
"label.dashboard": "Хянах самбар",
|
||||
"label.data": "Data",
|
||||
"label.date-range": "Хугацааны мужид",
|
||||
"label.data": "Өгөгдөл",
|
||||
"label.date-range": "Хугацааны муж",
|
||||
"label.default-date-range": "Өгөгдмөл хугацааны муж",
|
||||
"label.delete": "Устгах",
|
||||
"label.delete-team": "Delete team",
|
||||
"label.delete-user": "Delete user",
|
||||
"label.delete-team": "Баг устгах",
|
||||
"label.delete-user": "Хэрэглэгч устгах",
|
||||
"label.delete-website": "Веб устгах",
|
||||
"label.desktop": "Суурин компьютер",
|
||||
"label.details": "Details",
|
||||
"label.details": "Мэдээлэл",
|
||||
"label.devices": "Төхөөрөмж",
|
||||
"label.dismiss": "Үл хэргэсэх",
|
||||
"label.domain": "Домэйн",
|
||||
|
@ -43,18 +43,18 @@
|
|||
"label.events": "Үйлдэл",
|
||||
"label.filter-combined": "Нэгтгэсэн",
|
||||
"label.filter-raw": "Түүхий",
|
||||
"label.join": "Join",
|
||||
"label.join-team": "Join team",
|
||||
"label.join": "Нэгдэх",
|
||||
"label.join-team": "Багт нэгдэх",
|
||||
"label.language": "Хэл",
|
||||
"label.languages": "Хэл",
|
||||
"label.laptop": "Зөөврийн компьютер",
|
||||
"label.last-days": "Сүүлийн {x} хоног",
|
||||
"label.last-hours": "Сүүлийн {x} цаг",
|
||||
"label.leave": "Leave",
|
||||
"label.leave-team": "Leave team",
|
||||
"label.leave": "Гарах",
|
||||
"label.leave-team": "Багаас гарах",
|
||||
"label.login": "Нэвтрэх",
|
||||
"label.logout": "Гарах",
|
||||
"label.members": "Members",
|
||||
"label.members": "Гишүүд",
|
||||
"label.mobile": "Утас",
|
||||
"label.more": "Цааш",
|
||||
"label.name": "Нэр",
|
||||
|
@ -67,80 +67,80 @@
|
|||
"label.password": "Нууц үг",
|
||||
"label.powered-by": "{name} дээр суурилсан",
|
||||
"label.profile": "Бүртгэл",
|
||||
"label.queries": "Queries",
|
||||
"label.queries": "Query-нүүд",
|
||||
"label.query-parameters": "Query параметр",
|
||||
"label.realtime": "Яг одоо",
|
||||
"label.referrers": "Чиглүүлэгч",
|
||||
"label.refresh": "Сэргээх",
|
||||
"label.regenerate": "Regenerate",
|
||||
"label.regions": "Regions",
|
||||
"label.remove": "Remove",
|
||||
"label.regenerate": "Дахин үүсгэх",
|
||||
"label.regions": "Бүсүүд",
|
||||
"label.remove": "Устгах",
|
||||
"label.required": "Шаардлагатай",
|
||||
"label.reset": "Хуучин хэвд нь оруулах",
|
||||
"label.reset": "Дахин эхлүүлэх",
|
||||
"label.reset-website": "Тоон үзүүлэлтийг дахин эхлүүлэх",
|
||||
"label.role": "Role",
|
||||
"label.role": "Эрх",
|
||||
"label.save": "Хадгалах",
|
||||
"label.screens": "Дэлгэц",
|
||||
"label.select-website": "Select website",
|
||||
"label.select-website": "Веб сонгох",
|
||||
"label.sessions": "Sessions",
|
||||
"label.settings": "Тохиргоо",
|
||||
"label.share-url": "Хуваалцах холбоос",
|
||||
"label.single-day": "Нэг өдөр",
|
||||
"label.tablet": "Таблет",
|
||||
"label.team": "Team",
|
||||
"label.team-guest": "Team guest",
|
||||
"label.team-id": "Team ID",
|
||||
"label.team-member": "Team member",
|
||||
"label.team-owner": "Team owner",
|
||||
"label.teams": "Teams",
|
||||
"label.team": "Баг",
|
||||
"label.team-guest": "Багийн зочин",
|
||||
"label.team-id": "Багийн ID",
|
||||
"label.team-member": "Багийн гишүүн",
|
||||
"label.team-owner": "Багийн эзэмшигч",
|
||||
"label.teams": "Багууд",
|
||||
"label.theme": "Загвар",
|
||||
"label.this-month": "Энэ сар",
|
||||
"label.this-week": "Энэ долоо хоног",
|
||||
"label.this-year": "Энэ жил",
|
||||
"label.timezone": "Цагийн бүс",
|
||||
"label.title": "Title",
|
||||
"label.title": "Гарчиг",
|
||||
"label.today": "Өнөөдөр",
|
||||
"label.toggle-charts": "Графикийг харуулах/нуух",
|
||||
"label.tracking-code": "Мөрдөх код",
|
||||
"label.unique-visitors": "Зочин",
|
||||
"label.unknown": "Тодорхойгүй",
|
||||
"label.user": "User",
|
||||
"label.user": "Хэрэглэгч",
|
||||
"label.username": "Хэрэглэгчийн нэр",
|
||||
"label.users": "Users",
|
||||
"label.view": "View",
|
||||
"label.users": "Хэрэглэгчид",
|
||||
"label.view": "Харах",
|
||||
"label.view-details": "Дэлгэрүүлж харах",
|
||||
"label.views": "Үзсэн",
|
||||
"label.visitors": "Зочин",
|
||||
"label.website-id": "Website ID",
|
||||
"label.website-id": "Вебийн ID",
|
||||
"label.websites": "Вебүүд",
|
||||
"label.yesterday": "Өчигдөр",
|
||||
"message.active-users": "одоо {x} {x, plural, one {зочин} other {зочин}} байна",
|
||||
"message.confirm-delete": "Та {target}-г устгахдаа итгэлтэй байна уу?",
|
||||
"message.confirm-leave": "Are you sure you want to leave {target}?",
|
||||
"message.confirm-leave": "Та {target}-с гарахдаа итгэлтэй байна уу?",
|
||||
"message.confirm-reset": "Та {target}-н тоон үзүүлэлтүүдийг устгахдаа итгэлтэй байна уу?",
|
||||
"message.delete-website": "Веб устгах",
|
||||
"message.delete-website-warning": "Үүнтэй холбоотой бүх өгөгдөл устах болно.",
|
||||
"message.delete-website": "Веб устгахын тулд доорх хэсэгт {confirmation} гэж бичиж, баталгаажуулна уу.",
|
||||
"message.delete-website-warning": "Энэ вебтэй холбоотой бүх өгөгдөл устах болно.",
|
||||
"message.error": "Ямар нэг зүйл буруу боллоо.",
|
||||
"message.event-log": "{event} on {url}",
|
||||
"message.event-log": "{url}-д {event}",
|
||||
"message.go-to-settings": "Тохиргоо руу очих",
|
||||
"message.incorrect-username-password": "Буруу хэрэглэгчийн нэр/нууц үг.",
|
||||
"message.invalid-domain": "Буруу домэйн",
|
||||
"message.min-password-length": "Minimum length of {n} characters",
|
||||
"message.min-password-length": "Хамгийн багадаа {n} тэмдэгт",
|
||||
"message.no-data-available": "Өгөгдөл алга.",
|
||||
"message.no-match-password": "Нууц үг тохирохгүй байна",
|
||||
"message.no-teams": "You have not created any teams.",
|
||||
"message.no-users": "There are no users.",
|
||||
"message.no-match-password": "Нууц үг тохирохгүй байна.",
|
||||
"message.no-teams": "Та ямар ч баг үүсгээгүй байна.",
|
||||
"message.no-users": "Хэрэглэгч байхгүй байна.",
|
||||
"message.page-not-found": "Хуудас олдсонгүй.",
|
||||
"message.reset-website": "Тоон үзүүлэлтийг дахин эхлүүлэх",
|
||||
"message.reset-website": "Тоон үзүүлэлийг дахин эхлүүлэхийн тулд доорх хэсэгт {confirmation} гэж бичиж, баталгаажуулна уу.",
|
||||
"message.reset-website-warning": "Энэ вебийн бүх тоон үзүүлэлтүүдийг устгах болно. Гэхдээ мөрдөх код хэвэндээ үлдэнэ.",
|
||||
"message.saved": "Амжилттай хадгаллаа.",
|
||||
"message.share-url": "{target}-г нийтэд хуваалцах холбоос.",
|
||||
"message.team-already-member": "You are already a member of the team.",
|
||||
"message.team-not-found": "Team not found.",
|
||||
"message.tracking-code": "Мөрдөх код",
|
||||
"message.user-deleted": "User deleted.",
|
||||
"message.saved": "Хадгалсан.",
|
||||
"message.share-url": "Таны вебийн тоон үзүүлэлтүүд доорх URL дээр нийтэд харагдах болно:",
|
||||
"message.team-already-member": "Та аль хэдийн энэ багийн гишүүн болсон байна.",
|
||||
"message.team-not-found": "Баг олдсонгүй.",
|
||||
"message.tracking-code": "Энэ вебийн хандалтуудыг мөрдөхийн тулд доорх кодыг HTML-нхээ <head>...</head> хэсэгт байрлуулна уу.",
|
||||
"message.user-deleted": "Хэрэглэгч устсан.",
|
||||
"message.visitor-log": "{country} улсаас {os} {device} дээр {browser} хөтөч ашиглан орсон",
|
||||
"messages.no-team-websites": "This team does not have any websites.",
|
||||
"messages.no-team-websites": "Энэ багт ямар ч веб алга.",
|
||||
"messages.no-websites-configured": "Та ямар нэгэн веб тохируулаагүй байна.",
|
||||
"messages.team-websites-info": "Websites can be viewed by anyone on the team."
|
||||
"messages.team-websites-info": "Вебийг багийн бүх гишүүд үзэж болно."
|
||||
}
|
||||
|
|
100
lang/nl-NL.json
100
lang/nl-NL.json
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"label.access-code": "Access code",
|
||||
"label.access-code": "Toegangscode",
|
||||
"label.actions": "Acties",
|
||||
"label.activity-log": "Activity log",
|
||||
"label.add-website": "Website toevoegen",
|
||||
"label.admin": "Administrator",
|
||||
"label.activity-log": "Activiteiten logboek",
|
||||
"label.add-website": "Website koppelen",
|
||||
"label.admin": "Beheerder",
|
||||
"label.all": "Alles",
|
||||
"label.all-time": "Onbeperkt",
|
||||
"label.analytics": "Analytics",
|
||||
|
@ -13,48 +13,48 @@
|
|||
"label.browsers": "Browsers",
|
||||
"label.cancel": "Annuleren",
|
||||
"label.change-password": "Wachtwoord wijzigen",
|
||||
"label.cities": "Cities",
|
||||
"label.clear-all": "Clear all",
|
||||
"label.confirm": "Confirm",
|
||||
"label.cities": "Steden",
|
||||
"label.clear-all": "Filters wissen",
|
||||
"label.confirm": "Bevestigen",
|
||||
"label.confirm-password": "Wachtwoord bevestigen",
|
||||
"label.continue": "Continue",
|
||||
"label.continue": "Doorgaan",
|
||||
"label.countries": "Landen",
|
||||
"label.create-team": "Create team",
|
||||
"label.create-user": "Create user",
|
||||
"label.created": "Created",
|
||||
"label.create-team": "Team aanmaken",
|
||||
"label.create-user": "Gebruiker maken",
|
||||
"label.created": "Gemaakt",
|
||||
"label.current-password": "Huidig wachtwoord",
|
||||
"label.custom-range": "Aangepast bereik",
|
||||
"label.dashboard": "Overzicht",
|
||||
"label.data": "Data",
|
||||
"label.data": "Gegevens",
|
||||
"label.date-range": "Datumbereik",
|
||||
"label.default-date-range": "Standaard bereik",
|
||||
"label.delete": "Verwijderen",
|
||||
"label.delete-team": "Delete team",
|
||||
"label.delete-user": "Delete user",
|
||||
"label.delete-team": "Team verwijderen",
|
||||
"label.delete-user": "Verwijder gebruiker",
|
||||
"label.delete-website": "Website verwijderen",
|
||||
"label.desktop": "Desktop",
|
||||
"label.details": "Details",
|
||||
"label.desktop": "Computer",
|
||||
"label.details": "Informatie",
|
||||
"label.devices": "Apparaten",
|
||||
"label.dismiss": "Negeren",
|
||||
"label.domain": "Domein",
|
||||
"label.edit": "Bewerken",
|
||||
"label.edit-dashboard": "Edit dashboard",
|
||||
"label.edit-dashboard": "Dashboard aanpassen",
|
||||
"label.enable-share-url": "Sta delen via openbare URL toe",
|
||||
"label.events": "Gebeurtenissen",
|
||||
"label.filter-combined": "Gecombineerd",
|
||||
"label.filter-raw": "Ruw",
|
||||
"label.join": "Join",
|
||||
"label.join-team": "Join team",
|
||||
"label.join": "Lid worden",
|
||||
"label.join-team": "Word lid van een team",
|
||||
"label.language": "Taal",
|
||||
"label.languages": "Languages",
|
||||
"label.languages": "Talen",
|
||||
"label.laptop": "Laptop",
|
||||
"label.last-days": "Laatste {x} dagen",
|
||||
"label.last-hours": "Laatste {x} uur",
|
||||
"label.leave": "Leave",
|
||||
"label.leave-team": "Leave team",
|
||||
"label.leave": "Verlaten",
|
||||
"label.leave-team": "Verlaat team",
|
||||
"label.login": "Inloggen",
|
||||
"label.logout": "Uitloggen",
|
||||
"label.members": "Members",
|
||||
"label.members": "Gebruikers",
|
||||
"label.mobile": "Mobiel",
|
||||
"label.more": "Toon meer",
|
||||
"label.name": "Naam",
|
||||
|
@ -67,80 +67,80 @@
|
|||
"label.password": "Wachtwoord",
|
||||
"label.powered-by": "mogelijk gemaakt door {name}",
|
||||
"label.profile": "Profiel",
|
||||
"label.queries": "Queries",
|
||||
"label.query-parameters": "Query parameters",
|
||||
"label.queries": "Parameters",
|
||||
"label.query-parameters": "URL-parameters",
|
||||
"label.realtime": "Actueel",
|
||||
"label.referrers": "Verwijzers",
|
||||
"label.refresh": "Vernieuwen",
|
||||
"label.regenerate": "Regenerate",
|
||||
"label.regions": "Regions",
|
||||
"label.remove": "Remove",
|
||||
"label.regenerate": "Opnieuw genereren",
|
||||
"label.regions": "Regio's",
|
||||
"label.remove": "Verwijderen",
|
||||
"label.required": "Verplicht",
|
||||
"label.reset": "Resetten",
|
||||
"label.reset": "Opnieuw instellen",
|
||||
"label.reset-website": "Statistieken opnieuw instellen",
|
||||
"label.role": "Role",
|
||||
"label.role": "Gebruikersrol",
|
||||
"label.save": "Opslaan",
|
||||
"label.screens": "Schermen",
|
||||
"label.select-website": "Select website",
|
||||
"label.sessions": "Sessions",
|
||||
"label.select-website": "Website selecteren",
|
||||
"label.sessions": "Sessies",
|
||||
"label.settings": "Instellingen",
|
||||
"label.share-url": "URL delen",
|
||||
"label.single-day": "Enkele dag",
|
||||
"label.tablet": "Tablet",
|
||||
"label.team": "Team",
|
||||
"label.team-guest": "Team guest",
|
||||
"label.team-guest": "Team gast",
|
||||
"label.team-id": "Team ID",
|
||||
"label.team-member": "Team member",
|
||||
"label.team-owner": "Team owner",
|
||||
"label.team-member": "Teamlid",
|
||||
"label.team-owner": "Teameigenaar",
|
||||
"label.teams": "Teams",
|
||||
"label.theme": "Thema",
|
||||
"label.this-month": "Deze maand",
|
||||
"label.this-week": "Deze week",
|
||||
"label.this-year": "Dit jaar",
|
||||
"label.timezone": "Tijdzone",
|
||||
"label.title": "Title",
|
||||
"label.title": "Titel",
|
||||
"label.today": "Vandaag",
|
||||
"label.toggle-charts": "Grafieken tonen/verbergen",
|
||||
"label.tracking-code": "Volgcode",
|
||||
"label.unique-visitors": "Unieke bezoekers",
|
||||
"label.unknown": "Onbekend",
|
||||
"label.user": "User",
|
||||
"label.user": "Gebruiker",
|
||||
"label.username": "Gebruikersnaam",
|
||||
"label.users": "Users",
|
||||
"label.view": "View",
|
||||
"label.users": "Gebruikers",
|
||||
"label.view": "Weergave",
|
||||
"label.view-details": "Meer details",
|
||||
"label.views": "Weergaven",
|
||||
"label.visitors": "Bezoekers",
|
||||
"label.website-id": "Website ID",
|
||||
"label.websites": "Websites",
|
||||
"label.yesterday": "Yesterday",
|
||||
"label.yesterday": "Gisteren",
|
||||
"message.active-users": "{x} actieve {x, plural, one {bezoeker} other {bezoekers}}",
|
||||
"message.confirm-delete": "Weet je zeker dat je {target} wilt verwijderen?",
|
||||
"message.confirm-leave": "Are you sure you want to leave {target}?",
|
||||
"message.confirm-leave": "Weet je zeker dat je {target} wilt verlaten?",
|
||||
"message.confirm-reset": "Weet je zeker dat je de statistieken van {target} opnieuw wilt instellen?",
|
||||
"message.delete-website": "Website verwijderen",
|
||||
"message.delete-website-warning": "Alle verwante gegezens zullen ook verwijderd worden.",
|
||||
"message.error": "Er is iets misgegaan.",
|
||||
"message.event-log": "{event} on {url}",
|
||||
"message.event-log": "{event} op {url}",
|
||||
"message.go-to-settings": "Naar instellingen",
|
||||
"message.incorrect-username-password": "Incorrecte gebruikersnaam/wachtwoord.",
|
||||
"message.invalid-domain": "Ongeldig domein",
|
||||
"message.min-password-length": "Minimum length of {n} characters",
|
||||
"message.min-password-length": "Minimale lengte van {n} tekens",
|
||||
"message.no-data-available": "Geen gegevens beschikbaar.",
|
||||
"message.no-match-password": "Wachtwoorden komen niet overeen",
|
||||
"message.no-teams": "You have not created any teams.",
|
||||
"message.no-users": "There are no users.",
|
||||
"message.no-teams": "Er zijn nog geen teams aangemaakt.",
|
||||
"message.no-users": "Er zijn geen gebruikers.",
|
||||
"message.page-not-found": "Pagina niet gevonden.",
|
||||
"message.reset-website": "Statistieken opnieuw instellen",
|
||||
"message.reset-website-warning": "Alle bijhorende statistieken van deze website worden verwijderd, maar jouw volgcode blijft gelden.",
|
||||
"message.saved": "Opslaan succesvol.",
|
||||
"message.share-url": "Met deze URL kan {target} openbaar gedeeld worden.",
|
||||
"message.team-already-member": "You are already a member of the team.",
|
||||
"message.team-not-found": "Team not found.",
|
||||
"message.team-already-member": "Je bent al lid van het team.",
|
||||
"message.team-not-found": "Team niet gevonden.",
|
||||
"message.tracking-code": "Volgcode",
|
||||
"message.user-deleted": "User deleted.",
|
||||
"message.user-deleted": "Gebruiker verwijderd.",
|
||||
"message.visitor-log": "Bezoeker uit {country} met {browser} op een {os} {device}",
|
||||
"messages.no-team-websites": "This team does not have any websites.",
|
||||
"messages.no-team-websites": "Er zijn geen websites gekoppeld aan dit team.",
|
||||
"messages.no-websites-configured": "Je hebt geen websites ingesteld.",
|
||||
"messages.team-websites-info": "Websites can be viewed by anyone on the team."
|
||||
"messages.team-websites-info": "Websites kunnen door iedereen in het team worden bekeken."
|
||||
}
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
{
|
||||
"label.access-code": "Access code",
|
||||
"label.access-code": "Código de acesso",
|
||||
"label.actions": "Ações",
|
||||
"label.activity-log": "Activity log",
|
||||
"label.activity-log": "Log de atividade",
|
||||
"label.add-website": "Adicionar site",
|
||||
"label.admin": "Administrador",
|
||||
"label.all": "Todos",
|
||||
"label.all-time": "Todo o período",
|
||||
"label.analytics": "Analytics",
|
||||
"label.analytics": "Estatísticas",
|
||||
"label.average-visit-time": "Tempo médio da visita",
|
||||
"label.back": "Voltar",
|
||||
"label.bounce-rate": "Taxa de rejeição",
|
||||
"label.browsers": "Navegadores",
|
||||
"label.cancel": "Cancelar",
|
||||
"label.change-password": "Alterar a senha",
|
||||
"label.cities": "Cities",
|
||||
"label.clear-all": "Clear all",
|
||||
"label.confirm": "Confirm",
|
||||
"label.cities": "Cidades",
|
||||
"label.clear-all": "Limpar tudo",
|
||||
"label.confirm": "Confirmar",
|
||||
"label.confirm-password": "Confirme a nova senha",
|
||||
"label.continue": "Continue",
|
||||
"label.continue": "Continuar",
|
||||
"label.countries": "Países",
|
||||
"label.create-team": "Create team",
|
||||
"label.create-user": "Create user",
|
||||
"label.created": "Created",
|
||||
"label.create-team": "Criar time",
|
||||
"label.create-user": "Criar usuário",
|
||||
"label.created": "Criado",
|
||||
"label.current-password": "Senha atual",
|
||||
"label.custom-range": "Intervalo personalizado",
|
||||
"label.dashboard": "Painel",
|
||||
|
@ -29,37 +29,37 @@
|
|||
"label.date-range": "Intervalo de datas",
|
||||
"label.default-date-range": "Intervalo de datas predefinido",
|
||||
"label.delete": "Remover",
|
||||
"label.delete-team": "Delete team",
|
||||
"label.delete-user": "Delete user",
|
||||
"label.delete-team": "Remover time",
|
||||
"label.delete-user": "Remover usuário",
|
||||
"label.delete-website": "Remover site",
|
||||
"label.desktop": "Computador",
|
||||
"label.details": "Details",
|
||||
"label.details": "Detalhes",
|
||||
"label.devices": "Dispositivos",
|
||||
"label.dismiss": "Dispensar",
|
||||
"label.domain": "Domínio",
|
||||
"label.edit": "Editar",
|
||||
"label.edit-dashboard": "Edit dashboard",
|
||||
"label.edit-dashboard": "Editar painel",
|
||||
"label.enable-share-url": "Ativar link de compartilhamento",
|
||||
"label.events": "Eventos",
|
||||
"label.filter-combined": "Combinado",
|
||||
"label.filter-raw": "Dados brutos",
|
||||
"label.join": "Join",
|
||||
"label.join-team": "Join team",
|
||||
"label.join": "Entrar",
|
||||
"label.join-team": "Entrar no time",
|
||||
"label.language": "Idioma",
|
||||
"label.languages": "Idiomas",
|
||||
"label.laptop": "Notebook",
|
||||
"label.last-days": "Últimos {x} dias",
|
||||
"label.last-hours": "Últimas {x} horas",
|
||||
"label.leave": "Leave",
|
||||
"label.leave-team": "Leave team",
|
||||
"label.leave": "Sair",
|
||||
"label.leave-team": "Sair do time",
|
||||
"label.login": "Iniciar sessão",
|
||||
"label.logout": "Sair",
|
||||
"label.members": "Members",
|
||||
"label.members": "Membros",
|
||||
"label.mobile": "Celular",
|
||||
"label.more": "Mais",
|
||||
"label.name": "Nome",
|
||||
"label.new-password": "Nova senha",
|
||||
"label.none": "None",
|
||||
"label.none": "Nenhum",
|
||||
"label.operating-systems": "Sistemas operacionais",
|
||||
"label.owner": "Proprietário",
|
||||
"label.page-views": "Visualizações de página",
|
||||
|
@ -67,80 +67,80 @@
|
|||
"label.password": "Senha",
|
||||
"label.powered-by": "Distribuído por {name}",
|
||||
"label.profile": "Perfil",
|
||||
"label.queries": "Queries",
|
||||
"label.queries": "Parâmetros",
|
||||
"label.query-parameters": "Parâmetros de Consulta",
|
||||
"label.realtime": "Tempo real",
|
||||
"label.referrers": "Referências",
|
||||
"label.refresh": "Atualizar",
|
||||
"label.regenerate": "Regenerate",
|
||||
"label.regions": "Regions",
|
||||
"label.remove": "Remove",
|
||||
"label.regenerate": "Regerar",
|
||||
"label.regions": "Regiões",
|
||||
"label.remove": "Remover",
|
||||
"label.required": "Obrigatório",
|
||||
"label.reset": "Redefinir",
|
||||
"label.reset-website": "Redefinir estatísticas",
|
||||
"label.role": "Role",
|
||||
"label.role": "Papel",
|
||||
"label.save": "Salvar",
|
||||
"label.screens": "Telas",
|
||||
"label.select-website": "Select website",
|
||||
"label.sessions": "Sessions",
|
||||
"label.select-website": "Selecionar site",
|
||||
"label.sessions": "Sessões",
|
||||
"label.settings": "Configurações",
|
||||
"label.share-url": "Link de compartilhamento",
|
||||
"label.single-day": "Dia específico",
|
||||
"label.tablet": "Tablet",
|
||||
"label.team": "Team",
|
||||
"label.team-guest": "Team guest",
|
||||
"label.team-id": "Team ID",
|
||||
"label.team-member": "Team member",
|
||||
"label.team-owner": "Team owner",
|
||||
"label.teams": "Teams",
|
||||
"label.team": "Time",
|
||||
"label.team-guest": "Convidado",
|
||||
"label.team-id": "ID do Time",
|
||||
"label.team-member": "Membro",
|
||||
"label.team-owner": "Proprietário",
|
||||
"label.teams": "Times",
|
||||
"label.theme": "Tema",
|
||||
"label.this-month": "Este mês",
|
||||
"label.this-week": "Esta semana",
|
||||
"label.this-year": "Este ano",
|
||||
"label.timezone": "Fuso horário",
|
||||
"label.title": "Title",
|
||||
"label.title": "Título",
|
||||
"label.today": "Hoje",
|
||||
"label.toggle-charts": "Mostrar/Esconder gráficos",
|
||||
"label.tracking-code": "Código de rastreamento",
|
||||
"label.unique-visitors": "Visitantes únicos",
|
||||
"label.unknown": "Desconhecido",
|
||||
"label.user": "User",
|
||||
"label.user": "Usuário",
|
||||
"label.username": "Nome de usuário",
|
||||
"label.users": "Users",
|
||||
"label.view": "View",
|
||||
"label.users": "Usuários",
|
||||
"label.view": "Ver",
|
||||
"label.view-details": "Ver detalhes",
|
||||
"label.views": "Visualizações",
|
||||
"label.visitors": "Visitantes",
|
||||
"label.website-id": "Website ID",
|
||||
"label.website-id": "ID do Site",
|
||||
"label.websites": "Sites",
|
||||
"label.yesterday": "Ontem",
|
||||
"message.active-users": "{x} {x, plural, one {visitante} other {visitantes}} neste momento",
|
||||
"message.confirm-delete": "Deseja realmente remover {target}?",
|
||||
"message.confirm-leave": "Are you sure you want to leave {target}?",
|
||||
"message.confirm-leave": "Você tem certeza que deseja sair de {target}?",
|
||||
"message.confirm-reset": "Você tem certeza que deseja redefinir as estatísticas de {target}?",
|
||||
"message.delete-website": "Remover site",
|
||||
"message.delete-website-warning": "Todos os dados associados também serão eliminados.",
|
||||
"message.error": "Ocorreu um erro.",
|
||||
"message.event-log": "{event} on {url}",
|
||||
"message.event-log": "{event} em {url}",
|
||||
"message.go-to-settings": "Ir para as configurações",
|
||||
"message.incorrect-username-password": "O nome de usuário e/ou senha está incorreto.",
|
||||
"message.invalid-domain": "Domínio inválido",
|
||||
"message.min-password-length": "Minimum length of {n} characters",
|
||||
"message.min-password-length": "Quantidade mínima de {n} caracteres",
|
||||
"message.no-data-available": "Sem dados disponíveis.",
|
||||
"message.no-match-password": "As senhas não correspondem",
|
||||
"message.no-teams": "You have not created any teams.",
|
||||
"message.no-users": "There are no users.",
|
||||
"message.no-teams": "Você não criou nenhum time.",
|
||||
"message.no-users": "Não há nenhum usuário.",
|
||||
"message.page-not-found": "Página não encontrada.",
|
||||
"message.reset-website": "Redefinir estatísticas",
|
||||
"message.reset-website-warning": "Todas as estatísticas deste site serão removidas, mas seu código de rastreamento permanecerá intacto.",
|
||||
"message.saved": "Salvo com sucesso.",
|
||||
"message.share-url": "Este é o link público de compartilhamento para {target}.",
|
||||
"message.team-already-member": "You are already a member of the team.",
|
||||
"message.team-not-found": "Team not found.",
|
||||
"message.team-already-member": "Você já um membro do time.",
|
||||
"message.team-not-found": "Time não encontrado.",
|
||||
"message.tracking-code": "Código de rastreamento",
|
||||
"message.user-deleted": "User deleted.",
|
||||
"message.user-deleted": "Usuário removido.",
|
||||
"message.visitor-log": "Visitante de {country} usando {browser} no {device} {os}",
|
||||
"messages.no-team-websites": "This team does not have any websites.",
|
||||
"messages.no-team-websites": "Este time não possui nenhum site.",
|
||||
"messages.no-websites-configured": "Nenhum site foi configurado ainda.",
|
||||
"messages.team-websites-info": "Websites can be viewed by anyone on the team."
|
||||
"messages.team-websites-info": "Os sites podem ser visualizados por qualquer membro da equipe."
|
||||
}
|
||||
|
|
42
lib/cache.ts
42
lib/cache.ts
|
@ -2,35 +2,7 @@ import { User, Website } from '@prisma/client';
|
|||
import redis from '@umami/redis-client';
|
||||
import { getSession, getUser, getWebsite } from '../queries';
|
||||
|
||||
const DELETED = 'DELETED';
|
||||
|
||||
async function fetchObject(key, query) {
|
||||
const obj = await redis.get(key);
|
||||
|
||||
if (obj === DELETED) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!obj) {
|
||||
return query().then(async data => {
|
||||
if (data) {
|
||||
await redis.set(key, data);
|
||||
}
|
||||
|
||||
return data;
|
||||
});
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
async function storeObject(key, data) {
|
||||
return redis.set(key, data);
|
||||
}
|
||||
|
||||
async function deleteObject(key, soft = false) {
|
||||
return soft ? redis.set(key, DELETED) : redis.del(key);
|
||||
}
|
||||
const { fetchObject, storeObject, deleteObject } = redis;
|
||||
|
||||
async function fetchWebsite(id): Promise<Website> {
|
||||
return fetchObject(`website:${id}`, () => getWebsite({ id }));
|
||||
|
@ -77,6 +49,16 @@ async function deleteSession(id) {
|
|||
return deleteObject(`session:${id}`);
|
||||
}
|
||||
|
||||
async function fetchUserBlock(userId: string) {
|
||||
const key = `user:block:${userId}`;
|
||||
return redis.get(key);
|
||||
}
|
||||
|
||||
async function incrementUserBlock(userId: string) {
|
||||
const key = `user:block:${userId}`;
|
||||
return redis.incr(key);
|
||||
}
|
||||
|
||||
export default {
|
||||
fetchWebsite,
|
||||
storeWebsite,
|
||||
|
@ -87,5 +69,7 @@ export default {
|
|||
fetchSession,
|
||||
storeSession,
|
||||
deleteSession,
|
||||
fetchUserBlock,
|
||||
incrementUserBlock,
|
||||
enabled: redis.enabled,
|
||||
};
|
||||
|
|
|
@ -49,6 +49,7 @@ function createKey(key, value, acc: { keyValues: any[]; parentKey: string }) {
|
|||
break;
|
||||
case 'boolean':
|
||||
eventDataType = EVENT_DATA_TYPE.boolean;
|
||||
value = value ? 'true' : 'false';
|
||||
break;
|
||||
case 'date':
|
||||
eventDataType = EVENT_DATA_TYPE.date;
|
||||
|
|
|
@ -1,4 +1,10 @@
|
|||
import { createMiddleware, unauthorized, badRequest, parseSecureToken } from 'next-basics';
|
||||
import {
|
||||
createMiddleware,
|
||||
unauthorized,
|
||||
badRequest,
|
||||
parseSecureToken,
|
||||
tooManyRequest,
|
||||
} from 'next-basics';
|
||||
import debug from 'debug';
|
||||
import cors from 'cors';
|
||||
import { validate } from 'uuid';
|
||||
|
@ -30,6 +36,9 @@ export const useSession = createMiddleware(async (req, res, next) => {
|
|||
|
||||
(req as any).session = session;
|
||||
} catch (e: any) {
|
||||
if (e.message === 'Usage Limit.') {
|
||||
return tooManyRequest(res, e.message);
|
||||
}
|
||||
return badRequest(res, e.message);
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ import { CollectRequestBody, NextApiRequestCollect } from 'pages/api/send';
|
|||
import { createSession } from 'queries';
|
||||
import { validate } from 'uuid';
|
||||
import { loadSession, loadWebsite } from './query';
|
||||
import cache from './cache';
|
||||
|
||||
export async function findSession(req: NextApiRequestCollect) {
|
||||
const { payload } = getJsonBody<CollectRequestBody>(req);
|
||||
|
@ -21,6 +22,8 @@ export async function findSession(req: NextApiRequestCollect) {
|
|||
const result = await parseToken(cacheToken, secret());
|
||||
|
||||
if (result) {
|
||||
await checkUserBlock(result?.ownerId);
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
@ -39,6 +42,8 @@ export async function findSession(req: NextApiRequestCollect) {
|
|||
throw new Error(`Website not found: ${websiteId}.`);
|
||||
}
|
||||
|
||||
await checkUserBlock(website.userId);
|
||||
|
||||
const { userAgent, browser, os, ip, country, subdivision1, subdivision2, city, device } =
|
||||
await getClientInfo(req, payload);
|
||||
const sessionId = uuid(websiteId, hostname, ip, userAgent);
|
||||
|
@ -58,6 +63,7 @@ export async function findSession(req: NextApiRequestCollect) {
|
|||
subdivision1,
|
||||
subdivision2,
|
||||
city,
|
||||
ownerId: website.userId,
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -88,5 +94,13 @@ export async function findSession(req: NextApiRequestCollect) {
|
|||
}
|
||||
}
|
||||
|
||||
return session;
|
||||
return { ...session, ownerId: website.userId };
|
||||
}
|
||||
|
||||
async function checkUserBlock(userId: string) {
|
||||
if (process.env.ENABLE_BLOCKER && (await cache.fetchUserBlock(userId))) {
|
||||
await cache.incrementUserBlock(userId);
|
||||
|
||||
throw new Error('Usage Limit.');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
require('dotenv').config();
|
||||
const pkg = require('./package.json');
|
||||
|
||||
const CLOUD_URL = 'https://cloud.umami.is';
|
||||
|
||||
const contentSecurityPolicy = `
|
||||
default-src 'self';
|
||||
img-src *;
|
||||
|
|
|
@ -62,7 +62,7 @@
|
|||
"@prisma/client": "4.13.0",
|
||||
"@tanstack/react-query": "^4.16.1",
|
||||
"@umami/prisma-client": "^0.2.0",
|
||||
"@umami/redis-client": "^0.2.0",
|
||||
"@umami/redis-client": "^0.5.0",
|
||||
"chalk": "^4.1.1",
|
||||
"chart.js": "^4.2.1",
|
||||
"chartjs-adapter-date-fns": "^3.0.0",
|
||||
|
@ -89,7 +89,7 @@
|
|||
"kafkajs": "^2.1.0",
|
||||
"maxmind": "^4.3.6",
|
||||
"moment-timezone": "^0.5.35",
|
||||
"next": "13.2.4",
|
||||
"next": "13.3.1",
|
||||
"next-basics": "^0.27.0",
|
||||
"node-fetch": "^3.2.8",
|
||||
"npm-run-all": "^4.1.5",
|
||||
|
|
|
@ -28,6 +28,7 @@ export interface NextApiRequestCollect extends NextApiRequest {
|
|||
session: {
|
||||
id: string;
|
||||
websiteId: string;
|
||||
ownerId: string;
|
||||
hostname: string;
|
||||
browser: string;
|
||||
os: string;
|
||||
|
|
|
@ -51,11 +51,11 @@ export default async (
|
|||
data.password = hashPassword(password);
|
||||
}
|
||||
|
||||
// Only admin can change these fields
|
||||
if (role && isAdmin) {
|
||||
data.role = role;
|
||||
}
|
||||
|
||||
// Only admin can change these fields
|
||||
if (username && isAdmin) {
|
||||
data.username = username;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,74 @@
|
|||
import { useAuth, useCors } from 'lib/middleware';
|
||||
import { NextApiRequestQueryBody } from 'lib/types';
|
||||
import { NextApiResponse } from 'next';
|
||||
import { methodNotAllowed, ok, unauthorized } from 'next-basics';
|
||||
import { getEventDataUsage, getEventUsage, getUserWebsites } from 'queries';
|
||||
|
||||
export interface UserUsageRequestQuery {
|
||||
id: string;
|
||||
startAt: string;
|
||||
endAt: string;
|
||||
}
|
||||
|
||||
export interface UserUsageRequestResponse {
|
||||
websiteEventUsage: number;
|
||||
eventDataUsage: number;
|
||||
websites: {
|
||||
websiteEventUsage: number;
|
||||
eventDataUsage: number;
|
||||
websiteId: string;
|
||||
websiteName: string;
|
||||
}[];
|
||||
}
|
||||
|
||||
export default async (
|
||||
req: NextApiRequestQueryBody<UserUsageRequestQuery>,
|
||||
res: NextApiResponse<UserUsageRequestResponse>,
|
||||
) => {
|
||||
await useCors(req, res);
|
||||
await useAuth(req, res);
|
||||
|
||||
const { user } = req.auth;
|
||||
|
||||
if (req.method === 'GET') {
|
||||
if (!user.isAdmin) {
|
||||
return unauthorized(res);
|
||||
}
|
||||
|
||||
const { id: userId, startAt, endAt } = req.query;
|
||||
|
||||
const startDate = new Date(+startAt);
|
||||
const endDate = new Date(+endAt);
|
||||
|
||||
const websites = await getUserWebsites(userId);
|
||||
|
||||
const websiteIds = websites.map(a => a.id);
|
||||
|
||||
const websiteEventUsage = await getEventUsage(websiteIds, startDate, endDate);
|
||||
const eventDataUsage = await getEventDataUsage(websiteIds, startDate, endDate);
|
||||
|
||||
const websiteUsage = websites.map(a => ({
|
||||
websiteId: a.id,
|
||||
websiteName: a.name,
|
||||
websiteEventUsage: websiteEventUsage.find(b => a.id === b.websiteId)?.count || 0,
|
||||
eventDataUsage: eventDataUsage.find(b => a.id === b.websiteId)?.count || 0,
|
||||
}));
|
||||
|
||||
const usage = websiteUsage.reduce(
|
||||
(acc, cv) => {
|
||||
acc.websiteEventUsage += cv.websiteEventUsage;
|
||||
acc.eventDataUsage += cv.eventDataUsage;
|
||||
|
||||
return acc;
|
||||
},
|
||||
{ websiteEventUsage: 0, eventDataUsage: 0 },
|
||||
);
|
||||
|
||||
return ok(res, {
|
||||
...usage,
|
||||
websites: websiteUsage,
|
||||
});
|
||||
}
|
||||
|
||||
return methodNotAllowed(res);
|
||||
};
|
|
@ -4,14 +4,14 @@ import { NextApiResponse } from 'next';
|
|||
import { methodNotAllowed, ok, unauthorized } from 'next-basics';
|
||||
import { getUserWebsites } from 'queries';
|
||||
|
||||
export interface WebsitesRequestBody {
|
||||
export interface UserWebsitesRequestBody {
|
||||
name: string;
|
||||
domain: string;
|
||||
shareId: string;
|
||||
}
|
||||
|
||||
export default async (
|
||||
req: NextApiRequestQueryBody<any, WebsitesRequestBody>,
|
||||
req: NextApiRequestQueryBody<any, UserWebsitesRequestBody>,
|
||||
res: NextApiResponse,
|
||||
) => {
|
||||
await useCors(req, res);
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import { NextApiResponse } from 'next';
|
||||
import { methodNotAllowed, ok, serverError, unauthorized } from 'next-basics';
|
||||
import { Website, NextApiRequestQueryBody } from 'lib/types';
|
||||
import { canViewWebsite, canUpdateWebsite, canDeleteWebsite } from 'lib/auth';
|
||||
import { useAuth, useCors } from 'lib/middleware';
|
||||
import { NextApiResponse } from 'next';
|
||||
import { methodNotAllowed, ok, serverError, unauthorized } from 'next-basics';
|
||||
import { deleteWebsite, getWebsite, updateWebsite } from 'queries';
|
||||
|
||||
export interface WebsiteRequestQuery {
|
||||
|
|
|
@ -16,7 +16,7 @@ export interface WebsitePageviewRequestQuery {
|
|||
timezone: string;
|
||||
url?: string;
|
||||
referrer?: string;
|
||||
pageTitle?: string;
|
||||
title?: string;
|
||||
os?: string;
|
||||
browser?: string;
|
||||
device?: string;
|
||||
|
@ -40,7 +40,7 @@ export default async (
|
|||
timezone,
|
||||
url,
|
||||
referrer,
|
||||
pageTitle,
|
||||
title,
|
||||
os,
|
||||
browser,
|
||||
device,
|
||||
|
@ -71,7 +71,7 @@ export default async (
|
|||
filters: {
|
||||
url,
|
||||
referrer,
|
||||
pageTitle,
|
||||
title,
|
||||
os,
|
||||
browser,
|
||||
device,
|
||||
|
@ -88,7 +88,7 @@ export default async (
|
|||
count: 'distinct website_event.',
|
||||
filters: {
|
||||
url,
|
||||
pageTitle,
|
||||
title,
|
||||
os,
|
||||
browser,
|
||||
device,
|
||||
|
|
|
@ -10,7 +10,7 @@ export default function RealtimeDetailsPage() {
|
|||
const { formatMessage, labels } = useMessages();
|
||||
const { get, useQuery } = useApi();
|
||||
const { data: website } = useQuery(['websites', websiteId], () =>
|
||||
get(`/websites/${websiteId}`, { enabled: !!websiteId }),
|
||||
websiteId ? get(`/websites/${websiteId}`, { enabled: !!websiteId }) : null,
|
||||
);
|
||||
const title = `${formatMessage(labels.realtime)}${website?.name ? ` - ${website.name}` : ''}`;
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"label.access-code": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Access code"
|
||||
"value": "Zuegangscode"
|
||||
}
|
||||
],
|
||||
"label.actions": [
|
||||
|
@ -14,7 +14,7 @@
|
|||
"label.activity-log": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Activity log"
|
||||
"value": "Aktivitätsverlauf"
|
||||
}
|
||||
],
|
||||
"label.add-website": [
|
||||
|
@ -86,19 +86,19 @@
|
|||
"label.cities": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Cities"
|
||||
"value": "Städt"
|
||||
}
|
||||
],
|
||||
"label.clear-all": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Clear all"
|
||||
"value": "Alles lösche"
|
||||
}
|
||||
],
|
||||
"label.confirm": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Confirm"
|
||||
"value": "Bestätige"
|
||||
}
|
||||
],
|
||||
"label.confirm-password": [
|
||||
|
@ -110,7 +110,7 @@
|
|||
"label.continue": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Continue"
|
||||
"value": "Wiiter"
|
||||
}
|
||||
],
|
||||
"label.countries": [
|
||||
|
@ -122,19 +122,19 @@
|
|||
"label.create-team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Create team"
|
||||
"value": "Team erstelle"
|
||||
}
|
||||
],
|
||||
"label.create-user": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Create user"
|
||||
"value": "Benutzer erstelle"
|
||||
}
|
||||
],
|
||||
"label.created": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Created"
|
||||
"value": "Erstellt"
|
||||
}
|
||||
],
|
||||
"label.current-password": [
|
||||
|
@ -158,7 +158,7 @@
|
|||
"label.data": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Data"
|
||||
"value": "Datä"
|
||||
}
|
||||
],
|
||||
"label.date-range": [
|
||||
|
@ -182,13 +182,13 @@
|
|||
"label.delete-team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Delete team"
|
||||
"value": "Team lösche"
|
||||
}
|
||||
],
|
||||
"label.delete-user": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Delete user"
|
||||
"value": "Benutzer lösche"
|
||||
}
|
||||
],
|
||||
"label.delete-website": [
|
||||
|
@ -266,13 +266,13 @@
|
|||
"label.join": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Join"
|
||||
"value": "Biträte"
|
||||
}
|
||||
],
|
||||
"label.join-team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Join team"
|
||||
"value": "Team biträte"
|
||||
}
|
||||
],
|
||||
"label.language": [
|
||||
|
@ -324,19 +324,19 @@
|
|||
"label.leave": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Leave"
|
||||
"value": "Verlah"
|
||||
}
|
||||
],
|
||||
"label.leave-team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Leave team"
|
||||
"value": "Team verlah"
|
||||
}
|
||||
],
|
||||
"label.login": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Login"
|
||||
"value": "Aamelde"
|
||||
}
|
||||
],
|
||||
"label.logout": [
|
||||
|
@ -348,7 +348,7 @@
|
|||
"label.members": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Members"
|
||||
"value": "Mitglieder"
|
||||
}
|
||||
],
|
||||
"label.mobile": [
|
||||
|
@ -384,7 +384,7 @@
|
|||
"label.operating-systems": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Betriebssystem"
|
||||
"value": "Betriibssystem"
|
||||
}
|
||||
],
|
||||
"label.owner": [
|
||||
|
@ -430,7 +430,7 @@
|
|||
"label.queries": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Queries"
|
||||
"value": "Abfrage"
|
||||
}
|
||||
],
|
||||
"label.query-parameters": [
|
||||
|
@ -460,19 +460,19 @@
|
|||
"label.regenerate": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Regenerate"
|
||||
"value": "Erneuere"
|
||||
}
|
||||
],
|
||||
"label.regions": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Regions"
|
||||
"value": "Regionä"
|
||||
}
|
||||
],
|
||||
"label.remove": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Remove"
|
||||
"value": "Entferne"
|
||||
}
|
||||
],
|
||||
"label.required": [
|
||||
|
@ -496,7 +496,7 @@
|
|||
"label.role": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Role"
|
||||
"value": "Rollä"
|
||||
}
|
||||
],
|
||||
"label.save": [
|
||||
|
@ -514,7 +514,7 @@
|
|||
"label.select-website": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Select website"
|
||||
"value": "Websiite uuswähle"
|
||||
}
|
||||
],
|
||||
"label.sessions": [
|
||||
|
@ -556,7 +556,7 @@
|
|||
"label.team-guest": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Team guest"
|
||||
"value": "Team Gast"
|
||||
}
|
||||
],
|
||||
"label.team-id": [
|
||||
|
@ -568,13 +568,13 @@
|
|||
"label.team-member": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Team member"
|
||||
"value": "Team Mitglied"
|
||||
}
|
||||
],
|
||||
"label.team-owner": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Team owner"
|
||||
"value": "Team Bsitzer"
|
||||
}
|
||||
],
|
||||
"label.teams": [
|
||||
|
@ -610,13 +610,13 @@
|
|||
"label.timezone": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Zitzone"
|
||||
"value": "Ziitzone"
|
||||
}
|
||||
],
|
||||
"label.title": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Title"
|
||||
"value": "Titel"
|
||||
}
|
||||
],
|
||||
"label.today": [
|
||||
|
@ -652,7 +652,7 @@
|
|||
"label.user": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "User"
|
||||
"value": "Benutzer"
|
||||
}
|
||||
],
|
||||
"label.username": [
|
||||
|
@ -664,13 +664,13 @@
|
|||
"label.users": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Users"
|
||||
"value": "Benutzer"
|
||||
}
|
||||
],
|
||||
"label.view": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "View"
|
||||
"value": "Azeige"
|
||||
}
|
||||
],
|
||||
"label.view-details": [
|
||||
|
@ -694,7 +694,7 @@
|
|||
"label.website-id": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Website ID"
|
||||
"value": "Websiite ID"
|
||||
}
|
||||
],
|
||||
"label.websites": [
|
||||
|
@ -760,7 +760,7 @@
|
|||
"message.confirm-leave": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Are you sure you want to leave "
|
||||
"value": "Sind Sie sich sicher, "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
|
@ -768,7 +768,7 @@
|
|||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": "?"
|
||||
"value": " zverlah?"
|
||||
}
|
||||
],
|
||||
"message.confirm-reset": [
|
||||
|
@ -810,7 +810,7 @@
|
|||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " on "
|
||||
"value": " uf "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
|
@ -838,7 +838,7 @@
|
|||
"message.min-password-length": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Minimum length of "
|
||||
"value": "Miminamli längi vo "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
|
@ -846,7 +846,7 @@
|
|||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " characters"
|
||||
"value": " Zeiche"
|
||||
}
|
||||
],
|
||||
"message.no-data-available": [
|
||||
|
@ -864,13 +864,13 @@
|
|||
"message.no-teams": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "You have not created any teams."
|
||||
"value": "Bisher sind no kei Teams erstellt worde."
|
||||
}
|
||||
],
|
||||
"message.no-users": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "There are no users."
|
||||
"value": "Da gits kei Benutzer"
|
||||
}
|
||||
],
|
||||
"message.page-not-found": [
|
||||
|
@ -900,27 +900,19 @@
|
|||
"message.share-url": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Das isch die öffentlichi URL zum Teile für "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "target"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": "."
|
||||
"value": "Ihri Websiitestatistik isch under de folgende URL öffentlich zuegänglich:"
|
||||
}
|
||||
],
|
||||
"message.team-already-member": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "You are already a member of the team."
|
||||
"value": "Sie sind bereits es Mitglied vo dem Team."
|
||||
}
|
||||
],
|
||||
"message.team-not-found": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Team not found."
|
||||
"value": "Team nöd gfunde."
|
||||
}
|
||||
],
|
||||
"message.tracking-code": [
|
||||
|
@ -932,7 +924,7 @@
|
|||
"message.user-deleted": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "User deleted."
|
||||
"value": "Benutzer glöscht."
|
||||
}
|
||||
],
|
||||
"message.visitor-log": [
|
||||
|
@ -972,7 +964,7 @@
|
|||
"messages.no-team-websites": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "This team does not have any websites."
|
||||
"value": "Dem Team sind kei Websiite zuegordnet."
|
||||
}
|
||||
],
|
||||
"messages.no-websites-configured": [
|
||||
|
@ -984,7 +976,7 @@
|
|||
"messages.team-websites-info": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Websites can be viewed by anyone on the team."
|
||||
"value": "Websiite chönd vo jedem im Team agluegt werde"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -122,13 +122,13 @@
|
|||
"label.create-team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Erstelle Team"
|
||||
"value": "Team erstellen"
|
||||
}
|
||||
],
|
||||
"label.create-user": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Erstelle Nutzer"
|
||||
"value": "Benutzer erstellen"
|
||||
}
|
||||
],
|
||||
"label.created": [
|
||||
|
@ -182,13 +182,13 @@
|
|||
"label.delete-team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Lösche Team"
|
||||
"value": "Team löschen"
|
||||
}
|
||||
],
|
||||
"label.delete-user": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Lösche Nutzer"
|
||||
"value": "Benutzer löschen"
|
||||
}
|
||||
],
|
||||
"label.delete-website": [
|
||||
|
@ -296,7 +296,7 @@
|
|||
"label.last-days": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Letzten "
|
||||
"value": "Letzte "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
|
@ -310,7 +310,7 @@
|
|||
"label.last-hours": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Letzten "
|
||||
"value": "Letzte "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
|
@ -466,7 +466,7 @@
|
|||
"label.regions": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Regions"
|
||||
"value": "Regionen"
|
||||
}
|
||||
],
|
||||
"label.remove": [
|
||||
|
@ -634,7 +634,7 @@
|
|||
"label.tracking-code": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Tracking Kennung"
|
||||
"value": "Tracking Code"
|
||||
}
|
||||
],
|
||||
"label.unique-visitors": [
|
||||
|
@ -652,7 +652,7 @@
|
|||
"label.user": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "User"
|
||||
"value": "Benutzer"
|
||||
}
|
||||
],
|
||||
"label.username": [
|
||||
|
@ -664,13 +664,13 @@
|
|||
"label.users": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Users"
|
||||
"value": "Benutzer"
|
||||
}
|
||||
],
|
||||
"label.view": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "View"
|
||||
"value": "Anzeigen"
|
||||
}
|
||||
],
|
||||
"label.view-details": [
|
||||
|
@ -694,7 +694,7 @@
|
|||
"label.website-id": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Website ID"
|
||||
"value": "Webseite ID"
|
||||
}
|
||||
],
|
||||
"label.websites": [
|
||||
|
@ -810,7 +810,7 @@
|
|||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " on "
|
||||
"value": " auf "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
|
@ -870,7 +870,7 @@
|
|||
"message.no-users": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Hier gibt es keine Nutzer."
|
||||
"value": "Hier gibt es keine Benutzer."
|
||||
}
|
||||
],
|
||||
"message.page-not-found": [
|
||||
|
@ -900,15 +900,7 @@
|
|||
"message.share-url": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Dies ist die öffentliche URL zum Teilen für "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "target"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": "."
|
||||
"value": "Ihre Webseitenstatistik ist unter der folgenden URL öffentlich zugänglich:"
|
||||
}
|
||||
],
|
||||
"message.team-already-member": [
|
||||
|
@ -926,13 +918,13 @@
|
|||
"message.tracking-code": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Tracking Kennung"
|
||||
"value": "Tracking Code"
|
||||
}
|
||||
],
|
||||
"message.user-deleted": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Nutzer gelöscht."
|
||||
"value": "Benutzer gelöscht."
|
||||
}
|
||||
],
|
||||
"message.visitor-log": [
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"label.access-code": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Access code"
|
||||
"value": "Хандалтын код"
|
||||
}
|
||||
],
|
||||
"label.actions": [
|
||||
|
@ -14,7 +14,7 @@
|
|||
"label.activity-log": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Activity log"
|
||||
"value": "Үйл ажиллагааны бүртгэл"
|
||||
}
|
||||
],
|
||||
"label.add-website": [
|
||||
|
@ -86,19 +86,19 @@
|
|||
"label.cities": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Cities"
|
||||
"value": "Хотууд"
|
||||
}
|
||||
],
|
||||
"label.clear-all": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Clear all"
|
||||
"value": "Бүгдийг арилгах"
|
||||
}
|
||||
],
|
||||
"label.confirm": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Confirm"
|
||||
"value": "Батлах"
|
||||
}
|
||||
],
|
||||
"label.confirm-password": [
|
||||
|
@ -110,7 +110,7 @@
|
|||
"label.continue": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Continue"
|
||||
"value": "Үргэлжлүүлэх"
|
||||
}
|
||||
],
|
||||
"label.countries": [
|
||||
|
@ -122,19 +122,19 @@
|
|||
"label.create-team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Create team"
|
||||
"value": "Баг үүсгэх"
|
||||
}
|
||||
],
|
||||
"label.create-user": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Create user"
|
||||
"value": "Хэрэглэгч үүсгэх"
|
||||
}
|
||||
],
|
||||
"label.created": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Created"
|
||||
"value": "Үүсгэсэн"
|
||||
}
|
||||
],
|
||||
"label.current-password": [
|
||||
|
@ -158,13 +158,13 @@
|
|||
"label.data": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Data"
|
||||
"value": "Өгөгдөл"
|
||||
}
|
||||
],
|
||||
"label.date-range": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Хугацааны мужид"
|
||||
"value": "Хугацааны муж"
|
||||
}
|
||||
],
|
||||
"label.default-date-range": [
|
||||
|
@ -182,13 +182,13 @@
|
|||
"label.delete-team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Delete team"
|
||||
"value": "Баг устгах"
|
||||
}
|
||||
],
|
||||
"label.delete-user": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Delete user"
|
||||
"value": "Хэрэглэгч устгах"
|
||||
}
|
||||
],
|
||||
"label.delete-website": [
|
||||
|
@ -206,7 +206,7 @@
|
|||
"label.details": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Details"
|
||||
"value": "Мэдээлэл"
|
||||
}
|
||||
],
|
||||
"label.devices": [
|
||||
|
@ -266,13 +266,13 @@
|
|||
"label.join": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Join"
|
||||
"value": "Нэгдэх"
|
||||
}
|
||||
],
|
||||
"label.join-team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Join team"
|
||||
"value": "Багт нэгдэх"
|
||||
}
|
||||
],
|
||||
"label.language": [
|
||||
|
@ -324,13 +324,13 @@
|
|||
"label.leave": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Leave"
|
||||
"value": "Гарах"
|
||||
}
|
||||
],
|
||||
"label.leave-team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Leave team"
|
||||
"value": "Багаас гарах"
|
||||
}
|
||||
],
|
||||
"label.login": [
|
||||
|
@ -348,7 +348,7 @@
|
|||
"label.members": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Members"
|
||||
"value": "Гишүүд"
|
||||
}
|
||||
],
|
||||
"label.mobile": [
|
||||
|
@ -430,7 +430,7 @@
|
|||
"label.queries": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Queries"
|
||||
"value": "Query-нүүд"
|
||||
}
|
||||
],
|
||||
"label.query-parameters": [
|
||||
|
@ -460,19 +460,19 @@
|
|||
"label.regenerate": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Regenerate"
|
||||
"value": "Дахин үүсгэх"
|
||||
}
|
||||
],
|
||||
"label.regions": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Regions"
|
||||
"value": "Бүсүүд"
|
||||
}
|
||||
],
|
||||
"label.remove": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Remove"
|
||||
"value": "Устгах"
|
||||
}
|
||||
],
|
||||
"label.required": [
|
||||
|
@ -484,7 +484,7 @@
|
|||
"label.reset": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Хуучин хэвд нь оруулах"
|
||||
"value": "Дахин эхлүүлэх"
|
||||
}
|
||||
],
|
||||
"label.reset-website": [
|
||||
|
@ -496,7 +496,7 @@
|
|||
"label.role": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Role"
|
||||
"value": "Эрх"
|
||||
}
|
||||
],
|
||||
"label.save": [
|
||||
|
@ -514,7 +514,7 @@
|
|||
"label.select-website": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Select website"
|
||||
"value": "Веб сонгох"
|
||||
}
|
||||
],
|
||||
"label.sessions": [
|
||||
|
@ -550,37 +550,37 @@
|
|||
"label.team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Team"
|
||||
"value": "Баг"
|
||||
}
|
||||
],
|
||||
"label.team-guest": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Team guest"
|
||||
"value": "Багийн зочин"
|
||||
}
|
||||
],
|
||||
"label.team-id": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Team ID"
|
||||
"value": "Багийн ID"
|
||||
}
|
||||
],
|
||||
"label.team-member": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Team member"
|
||||
"value": "Багийн гишүүн"
|
||||
}
|
||||
],
|
||||
"label.team-owner": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Team owner"
|
||||
"value": "Багийн эзэмшигч"
|
||||
}
|
||||
],
|
||||
"label.teams": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Teams"
|
||||
"value": "Багууд"
|
||||
}
|
||||
],
|
||||
"label.theme": [
|
||||
|
@ -616,7 +616,7 @@
|
|||
"label.title": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Title"
|
||||
"value": "Гарчиг"
|
||||
}
|
||||
],
|
||||
"label.today": [
|
||||
|
@ -652,7 +652,7 @@
|
|||
"label.user": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "User"
|
||||
"value": "Хэрэглэгч"
|
||||
}
|
||||
],
|
||||
"label.username": [
|
||||
|
@ -664,13 +664,13 @@
|
|||
"label.users": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Users"
|
||||
"value": "Хэрэглэгчид"
|
||||
}
|
||||
],
|
||||
"label.view": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "View"
|
||||
"value": "Харах"
|
||||
}
|
||||
],
|
||||
"label.view-details": [
|
||||
|
@ -694,7 +694,7 @@
|
|||
"label.website-id": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Website ID"
|
||||
"value": "Вебийн ID"
|
||||
}
|
||||
],
|
||||
"label.websites": [
|
||||
|
@ -768,7 +768,7 @@
|
|||
"message.confirm-leave": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Are you sure you want to leave "
|
||||
"value": "Та "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
|
@ -776,7 +776,7 @@
|
|||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": "?"
|
||||
"value": "-с гарахдаа итгэлтэй байна уу?"
|
||||
}
|
||||
],
|
||||
"message.confirm-reset": [
|
||||
|
@ -796,13 +796,21 @@
|
|||
"message.delete-website": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Веб устгах"
|
||||
"value": "Веб устгахын тулд доорх хэсэгт "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "confirmation"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " гэж бичиж, баталгаажуулна уу."
|
||||
}
|
||||
],
|
||||
"message.delete-website-warning": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Үүнтэй холбоотой бүх өгөгдөл устах болно."
|
||||
"value": "Энэ вебтэй холбоотой бүх өгөгдөл устах болно."
|
||||
}
|
||||
],
|
||||
"message.error": [
|
||||
|
@ -814,15 +822,15 @@
|
|||
"message.event-log": [
|
||||
{
|
||||
"type": 1,
|
||||
"value": "event"
|
||||
"value": "url"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " on "
|
||||
"value": "-д "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "url"
|
||||
"value": "event"
|
||||
}
|
||||
],
|
||||
"message.go-to-settings": [
|
||||
|
@ -846,7 +854,7 @@
|
|||
"message.min-password-length": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Minimum length of "
|
||||
"value": "Хамгийн багадаа "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
|
@ -854,7 +862,7 @@
|
|||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " characters"
|
||||
"value": " тэмдэгт"
|
||||
}
|
||||
],
|
||||
"message.no-data-available": [
|
||||
|
@ -866,19 +874,19 @@
|
|||
"message.no-match-password": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Нууц үг тохирохгүй байна"
|
||||
"value": "Нууц үг тохирохгүй байна."
|
||||
}
|
||||
],
|
||||
"message.no-teams": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "You have not created any teams."
|
||||
"value": "Та ямар ч баг үүсгээгүй байна."
|
||||
}
|
||||
],
|
||||
"message.no-users": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "There are no users."
|
||||
"value": "Хэрэглэгч байхгүй байна."
|
||||
}
|
||||
],
|
||||
"message.page-not-found": [
|
||||
|
@ -890,7 +898,15 @@
|
|||
"message.reset-website": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Тоон үзүүлэлтийг дахин эхлүүлэх"
|
||||
"value": "Тоон үзүүлэлийг дахин эхлүүлэхийн тулд доорх хэсэгт "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "confirmation"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " гэж бичиж, баталгаажуулна уу."
|
||||
}
|
||||
],
|
||||
"message.reset-website-warning": [
|
||||
|
@ -902,41 +918,51 @@
|
|||
"message.saved": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Амжилттай хадгаллаа."
|
||||
"value": "Хадгалсан."
|
||||
}
|
||||
],
|
||||
"message.share-url": [
|
||||
{
|
||||
"type": 1,
|
||||
"value": "target"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": "-г нийтэд хуваалцах холбоос."
|
||||
"value": "Таны вебийн тоон үзүүлэлтүүд доорх URL дээр нийтэд харагдах болно:"
|
||||
}
|
||||
],
|
||||
"message.team-already-member": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "You are already a member of the team."
|
||||
"value": "Та аль хэдийн энэ багийн гишүүн болсон байна."
|
||||
}
|
||||
],
|
||||
"message.team-not-found": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Team not found."
|
||||
"value": "Баг олдсонгүй."
|
||||
}
|
||||
],
|
||||
"message.tracking-code": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Мөрдөх код"
|
||||
"value": "Энэ вебийн хандалтуудыг мөрдөхийн тулд доорх кодыг HTML-нхээ "
|
||||
},
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "..."
|
||||
}
|
||||
],
|
||||
"type": 8,
|
||||
"value": "head"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " хэсэгт байрлуулна уу."
|
||||
}
|
||||
],
|
||||
"message.user-deleted": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "User deleted."
|
||||
"value": "Хэрэглэгч устсан."
|
||||
}
|
||||
],
|
||||
"message.visitor-log": [
|
||||
|
@ -976,7 +1002,7 @@
|
|||
"messages.no-team-websites": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "This team does not have any websites."
|
||||
"value": "Энэ багт ямар ч веб алга."
|
||||
}
|
||||
],
|
||||
"messages.no-websites-configured": [
|
||||
|
@ -988,7 +1014,7 @@
|
|||
"messages.team-websites-info": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Websites can be viewed by anyone on the team."
|
||||
"value": "Вебийг багийн бүх гишүүд үзэж болно."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"label.access-code": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Access code"
|
||||
"value": "Toegangscode"
|
||||
}
|
||||
],
|
||||
"label.actions": [
|
||||
|
@ -14,19 +14,19 @@
|
|||
"label.activity-log": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Activity log"
|
||||
"value": "Activiteiten logboek"
|
||||
}
|
||||
],
|
||||
"label.add-website": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Website toevoegen"
|
||||
"value": "Website koppelen"
|
||||
}
|
||||
],
|
||||
"label.admin": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Administrator"
|
||||
"value": "Beheerder"
|
||||
}
|
||||
],
|
||||
"label.all": [
|
||||
|
@ -86,19 +86,19 @@
|
|||
"label.cities": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Cities"
|
||||
"value": "Steden"
|
||||
}
|
||||
],
|
||||
"label.clear-all": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Clear all"
|
||||
"value": "Filters wissen"
|
||||
}
|
||||
],
|
||||
"label.confirm": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Confirm"
|
||||
"value": "Bevestigen"
|
||||
}
|
||||
],
|
||||
"label.confirm-password": [
|
||||
|
@ -110,7 +110,7 @@
|
|||
"label.continue": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Continue"
|
||||
"value": "Doorgaan"
|
||||
}
|
||||
],
|
||||
"label.countries": [
|
||||
|
@ -122,19 +122,19 @@
|
|||
"label.create-team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Create team"
|
||||
"value": "Team aanmaken"
|
||||
}
|
||||
],
|
||||
"label.create-user": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Create user"
|
||||
"value": "Gebruiker maken"
|
||||
}
|
||||
],
|
||||
"label.created": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Created"
|
||||
"value": "Gemaakt"
|
||||
}
|
||||
],
|
||||
"label.current-password": [
|
||||
|
@ -158,7 +158,7 @@
|
|||
"label.data": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Data"
|
||||
"value": "Gegevens"
|
||||
}
|
||||
],
|
||||
"label.date-range": [
|
||||
|
@ -182,13 +182,13 @@
|
|||
"label.delete-team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Delete team"
|
||||
"value": "Team verwijderen"
|
||||
}
|
||||
],
|
||||
"label.delete-user": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Delete user"
|
||||
"value": "Verwijder gebruiker"
|
||||
}
|
||||
],
|
||||
"label.delete-website": [
|
||||
|
@ -200,13 +200,13 @@
|
|||
"label.desktop": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Desktop"
|
||||
"value": "Computer"
|
||||
}
|
||||
],
|
||||
"label.details": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Details"
|
||||
"value": "Informatie"
|
||||
}
|
||||
],
|
||||
"label.devices": [
|
||||
|
@ -236,7 +236,7 @@
|
|||
"label.edit-dashboard": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Edit dashboard"
|
||||
"value": "Dashboard aanpassen"
|
||||
}
|
||||
],
|
||||
"label.enable-share-url": [
|
||||
|
@ -266,13 +266,13 @@
|
|||
"label.join": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Join"
|
||||
"value": "Lid worden"
|
||||
}
|
||||
],
|
||||
"label.join-team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Join team"
|
||||
"value": "Word lid van een team"
|
||||
}
|
||||
],
|
||||
"label.language": [
|
||||
|
@ -284,7 +284,7 @@
|
|||
"label.languages": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Languages"
|
||||
"value": "Talen"
|
||||
}
|
||||
],
|
||||
"label.laptop": [
|
||||
|
@ -324,13 +324,13 @@
|
|||
"label.leave": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Leave"
|
||||
"value": "Verlaten"
|
||||
}
|
||||
],
|
||||
"label.leave-team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Leave team"
|
||||
"value": "Verlaat team"
|
||||
}
|
||||
],
|
||||
"label.login": [
|
||||
|
@ -348,7 +348,7 @@
|
|||
"label.members": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Members"
|
||||
"value": "Gebruikers"
|
||||
}
|
||||
],
|
||||
"label.mobile": [
|
||||
|
@ -430,13 +430,13 @@
|
|||
"label.queries": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Queries"
|
||||
"value": "Parameters"
|
||||
}
|
||||
],
|
||||
"label.query-parameters": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Query parameters"
|
||||
"value": "URL-parameters"
|
||||
}
|
||||
],
|
||||
"label.realtime": [
|
||||
|
@ -460,19 +460,19 @@
|
|||
"label.regenerate": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Regenerate"
|
||||
"value": "Opnieuw genereren"
|
||||
}
|
||||
],
|
||||
"label.regions": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Regions"
|
||||
"value": "Regio's"
|
||||
}
|
||||
],
|
||||
"label.remove": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Remove"
|
||||
"value": "Verwijderen"
|
||||
}
|
||||
],
|
||||
"label.required": [
|
||||
|
@ -484,7 +484,7 @@
|
|||
"label.reset": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Resetten"
|
||||
"value": "Opnieuw instellen"
|
||||
}
|
||||
],
|
||||
"label.reset-website": [
|
||||
|
@ -496,7 +496,7 @@
|
|||
"label.role": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Role"
|
||||
"value": "Gebruikersrol"
|
||||
}
|
||||
],
|
||||
"label.save": [
|
||||
|
@ -514,13 +514,13 @@
|
|||
"label.select-website": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Select website"
|
||||
"value": "Website selecteren"
|
||||
}
|
||||
],
|
||||
"label.sessions": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Sessions"
|
||||
"value": "Sessies"
|
||||
}
|
||||
],
|
||||
"label.settings": [
|
||||
|
@ -556,7 +556,7 @@
|
|||
"label.team-guest": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Team guest"
|
||||
"value": "Team gast"
|
||||
}
|
||||
],
|
||||
"label.team-id": [
|
||||
|
@ -568,13 +568,13 @@
|
|||
"label.team-member": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Team member"
|
||||
"value": "Teamlid"
|
||||
}
|
||||
],
|
||||
"label.team-owner": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Team owner"
|
||||
"value": "Teameigenaar"
|
||||
}
|
||||
],
|
||||
"label.teams": [
|
||||
|
@ -616,7 +616,7 @@
|
|||
"label.title": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Title"
|
||||
"value": "Titel"
|
||||
}
|
||||
],
|
||||
"label.today": [
|
||||
|
@ -652,7 +652,7 @@
|
|||
"label.user": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "User"
|
||||
"value": "Gebruiker"
|
||||
}
|
||||
],
|
||||
"label.username": [
|
||||
|
@ -664,13 +664,13 @@
|
|||
"label.users": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Users"
|
||||
"value": "Gebruikers"
|
||||
}
|
||||
],
|
||||
"label.view": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "View"
|
||||
"value": "Weergave"
|
||||
}
|
||||
],
|
||||
"label.view-details": [
|
||||
|
@ -706,7 +706,7 @@
|
|||
"label.yesterday": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Yesterday"
|
||||
"value": "Gisteren"
|
||||
}
|
||||
],
|
||||
"message.active-users": [
|
||||
|
@ -760,7 +760,7 @@
|
|||
"message.confirm-leave": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Are you sure you want to leave "
|
||||
"value": "Weet je zeker dat je "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
|
@ -768,7 +768,7 @@
|
|||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": "?"
|
||||
"value": " wilt verlaten?"
|
||||
}
|
||||
],
|
||||
"message.confirm-reset": [
|
||||
|
@ -810,7 +810,7 @@
|
|||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " on "
|
||||
"value": " op "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
|
@ -838,7 +838,7 @@
|
|||
"message.min-password-length": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Minimum length of "
|
||||
"value": "Minimale lengte van "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
|
@ -846,7 +846,7 @@
|
|||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " characters"
|
||||
"value": " tekens"
|
||||
}
|
||||
],
|
||||
"message.no-data-available": [
|
||||
|
@ -864,13 +864,13 @@
|
|||
"message.no-teams": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "You have not created any teams."
|
||||
"value": "Er zijn nog geen teams aangemaakt."
|
||||
}
|
||||
],
|
||||
"message.no-users": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "There are no users."
|
||||
"value": "Er zijn geen gebruikers."
|
||||
}
|
||||
],
|
||||
"message.page-not-found": [
|
||||
|
@ -914,13 +914,13 @@
|
|||
"message.team-already-member": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "You are already a member of the team."
|
||||
"value": "Je bent al lid van het team."
|
||||
}
|
||||
],
|
||||
"message.team-not-found": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Team not found."
|
||||
"value": "Team niet gevonden."
|
||||
}
|
||||
],
|
||||
"message.tracking-code": [
|
||||
|
@ -932,7 +932,7 @@
|
|||
"message.user-deleted": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "User deleted."
|
||||
"value": "Gebruiker verwijderd."
|
||||
}
|
||||
],
|
||||
"message.visitor-log": [
|
||||
|
@ -972,7 +972,7 @@
|
|||
"messages.no-team-websites": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "This team does not have any websites."
|
||||
"value": "Er zijn geen websites gekoppeld aan dit team."
|
||||
}
|
||||
],
|
||||
"messages.no-websites-configured": [
|
||||
|
@ -984,7 +984,7 @@
|
|||
"messages.team-websites-info": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Websites can be viewed by anyone on the team."
|
||||
"value": "Websites kunnen door iedereen in het team worden bekeken."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"label.access-code": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Access code"
|
||||
"value": "Código de acesso"
|
||||
}
|
||||
],
|
||||
"label.actions": [
|
||||
|
@ -14,7 +14,7 @@
|
|||
"label.activity-log": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Activity log"
|
||||
"value": "Log de atividade"
|
||||
}
|
||||
],
|
||||
"label.add-website": [
|
||||
|
@ -44,7 +44,7 @@
|
|||
"label.analytics": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Analytics"
|
||||
"value": "Estatísticas"
|
||||
}
|
||||
],
|
||||
"label.average-visit-time": [
|
||||
|
@ -86,19 +86,19 @@
|
|||
"label.cities": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Cities"
|
||||
"value": "Cidades"
|
||||
}
|
||||
],
|
||||
"label.clear-all": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Clear all"
|
||||
"value": "Limpar tudo"
|
||||
}
|
||||
],
|
||||
"label.confirm": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Confirm"
|
||||
"value": "Confirmar"
|
||||
}
|
||||
],
|
||||
"label.confirm-password": [
|
||||
|
@ -110,7 +110,7 @@
|
|||
"label.continue": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Continue"
|
||||
"value": "Continuar"
|
||||
}
|
||||
],
|
||||
"label.countries": [
|
||||
|
@ -122,19 +122,19 @@
|
|||
"label.create-team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Create team"
|
||||
"value": "Criar time"
|
||||
}
|
||||
],
|
||||
"label.create-user": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Create user"
|
||||
"value": "Criar usuário"
|
||||
}
|
||||
],
|
||||
"label.created": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Created"
|
||||
"value": "Criado"
|
||||
}
|
||||
],
|
||||
"label.current-password": [
|
||||
|
@ -182,13 +182,13 @@
|
|||
"label.delete-team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Delete team"
|
||||
"value": "Remover time"
|
||||
}
|
||||
],
|
||||
"label.delete-user": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Delete user"
|
||||
"value": "Remover usuário"
|
||||
}
|
||||
],
|
||||
"label.delete-website": [
|
||||
|
@ -206,7 +206,7 @@
|
|||
"label.details": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Details"
|
||||
"value": "Detalhes"
|
||||
}
|
||||
],
|
||||
"label.devices": [
|
||||
|
@ -236,7 +236,7 @@
|
|||
"label.edit-dashboard": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Edit dashboard"
|
||||
"value": "Editar painel"
|
||||
}
|
||||
],
|
||||
"label.enable-share-url": [
|
||||
|
@ -266,13 +266,13 @@
|
|||
"label.join": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Join"
|
||||
"value": "Entrar"
|
||||
}
|
||||
],
|
||||
"label.join-team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Join team"
|
||||
"value": "Entrar no time"
|
||||
}
|
||||
],
|
||||
"label.language": [
|
||||
|
@ -324,13 +324,13 @@
|
|||
"label.leave": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Leave"
|
||||
"value": "Sair"
|
||||
}
|
||||
],
|
||||
"label.leave-team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Leave team"
|
||||
"value": "Sair do time"
|
||||
}
|
||||
],
|
||||
"label.login": [
|
||||
|
@ -348,7 +348,7 @@
|
|||
"label.members": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Members"
|
||||
"value": "Membros"
|
||||
}
|
||||
],
|
||||
"label.mobile": [
|
||||
|
@ -378,7 +378,7 @@
|
|||
"label.none": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "None"
|
||||
"value": "Nenhum"
|
||||
}
|
||||
],
|
||||
"label.operating-systems": [
|
||||
|
@ -430,7 +430,7 @@
|
|||
"label.queries": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Queries"
|
||||
"value": "Parâmetros"
|
||||
}
|
||||
],
|
||||
"label.query-parameters": [
|
||||
|
@ -460,19 +460,19 @@
|
|||
"label.regenerate": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Regenerate"
|
||||
"value": "Regerar"
|
||||
}
|
||||
],
|
||||
"label.regions": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Regions"
|
||||
"value": "Regiões"
|
||||
}
|
||||
],
|
||||
"label.remove": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Remove"
|
||||
"value": "Remover"
|
||||
}
|
||||
],
|
||||
"label.required": [
|
||||
|
@ -496,7 +496,7 @@
|
|||
"label.role": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Role"
|
||||
"value": "Papel"
|
||||
}
|
||||
],
|
||||
"label.save": [
|
||||
|
@ -514,13 +514,13 @@
|
|||
"label.select-website": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Select website"
|
||||
"value": "Selecionar site"
|
||||
}
|
||||
],
|
||||
"label.sessions": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Sessions"
|
||||
"value": "Sessões"
|
||||
}
|
||||
],
|
||||
"label.settings": [
|
||||
|
@ -550,37 +550,37 @@
|
|||
"label.team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Team"
|
||||
"value": "Time"
|
||||
}
|
||||
],
|
||||
"label.team-guest": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Team guest"
|
||||
"value": "Convidado"
|
||||
}
|
||||
],
|
||||
"label.team-id": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Team ID"
|
||||
"value": "ID do Time"
|
||||
}
|
||||
],
|
||||
"label.team-member": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Team member"
|
||||
"value": "Membro"
|
||||
}
|
||||
],
|
||||
"label.team-owner": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Team owner"
|
||||
"value": "Proprietário"
|
||||
}
|
||||
],
|
||||
"label.teams": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Teams"
|
||||
"value": "Times"
|
||||
}
|
||||
],
|
||||
"label.theme": [
|
||||
|
@ -616,7 +616,7 @@
|
|||
"label.title": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Title"
|
||||
"value": "Título"
|
||||
}
|
||||
],
|
||||
"label.today": [
|
||||
|
@ -652,7 +652,7 @@
|
|||
"label.user": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "User"
|
||||
"value": "Usuário"
|
||||
}
|
||||
],
|
||||
"label.username": [
|
||||
|
@ -664,13 +664,13 @@
|
|||
"label.users": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Users"
|
||||
"value": "Usuários"
|
||||
}
|
||||
],
|
||||
"label.view": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "View"
|
||||
"value": "Ver"
|
||||
}
|
||||
],
|
||||
"label.view-details": [
|
||||
|
@ -694,7 +694,7 @@
|
|||
"label.website-id": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Website ID"
|
||||
"value": "ID do Site"
|
||||
}
|
||||
],
|
||||
"label.websites": [
|
||||
|
@ -764,7 +764,7 @@
|
|||
"message.confirm-leave": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Are you sure you want to leave "
|
||||
"value": "Você tem certeza que deseja sair de "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
|
@ -814,7 +814,7 @@
|
|||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " on "
|
||||
"value": " em "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
|
@ -842,7 +842,7 @@
|
|||
"message.min-password-length": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Minimum length of "
|
||||
"value": "Quantidade mínima de "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
|
@ -850,7 +850,7 @@
|
|||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " characters"
|
||||
"value": " caracteres"
|
||||
}
|
||||
],
|
||||
"message.no-data-available": [
|
||||
|
@ -868,13 +868,13 @@
|
|||
"message.no-teams": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "You have not created any teams."
|
||||
"value": "Você não criou nenhum time."
|
||||
}
|
||||
],
|
||||
"message.no-users": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "There are no users."
|
||||
"value": "Não há nenhum usuário."
|
||||
}
|
||||
],
|
||||
"message.page-not-found": [
|
||||
|
@ -918,13 +918,13 @@
|
|||
"message.team-already-member": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "You are already a member of the team."
|
||||
"value": "Você já um membro do time."
|
||||
}
|
||||
],
|
||||
"message.team-not-found": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Team not found."
|
||||
"value": "Time não encontrado."
|
||||
}
|
||||
],
|
||||
"message.tracking-code": [
|
||||
|
@ -936,7 +936,7 @@
|
|||
"message.user-deleted": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "User deleted."
|
||||
"value": "Usuário removido."
|
||||
}
|
||||
],
|
||||
"message.visitor-log": [
|
||||
|
@ -976,7 +976,7 @@
|
|||
"messages.no-team-websites": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "This team does not have any websites."
|
||||
"value": "Este time não possui nenhum site."
|
||||
}
|
||||
],
|
||||
"messages.no-websites-configured": [
|
||||
|
@ -988,7 +988,7 @@
|
|||
"messages.team-websites-info": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Websites can be viewed by anyone on the team."
|
||||
"value": "Os sites podem ser visualizados por qualquer membro da equipe."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { Prisma, Team, TeamUser } from '@prisma/client';
|
||||
import { getRandomChars } from 'next-basics';
|
||||
import cache from 'lib/cache';
|
||||
import { ROLES } from 'lib/constants';
|
||||
import prisma from 'lib/prisma';
|
||||
|
@ -222,6 +223,7 @@ export async function deleteUser(
|
|||
cloudMode
|
||||
? client.user.update({
|
||||
data: {
|
||||
username: getRandomChars(32),
|
||||
deletedAt: new Date(),
|
||||
},
|
||||
where: {
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
import clickhouse from 'lib/clickhouse';
|
||||
import { CLICKHOUSE, PRISMA, runQuery } from 'lib/db';
|
||||
|
||||
export function getEventUsage(...args: [websiteIds: string[], startDate: Date, endDate: Date]) {
|
||||
return runQuery({
|
||||
[PRISMA]: () => relationalQuery(...args),
|
||||
[CLICKHOUSE]: () => clickhouseQuery(...args),
|
||||
});
|
||||
}
|
||||
|
||||
function relationalQuery(websiteIds: string[], startDate: Date, endDate: Date) {
|
||||
throw new Error('Not Implemented');
|
||||
}
|
||||
|
||||
function clickhouseQuery(websiteIds: string[], startDate: Date, endDate: Date) {
|
||||
const { rawQuery } = clickhouse;
|
||||
|
||||
return rawQuery(
|
||||
`select
|
||||
website_id as websiteId,
|
||||
count(*) as count
|
||||
from website_event
|
||||
where created_at between {startDate:DateTime64} and {endDate:DateTime64}
|
||||
and website_id in {websiteIds:Array(UUID)}
|
||||
group by website_id`,
|
||||
{
|
||||
websiteIds,
|
||||
startDate,
|
||||
endDate,
|
||||
},
|
||||
);
|
||||
}
|
|
@ -1,7 +1,6 @@
|
|||
import prisma from 'lib/prisma';
|
||||
import clickhouse from 'lib/clickhouse';
|
||||
import { runQuery, CLICKHOUSE, PRISMA } from 'lib/db';
|
||||
import { EVENT_TYPE } from 'lib/constants';
|
||||
import { CLICKHOUSE, PRISMA, runQuery } from 'lib/db';
|
||||
import prisma from 'lib/prisma';
|
||||
|
||||
export function getEvents(...args: [websiteId: string, startAt: Date, eventType: number]) {
|
||||
return runQuery({
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
import clickhouse from 'lib/clickhouse';
|
||||
import { CLICKHOUSE, PRISMA, runQuery } from 'lib/db';
|
||||
|
||||
export function getEventDataUsage(...args: [websiteIds: string[], startDate: Date, endDate: Date]) {
|
||||
return runQuery({
|
||||
[PRISMA]: () => relationalQuery(...args),
|
||||
[CLICKHOUSE]: () => clickhouseQuery(...args),
|
||||
});
|
||||
}
|
||||
|
||||
function relationalQuery(websiteIds: string[], startDate: Date, endDate: Date) {
|
||||
throw new Error('Not Implemented');
|
||||
}
|
||||
|
||||
function clickhouseQuery(websiteIds: string[], startDate: Date, endDate: Date) {
|
||||
const { rawQuery } = clickhouse;
|
||||
|
||||
return rawQuery(
|
||||
`select
|
||||
website_id as websiteId,
|
||||
count(*) as count
|
||||
from event_data
|
||||
where created_at between {startDate:DateTime64} and {endDate:DateTime64}
|
||||
and website_id in {websiteIds:Array(UUID)}
|
||||
group by website_id`,
|
||||
{
|
||||
websiteIds,
|
||||
startDate,
|
||||
endDate,
|
||||
},
|
||||
);
|
||||
}
|
|
@ -3,8 +3,10 @@ export * from './admin/teamUser';
|
|||
export * from './admin/user';
|
||||
export * from './admin/website';
|
||||
export * from './analytics/event/getEventMetrics';
|
||||
export * from './analytics/event/getEventUsage';
|
||||
export * from './analytics/event/getEvents';
|
||||
export * from './analytics/eventData/getEventData';
|
||||
export * from './analytics/eventData/getEventDataUsage';
|
||||
export * from './analytics/event/saveEvent';
|
||||
export * from './analytics/pageview/getPageviewMetrics';
|
||||
export * from './analytics/pageview/getPageviewStats';
|
||||
|
|
|
@ -11,7 +11,7 @@ if (process.env.SKIP_DB_CHECK) {
|
|||
}
|
||||
|
||||
function getDatabaseType(url = process.env.DATABASE_URL) {
|
||||
const type = process.env.DATABASE_TYPE || (url && url.split(':')[0]);
|
||||
const type = url && url.split(':')[0];
|
||||
|
||||
if (type === 'postgres') {
|
||||
return 'postgresql';
|
||||
|
@ -20,7 +20,6 @@ function getDatabaseType(url = process.env.DATABASE_URL) {
|
|||
return type;
|
||||
}
|
||||
|
||||
const databaseType = getDatabaseType();
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
function success(msg) {
|
||||
|
@ -49,10 +48,11 @@ async function checkConnection() {
|
|||
}
|
||||
}
|
||||
|
||||
async function checkDatabaseVersion(databaseType) {
|
||||
async function checkDatabaseVersion() {
|
||||
const query = await prisma.$queryRaw`select version() as version`;
|
||||
const version = semver.valid(semver.coerce(query[0].version));
|
||||
|
||||
const databaseType = getDatabaseType();
|
||||
const minVersion = databaseType === 'postgresql' ? '9.4.0' : '5.7.0';
|
||||
|
||||
if (semver.lt(version, minVersion)) {
|
||||
|
@ -87,7 +87,7 @@ async function applyMigration() {
|
|||
let err = false;
|
||||
for (let fn of [checkEnv, checkConnection, checkDatabaseVersion, checkV1Tables, applyMigration]) {
|
||||
try {
|
||||
fn.name === 'checkDatabaseVersion' ? await fn(databaseType) : await fn();
|
||||
await fn();
|
||||
} catch (e) {
|
||||
error(e.message);
|
||||
err = true;
|
||||
|
|
|
@ -0,0 +1,138 @@
|
|||
type TrackedProperties = {
|
||||
/**
|
||||
* Hostname of server
|
||||
*
|
||||
* @description extracted from `window.location.hostname`
|
||||
* @example 'analytics.umami.is'
|
||||
*/
|
||||
hostname: string;
|
||||
|
||||
/**
|
||||
* Browser language
|
||||
*
|
||||
* @description extracted from `window.navigator.language`
|
||||
* @example 'en-US', 'fr-FR'
|
||||
*/
|
||||
language: string;
|
||||
|
||||
/**
|
||||
* Page referrer
|
||||
*
|
||||
* @description extracted from `window.navigator.language`
|
||||
* @example 'https://analytics.umami.is/docs/getting-started'
|
||||
*/
|
||||
referrer: string;
|
||||
|
||||
/**
|
||||
* Screen dimensions
|
||||
*
|
||||
* @description extracted from `window.screen.width` and `window.screen.height`
|
||||
* @example '1920x1080', '2560x1440'
|
||||
*/
|
||||
screen: string;
|
||||
|
||||
/**
|
||||
* Page title
|
||||
*
|
||||
* @description extracted from `document.querySelector('head > title')`
|
||||
* @example 'umami'
|
||||
*/
|
||||
title: string;
|
||||
|
||||
/**
|
||||
* Page url
|
||||
*
|
||||
* @description built from `${window.location.pathname}${window.location.search}`
|
||||
* @example 'docs/getting-started'
|
||||
*/
|
||||
url: string;
|
||||
|
||||
/**
|
||||
* Website ID (required)
|
||||
*
|
||||
* @example 'b59e9c65-ae32-47f1-8400-119fcf4861c4'
|
||||
*/
|
||||
website: string;
|
||||
};
|
||||
|
||||
type WithRequired<T, K extends keyof T> = T & { [P in K]-?: T[P] }
|
||||
|
||||
/**
|
||||
*
|
||||
* Event Data can work with any JSON data. There are a few rules in place to maintain performance.
|
||||
* - Numbers have a max precision of 4.
|
||||
* - Strings have a max length of 500.
|
||||
* - Arrays are converted to a String, with the same max length of 500.
|
||||
* - Objects have a max of 50 properties. Arrays are considered 1 property.
|
||||
*/
|
||||
type EventData = Record<string, object>;
|
||||
type EventProperties = {
|
||||
name: string;
|
||||
data?: EventData;
|
||||
} & WithRequired<TrackedProperties, 'website'>
|
||||
| WithRequired<TrackedProperties, 'website'>;
|
||||
|
||||
interface Window {
|
||||
umami: {
|
||||
track: {
|
||||
/**
|
||||
* Track a page view
|
||||
*
|
||||
* @example ```
|
||||
* umami.track();
|
||||
* ```
|
||||
*/
|
||||
(): Promise<string>;
|
||||
|
||||
/**
|
||||
* Track an event with a given name
|
||||
*
|
||||
* @example ```
|
||||
* umami.track('signup-button');
|
||||
* ```
|
||||
*/
|
||||
(eventName: string): Promise<string>;
|
||||
|
||||
/**
|
||||
* Tracks an event with dynamic data.
|
||||
*
|
||||
* When tracking events, the default properties are included in the payload. This is equivalent to running:
|
||||
*
|
||||
* ```js
|
||||
* umami.track(props => ({
|
||||
* ...props,
|
||||
* name: 'signup-button',
|
||||
* data: {
|
||||
* name: 'newsletter',
|
||||
* id: 123
|
||||
* }
|
||||
* }));
|
||||
* ```
|
||||
*
|
||||
* @example ```
|
||||
* umami.track('signup-button', { name: 'newsletter', id: 123 });
|
||||
* ```
|
||||
*/
|
||||
(eventName: string, obj: EventData): Promise<string>;
|
||||
|
||||
/**
|
||||
* Tracks a page view with custom properties
|
||||
*
|
||||
* @example ```
|
||||
* umami.track({ website: 'e676c9b4-11e4-4ef1-a4d7-87001773e9f2', url: '/home', title: 'Home page' });
|
||||
* ```
|
||||
*/
|
||||
(properties: WithRequired<Partial<TrackedProperties>, 'website'>): Promise<string>;
|
||||
|
||||
/**
|
||||
* Tracks an event with fully customizable dynamic data
|
||||
* Ilf you don't specify any `name` and/or `data`, it will be treated as a page view
|
||||
*
|
||||
* @example ```
|
||||
* umami.track((props) => ({ ...props, url: path }));
|
||||
* ```
|
||||
*/
|
||||
(eventFunction: (prop: TrackedProperties) => EventProperties): Promise<string>;
|
||||
};
|
||||
};
|
||||
}
|
267
yarn.lock
267
yarn.lock
|
@ -1518,6 +1518,13 @@
|
|||
dependencies:
|
||||
regenerator-runtime "^0.13.10"
|
||||
|
||||
"@babel/runtime@^7.21.0":
|
||||
version "7.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200"
|
||||
integrity sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.13.11"
|
||||
|
||||
"@babel/runtime@^7.8.4":
|
||||
version "7.20.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.0.tgz#824a9ef325ffde6f78056059db3168c08785e24a"
|
||||
|
@ -1862,9 +1869,9 @@
|
|||
eslint-visitor-keys "^3.3.0"
|
||||
|
||||
"@eslint-community/regexpp@^4.4.0":
|
||||
version "4.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.0.tgz#f6f729b02feee2c749f57e334b7a1b5f40a81724"
|
||||
integrity sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==
|
||||
version "4.5.1"
|
||||
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884"
|
||||
integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==
|
||||
|
||||
"@eslint/eslintrc@^2.0.2":
|
||||
version "2.0.2"
|
||||
|
@ -2301,10 +2308,10 @@
|
|||
slash "^3.0.0"
|
||||
tiny-glob "^0.2.9"
|
||||
|
||||
"@next/env@13.2.4":
|
||||
version "13.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/env/-/env-13.2.4.tgz#8b763700262b2445140a44a8c8d088cef676dbae"
|
||||
integrity sha512-+Mq3TtpkeeKFZanPturjcXt+KHfKYnLlX6jMLyCrmpq6OOs4i1GqBOAauSkii9QeKCMTYzGppar21JU57b/GEA==
|
||||
"@next/env@13.3.1":
|
||||
version "13.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/env/-/env-13.3.1.tgz#589707043065f6b71d411ed9b8f1ffd057c0fd4a"
|
||||
integrity sha512-EDtCoedIZC7JlUQ3uaQpSc4aVmyhbLHmQVALg7pFfQgOTjgSnn7mKtA0DiCMkYvvsx6aFb5octGMtWrOtGXW9A==
|
||||
|
||||
"@next/eslint-plugin-next@12.3.4":
|
||||
version "12.3.4"
|
||||
|
@ -2313,70 +2320,50 @@
|
|||
dependencies:
|
||||
glob "7.1.7"
|
||||
|
||||
"@next/swc-android-arm-eabi@13.2.4":
|
||||
version "13.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.2.4.tgz#758d0403771e549f9cee71cbabc0cb16a6c947c0"
|
||||
integrity sha512-DWlalTSkLjDU11MY11jg17O1gGQzpRccM9Oes2yTqj2DpHndajrXHGxj9HGtJ+idq2k7ImUdJVWS2h2l/EDJOw==
|
||||
"@next/swc-darwin-arm64@13.3.1":
|
||||
version "13.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.3.1.tgz#2c9719dd10a9cdf63bf50a7576b05dcf78999fe8"
|
||||
integrity sha512-UXPtriEc/pBP8luSLSCZBcbzPeVv+SSjs9cH/KygTbhmACye8/OOXRZO13Z2Wq1G0gLmEAIHQAOuF+vafPd2lw==
|
||||
|
||||
"@next/swc-android-arm64@13.2.4":
|
||||
version "13.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-13.2.4.tgz#834d586523045110d5602e0c8aae9028835ac427"
|
||||
integrity sha512-sRavmUImUCf332Gy+PjIfLkMhiRX1Ez4SI+3vFDRs1N5eXp+uNzjFUK/oLMMOzk6KFSkbiK/3Wt8+dHQR/flNg==
|
||||
"@next/swc-darwin-x64@13.3.1":
|
||||
version "13.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.3.1.tgz#0be90342c89e53a390ccd9bece15f7f5cd480049"
|
||||
integrity sha512-lT36yYxosCfLtplFzJWgo0hrPu6/do8+msgM7oQkPeohDNdhjtjFUgOOwdSnPublLR6Mo2Ym4P/wl5OANuD2bw==
|
||||
|
||||
"@next/swc-darwin-arm64@13.2.4":
|
||||
version "13.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.2.4.tgz#5006fca179a36ef3a24d293abadec7438dbb48c6"
|
||||
integrity sha512-S6vBl+OrInP47TM3LlYx65betocKUUlTZDDKzTiRDbsRESeyIkBtZ6Qi5uT2zQs4imqllJznVjFd1bXLx3Aa6A==
|
||||
"@next/swc-linux-arm64-gnu@13.3.1":
|
||||
version "13.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.3.1.tgz#a7353265839f8b8569a346a444dc3ab3770d297e"
|
||||
integrity sha512-wRb76nLWJhonH8s3kxC/1tFguEkeOPayIwe9mkaz1G/yeS3OrjeyKMJsb4+Kdg0zbTo53bNCOl59NNtDM7yyyw==
|
||||
|
||||
"@next/swc-darwin-x64@13.2.4":
|
||||
version "13.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.2.4.tgz#6549c7c04322766acc3264ccdb3e1b43fcaf7946"
|
||||
integrity sha512-a6LBuoYGcFOPGd4o8TPo7wmv5FnMr+Prz+vYHopEDuhDoMSHOnC+v+Ab4D7F0NMZkvQjEJQdJS3rqgFhlZmKlw==
|
||||
"@next/swc-linux-arm64-musl@13.3.1":
|
||||
version "13.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.3.1.tgz#24552e6102c350e372f83f505a1d93c880551a50"
|
||||
integrity sha512-qz3BzjJRZ16Iq/jrp+pjiYOc0jTjHlfmxQmZk9x/+5uhRP6/eWQSTAPVJ33BMo6oK5O5N4644OgTAbzXzorecg==
|
||||
|
||||
"@next/swc-freebsd-x64@13.2.4":
|
||||
version "13.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.2.4.tgz#0bbe28979e3e868debc2cc06e45e186ce195b7f4"
|
||||
integrity sha512-kkbzKVZGPaXRBPisoAQkh3xh22r+TD+5HwoC5bOkALraJ0dsOQgSMAvzMXKsN3tMzJUPS0tjtRf1cTzrQ0I5vQ==
|
||||
"@next/swc-linux-x64-gnu@13.3.1":
|
||||
version "13.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.3.1.tgz#5f335a683b6eafa52307b12af97782993b6c45ff"
|
||||
integrity sha512-6mgkLmwlyWlomQmpl21I3hxgqE5INoW4owTlcLpNsd1V4wP+J46BlI/5zV5KWWbzjfncIqzXoeGs5Eg+1GHODA==
|
||||
|
||||
"@next/swc-linux-arm-gnueabihf@13.2.4":
|
||||
version "13.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.2.4.tgz#1d28d2203f5a7427d6e7119d7bcb5fc40959fb3e"
|
||||
integrity sha512-7qA1++UY0fjprqtjBZaOA6cas/7GekpjVsZn/0uHvquuITFCdKGFCsKNBx3S0Rpxmx6WYo0GcmhNRM9ru08BGg==
|
||||
"@next/swc-linux-x64-musl@13.3.1":
|
||||
version "13.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.3.1.tgz#58e5aad6f97203a0788783f66324456c8f9cdb50"
|
||||
integrity sha512-uqm5sielhQmKJM+qayIhgZv1KlS5pqTdQ99b+Z7hMWryXS96qE0DftTmMZowBcUL6x7s2vSXyH5wPtO1ON7LBg==
|
||||
|
||||
"@next/swc-linux-arm64-gnu@13.2.4":
|
||||
version "13.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.2.4.tgz#eb26448190948cdf4c44b8f34110a3ecea32f1d0"
|
||||
integrity sha512-xzYZdAeq883MwXgcwc72hqo/F/dwUxCukpDOkx/j1HTq/J0wJthMGjinN9wH5bPR98Mfeh1MZJ91WWPnZOedOg==
|
||||
"@next/swc-win32-arm64-msvc@13.3.1":
|
||||
version "13.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.3.1.tgz#f8ed1badab57ed4503969758754e6fb0cf326753"
|
||||
integrity sha512-WomIiTj/v3LevltlibNQKmvrOymNRYL+a0dp5R73IwPWN5FvXWwSELN/kiNALig/+T3luc4qHNTyvMCp9L6U5Q==
|
||||
|
||||
"@next/swc-linux-arm64-musl@13.2.4":
|
||||
version "13.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.2.4.tgz#c4227c0acd94a420bb14924820710e6284d234d3"
|
||||
integrity sha512-8rXr3WfmqSiYkb71qzuDP6I6R2T2tpkmf83elDN8z783N9nvTJf2E7eLx86wu2OJCi4T05nuxCsh4IOU3LQ5xw==
|
||||
"@next/swc-win32-ia32-msvc@13.3.1":
|
||||
version "13.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.3.1.tgz#7f599c8975b09ee5527cc49b9e5a4d13be50635a"
|
||||
integrity sha512-M+PoH+0+q658wRUbs285RIaSTYnGBSTdweH/0CdzDgA6Q4rBM0sQs4DHmO3BPP0ltCO/vViIoyG7ks66XmCA5g==
|
||||
|
||||
"@next/swc-linux-x64-gnu@13.2.4":
|
||||
version "13.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.2.4.tgz#6bcb540944ee9b0209b33bfc23b240c2044dfc3e"
|
||||
integrity sha512-Ngxh51zGSlYJ4EfpKG4LI6WfquulNdtmHg1yuOYlaAr33KyPJp4HeN/tivBnAHcZkoNy0hh/SbwDyCnz5PFJQQ==
|
||||
|
||||
"@next/swc-linux-x64-musl@13.2.4":
|
||||
version "13.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.2.4.tgz#ce21e43251eaf09a09df39372b2c3e38028c30ff"
|
||||
integrity sha512-gOvwIYoSxd+j14LOcvJr+ekd9fwYT1RyMAHOp7znA10+l40wkFiMONPLWiZuHxfRk+Dy7YdNdDh3ImumvL6VwA==
|
||||
|
||||
"@next/swc-win32-arm64-msvc@13.2.4":
|
||||
version "13.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.2.4.tgz#68220063d8e5e082f5465498675640dedb670ff1"
|
||||
integrity sha512-q3NJzcfClgBm4HvdcnoEncmztxrA5GXqKeiZ/hADvC56pwNALt3ngDC6t6qr1YW9V/EPDxCYeaX4zYxHciW4Dw==
|
||||
|
||||
"@next/swc-win32-ia32-msvc@13.2.4":
|
||||
version "13.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.2.4.tgz#7c120ab54a081be9566df310bed834f168252990"
|
||||
integrity sha512-/eZ5ncmHUYtD2fc6EUmAIZlAJnVT2YmxDsKs1Ourx0ttTtvtma/WKlMV5NoUsyOez0f9ExLyOpeCoz5aj+MPXw==
|
||||
|
||||
"@next/swc-win32-x64-msvc@13.2.4":
|
||||
version "13.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.2.4.tgz#5abda92fe12b9829bf7951c4a221282c56041144"
|
||||
integrity sha512-0MffFmyv7tBLlji01qc0IaPP/LVExzvj7/R5x1Jph1bTAIj4Vu81yFQWHHQAP6r4ff9Ukj1mBK6MDNVXm7Tcvw==
|
||||
"@next/swc-win32-x64-msvc@13.3.1":
|
||||
version "13.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.3.1.tgz#192d43ab44ebb98bd4f5865d0e1d7ce62703182f"
|
||||
integrity sha512-Sl1F4Vp5Z1rNXWZYqJwMuWRRol4bqOB6+/d7KqkgQ4AcafKPN1PZmpkCoxv4UFHtFNIB7EotnuIhtXu3zScicQ==
|
||||
|
||||
"@nodelib/fs.scandir@2.1.5":
|
||||
version "2.1.5"
|
||||
|
@ -2912,10 +2899,10 @@
|
|||
"@svgr/plugin-jsx" "^6.5.1"
|
||||
"@svgr/plugin-svgo" "^6.5.1"
|
||||
|
||||
"@swc/helpers@0.4.14":
|
||||
version "0.4.14"
|
||||
resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.14.tgz#1352ac6d95e3617ccb7c1498ff019654f1e12a74"
|
||||
integrity sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==
|
||||
"@swc/helpers@0.5.0":
|
||||
version "0.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.0.tgz#bf1d807b60f7290d0ec763feea7ccdeda06e85f1"
|
||||
integrity sha512-SjY/p4MmECVVEWspzSRpQEM3sjR17sP8PbGxELWrT+YZMBfiUyt1MRUNjMV23zohwlG2HYtCQOsCwsTHguXkyg==
|
||||
dependencies:
|
||||
tslib "^2.4.0"
|
||||
|
||||
|
@ -3151,14 +3138,14 @@
|
|||
integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==
|
||||
|
||||
"@typescript-eslint/eslint-plugin@^5.50.0":
|
||||
version "5.59.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.1.tgz#9b09ee1541bff1d2cebdcb87e7ce4a4003acde08"
|
||||
integrity sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg==
|
||||
version "5.59.2"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.2.tgz#684a2ce7182f3b4dac342eef7caa1c2bae476abd"
|
||||
integrity sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A==
|
||||
dependencies:
|
||||
"@eslint-community/regexpp" "^4.4.0"
|
||||
"@typescript-eslint/scope-manager" "5.59.1"
|
||||
"@typescript-eslint/type-utils" "5.59.1"
|
||||
"@typescript-eslint/utils" "5.59.1"
|
||||
"@typescript-eslint/scope-manager" "5.59.2"
|
||||
"@typescript-eslint/type-utils" "5.59.2"
|
||||
"@typescript-eslint/utils" "5.59.2"
|
||||
debug "^4.3.4"
|
||||
grapheme-splitter "^1.0.4"
|
||||
ignore "^5.2.0"
|
||||
|
@ -3177,13 +3164,13 @@
|
|||
debug "^4.3.4"
|
||||
|
||||
"@typescript-eslint/parser@^5.50.0":
|
||||
version "5.59.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.59.1.tgz#73c2c12127c5c1182d2e5b71a8fa2a85d215cbb4"
|
||||
integrity sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g==
|
||||
version "5.59.2"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.59.2.tgz#c2c443247901d95865b9f77332d9eee7c55655e8"
|
||||
integrity sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==
|
||||
dependencies:
|
||||
"@typescript-eslint/scope-manager" "5.59.1"
|
||||
"@typescript-eslint/types" "5.59.1"
|
||||
"@typescript-eslint/typescript-estree" "5.59.1"
|
||||
"@typescript-eslint/scope-manager" "5.59.2"
|
||||
"@typescript-eslint/types" "5.59.2"
|
||||
"@typescript-eslint/typescript-estree" "5.59.2"
|
||||
debug "^4.3.4"
|
||||
|
||||
"@typescript-eslint/scope-manager@5.45.0":
|
||||
|
@ -3194,21 +3181,21 @@
|
|||
"@typescript-eslint/types" "5.45.0"
|
||||
"@typescript-eslint/visitor-keys" "5.45.0"
|
||||
|
||||
"@typescript-eslint/scope-manager@5.59.1":
|
||||
version "5.59.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.1.tgz#8a20222719cebc5198618a5d44113705b51fd7fe"
|
||||
integrity sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA==
|
||||
"@typescript-eslint/scope-manager@5.59.2":
|
||||
version "5.59.2"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz#f699fe936ee4e2c996d14f0fdd3a7da5ba7b9a4c"
|
||||
integrity sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "5.59.1"
|
||||
"@typescript-eslint/visitor-keys" "5.59.1"
|
||||
"@typescript-eslint/types" "5.59.2"
|
||||
"@typescript-eslint/visitor-keys" "5.59.2"
|
||||
|
||||
"@typescript-eslint/type-utils@5.59.1":
|
||||
version "5.59.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.59.1.tgz#63981d61684fd24eda2f9f08c0a47ecb000a2111"
|
||||
integrity sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw==
|
||||
"@typescript-eslint/type-utils@5.59.2":
|
||||
version "5.59.2"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.59.2.tgz#0729c237503604cd9a7084b5af04c496c9a4cdcf"
|
||||
integrity sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==
|
||||
dependencies:
|
||||
"@typescript-eslint/typescript-estree" "5.59.1"
|
||||
"@typescript-eslint/utils" "5.59.1"
|
||||
"@typescript-eslint/typescript-estree" "5.59.2"
|
||||
"@typescript-eslint/utils" "5.59.2"
|
||||
debug "^4.3.4"
|
||||
tsutils "^3.21.0"
|
||||
|
||||
|
@ -3217,10 +3204,10 @@
|
|||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.45.0.tgz#794760b9037ee4154c09549ef5a96599621109c5"
|
||||
integrity sha512-QQij+u/vgskA66azc9dCmx+rev79PzX8uDHpsqSjEFtfF2gBUTRCpvYMh2gw2ghkJabNkPlSUCimsyBEQZd1DA==
|
||||
|
||||
"@typescript-eslint/types@5.59.1":
|
||||
version "5.59.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.1.tgz#03f3fedd1c044cb336ebc34cc7855f121991f41d"
|
||||
integrity sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg==
|
||||
"@typescript-eslint/types@5.59.2":
|
||||
version "5.59.2"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.2.tgz#b511d2b9847fe277c5cb002a2318bd329ef4f655"
|
||||
integrity sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==
|
||||
|
||||
"@typescript-eslint/typescript-estree@5.45.0":
|
||||
version "5.45.0"
|
||||
|
@ -3235,30 +3222,30 @@
|
|||
semver "^7.3.7"
|
||||
tsutils "^3.21.0"
|
||||
|
||||
"@typescript-eslint/typescript-estree@5.59.1":
|
||||
version "5.59.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.1.tgz#4aa546d27fd0d477c618f0ca00b483f0ec84c43c"
|
||||
integrity sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA==
|
||||
"@typescript-eslint/typescript-estree@5.59.2":
|
||||
version "5.59.2"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.2.tgz#6e2fabd3ba01db5d69df44e0b654c0b051fe9936"
|
||||
integrity sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "5.59.1"
|
||||
"@typescript-eslint/visitor-keys" "5.59.1"
|
||||
"@typescript-eslint/types" "5.59.2"
|
||||
"@typescript-eslint/visitor-keys" "5.59.2"
|
||||
debug "^4.3.4"
|
||||
globby "^11.1.0"
|
||||
is-glob "^4.0.3"
|
||||
semver "^7.3.7"
|
||||
tsutils "^3.21.0"
|
||||
|
||||
"@typescript-eslint/utils@5.59.1":
|
||||
version "5.59.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.59.1.tgz#d89fc758ad23d2157cfae53f0b429bdf15db9473"
|
||||
integrity sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA==
|
||||
"@typescript-eslint/utils@5.59.2":
|
||||
version "5.59.2"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.59.2.tgz#0c45178124d10cc986115885688db6abc37939f4"
|
||||
integrity sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==
|
||||
dependencies:
|
||||
"@eslint-community/eslint-utils" "^4.2.0"
|
||||
"@types/json-schema" "^7.0.9"
|
||||
"@types/semver" "^7.3.12"
|
||||
"@typescript-eslint/scope-manager" "5.59.1"
|
||||
"@typescript-eslint/types" "5.59.1"
|
||||
"@typescript-eslint/typescript-estree" "5.59.1"
|
||||
"@typescript-eslint/scope-manager" "5.59.2"
|
||||
"@typescript-eslint/types" "5.59.2"
|
||||
"@typescript-eslint/typescript-estree" "5.59.2"
|
||||
eslint-scope "^5.1.1"
|
||||
semver "^7.3.7"
|
||||
|
||||
|
@ -3270,12 +3257,12 @@
|
|||
"@typescript-eslint/types" "5.45.0"
|
||||
eslint-visitor-keys "^3.3.0"
|
||||
|
||||
"@typescript-eslint/visitor-keys@5.59.1":
|
||||
version "5.59.1"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.1.tgz#0d96c36efb6560d7fb8eb85de10442c10d8f6058"
|
||||
integrity sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA==
|
||||
"@typescript-eslint/visitor-keys@5.59.2":
|
||||
version "5.59.2"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz#37a419dc2723a3eacbf722512b86d6caf7d3b750"
|
||||
integrity sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "5.59.1"
|
||||
"@typescript-eslint/types" "5.59.2"
|
||||
eslint-visitor-keys "^3.3.0"
|
||||
|
||||
"@umami/prisma-client@^0.2.0":
|
||||
|
@ -3285,10 +3272,10 @@
|
|||
dependencies:
|
||||
debug "^4.3.4"
|
||||
|
||||
"@umami/redis-client@^0.2.0":
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@umami/redis-client/-/redis-client-0.2.0.tgz#bdb1cd8b5c99afc5230621f19296c6d3559d68af"
|
||||
integrity sha512-TONWhkuC//K2hRo3Psk7FHsuvu3XkQIYMY62/CERPtlIJz4Ac7DqsmYw4jO9/RkljA9XLl/5u+OggD4ARhMV8A==
|
||||
"@umami/redis-client@^0.5.0":
|
||||
version "0.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@umami/redis-client/-/redis-client-0.5.0.tgz#09b15458001bc172fc856d65316efbe5ff749461"
|
||||
integrity sha512-x7wx/pMjyg3AAYzgjGOw031bNhyZ81h6tRMAl60RQQI9xlJaJEA1r0TEUrWfFi21gHAvdBLJGYCsvHzpix4LKQ==
|
||||
dependencies:
|
||||
debug "^4.3.4"
|
||||
redis "^4.5.1"
|
||||
|
@ -3847,7 +3834,7 @@ builtin-modules@^3.3.0:
|
|||
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6"
|
||||
integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==
|
||||
|
||||
busboy@^1.6.0:
|
||||
busboy@1.6.0, busboy@^1.6.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893"
|
||||
integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==
|
||||
|
@ -4505,7 +4492,14 @@ date-fns-tz@^1.1.4:
|
|||
resolved "https://registry.yarnpkg.com/date-fns-tz/-/date-fns-tz-1.3.8.tgz#083e3a4e1f19b7857fa0c18deea6c2bc46ded7b9"
|
||||
integrity sha512-qwNXUFtMHTTU6CFSFjoJ80W8Fzzp24LntbjFFBgL/faqds4e5mo9mftoRLgr3Vi1trISsg4awSpYVsOQCRnapQ==
|
||||
|
||||
date-fns@^2.23.0, date-fns@^2.29.3:
|
||||
date-fns@^2.23.0:
|
||||
version "2.30.0"
|
||||
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0"
|
||||
integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.21.0"
|
||||
|
||||
date-fns@^2.29.3:
|
||||
version "2.29.3"
|
||||
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8"
|
||||
integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==
|
||||
|
@ -7034,30 +7028,27 @@ next-basics@^0.27.0:
|
|||
bcryptjs "^2.4.3"
|
||||
jsonwebtoken "^9.0.0"
|
||||
|
||||
next@13.2.4:
|
||||
version "13.2.4"
|
||||
resolved "https://registry.yarnpkg.com/next/-/next-13.2.4.tgz#2363330392b0f7da02ab41301f60857ffa7f67d6"
|
||||
integrity sha512-g1I30317cThkEpvzfXujf0O4wtaQHtDCLhlivwlTJ885Ld+eOgcz7r3TGQzeU+cSRoNHtD8tsJgzxVdYojFssw==
|
||||
next@13.3.1:
|
||||
version "13.3.1"
|
||||
resolved "https://registry.yarnpkg.com/next/-/next-13.3.1.tgz#17625f7423db2e059d71b41bd9031756cf2b33bc"
|
||||
integrity sha512-eByWRxPzKHs2oQz1yE41LX35umhz86ZSZ+mYyXBqn2IBi2hyUqxBA88avywdr4uyH+hCJczegGsDGWbzQA5Rqw==
|
||||
dependencies:
|
||||
"@next/env" "13.2.4"
|
||||
"@swc/helpers" "0.4.14"
|
||||
"@next/env" "13.3.1"
|
||||
"@swc/helpers" "0.5.0"
|
||||
busboy "1.6.0"
|
||||
caniuse-lite "^1.0.30001406"
|
||||
postcss "8.4.14"
|
||||
styled-jsx "5.1.1"
|
||||
optionalDependencies:
|
||||
"@next/swc-android-arm-eabi" "13.2.4"
|
||||
"@next/swc-android-arm64" "13.2.4"
|
||||
"@next/swc-darwin-arm64" "13.2.4"
|
||||
"@next/swc-darwin-x64" "13.2.4"
|
||||
"@next/swc-freebsd-x64" "13.2.4"
|
||||
"@next/swc-linux-arm-gnueabihf" "13.2.4"
|
||||
"@next/swc-linux-arm64-gnu" "13.2.4"
|
||||
"@next/swc-linux-arm64-musl" "13.2.4"
|
||||
"@next/swc-linux-x64-gnu" "13.2.4"
|
||||
"@next/swc-linux-x64-musl" "13.2.4"
|
||||
"@next/swc-win32-arm64-msvc" "13.2.4"
|
||||
"@next/swc-win32-ia32-msvc" "13.2.4"
|
||||
"@next/swc-win32-x64-msvc" "13.2.4"
|
||||
"@next/swc-darwin-arm64" "13.3.1"
|
||||
"@next/swc-darwin-x64" "13.3.1"
|
||||
"@next/swc-linux-arm64-gnu" "13.3.1"
|
||||
"@next/swc-linux-arm64-musl" "13.3.1"
|
||||
"@next/swc-linux-x64-gnu" "13.3.1"
|
||||
"@next/swc-linux-x64-musl" "13.3.1"
|
||||
"@next/swc-win32-arm64-msvc" "13.3.1"
|
||||
"@next/swc-win32-ia32-msvc" "13.3.1"
|
||||
"@next/swc-win32-x64-msvc" "13.3.1"
|
||||
|
||||
nice-try@^1.0.4:
|
||||
version "1.0.5"
|
||||
|
|
Loading…
Reference in New Issue