From 09a75ec720d9f935b867e4901582a5555f7b38ea Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Tue, 9 Apr 2024 22:20:11 -0700 Subject: [PATCH 001/438] Fixed region view. Closes #2648. --- src/pages/api/websites/[websiteId]/metrics.ts | 2 +- .../analytics/sessions/getSessionMetrics.ts | 18 +++++++----------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/pages/api/websites/[websiteId]/metrics.ts b/src/pages/api/websites/[websiteId]/metrics.ts index 02e3a0095a..f9893e7900 100644 --- a/src/pages/api/websites/[websiteId]/metrics.ts +++ b/src/pages/api/websites/[websiteId]/metrics.ts @@ -87,7 +87,7 @@ export default async ( } if (SESSION_COLUMNS.includes(type)) { - const data = await getSessionMetrics(websiteId, column, filters, limit, offset); + const data = await getSessionMetrics(websiteId, type, filters, limit, offset); if (type === 'language') { const combined = {}; diff --git a/src/queries/analytics/sessions/getSessionMetrics.ts b/src/queries/analytics/sessions/getSessionMetrics.ts index 77ccb4105f..e28f1fb2e7 100644 --- a/src/queries/analytics/sessions/getSessionMetrics.ts +++ b/src/queries/analytics/sessions/getSessionMetrics.ts @@ -1,17 +1,11 @@ import prisma from 'lib/prisma'; import clickhouse from 'lib/clickhouse'; import { runQuery, CLICKHOUSE, PRISMA } from 'lib/db'; -import { EVENT_TYPE, SESSION_COLUMNS } from 'lib/constants'; +import { EVENT_TYPE, FILTER_COLUMNS, SESSION_COLUMNS } from 'lib/constants'; import { QueryFilters } from 'lib/types'; export async function getSessionMetrics( - ...args: [ - websiteId: string, - column: string, - filters: QueryFilters, - limit?: number, - offset?: number, - ] + ...args: [websiteId: string, type: string, filters: QueryFilters, limit?: number, offset?: number] ) { return runQuery({ [PRISMA]: () => relationalQuery(...args), @@ -21,11 +15,12 @@ export async function getSessionMetrics( async function relationalQuery( websiteId: string, - column: string, + type: string, filters: QueryFilters, limit: number = 500, offset: number = 0, ) { + const column = FILTER_COLUMNS[type] || type; const { parseFilters, rawQuery } = prisma; const { filterQuery, joinSession, params } = await parseFilters( websiteId, @@ -34,7 +29,7 @@ async function relationalQuery( eventType: EVENT_TYPE.pageView, }, { - joinSession: SESSION_COLUMNS.includes(column), + joinSession: SESSION_COLUMNS.includes(type), }, ); const includeCountry = column === 'city' || column === 'subdivision1'; @@ -63,11 +58,12 @@ async function relationalQuery( async function clickhouseQuery( websiteId: string, - column: string, + type: string, filters: QueryFilters, limit: number = 500, offset: number = 0, ): Promise<{ x: string; y: number }[]> { + const column = FILTER_COLUMNS[type] || type; const { parseFilters, rawQuery } = clickhouse; const { filterQuery, params } = await parseFilters(websiteId, { ...filters, From 6973b2b760d1fa40c4af4ba383d9b5955b921973 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Wed, 10 Apr 2024 12:26:09 -0700 Subject: [PATCH 002/438] Pass start and end dates to filter component. Closes #2646. --- src/app/(main)/reports/[reportId]/FilterParameters.tsx | 2 ++ src/app/(main)/reports/[reportId]/FilterSelectForm.tsx | 6 ++++-- src/app/(main)/websites/[websiteId]/WebsiteFilterButton.tsx | 5 ++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/app/(main)/reports/[reportId]/FilterParameters.tsx b/src/app/(main)/reports/[reportId]/FilterParameters.tsx index 3118a6f4b8..ddbe4d1e81 100644 --- a/src/app/(main)/reports/[reportId]/FilterParameters.tsx +++ b/src/app/(main)/reports/[reportId]/FilterParameters.tsx @@ -55,6 +55,8 @@ export function FilterParameters() { !filters.find(f => f.name === name))} + startDate={dateRange?.startDate} + endDate={dateRange?.endDate} onChange={handleAdd} /> diff --git a/src/app/(main)/reports/[reportId]/FilterSelectForm.tsx b/src/app/(main)/reports/[reportId]/FilterSelectForm.tsx index b81c857672..77a36c3cc4 100644 --- a/src/app/(main)/reports/[reportId]/FilterSelectForm.tsx +++ b/src/app/(main)/reports/[reportId]/FilterSelectForm.tsx @@ -1,11 +1,12 @@ import { useState } from 'react'; import FieldSelectForm from './FieldSelectForm'; import FieldFilterEditForm from './FieldFilterEditForm'; -import { useDateRange } from 'components/hooks'; export interface FilterSelectFormProps { websiteId?: string; fields: any[]; + startDate?: Date; + endDate?: Date; onChange?: (filter: { name: string; type: string; operator: string; value: string }) => void; allowFilterSelect?: boolean; } @@ -13,11 +14,12 @@ export interface FilterSelectFormProps { export default function FilterSelectForm({ websiteId, fields, + startDate, + endDate, onChange, allowFilterSelect, }: FilterSelectFormProps) { const [field, setField] = useState<{ name: string; label: string; type: string }>(); - const [{ startDate, endDate }] = useDateRange(websiteId); if (!field) { return ; diff --git a/src/app/(main)/websites/[websiteId]/WebsiteFilterButton.tsx b/src/app/(main)/websites/[websiteId]/WebsiteFilterButton.tsx index dda7cb063a..a96717571b 100644 --- a/src/app/(main)/websites/[websiteId]/WebsiteFilterButton.tsx +++ b/src/app/(main)/websites/[websiteId]/WebsiteFilterButton.tsx @@ -2,7 +2,7 @@ import classNames from 'classnames'; import { Button, Icon, Icons, Popup, PopupTrigger, Text } from 'react-basics'; import PopupForm from 'app/(main)/reports/[reportId]/PopupForm'; import FilterSelectForm from 'app/(main)/reports/[reportId]/FilterSelectForm'; -import { useFields, useMessages, useNavigation } from 'components/hooks'; +import { useFields, useMessages, useNavigation, useDateRange } from 'components/hooks'; import { OPERATOR_PREFIXES } from 'lib/constants'; import styles from './WebsiteFilterButton.module.css'; @@ -16,6 +16,7 @@ export function WebsiteFilterButton({ const { formatMessage, labels } = useMessages(); const { renderUrl, router } = useNavigation(); const { fields } = useFields(); + const [{ startDate, endDate }] = useDateRange(websiteId); const handleAddFilter = ({ name, operator, value }) => { const prefix = OPERATOR_PREFIXES[operator]; @@ -38,6 +39,8 @@ export function WebsiteFilterButton({ { handleAddFilter(value); close(); From 7899289b3c70d2c7cb46870704c85165f40856e9 Mon Sep 17 00:00:00 2001 From: Francis Cao Date: Fri, 5 Apr 2024 12:21:54 -0700 Subject: [PATCH 003/438] fix case sensitivity for psql getValues --- src/lib/prisma.ts | 8 ++++++++ src/queries/analytics/getValues.ts | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/lib/prisma.ts b/src/lib/prisma.ts index c35e0cde3f..c5e16ddca7 100644 --- a/src/lib/prisma.ts +++ b/src/lib/prisma.ts @@ -93,6 +93,13 @@ function getTimestampDiffQuery(field1: string, field2: string): string { } } +function getSearchQuery(column: string): string { + const db = getDatabaseType(); + const like = db === POSTGRESQL ? 'ilike' : 'like'; + + return `and ${column} ${like} {{search}}`; +} + function mapFilter(column: string, operator: string, name: string, type: string = '') { const db = getDatabaseType(); const like = db === POSTGRESQL ? 'ilike' : 'like'; @@ -253,6 +260,7 @@ export default { getFilterQuery, getSearchParameters, getTimestampDiffQuery, + getSearchQuery, getQueryMode, pagedQuery, parseFilters, diff --git a/src/queries/analytics/getValues.ts b/src/queries/analytics/getValues.ts index 572fbac250..7cd349940f 100644 --- a/src/queries/analytics/getValues.ts +++ b/src/queries/analytics/getValues.ts @@ -18,11 +18,11 @@ async function relationalQuery( endDate: Date, search: string, ) { - const { rawQuery } = prisma; + const { rawQuery, getSearchQuery } = prisma; let searchQuery = ''; if (search) { - searchQuery = `and ${column} LIKE {{search}}`; + searchQuery = getSearchQuery(column); } return rawQuery( From 357c13fb1569865c3a8d387717d766415b253233 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Wed, 10 Apr 2024 16:05:59 -0700 Subject: [PATCH 004/438] Bump version v2.11.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bd27a4cfe5..887ed43dc2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "umami", - "version": "2.11.0", + "version": "2.11.1", "description": "A simple, fast, privacy-focused alternative to Google Analytics.", "author": "Umami Software, Inc. ", "license": "MIT", From 10eb28ba04dcf8caaf9ebe80352d873efe86bb3c Mon Sep 17 00:00:00 2001 From: Floris Ankersmit Date: Thu, 11 Apr 2024 12:20:40 +0200 Subject: [PATCH 005/438] Add minimum database versions to readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9426642a8d..ae469eaaf3 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ A detailed getting started guide can be found at [https://umami.is/docs/](https: ### Requirements - A server with Node.js version 16.13 or newer -- A database. Umami supports [MySQL](https://www.mysql.com/) and [Postgresql](https://www.postgresql.org/) databases. +- A database. Umami supports [MySQL](https://www.mysql.com/) (minimum v8.0) and [Postgresql](https://www.postgresql.org/) (minimum v12.14) databases. ### Install Yarn From 0ea97eb0bc5da610e9a740cac00c839a21bbe5ca Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Sun, 14 Apr 2024 00:58:57 -0700 Subject: [PATCH 006/438] Removed dev logging. --- src/pages/api/auth/login.ts | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/pages/api/auth/login.ts b/src/pages/api/auth/login.ts index 23bdb15fc0..51c53184e8 100644 --- a/src/pages/api/auth/login.ts +++ b/src/pages/api/auth/login.ts @@ -1,5 +1,4 @@ import redis from '@umami/redis-client'; -import debug from 'debug'; import { saveAuth } from 'lib/auth'; import { secret } from 'lib/crypto'; import { useValidate } from 'lib/middleware'; @@ -16,9 +15,6 @@ import { import { getUserByUsername } from 'queries'; import * as yup from 'yup'; import { ROLES } from 'lib/constants'; -import { getIpAddress } from 'lib/detect'; - -const log = debug('umami:auth'); export interface LoginRequestBody { username: string; @@ -68,13 +64,6 @@ export default async ( }); } - log( - `Login from ip ${getIpAddress(req)} with username "${username.replace( - /["\r\n]/g, - '', - )}" failed.`, - ); - return unauthorized(res, 'message.incorrect-username-password'); } From f3283d693d1559dff55771dbc751915c892f59de Mon Sep 17 00:00:00 2001 From: Gerard Nesta Date: Mon, 15 Apr 2024 11:00:45 +0200 Subject: [PATCH 007/438] Update ca-ES.json --- src/lang/ca-ES.json | 288 ++++++++++++++++++++++---------------------- 1 file changed, 144 insertions(+), 144 deletions(-) diff --git a/src/lang/ca-ES.json b/src/lang/ca-ES.json index 4b1c71bce7..39b215ccc5 100644 --- a/src/lang/ca-ES.json +++ b/src/lang/ca-ES.json @@ -1,238 +1,238 @@ { - "label.access-code": "Access code", + "label.access-code": "Codi d'accés", "label.actions": "Accions", - "label.activity-log": "Activity log", - "label.add": "Add", - "label.add-description": "Add description", - "label.add-member": "Add member", - "label.add-website": "Afegeix lloc web", + "label.activity-log": "Registre d'activitat", + "label.add": "Afegir", + "label.add-description": "Afegir descripció", + "label.add-member": "Afegir membre", + "label.add-website": "Afegir lloc web", "label.admin": "Administrador", - "label.after": "After", + "label.after": "Després", "label.all": "Tots", "label.all-time": "Sempre", - "label.analytics": "Analytics", - "label.average": "Average", + "label.analytics": "Analítiques", + "label.average": "Mitjana", "label.average-visit-time": "Temps mitjà de visita", "label.back": "Enrere", - "label.before": "Before", + "label.before": "Abans", "label.bounce-rate": "Percentatge de rebot", - "label.breakdown": "Breakdown", - "label.browser": "Browser", + "label.breakdown": "Desglossament", + "label.browser": "Navegador", "label.browsers": "Navegadors", "label.cancel": "Cancel·la", "label.change-password": "Canvia la contrasenya", - "label.cities": "Cities", - "label.city": "City", - "label.clear-all": "Clear all", - "label.confirm": "Confirm", + "label.cities": "Ciutats", + "label.city": "Ciutat", + "label.clear-all": "Netejar tot", + "label.confirm": "Confirmar", "label.confirm-password": "Confirma la contrasenya", - "label.contains": "Contains", - "label.continue": "Continue", + "label.contains": "Conté", + "label.continue": "Continuar", "label.countries": "Països", - "label.country": "Country", - "label.create": "Create", - "label.create-report": "Create report", - "label.create-team": "Create team", - "label.create-user": "Create user", - "label.created": "Created", - "label.created-by": "Created By", + "label.country": "País", + "label.create": "Crear", + "label.create-report": "Crear informe", + "label.create-team": "Crear equip", + "label.create-user": "Crear usuari", + "label.created": "Creat", + "label.created-by": "Creat Per", "label.current-password": "Contrasenya actual", "label.custom-range": "Rang personalitzat", "label.dashboard": "Panell", - "label.data": "Data", - "label.date": "Date", + "label.data": "Dades", + "label.date": "Data", "label.date-range": "Interval de dates", - "label.day": "Day", + "label.day": "Dia", "label.default-date-range": "Interval de dates per defecte", "label.delete": "Esborra", - "label.delete-report": "Delete report", - "label.delete-team": "Delete team", - "label.delete-user": "Delete user", + "label.delete-report": "Eliminar informe", + "label.delete-team": "Eliminar equip", + "label.delete-user": "Eliminar usuari", "label.delete-website": "Esborra el lloc web", - "label.description": "Description", + "label.description": "Descripció", "label.desktop": "Escriptori", - "label.details": "Details", - "label.device": "Device", + "label.details": "Detalls", + "label.device": "Dispositiu", "label.devices": "Dispositius", "label.dismiss": "Descarta", - "label.does-not-contain": "Does not contain", + "label.does-not-contain": "No conté", "label.domain": "Domini", - "label.dropoff": "Dropoff", + "label.dropoff": "Abandonament", "label.edit": "Edita", - "label.edit-dashboard": "Edit dashboard", - "label.edit-member": "Edit member", + "label.edit-dashboard": "Edita panell", + "label.edit-member": "Edita membre", "label.enable-share-url": "Activa l'enllaç per compartir", - "label.event": "Event", - "label.event-data": "Event data", + "label.event": "Esdeveniment", + "label.event-data": "Dades de l'esdeveniment", "label.events": "Esdeveniments", - "label.false": "False", - "label.field": "Field", - "label.fields": "Fields", - "label.filter": "Filter", + "label.false": "Fals", + "label.field": "Camp", + "label.fields": "Camps", + "label.filter": "Filtre", "label.filter-combined": "Combinat", "label.filter-raw": "En cru", - "label.filters": "Filters", - "label.funnel": "Funnel", - "label.funnel-description": "Understand the conversion and drop-off rate of users.", - "label.greater-than": "Greater than", - "label.greater-than-equals": "Greater than or equals", + "label.filters": "Filtres", + "label.funnel": "Embut", + "label.funnel-description": "Entengui la taxa de conversió i abandonament dels usuaris.", + "label.greater-than": "Més gran que", + "label.greater-than-equals": "Més gran que o igual a", "label.insights": "Insights", - "label.insights-description": "Dive deeper into your data by using segments and filters.", - "label.is": "Is", - "label.is-not": "Is not", - "label.is-not-set": "Is not set", - "label.is-set": "Is set", - "label.join": "Join", - "label.join-team": "Join team", - "label.language": "Language", - "label.languages": "Llengües", + "label.insights-description": "Aprofundeixi en les seves dades mitjançant l'ús de segments i filtres.", + "label.is": "És igual a", + "label.is-not": "No és igual a", + "label.is-not-set": "No està establert", + "label.is-set": "Està establert", + "label.join": "Unir", + "label.join-team": "Unir-se al equip", + "label.language": "Idioma", + "label.languages": "Idiomes", "label.laptop": "Portàtil", "label.last-days": "Últims {x} dies", "label.last-hours": "Últimes {x} hores", - "label.leave": "Leave", - "label.leave-team": "Leave team", - "label.less-than": "Less than", - "label.less-than-equals": "Less than or equals", + "label.leave": "Abandonar", + "label.leave-team": "Abandonar equip", + "label.less-than": "Menor que", + "label.less-than-equals": "Menor que o igual a", "label.login": "Connecta't", "label.logout": "Desconnecta't", - "label.manage": "Manage", - "label.max": "Max", - "label.member": "Member", - "label.members": "Members", - "label.min": "Min", + "label.manage": "Administrar", + "label.max": "Màx", + "label.member": "Membre", + "label.members": "Membres", + "label.min": "Mín", "label.mobile": "Mòbil", "label.more": "Més", - "label.my-account": "My account", - "label.my-websites": "My websites", + "label.my-account": "El meu compte", + "label.my-websites": "Els meus llocs web", "label.name": "Nom", "label.new-password": "Contrasenya nova", - "label.none": "None", + "label.none": "Cap", "label.number-of-records": "{x} {x, plural, one {record} other {records}}", "label.ok": "OK", - "label.os": "OS", - "label.overview": "Overview", + "label.os": "SO", + "label.overview": "Resum", "label.owner": "Propietari", - "label.page-of": "Page {current} of {total}", + "label.page-of": "Pàgina {current} de {total}", "label.page-views": "Pàgines vistes", - "label.pageTitle": "Page title", + "label.pageTitle": "Títol de la pàgina", "label.pages": "Pàgines", "label.password": "Contrasenya", "label.powered-by": "Funciona amb {name}", "label.profile": "Perfil", - "label.queries": "Queries", - "label.query": "Query", - "label.query-parameters": "Query parameters", + "label.queries": "Consultes", + "label.query": "Consulta", + "label.query-parameters": "Paràmetres de consulta", "label.realtime": "Temps real", - "label.referrer": "Referrer", + "label.referrer": "Referent", "label.referrers": "Referents", "label.refresh": "Refresca", - "label.regenerate": "Regenerate", - "label.region": "Region", + "label.regenerate": "Regenerar", + "label.region": "Regió", "label.regions": "Regions", - "label.remove": "Remove", - "label.remove-member": "Remove member", - "label.reports": "Reports", + "label.remove": "Treure", + "label.remove-member": "Eliminar membre", + "label.reports": "Informes", "label.required": "Obligatori", "label.reset": "Restableix", "label.reset-website": "Restableix estadístiques", - "label.retention": "Retention", - "label.retention-description": "Measure your website stickiness by tracking how often users return.", - "label.role": "Role", - "label.run-query": "Run query", + "label.retention": "Retenció", + "label.retention-description": "Mesuri la retenció del seu lloc web fent un seguiment de la freqüència amb què tornen els usuaris.", + "label.role": "Rol", + "label.run-query": "Executar consulta", "label.save": "Desa", - "label.screens": "Screens", - "label.search": "Search", - "label.select": "Select", - "label.select-date": "Select date", - "label.select-role": "Select role", - "label.select-website": "Select website", + "label.screens": "Pantalles", + "label.search": "Buscar", + "label.select": "Seleccionar", + "label.select-date": "Seleccionar data", + "label.select-role": "Seleccionar rol", + "label.select-website": "Seleccionar lloc web", "label.sessions": "Sessions", "label.settings": "Configuració", "label.share-url": "Enllaç per compartir", "label.single-day": "Un sol dia", - "label.sum": "Sum", + "label.sum": "Suma", "label.tablet": "Tauleta", - "label.team": "Team", - "label.team-id": "Team ID", - "label.team-member": "Team member", - "label.team-name": "Team name", - "label.team-owner": "Team owner", - "label.team-view-only": "Team view only", - "label.team-websites": "Team websites", - "label.teams": "Teams", - "label.theme": "Theme", + "label.team": "Equip", + "label.team-id": "ID del equip", + "label.team-member": "Membre de l'equip", + "label.team-name": "Nom de l'equip", + "label.team-owner": "Propietari de l'equip", + "label.team-view-only": "Vista només de l'equip", + "label.team-websites": "Llocs web de l'equip", + "label.teams": "Equips", + "label.theme": "Tema", "label.this-month": "Aquest mes", "label.this-week": "Aquesta setmana", "label.this-year": "Aquest any", "label.timezone": "Zona horària", - "label.title": "Title", + "label.title": "Títol", "label.today": "Avui", "label.toggle-charts": "Mostra/amaga gràfics", "label.total": "Total", - "label.total-records": "Total records", + "label.total-records": "Total de registres", "label.tracking-code": "Codi de seguiment", - "label.transfer": "Transfer", - "label.transfer-website": "Transfer website", - "label.true": "True", - "label.type": "Type", - "label.unique": "Unique", + "label.transfer": "Transferir", + "label.transfer-website": "Transferir lloc web", + "label.true": "Cert", + "label.type": "Tipus", + "label.unique": "Únic", "label.unique-visitors": "Visitants únics", "label.unknown": "Desconegut", - "label.untitled": "Untitled", + "label.untitled": "Sense títol", "label.url": "URL", "label.urls": "URLs", - "label.user": "User", + "label.user": "Usuari", "label.username": "Nom d'usuari", - "label.users": "Users", - "label.value": "Value", - "label.view": "View", + "label.users": "Usuaris", + "label.value": "Valor", + "label.view": "Visualitzar", "label.view-details": "Veure els detalls", - "label.view-only": "View only", + "label.view-only": "Només veure", "label.views": "Vistes", "label.visitors": "Visitants", - "label.website": "Website", - "label.website-id": "Website ID", + "label.website": "Lloc web", + "label.website-id": "ID del lloc web", "label.websites": "Llocs web", - "label.window": "Window", + "label.window": "Finestra", "label.yesterday": "Ahir", - "message.action-confirmation": "Type {confirmation} in the box below to confirm.", + "message.action-confirmation": "Escrigui {confirmation} al cuadre inferior per confirmar.", "message.active-users": "{x} {x, plural, one {visitant actual} other {visitants actuals}}", - "message.confirm-delete": "Segur que vols esborrar {target}?", - "message.confirm-leave": "Are you sure you want to leave {target}?", - "message.confirm-remove": "Are you sure you want to remove {target}?", - "message.confirm-reset": "Segur que vols restablir les estadístiques de {target}?", - "message.delete-team-warning": "Deleting a team will also delete all team websites.", + "message.confirm-delete": "Segur que vol esborrar {target}?", + "message.confirm-leave": "Segur que vol abandonar {target}?", + "message.confirm-remove": "Segur que vol eliminar {target}?", + "message.confirm-reset": "Segur que vol restablir les estadístiques de {target}?", + "message.delete-team-warning": "Al eliminar un equip també s'eliminaran tots els llocs web de l'equip.", "message.delete-website-warning": "També s'esborraran totes les dades relacionades.", "message.error": "S'ha produït un error.", - "message.event-log": "{event} on {url}", + "message.event-log": "{event} a {url}", "message.go-to-settings": "Vés a la configuració", "message.incorrect-username-password": "Nom d'usuari o contrasenya incorrectes.", "message.invalid-domain": "Domini invàlid", - "message.min-password-length": "Minimum length of {n} characters", - "message.new-version-available": "A new version of Umami {version} is available!", + "message.min-password-length": "Longitud mínima de {n} caràcters", + "message.new-version-available": "Una nova versió d'Umami {version} està disponible!", "message.no-data-available": "No hi ha dades disponibles.", - "message.no-event-data": "No event data is available.", + "message.no-event-data": "No hi ha dades d'esdeveniments disponibles.", "message.no-match-password": "Les contrasenyes no coincideixen", - "message.no-results-found": "No results were found.", - "message.no-team-websites": "This team does not have any websites.", - "message.no-teams": "You have not created any teams.", - "message.no-users": "There are no users.", + "message.no-results-found": "No s'han trobat resultats.", + "message.no-team-websites": "Aquest equip no té cap lloc web.", + "message.no-teams": "No ha creat cap equip.", + "message.no-users": "No hi ha cap usuari.", "message.no-websites-configured": "No hi ha cap lloc web configurat.", "message.page-not-found": "No s'ha trobat la pàgina.", - "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", + "message.reset-website": "Per restablir aquest lloc web, escrigui {confirmation} al cuadre inferior per confirmar.", "message.reset-website-warning": "S'esborraran totes les estadístiques per aquest lloc web, però el codi de seguiment es mantindrà.", "message.saved": "S'ha desat amb èxit.", "message.share-url": "Aquest és l'enllaç públic per compartir de {target}.", - "message.team-already-member": "You are already a member of the team.", - "message.team-not-found": "Team not found.", - "message.team-websites-info": "Websites can be viewed by anyone on the team.", + "message.team-already-member": "Ja és membre d'aquest equip.", + "message.team-not-found": "Equip no trobat.", + "message.team-websites-info": "Els llocs web poden ser visualitzats per qualsevol membre de l'equip.", "message.tracking-code": "Codi de seguiment", - "message.transfer-team-website-to-user": "Transfer this website to your account?", - "message.transfer-user-website-to-team": "Select the team to transfer this website to.", - "message.transfer-website": "Transfer website ownership to your account or another team.", - "message.triggered-event": "Triggered event", - "message.user-deleted": "User deleted.", - "message.viewed-page": "Viewed page", + "message.transfer-team-website-to-user": "Transferir aquest lloc web al seu compte?", + "message.transfer-user-website-to-team": "Seleccioni l'equip al qui transferir aquest lloc web.", + "message.transfer-website": "Transferir la propietat del lloc web al seu compte o a un altre equip.", + "message.triggered-event": "Esdeveniment desencadenat", + "message.user-deleted": "Usuari eliminat.", + "message.viewed-page": "Pàgina vista", "message.visitor-log": "Visitant de {country} usant {browser} a {os} {device}", - "message.visitors-dropped-off": "Visitors dropped off" + "message.visitors-dropped-off": "Els visitants han sortit" } From a2e4ab7d46341439eca2189f6393f92989a9324c Mon Sep 17 00:00:00 2001 From: Francis Cao Date: Mon, 15 Apr 2024 13:44:16 -0700 Subject: [PATCH 008/438] update kafka connection to upstash config --- src/lib/kafka.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/lib/kafka.ts b/src/lib/kafka.ts index 1032688824..da38baa44f 100644 --- a/src/lib/kafka.ts +++ b/src/lib/kafka.ts @@ -17,14 +17,9 @@ function getClient() { const ssl: { ssl?: tls.ConnectionOptions | boolean; sasl?: SASLOptions | Mechanism } = username && password ? { - ssl: { - checkServerIdentity: () => undefined, - ca: [process.env.CA_CERT], - key: process.env.CLIENT_KEY, - cert: process.env.CLIENT_CERT, - }, + ssl: true, sasl: { - mechanism: 'plain', + mechanism: 'scram-sha-256', username, password, }, From bd360207a65391332ce8c20dbe71c363716bccb9 Mon Sep 17 00:00:00 2001 From: Cedric Date: Mon, 15 Apr 2024 23:25:15 +0200 Subject: [PATCH 009/438] fix(tracker): Remove domain name when parsing url --- src/tracker/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/tracker/index.js b/src/tracker/index.js index 43a5150131..438c08d2a5 100644 --- a/src/tracker/index.js +++ b/src/tracker/index.js @@ -52,6 +52,12 @@ }; const parseURL = url => { + try { + const { pathname, search } = new URL(url); + url = pathname + search; + } catch { + /* empty */ + } return excludeSearch ? url.split('?')[0] : url; }; From 0225e63abcf1160cf6bad0f7c8d06747a1bc69a6 Mon Sep 17 00:00:00 2001 From: Cedric Date: Mon, 15 Apr 2024 23:34:52 +0200 Subject: [PATCH 010/438] fix(tracker): Respect excludeSearch consistently --- src/tracker/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tracker/index.js b/src/tracker/index.js index 438c08d2a5..cc6b8dbbfe 100644 --- a/src/tracker/index.js +++ b/src/tracker/index.js @@ -7,7 +7,7 @@ document, history, } = window; - const { hostname, pathname, search } = location; + const { hostname, href } = location; const { currentScript, referrer } = document; if (!currentScript) return; @@ -244,7 +244,7 @@ }; } - let currentUrl = `${pathname}${search}`; + let currentUrl = parseURL(href); let currentRef = referrer !== hostname ? referrer : ''; let title = document.title; let cache; From 7c2bb95786741bea522982e923c57ad615466f49 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Mon, 15 Apr 2024 23:42:41 -0700 Subject: [PATCH 011/438] Updated "Last X" date logic. Closes #2672. --- src/lib/date.ts | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/src/lib/date.ts b/src/lib/date.ts index 1c0b95b297..861bbde2f2 100644 --- a/src/lib/date.ts +++ b/src/lib/date.ts @@ -154,7 +154,7 @@ export function parseDateRange(value: string | object, locale = 'en-US'): DateRa switch (unit) { case 'hour': return { - startDate: subHours(startOfHour(now), num), + startDate: num ? subHours(startOfHour(now), num - 1) : startOfHour(now), endDate: endOfHour(now), offset: 0, num: num || 1, @@ -163,8 +163,8 @@ export function parseDateRange(value: string | object, locale = 'en-US'): DateRa }; case 'day': return { - startDate: subDays(startOfDay(now), num), - endDate: subDays(endOfDay(now), num ? 1 : 0), + startDate: num ? subDays(startOfDay(now), num - 1) : startOfDay(now), + endDate: endOfDay(now), unit: num ? 'day' : 'hour', offset: 0, num: num || 1, @@ -172,8 +172,10 @@ export function parseDateRange(value: string | object, locale = 'en-US'): DateRa }; case 'week': return { - startDate: subWeeks(startOfWeek(now, { locale: dateLocale }), num), - endDate: subWeeks(endOfWeek(now, { locale: dateLocale }), num), + startDate: num + ? subWeeks(startOfWeek(now, { locale: dateLocale }), num - 1) + : startOfWeek(now, { locale: dateLocale }), + endDate: endOfWeek(now, { locale: dateLocale }), unit: 'day', offset: 0, num: num || 1, @@ -181,8 +183,8 @@ export function parseDateRange(value: string | object, locale = 'en-US'): DateRa }; case 'month': return { - startDate: subMonths(startOfMonth(now), num), - endDate: subMonths(endOfMonth(now), num ? 1 : 0), + startDate: num ? subMonths(startOfMonth(now), num - 1) : startOfMonth(now), + endDate: endOfMonth(now), unit: num ? 'month' : 'day', offset: 0, num: num || 1, @@ -190,8 +192,8 @@ export function parseDateRange(value: string | object, locale = 'en-US'): DateRa }; case 'year': return { - startDate: subYears(startOfYear(now), num), - endDate: subYears(endOfYear(now), num), + startDate: num ? subYears(startOfYear(now), num - 1) : startOfYear(now), + endDate: endOfYear(now), unit: 'month', offset: 0, num: num || 1, @@ -286,19 +288,11 @@ export function getDateFromString(str: string) { export function getDateArray(data: any[], startDate: Date, endDate: Date, unit: string) { const arr = []; const { diff, add, start } = DATE_FUNCTIONS[unit]; - const n = diff(endDate, startDate) + 1; + const n = diff(endDate, startDate); - function findData(date: Date) { - const d = data.find(({ x }) => { - return start(getDateFromString(x)).getTime() === date.getTime(); - }); - - return d?.y || 0; - } - - for (let i = 0; i < n; i++) { + for (let i = 0; i <= n; i++) { const t = start(add(startDate, i)); - const y = findData(t); + const y = data.find(({ x }) => start(getDateFromString(x)).getTime() === t.getTime())?.y || 0; arr.push({ x: t, y }); } From 2a43d0b5957c957d97546413e04a708621be64fe Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Tue, 16 Apr 2024 20:53:33 -0700 Subject: [PATCH 012/438] Bump version v2.11.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c72a054f74..ad2bc79d26 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "umami", - "version": "2.12.0", + "version": "2.11.2", "description": "A simple, fast, privacy-focused alternative to Google Analytics.", "author": "Umami Software, Inc. ", "license": "MIT", From c28de0fb1b870ab2d49117855fb93bb1f08c6c91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9D=A2=E6=9D=A1?= <2959393+ccbikai@users.noreply.github.com> Date: Wed, 17 Apr 2024 04:43:28 +0000 Subject: [PATCH 013/438] chore: Update @netlify/plugin-nextjs to 5.x --- package.json | 2 +- yarn.lock | 1114 ++------------------------------------------------ 2 files changed, 28 insertions(+), 1088 deletions(-) diff --git a/package.json b/package.json index ad2bc79d26..72bf596194 100644 --- a/package.json +++ b/package.json @@ -121,7 +121,7 @@ }, "devDependencies": { "@formatjs/cli": "^4.2.29", - "@netlify/plugin-nextjs": "^4.41.3", + "@netlify/plugin-nextjs": "^5.1.0", "@rollup/plugin-alias": "^5.0.0", "@rollup/plugin-commonjs": "^25.0.4", "@rollup/plugin-json": "^6.0.0", diff --git a/yarn.lock b/yarn.lock index 8373fbf0a1..64eb2654ad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1530,11 +1530,6 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== -"@fastify/accept-negotiator@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@fastify/accept-negotiator/-/accept-negotiator-1.1.0.tgz#c1c66b3b771c09742a54dd5bc87c582f6b0630ff" - integrity sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ== - "@fontsource/inter@^4.5.15": version "4.5.15" resolved "https://registry.yarnpkg.com/@fontsource/inter/-/inter-4.5.15.tgz#eed1873d68755d3b52d6fcfcfa3493118430a512" @@ -1725,11 +1720,6 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== -"@ioredis/commands@^1.1.1": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ioredis/commands/-/commands-1.2.0.tgz#6d61b3097470af1fdbbe622795b8921d42018e11" - integrity sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg== - "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -2011,209 +2001,10 @@ resolved "https://registry.yarnpkg.com/@kurkle/color/-/color-0.3.2.tgz#5acd38242e8bde4f9986e7913c8fdf49d3aa199f" integrity sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw== -"@netlify/blobs@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@netlify/blobs/-/blobs-2.2.0.tgz#bf634e6f1a43df3fab2088b5093c9e8eda01b393" - integrity sha512-j2C0+IvWj9CLNGPoiA7ETquMFDExZTrv4CarjfE6Au0eY3zlinnnTVae7DE+VQFK+U0CDM/O0VvelNy1QbsdwQ== - -"@netlify/esbuild-android-64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-android-64/-/esbuild-android-64-0.14.39.tgz#7bd30aba94a92351d2c5e25e178ceb824f3c2f99" - integrity sha512-azq+lsvjRsKLap8ubIwSJXGyknUACqYu5h98Fvyoh40Qk4QXIVKl16JIJ4s+B7jy2k9qblEc5c4nxdDA3aGbVA== - -"@netlify/esbuild-android-arm64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-android-arm64/-/esbuild-android-arm64-0.14.39.tgz#0b3e11efaa9379792592173152eba2c9f8b933b0" - integrity sha512-WhIP7ePq4qMC1sxoaeB9SsJqSW6uzW7XDj/IuWl1l9r94nwxywU1sYdVLaF2mZr15njviazYjVr8x1d+ipwL3w== - -"@netlify/esbuild-darwin-64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-darwin-64/-/esbuild-darwin-64-0.14.39.tgz#bb4a3a244723351dabd3cd0553425d087901c408" - integrity sha512-eF4GvLYiDxtcyjFT55+h+8c8A2HltjeMezCqkt3AQSgOdu1nhlvwbBhIdg2dyM6gKEaEm5hBtTbicEDSwsLodA== - -"@netlify/esbuild-darwin-arm64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.39.tgz#48e5abd7d32cdefe4db30026e21c5173afae3c8d" - integrity sha512-b7rtnX/VtYwNbUCxs3eulrCWJ+u2YvqDcXiIV1ka+od+N0fTx+4RrVkVp1lha9L0wEJYK9J7UWZOMLMyd1ynRg== - -"@netlify/esbuild-freebsd-64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.39.tgz#d9650ba7ac0df826ad8928cc3b02e16d00c259b0" - integrity sha512-XtusxDJt2hUKUdggbTFolMx0kJL2zEa4STI7YwpB+ukEWoW5rODZjiLZbqqYLcjDH8k4YwHaMxs103L8eButEQ== - -"@netlify/esbuild-freebsd-arm64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.39.tgz#4e1401e44f79e007dc43b6edac737d010685f9f0" - integrity sha512-A9XZKai+k6kfndCtN6Dh2usT28V0+OGxzFdZsANONPQiEUTrGZCgwcHWiVlVn7SeAwPR1tKZreTnvrfj8cj7hA== - -"@netlify/esbuild-linux-32@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-32/-/esbuild-linux-32-0.14.39.tgz#fb017e160d8caa72efa36cf9a2748cd01165a463" - integrity sha512-ZQnqk/82YRvINY+aF+LlGfRZ19c5mH0jaxsO046GpIOPx6PcXHG8JJ2lg+vLJVe4zFPohxzabcYpwFuT4cg/GA== - -"@netlify/esbuild-linux-64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-64/-/esbuild-linux-64-0.14.39.tgz#d89f1aed0f3607b092ca2f57556725af3ceb8252" - integrity sha512-IQtswVw7GAKNX/3yV390wSfSXvMWy0d5cw8csAffwBk9gupftY2lzepK4Cn6uD/aqLt3Iku33FbHop/2nPGfQA== - -"@netlify/esbuild-linux-arm64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.39.tgz#faf6e1e2587045df193d4893e4c30237e2cb84e9" - integrity sha512-4Jie4QV6pWWuGN7TAshNMGbdTA9+VbRkv3rPIxhgK5gBfmsAV1yRKsumE4Y77J0AZNRiOriyoec4zc1qkmI3zg== - -"@netlify/esbuild-linux-arm@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-arm/-/esbuild-linux-arm-0.14.39.tgz#bd43359c9e00caebf9bd8f47b8fc7606f5433618" - integrity sha512-QdOzQniOed0Bz1cTC9TMMwvtAqKayYv66H4edJlbvElC81yJZF/c9XhmYWJ6P5g4nkChZubQ5RcQwTLmrFGexg== - -"@netlify/esbuild-linux-mips64le@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.39.tgz#0d69730b40175406e943bbf519a4de85750e1ed3" - integrity sha512-Htozxr95tw4tSd86YNbCLs1eoYQzNu/cHpzFIkuJoztZueUhl8XpRvBdob7n3kEjW1gitLWAIn8XUwSt+aJ1Tg== - -"@netlify/esbuild-linux-ppc64le@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.39.tgz#18fd4c7190496382501bb95c3f015f7ec1b0acb2" - integrity sha512-tFy0ufWIdjeuk1rPHee00TZlhr9OSF00Ufb4ROFyt2ArKuMSkWRJuDgx6MtZcAnCIN4cybo/xWl3MKTM+scnww== - -"@netlify/esbuild-linux-riscv64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.39.tgz#c9dc6af7e999ead24e2d68443c8c630094908930" - integrity sha512-ZzfKvwIxL7wQnYbVFpyNW0wotnLoKageUEM57RbjekesJoNQnqUR6Usm+LDZoB8iRsI58VX1IxnstP0cX8vOHw== - -"@netlify/esbuild-linux-s390x@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.39.tgz#8b87c0a09397b014e9f4fb3873c891ea0d81df40" - integrity sha512-yjC0mFwnuMRoh0WcF0h71MF71ytZBFEQQTRdgiGT0+gbC4UApBqnTkJdLx32RscBKi9skbMChiJ748hDJou6FA== - -"@netlify/esbuild-netbsd-64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.39.tgz#3f049e25a6d00f17519220ab2f5e15f027edadae" - integrity sha512-mIq4znOoz3YfTVdv3sIWfR4Zx5JgMnT4srlhC5KYVHibhxvyDdin5txldYXmR4Zv4dZd6DSuWFsn441aUegHeA== - -"@netlify/esbuild-openbsd-64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.39.tgz#02396cf8e8ca01484df58a191d301adc587397c9" - integrity sha512-+t6QdzJCngH19hV7ClpFAeFDI2ko/HNcFbiNwaXTMVLB3hWi1sJtn+fzZck5HfzN4qsajAVqZq4nwX69SSt25A== - -"@netlify/esbuild-sunos-64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-sunos-64/-/esbuild-sunos-64-0.14.39.tgz#97c3152aa7ceaf51247998c836f94773975e716e" - integrity sha512-HLfXG6i2p3wyyyWHeeP4ShGDJ1zRMnf9YLJLe2ezv2KqvcKw/Un/m/FBuDW1p13oSUO7ShISMzgc1dw1GGBEOQ== - -"@netlify/esbuild-windows-32@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-windows-32/-/esbuild-windows-32-0.14.39.tgz#ccb2a234954714662a4cd1a573d5b271f5288273" - integrity sha512-ZpSQcKbVSCU3ln7mHpsL/5dWsUqCNdTnC5YAArnaOwdrlIunrsbo5j4MOZRRcGExb2uvTc/rb+D3mlGb8j1rkA== - -"@netlify/esbuild-windows-64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-windows-64/-/esbuild-windows-64-0.14.39.tgz#477c22c04a3299599924e9e4c909c0dec5612f56" - integrity sha512-I3gCdO8+6IDhT4Y1ZmV4o2Gg0oELv7N4kCcE4kqclz10fWHNjf19HQNHyBJe0AWnFV5ZfT154VVD31dqgwpgFw== - -"@netlify/esbuild-windows-arm64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.39.tgz#10446d91ca603fa28067541cfa1526081c6ee09b" - integrity sha512-WX52W8U1lsfWcz6NWoSpDs57lgiiMHN23seq8G2bvxzGS/tvYD3dxVLLW5UPoKSnFDyVQT7b6Zkt6AkBten1yQ== - -"@netlify/esbuild@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild/-/esbuild-0.14.39.tgz#66897af6d26336e5960b5ba74f1642f1d02a9c6a" - integrity sha512-C3xpwdT2xw6SnSb+hLQoxjtikAKiz6BjQjzlIaysHDpGbmIcmUHZ/X+dyLtCqAvf15WNK5GSBZYOlpgcOE0WZA== - optionalDependencies: - "@netlify/esbuild-android-64" "0.14.39" - "@netlify/esbuild-android-arm64" "0.14.39" - "@netlify/esbuild-darwin-64" "0.14.39" - "@netlify/esbuild-darwin-arm64" "0.14.39" - "@netlify/esbuild-freebsd-64" "0.14.39" - "@netlify/esbuild-freebsd-arm64" "0.14.39" - "@netlify/esbuild-linux-32" "0.14.39" - "@netlify/esbuild-linux-64" "0.14.39" - "@netlify/esbuild-linux-arm" "0.14.39" - "@netlify/esbuild-linux-arm64" "0.14.39" - "@netlify/esbuild-linux-mips64le" "0.14.39" - "@netlify/esbuild-linux-ppc64le" "0.14.39" - "@netlify/esbuild-linux-riscv64" "0.14.39" - "@netlify/esbuild-linux-s390x" "0.14.39" - "@netlify/esbuild-netbsd-64" "0.14.39" - "@netlify/esbuild-openbsd-64" "0.14.39" - "@netlify/esbuild-sunos-64" "0.14.39" - "@netlify/esbuild-windows-32" "0.14.39" - "@netlify/esbuild-windows-64" "0.14.39" - "@netlify/esbuild-windows-arm64" "0.14.39" - -"@netlify/functions@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@netlify/functions/-/functions-1.6.0.tgz#c373423e6fef0e6f7422ac0345e8bbf2cb692366" - integrity sha512-6G92AlcpFrQG72XU8YH8pg94eDnq7+Q0YJhb8x4qNpdGsvuzvrfHWBmqFGp/Yshmv4wex9lpsTRZOocdrA2erQ== - dependencies: - is-promise "^4.0.0" - -"@netlify/functions@^2.4.0": - version "2.6.0" - resolved "https://registry.yarnpkg.com/@netlify/functions/-/functions-2.6.0.tgz#801a6fe8ceef2ce1512c637a28e53e6a3aae289b" - integrity sha512-vU20tij0fb4nRGACqb+5SQvKd50JYyTyEhQetCMHdakcJFzjLDivvRR16u1G2Oy4A7xNAtGJF1uz8reeOtTVcQ== - dependencies: - "@netlify/serverless-functions-api" "1.14.0" - -"@netlify/ipx@^1.4.6": - version "1.4.6" - resolved "https://registry.yarnpkg.com/@netlify/ipx/-/ipx-1.4.6.tgz#0bd308d70a1d2e1928e66cb49e36294f66f7b8b2" - integrity sha512-rnKR2LXhtnflitPX9CQIv+XSrNlYIqGsV54xrXifhbtHHjCjCw/lixsi8qwAXqEIgZBC9b4Y7prhHqRtC4oIjw== - dependencies: - "@netlify/functions" "^2.4.0" - etag "^1.8.1" - fs-extra "^11.0.0" - ipx "^1.3.1" - micromatch "^4.0.5" - mkdirp "^3.0.0" - murmurhash "^2.0.0" - node-fetch "^2.0.0" - ufo "^1.0.0" - unstorage "1.9.0" - -"@netlify/node-cookies@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@netlify/node-cookies/-/node-cookies-0.1.0.tgz#dda912ba618527695cf519fafa221c5e6777c612" - integrity sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g== - -"@netlify/plugin-nextjs@^4.41.3": - version "4.41.3" - resolved "https://registry.yarnpkg.com/@netlify/plugin-nextjs/-/plugin-nextjs-4.41.3.tgz#f8274526147f652438cc6790b6819ca15d441dd3" - integrity sha512-l8TB61u7A1ZF22QpoyZtresSUsHOJGP9DatECnqlNab3lG8id1kz9Pso+nZVOznWOm98o7w51k2+TIf52x+DBQ== - dependencies: - "@netlify/blobs" "^2.2.0" - "@netlify/esbuild" "0.14.39" - "@netlify/functions" "^1.6.0" - "@netlify/ipx" "^1.4.6" - "@vercel/node-bridge" "^2.1.0" - chalk "^4.1.2" - chokidar "^3.5.3" - destr "^1.1.1" - execa "^5.1.1" - follow-redirects "^1.15.2" - fs-extra "^10.0.0" - globby "^11.0.4" - merge-stream "^2.0.0" - moize "^6.1.0" - node-fetch "^2.6.6" - node-stream-zip "^1.15.0" - outdent "^0.8.0" - p-limit "^3.1.0" - pathe "^0.3.0" - pretty-bytes "^5.6.0" - regexp-tree "^0.1.24" - semver "^7.3.5" - slash "^3.0.0" - tiny-glob "^0.2.9" - -"@netlify/serverless-functions-api@1.14.0": - version "1.14.0" - resolved "https://registry.yarnpkg.com/@netlify/serverless-functions-api/-/serverless-functions-api-1.14.0.tgz#2bedff76cf898e24e48161aa2508776c4d261ed1" - integrity sha512-HUNETLNvNiC2J+SB/YuRwJA9+agPrc0azSoWVk8H85GC+YE114hcS5JW+dstpKwVerp2xILE3vNWN7IMXP5Q5Q== - dependencies: - "@netlify/node-cookies" "^0.1.0" - urlpattern-polyfill "8.0.2" +"@netlify/plugin-nextjs@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@netlify/plugin-nextjs/-/plugin-nextjs-5.1.0.tgz#12fc0f7815b62cf091ea6bc98bc9f43ab103411d" + integrity sha512-nurSK6pMi36fVbuwLEiPIzMC/N2Dn/tHqA+seoStwHvGewsrXAphrjJ+8wq7eSCe+BEHCtGlwC1mNOeuqVkfbg== "@next/env@14.1.4": version "14.1.4" @@ -2293,98 +2084,6 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@parcel/watcher-android-arm64@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.3.0.tgz#d82e74bb564ebd4d8a88791d273a3d2bd61e27ab" - integrity sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA== - -"@parcel/watcher-darwin-arm64@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.3.0.tgz#c9cd03f8f233d512fcfc873d5b4e23f1569a82ad" - integrity sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw== - -"@parcel/watcher-darwin-x64@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.3.0.tgz#83c902994a2a49b9e1ab5050dba24876fdc2c219" - integrity sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow== - -"@parcel/watcher-freebsd-x64@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.3.0.tgz#7a0f4593a887e2752b706aff2dae509aef430cf6" - integrity sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw== - -"@parcel/watcher-linux-arm-glibc@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.3.0.tgz#3fc90c3ebe67de3648ed2f138068722f9b1d47da" - integrity sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ== - -"@parcel/watcher-linux-arm64-glibc@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.3.0.tgz#f7bbbf2497d85fd11e4c9e9c26ace8f10ea9bcbc" - integrity sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA== - -"@parcel/watcher-linux-arm64-musl@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.3.0.tgz#de131a9fcbe1fa0854e9cbf4c55bed3b35bcff43" - integrity sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw== - -"@parcel/watcher-linux-x64-glibc@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.3.0.tgz#193dd1c798003cdb5a1e59470ff26300f418a943" - integrity sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow== - -"@parcel/watcher-linux-x64-musl@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.3.0.tgz#6dbdb86d96e955ab0fe4a4b60734ec0025a689dd" - integrity sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g== - -"@parcel/watcher-wasm@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-wasm/-/watcher-wasm-2.3.0.tgz#73b66c6fbd2a3326ae86a1ec77eab7139d0dd725" - integrity sha512-ejBAX8H0ZGsD8lSICDNyMbSEtPMWgDL0WFCt/0z7hyf5v8Imz4rAM8xY379mBsECkq/Wdqa5WEDLqtjZ+6NxfA== - dependencies: - is-glob "^4.0.3" - micromatch "^4.0.5" - napi-wasm "^1.1.0" - -"@parcel/watcher-win32-arm64@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.3.0.tgz#59da26a431da946e6c74fa6b0f30b120ea6650b6" - integrity sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw== - -"@parcel/watcher-win32-ia32@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.3.0.tgz#3ee6a18b08929cd3b788e8cc9547fd9a540c013a" - integrity sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow== - -"@parcel/watcher-win32-x64@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.3.0.tgz#14e7246289861acc589fd608de39fe5d8b4bb0a7" - integrity sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA== - -"@parcel/watcher@^2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.3.0.tgz#803517abbc3981a1a1221791d9f59dc0590d50f9" - integrity sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ== - dependencies: - detect-libc "^1.0.3" - is-glob "^4.0.3" - micromatch "^4.0.5" - node-addon-api "^7.0.0" - optionalDependencies: - "@parcel/watcher-android-arm64" "2.3.0" - "@parcel/watcher-darwin-arm64" "2.3.0" - "@parcel/watcher-darwin-x64" "2.3.0" - "@parcel/watcher-freebsd-x64" "2.3.0" - "@parcel/watcher-linux-arm-glibc" "2.3.0" - "@parcel/watcher-linux-arm64-glibc" "2.3.0" - "@parcel/watcher-linux-arm64-musl" "2.3.0" - "@parcel/watcher-linux-x64-glibc" "2.3.0" - "@parcel/watcher-linux-x64-musl" "2.3.0" - "@parcel/watcher-win32-arm64" "2.3.0" - "@parcel/watcher-win32-ia32" "2.3.0" - "@parcel/watcher-win32-x64" "2.3.0" - "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" @@ -3213,11 +2912,6 @@ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@vercel/node-bridge@^2.1.0": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@vercel/node-bridge/-/node-bridge-2.2.2.tgz#f63466ab6a2588afdc6262c2d060289bfe8baa6b" - integrity sha512-haGBC8noyA5BfjCRXRH+VIkHCDVW5iD5UX24P2nOdilwUxI4qWsattS/co8QBGq64XsNLRAMdM5pQUE3zxkF9Q== - "@vue/compiler-core@3.3.4", "@vue/compiler-core@^3.2.23": version "3.3.4" resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz#7fbf591c1c19e1acd28ffd284526e98b4f581128" @@ -3318,7 +3012,7 @@ acorn-walk@^8.1.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.1.tgz#2f10f5b69329d90ae18c58bf1fa8fccd8b959a43" integrity sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw== -acorn@^8.10.0, acorn@^8.4.1: +acorn@^8.4.1: version "8.11.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== @@ -3433,7 +3127,7 @@ ansi-styles@^6.0.0, ansi-styles@^6.1.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== -anymatch@^3.0.3, anymatch@^3.1.3, anymatch@~3.1.2: +anymatch@^3.0.3: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== @@ -3662,11 +3356,6 @@ axobject-query@^3.2.1: dependencies: dequal "^2.0.3" -b4a@^1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.4.tgz#ef1c1422cae5ce6535ec191baeed7567443f36c9" - integrity sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw== - babel-jest@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" @@ -3794,20 +3483,6 @@ bcryptjs@^2.4.3: resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb" integrity sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ== -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bl@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - blob-util@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" @@ -3838,7 +3513,7 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^3.0.2, braces@~3.0.2: +braces@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -3894,7 +3569,7 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@^5.5.0, buffer@^5.7.1: +buffer@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -4043,26 +3718,6 @@ check-more-types@^2.24.0: resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA== -chokidar@^3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - chownr@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" @@ -4073,13 +3728,6 @@ ci-info@^3.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== -citty@^0.1.4, citty@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/citty/-/citty-0.1.5.tgz#fe37ceae5dc764af75eb2fece99d2bf527ea4e50" - integrity sha512-AS7n5NSc0OQVMV9v6wt3ByujNIrne0/cTjiC2MYqhvao57VNfiuVksTSr2p17nVOhEr2KtqiAkGwHcgMC/qUuQ== - dependencies: - consola "^3.2.3" - cjs-module-lexer@^1.0.0: version "1.2.3" resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" @@ -4139,15 +3787,6 @@ client-only@0.0.1: resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== -clipboardy@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-3.0.0.tgz#f3876247404d334c9ed01b6f269c11d09a5e3092" - integrity sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg== - dependencies: - arch "^2.2.0" - execa "^5.1.1" - is-wsl "^2.2.0" - cliui@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" @@ -4157,7 +3796,7 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" -cluster-key-slot@1.1.2, cluster-key-slot@^1.1.0: +cluster-key-slot@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz#88ddaa46906e303b5de30d3153b7d9fe0a0c19ac" integrity sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA== @@ -4191,27 +3830,11 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -color-name@^1.0.0, color-name@~1.1.4: +color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" - integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" - integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== - dependencies: - color-convert "^2.0.1" - color-string "^1.9.0" - colord@^2.9.1, colord@^2.9.2, colord@^2.9.3: version "2.9.3" resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" @@ -4239,7 +3862,7 @@ commander@11.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-11.0.0.tgz#43e19c25dbedc8256203538e8d7e9346877a6f67" integrity sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ== -commander@2, commander@^2.20.0, commander@^2.20.3: +commander@2, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -4281,21 +3904,11 @@ concat-with-sourcemaps@^1.1.0: dependencies: source-map "^0.6.1" -consola@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/consola/-/consola-3.2.3.tgz#0741857aa88cfa0d6fd53f1cff0375136e98502f" - integrity sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ== - convert-source-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -cookie-es@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cookie-es/-/cookie-es-1.0.0.tgz#4759684af168dfc54365b2c2dda0a8d7ee1e4865" - integrity sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ== - core-js-compat@^3.31.0, core-js-compat@^3.32.2: version "3.33.0" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" @@ -4473,11 +4086,6 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssfilter@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" - integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw== - cssnano-preset-default@^5.2.14: version "5.2.14" resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" @@ -4833,23 +4441,11 @@ decamelize@^5.0.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-5.0.1.tgz#db11a92e58c741ef339fb0a2868d8a06a9a7b1e9" integrity sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA== -decompress-response@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" - integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== - dependencies: - mimic-response "^3.1.0" - dedent@^1.0.0: version "1.5.1" resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - deep-is@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" @@ -4878,11 +4474,6 @@ define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: has-property-descriptors "^1.0.0" object-keys "^1.1.1" -defu@^6.1.2, defu@^6.1.3: - version "6.1.3" - resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.3.tgz#6d7f56bc61668e844f9f593ace66fd67ef1205fd" - integrity sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ== - del@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/del/-/del-5.1.0.tgz#d9487c94e367410e6eff2925ee58c0c84a75b3a7" @@ -4916,26 +4507,11 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -denque@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" - integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== - dequal@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== -destr@^1.1.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/destr/-/destr-1.2.2.tgz#7ba9befcafb645a50e76b260449c63927b51e22f" - integrity sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA== - -destr@^2.0.1, destr@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/destr/-/destr-2.0.2.tgz#8d3c0ee4ec0a76df54bc8b819bca215592a8c218" - integrity sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg== - detect-browser@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.3.0.tgz#9705ef2bddf46072d0f7265a1fe300e36fe7ceca" @@ -4946,16 +4522,6 @@ detect-indent@^6.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== -detect-libc@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== - -detect-libc@^2.0.0, detect-libc@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" - integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== - detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -5105,7 +4671,7 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -end-of-stream@^1.1.0, end-of-stream@^1.4.1: +end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -5594,11 +5160,6 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -etag@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - eventemitter2@6.4.7: version "6.4.7" resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.7.tgz#a7f6c4d7abf28a14c1ef3442f21cb306a054271d" @@ -5644,7 +5205,7 @@ execa@7.2.0: signal-exit "^3.0.7" strip-final-newline "^3.0.0" -execa@^5.0.0, execa@^5.1.1: +execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== @@ -5671,11 +5232,6 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== -expand-template@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" - integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== - expect@^29.0.0, expect@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" @@ -5744,16 +5300,6 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-equals@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-3.0.3.tgz#8e6cb4e51ca1018d87dd41982ef92758b3e4197f" - integrity sha512-NCe8qxnZFARSHGztGMZOO/PC1qa5MIFB5Hp66WdzbCRAz8U8US3bx1UTgLS49efBQPcUtO9gf5oVEY8o7y/7Kg== - -fast-fifo@^1.1.0, fast-fifo@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" - integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== - fast-glob@^3.0.3, fast-glob@^3.2.7: version "3.3.1" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" @@ -5883,11 +5429,6 @@ flatted@^3.2.9: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== -follow-redirects@^1.15.2: - version "1.15.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" - integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== - for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -5929,12 +5470,7 @@ fraction.js@^4.3.6: resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs-extra@10, fs-extra@^10.0.0, fs-extra@^10.0.1: +fs-extra@10, fs-extra@^10.0.1: version "10.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== @@ -5943,15 +5479,6 @@ fs-extra@10, fs-extra@^10.0.0, fs-extra@^10.0.1: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^11.0.0: - version "11.2.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" - integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" @@ -6046,11 +5573,6 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-port-please@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/get-port-please/-/get-port-please-3.1.1.tgz#2556623cddb4801d823c0a6a15eec038abb483be" - integrity sha512-3UBAyM3u4ZBVYDsxOQfJDxEa6XTbpBDrOjp4mf7ExFRt5BKs/QywQQiJsh2B+hxcZLSapWqCRvElUe8DnKcFHA== - get-stream@^5.0.0, get-stream@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" @@ -6093,12 +5615,7 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -github-from-package@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" - integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== - -glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -6188,11 +5705,6 @@ globalthis@^1.0.3: dependencies: define-properties "^1.1.3" -globalyzer@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" - integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== - globby@10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.1.tgz#4782c34cb75dd683351335c5829cc3420e606b22" @@ -6221,7 +5733,7 @@ globby@^10.0.1: merge2 "^1.2.3" slash "^3.0.0" -globby@^11.0.1, globby@^11.0.4, globby@^11.1.0: +globby@^11.0.1, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -6238,11 +5750,6 @@ globjoin@^0.1.4: resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" integrity sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg== -globrex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" - integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== - gonzales-pe@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.3.0.tgz#fe9dec5f3c557eead09ff868c65826be54d067b3" @@ -6267,20 +5774,6 @@ graphemer@^1.4.0: resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -h3@^1.7.1, h3@^1.8.1: - version "1.9.0" - resolved "https://registry.yarnpkg.com/h3/-/h3-1.9.0.tgz#c5f512a93026df9837db6f30c9ef51135dd46752" - integrity sha512-+F3ZqrNV/CFXXfZ2lXBINHi+rM4Xw3CDC5z2CDK3NMPocjonKipGLLDSkrqY9DOrioZNPTIdDMWfQKm//3X2DA== - dependencies: - cookie-es "^1.0.0" - defu "^6.1.3" - destr "^2.0.2" - iron-webcrypto "^1.0.0" - radix3 "^1.1.0" - ufo "^1.3.2" - uncrypto "^0.1.3" - unenv "^1.7.4" - hard-rejection@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" @@ -6361,11 +5854,6 @@ html-tags@^3.3.1: resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce" integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ== -http-shutdown@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/http-shutdown/-/http-shutdown-1.2.2.tgz#41bc78fc767637c4c95179bc492f312c0ae64c5f" - integrity sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw== - http-signature@~1.3.6: version "1.3.6" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.3.6.tgz#cb6fbfdf86d1c974f343be94e87f7fc128662cf9" @@ -6420,11 +5908,6 @@ ignore@^5.2.0, ignore@^5.2.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== -image-meta@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/image-meta/-/image-meta-0.1.1.tgz#a84dc7d5f61c7d60e85ec0c3ac81beee8646039b" - integrity sha512-+oXiHwOEPr1IE5zY0tcBLED/CYcre15J4nwL50x3o0jxWqEkyjrusiKP3YSU+tr9fvJp33ZcP5Gpj2295g3aEw== - immer@^9.0.12: version "9.0.21" resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" @@ -6488,7 +5971,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3, inherits@^2.0.4: +inherits@2: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -6498,7 +5981,7 @@ ini@2.0.0: resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== -ini@^1.3.5, ini@~1.3.0: +ini@^1.3.5: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== @@ -6542,49 +6025,11 @@ intl-messageformat@10.5.11: "@formatjs/icu-messageformat-parser" "2.7.6" tslib "^2.4.0" -ioredis@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.3.2.tgz#9139f596f62fc9c72d873353ac5395bcf05709f7" - integrity sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA== - dependencies: - "@ioredis/commands" "^1.1.1" - cluster-key-slot "^1.1.0" - debug "^4.3.4" - denque "^2.1.0" - lodash.defaults "^4.2.0" - lodash.isarguments "^3.1.0" - redis-errors "^1.2.0" - redis-parser "^3.0.0" - standard-as-callback "^2.1.0" - ipaddr.js@^2.0.1: version "2.1.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f" integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== -ipx@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/ipx/-/ipx-1.3.1.tgz#2ff4aa9bc5be74f63cccd80d1df430fcc5e715b6" - integrity sha512-hWRLXdMDOz2q81T2x9lowFtAGO3E5b2HtC8xOOBTrlnxygHNaVrZqJ5c1P3T7tDkC3oCocYRRz0VBffvJKeQlw== - dependencies: - "@fastify/accept-negotiator" "^1.1.0" - consola "^3.2.3" - defu "^6.1.2" - destr "^2.0.1" - etag "^1.8.1" - image-meta "^0.1.1" - listhen "^1.5.5" - node-fetch-native "^1.4.0" - pathe "^1.1.1" - sharp "^0.32.6" - ufo "^1.3.1" - xss "^1.0.14" - -iron-webcrypto@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/iron-webcrypto/-/iron-webcrypto-1.0.0.tgz#e3b689c0c61b434a0a4cb82d0aeabbc8b672a867" - integrity sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg== - is-array-buffer@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" @@ -6598,11 +6043,6 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - is-async-function@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" @@ -6617,13 +6057,6 @@ is-bigint@^1.0.1: dependencies: has-bigints "^1.0.1" -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - is-boolean-object@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" @@ -6677,11 +6110,6 @@ is-date-object@^1.0.1, is-date-object@^1.0.5: dependencies: has-tostringtag "^1.0.0" -is-docker@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - is-docker@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" @@ -6721,7 +6149,7 @@ is-generator-function@^1.0.10: dependencies: has-tostringtag "^1.0.0" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -6798,11 +6226,6 @@ is-plain-object@^5.0.0: resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== -is-promise@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3" - integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== - is-reference@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" @@ -6891,13 +6314,6 @@ is-weakset@^2.0.3: call-bind "^1.0.7" get-intrinsic "^1.2.4" -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" @@ -7358,11 +6774,6 @@ jest@^29.7.0: import-local "^3.0.2" jest-cli "^29.7.0" -jiti@^1.20.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" - integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== - joycon@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" @@ -7624,29 +7035,6 @@ lint-staged@^14.0.1: string-argv "0.3.2" yaml "2.3.1" -listhen@^1.2.2, listhen@^1.5.5: - version "1.5.5" - resolved "https://registry.yarnpkg.com/listhen/-/listhen-1.5.5.tgz#58915512af70f770aa3e9fb19367adf479bb58c4" - integrity sha512-LXe8Xlyh3gnxdv4tSjTjscD1vpr/2PRpzq8YIaMJgyKzRG8wdISlWVWnGThJfHnlJ6hmLt2wq1yeeix0TEbuoA== - dependencies: - "@parcel/watcher" "^2.3.0" - "@parcel/watcher-wasm" "2.3.0" - citty "^0.1.4" - clipboardy "^3.0.0" - consola "^3.2.3" - defu "^6.1.2" - get-port-please "^3.1.1" - h3 "^1.8.1" - http-shutdown "^1.2.2" - jiti "^1.20.0" - mlly "^1.4.2" - node-forge "^1.3.1" - pathe "^1.1.1" - std-env "^3.4.3" - ufo "^1.3.0" - untun "^0.1.2" - uqr "^0.1.2" - listr2@6.6.1: version "6.6.1" resolved "https://registry.yarnpkg.com/listr2/-/listr2-6.6.1.tgz#08b2329e7e8ba6298481464937099f4a2cd7f95d" @@ -7727,21 +7115,11 @@ lodash.debounce@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== -lodash.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== - lodash.includes@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== -lodash.isarguments@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - integrity sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg== - lodash.isboolean@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" @@ -7858,11 +7236,6 @@ lower-case@^2.0.2: dependencies: tslib "^2.0.3" -lru-cache@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.1.0.tgz#2098d41c2dc56500e6c88584aa656c84de7d0484" - integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag== - lru-cache@^10.2.0: version "10.2.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" @@ -8017,11 +7390,6 @@ merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -micro-memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/micro-memoize/-/micro-memoize-4.1.2.tgz#ce719c1ba1e41592f1cd91c64c5f41dcbf135f36" - integrity sha512-+HzcV2H+rbSJzApgkj0NdTakkC+bnyeiUxgT6/m7mjcz1CmM22KYFKp+EVj1sWe4UYcnriJr5uqHQD/gMHLD+g== - micromatch@4.0.5, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" @@ -8042,11 +7410,6 @@ mime-types@^2.1.12, mime-types@~2.1.19: dependencies: mime-db "1.52.0" -mime@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" - integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -8057,11 +7420,6 @@ mimic-fn@^4.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== -mimic-response@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" - integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== - min-indent@^1.0.0, min-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" @@ -8104,7 +7462,7 @@ minimist-options@4.1.0, minimist-options@^4.0.2: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8: +minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -8134,44 +7492,16 @@ minizlib@^2.1.1: minipass "^3.0.0" yallist "^4.0.0" -mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== - mkdirp@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mkdirp@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" - integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== - -mlly@^1.2.0, mlly@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.4.2.tgz#7cf406aa319ff6563d25da6b36610a93f2a8007e" - integrity sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg== - dependencies: - acorn "^8.10.0" - pathe "^1.1.1" - pkg-types "^1.0.3" - ufo "^1.3.0" - mmdb-lib@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mmdb-lib/-/mmdb-lib-2.1.0.tgz#c2456caaf4c7ffa056f77575da6d40988e9e878b" integrity sha512-tdDTZmnI5G4UoSctv2KxM/3VQt2XRj4CmR5R4VsAWsOUcS3LysHR34wtixWm/pXxXdkBDuN92auxkC0T2+qd1Q== -moize@^6.1.0: - version "6.1.6" - resolved "https://registry.yarnpkg.com/moize/-/moize-6.1.6.tgz#ac2e723e74b951875fe2c0c3433405c2b098c3e6" - integrity sha512-vSKdIUO61iCmTqhdoIDrqyrtp87nWZUmBPniNjO0fX49wEYmyDO4lvlnFXiGcaH1JLE/s/9HbiK4LSHsbiUY6Q== - dependencies: - fast-equals "^3.0.1" - micro-memoize "^4.1.2" - moment-timezone@^0.5.35: version "0.5.45" resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.45.tgz#cb685acd56bac10e69d93c536366eb65aa6bcf5c" @@ -8184,11 +7514,6 @@ moment@^2.29.4: resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== -mri@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" - integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== - ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -8199,11 +7524,6 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -murmurhash@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/murmurhash/-/murmurhash-2.0.1.tgz#4097720e08cf978872194ad84ea5be2dec9b610f" - integrity sha512-5vQEh3y+DG/lMPM0mCGPDnyV8chYg/g7rl6v3Gd8WMF9S429ox3Xk8qrk174kWhG767KQMqqxLD1WnGd77hiew== - nanoclone@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/nanoclone/-/nanoclone-0.2.1.tgz#dd4090f8f1a110d26bb32c49ed2f5b9235209ed4" @@ -8214,16 +7534,6 @@ nanoid@^3.3.6, nanoid@^3.3.7: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== -napi-build-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" - integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== - -napi-wasm@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/napi-wasm/-/napi-wasm-1.1.0.tgz#bbe617823765ae9c1bc12ff5942370eae7b2ba4e" - integrity sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg== - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -8274,40 +7584,11 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -node-abi@^3.3.0: - version "3.52.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.52.0.tgz#ffba0a85f54e552547e5849015f40f9514d5ba7c" - integrity sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ== - dependencies: - semver "^7.3.5" - -node-addon-api@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" - integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== - -node-addon-api@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.0.0.tgz#8136add2f510997b3b94814f4af1cce0b0e3962e" - integrity sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA== - node-domexception@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== -node-fetch-native@^1.2.0, node-fetch-native@^1.4.0, node-fetch-native@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.4.1.tgz#5a336e55b4e1b1e72b9927da09fecd2b374c9be5" - integrity sha512-NsXBU0UgBxo2rQLOeWNZqS3fvflWePMECr8CoSWoSTqCqGbVVsvl9vZu1HfQicYN0g5piV9Gh8RTEvo/uP752w== - -node-fetch@^2.0.0, node-fetch@^2.6.6: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - node-fetch@^3.2.8: version "3.3.2" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" @@ -8317,11 +7598,6 @@ node-fetch@^3.2.8: fetch-blob "^3.1.4" formdata-polyfill "^4.0.10" -node-forge@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" - integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== - node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -8337,11 +7613,6 @@ node-releases@^2.0.14: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== -node-stream-zip@^1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/node-stream-zip/-/node-stream-zip-1.15.0.tgz#158adb88ed8004c6c49a396b50a6a5de3bca33ea" - integrity sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw== - normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -8362,7 +7633,7 @@ normalize-package-data@^3.0.2: semver "^7.3.4" validate-npm-package-license "^3.0.1" -normalize-path@^3.0.0, normalize-path@~3.0.0: +normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -8484,15 +7755,6 @@ object.values@^1.1.6, object.values@^1.1.7: define-properties "^1.2.1" es-object-atoms "^1.0.0" -ofetch@^1.1.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/ofetch/-/ofetch-1.3.3.tgz#588cb806a28e5c66c2c47dd8994f9059a036d8c0" - integrity sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg== - dependencies: - destr "^2.0.1" - node-fetch-native "^1.4.0" - ufo "^1.3.0" - once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -8531,11 +7793,6 @@ ospath@^1.2.2: resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" integrity sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA== -outdent@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.8.0.tgz#2ebc3e77bf49912543f1008100ff8e7f44428eb0" - integrity sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A== - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -8678,16 +7935,6 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pathe@^0.3.0: - version "0.3.9" - resolved "https://registry.yarnpkg.com/pathe/-/pathe-0.3.9.tgz#4baff768f37f03e3d9341502865fb93116f65191" - integrity sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g== - -pathe@^1.1.0, pathe@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.1.tgz#1dd31d382b974ba69809adc9a7a347e65d84829a" - integrity sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q== - pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -8703,7 +7950,7 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -8745,15 +7992,6 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pkg-types@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868" - integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A== - dependencies: - jsonc-parser "^3.2.0" - mlly "^1.2.0" - pathe "^1.1.0" - possible-typed-array-names@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" @@ -9337,24 +8575,6 @@ postcss@^8.4.31: picocolors "^1.0.0" source-map-js "^1.2.0" -prebuild-install@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" - integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== - dependencies: - detect-libc "^2.0.0" - expand-template "^2.0.3" - github-from-package "0.0.0" - minimist "^1.2.3" - mkdirp-classic "^0.5.3" - napi-build-utils "^1.0.1" - node-abi "^3.3.0" - pump "^3.0.0" - rc "^1.2.7" - simple-get "^4.0.0" - tar-fs "^2.0.0" - tunnel-agent "^0.6.0" - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -9470,11 +8690,6 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -queue-tick@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/queue-tick/-/queue-tick-1.0.1.tgz#f6f07ac82c1fd60f82e098b417a80e52f1f4c142" - integrity sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag== - quick-lru@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" @@ -9485,11 +8700,6 @@ quick-lru@^5.1.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== -radix3@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/radix3/-/radix3-1.1.0.tgz#9745df67a49c522e94a33d0a93cf743f104b6e0d" - integrity sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A== - raf-schd@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/raf-schd/-/raf-schd-4.0.3.tgz#5d6c34ef46f8b2a0e880a8fcdb743efc5bfdbc1a" @@ -9502,16 +8712,6 @@ randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - react-basics@^0.123.0: version "0.123.0" resolved "https://registry.yarnpkg.com/react-basics/-/react-basics-0.123.0.tgz#8b18c1c1a235858dd0d1e329d5b1c3ac9ab48df3" @@ -9693,22 +8893,6 @@ read-pkg@^6.0.0: parse-json "^5.2.0" type-fest "^1.0.1" -readable-stream@^3.1.1, readable-stream@^3.4.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -9725,18 +8909,6 @@ redent@^4.0.0: indent-string "^5.0.0" strip-indent "^4.0.0" -redis-errors@^1.0.0, redis-errors@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" - integrity sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w== - -redis-parser@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4" - integrity sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A== - dependencies: - redis-errors "^1.0.0" - redis@^4.5.1: version "4.6.10" resolved "https://registry.yarnpkg.com/redis/-/redis-4.6.10.tgz#07f6ea2b2c5455b098e76d1e8c9b3376114e9458" @@ -9793,11 +8965,6 @@ regenerator-transform@^0.15.2: dependencies: "@babel/runtime" "^7.8.4" -regexp-tree@^0.1.24: - version "0.1.27" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.27.tgz#2198f0ef54518ffa743fe74d983b56ffd631b6cd" - integrity sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA== - regexp.prototype.flags@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" @@ -10052,7 +9219,7 @@ safe-array-concat@^1.1.2: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -10119,13 +9286,6 @@ semver@^7.3.4, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: dependencies: lru-cache "^6.0.0" -semver@^7.3.5: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - serialize-javascript@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" @@ -10155,20 +9315,6 @@ set-function-name@^2.0.1, set-function-name@^2.0.2: functions-have-names "^1.2.3" has-property-descriptors "^1.0.2" -sharp@^0.32.6: - version "0.32.6" - resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.32.6.tgz#6ad30c0b7cd910df65d5f355f774aa4fce45732a" - integrity sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w== - dependencies: - color "^4.2.3" - detect-libc "^2.0.2" - node-addon-api "^6.1.0" - prebuild-install "^7.1.1" - semver "^7.5.4" - simple-get "^4.0.1" - tar-fs "^3.0.4" - tunnel-agent "^0.6.0" - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -10218,27 +9364,6 @@ signal-exit@^4.0.1: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== -simple-concat@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" - integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== - -simple-get@^4.0.0, simple-get@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" - integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== - dependencies: - decompress-response "^6.0.0" - once "^1.3.1" - simple-concat "^1.0.0" - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== - dependencies: - is-arrayish "^0.3.1" - sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -10384,29 +9509,11 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" -standard-as-callback@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/standard-as-callback/-/standard-as-callback-2.1.0.tgz#8953fc05359868a77b5b9739a665c5977bb7df45" - integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A== - -std-env@^3.4.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.6.0.tgz#94807562bddc68fa90f2e02c5fd5b6865bb4e98e" - integrity sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg== - streamsearch@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== -streamx@^2.15.0: - version "2.15.6" - resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.15.6.tgz#28bf36997ebc7bf6c08f9eba958735231b833887" - integrity sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw== - dependencies: - fast-fifo "^1.1.0" - queue-tick "^1.0.1" - string-argv@0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" @@ -10425,16 +9532,7 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -10507,21 +9605,7 @@ string.prototype.trimstart@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -10574,11 +9658,6 @@ strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - style-inject@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/style-inject/-/style-inject-0.3.0.tgz#d21c477affec91811cc82355832a700d22bf8dd3" @@ -10763,45 +9842,6 @@ tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tar-fs@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" - integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== - dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.1.4" - -tar-fs@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.0.4.tgz#a21dc60a2d5d9f55e0089ccd78124f1d3771dbbf" - integrity sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w== - dependencies: - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^3.1.5" - -tar-stream@^2.1.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -tar-stream@^3.1.5: - version "3.1.6" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.6.tgz#6520607b55a06f4a2e2e04db360ba7d338cc5bab" - integrity sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg== - dependencies: - b4a "^1.6.4" - fast-fifo "^1.2.0" - streamx "^2.15.0" - tar@^6.1.2: version "6.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" @@ -10853,14 +9893,6 @@ through@^2.3.8: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== -tiny-glob@^0.2.9: - version "0.2.9" - resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2" - integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== - dependencies: - globalyzer "0.1.0" - globrex "^0.1.2" - tiny-invariant@^1.0.6: version "1.3.1" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" @@ -10915,11 +9947,6 @@ tough-cookie@^4.1.3: universalify "^0.2.0" url-parse "^1.5.3" -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - trim-newlines@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" @@ -11110,11 +10137,6 @@ typescript@^5.4.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.4.tgz#eb2471e7b0a5f1377523700a21669dce30c2d952" integrity sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw== -ufo@^1.0.0, ufo@^1.2.0, ufo@^1.3.0, ufo@^1.3.1, ufo@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.3.2.tgz#c7d719d0628a1c80c006d2240e0d169f6e3c0496" - integrity sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA== - unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" @@ -11125,27 +10147,11 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" -uncrypto@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/uncrypto/-/uncrypto-0.1.3.tgz#e1288d609226f2d02d8d69ee861fa20d8348ef2b" - integrity sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q== - undici-types@~5.26.4: version "5.26.5" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -unenv@^1.7.4: - version "1.8.0" - resolved "https://registry.yarnpkg.com/unenv/-/unenv-1.8.0.tgz#0f860d5278405700bd95d47b23bc01f3a735d68c" - integrity sha512-uIGbdCWZfhRRmyKj1UioCepQ0jpq638j/Cf0xFTn4zD1nGJ2lSdzYHLzfdXN791oo/0juUiSWW1fBklXMTsuqg== - dependencies: - consola "^3.2.3" - defu "^6.1.3" - mime "^3.0.0" - node-fetch-native "^1.4.1" - pathe "^1.1.1" - unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" @@ -11184,37 +10190,11 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -unstorage@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/unstorage/-/unstorage-1.9.0.tgz#0c1977f4e769a48344339ac97ec3f2feea94d43d" - integrity sha512-VpD8ZEYc/le8DZCrny3bnqKE4ZjioQxBRnWE+j5sGNvziPjeDlaS1NaFFHzl/kkXaO3r7UaF8MGQrs14+1B4pQ== - dependencies: - anymatch "^3.1.3" - chokidar "^3.5.3" - destr "^2.0.1" - h3 "^1.7.1" - ioredis "^5.3.2" - listhen "^1.2.2" - lru-cache "^10.0.0" - mri "^1.2.0" - node-fetch-native "^1.2.0" - ofetch "^1.1.1" - ufo "^1.2.0" - untildify@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== -untun@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/untun/-/untun-0.1.3.tgz#5d10dee37a3a5737ff03d158be877dae0a0e58a6" - integrity sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ== - dependencies: - citty "^0.1.5" - consola "^3.2.3" - pathe "^1.1.1" - update-browserslist-db@^1.0.13: version "1.0.13" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" @@ -11223,11 +10203,6 @@ update-browserslist-db@^1.0.13: escalade "^3.1.1" picocolors "^1.0.0" -uqr@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/uqr/-/uqr-0.1.2.tgz#5c6cd5dcff9581f9bb35b982cb89e2c483a41d7d" - integrity sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA== - uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -11243,11 +10218,6 @@ url-parse@^1.5.3: querystringify "^2.1.1" requires-port "^1.0.0" -urlpattern-polyfill@8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz#99f096e35eff8bf4b5a2aa7d58a1523d6ebc7ce5" - integrity sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ== - use-memo-one@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/use-memo-one/-/use-memo-one-1.1.3.tgz#2fd2e43a2169eabc7496960ace8c79efef975e99" @@ -11258,7 +10228,7 @@ use-sync-external-store@1.2.0: resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== -util-deprecate@^1.0.1, util-deprecate@^1.0.2: +util-deprecate@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== @@ -11332,19 +10302,6 @@ web-streams-polyfill@^3.0.3: resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -11409,7 +10366,7 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -11427,15 +10384,6 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" @@ -11488,14 +10436,6 @@ write-json-file@^4.3.0: sort-keys "^4.0.0" write-file-atomic "^3.0.0" -xss@^1.0.14: - version "1.0.14" - resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.14.tgz#4f3efbde75ad0d82e9921cc3c95e6590dd336694" - integrity sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw== - dependencies: - commander "^2.20.3" - cssfilter "0.0.10" - y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" From 32cfb74c4985ebaa81643c6d7b9949657b9e0dc3 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Wed, 17 Apr 2024 00:10:02 -0700 Subject: [PATCH 014/438] Updated check-env script. --- scripts/check-env.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/scripts/check-env.js b/scripts/check-env.js index a68fd822ad..db39bb79d5 100644 --- a/scripts/check-env.js +++ b/scripts/check-env.js @@ -23,13 +23,9 @@ if (!process.env.SKIP_DB_CHECK && !process.env.DATABASE_TYPE) { } if (process.env.CLICKHOUSE_URL) { - checkMissing(['CA_CERT', 'CLIENT_CERT', 'CLIENT_KEY', 'KAFKA_BROKER', 'KAFKA_URL', 'REDIS_URL']); + checkMissing(['KAFKA_BROKER', 'KAFKA_URL', 'REDIS_URL']); } if (process.env.CLOUD_MODE) { checkMissing(['CLOUD_URL']); } - -if (process.env.ENABLE_BLOCKER) { - checkMissing(['REDIS_URL']); -} From 7152b0b76dc98c7bf2c911ab90c7371a82137415 Mon Sep 17 00:00:00 2001 From: Giuseppe Pagano Date: Wed, 17 Apr 2024 22:41:14 +0200 Subject: [PATCH 015/438] feat: add host --- .../[websiteId]/WebsiteExpandedView.tsx | 7 ++++ .../websites/[websiteId]/WebsiteTableView.tsx | 4 ++- .../hooks/queries/useWebsitePageviews.ts | 3 +- .../hooks/queries/useWebsiteStats.ts | 3 +- src/components/hooks/useFields.ts | 1 + src/components/messages.ts | 2 ++ src/components/metrics/HostsTable.tsx | 35 +++++++++++++++++++ src/components/metrics/MetricsTable.tsx | 3 +- src/lib/constants.ts | 4 ++- .../api/websites/[websiteId]/pageviews.ts | 2 ++ src/pages/api/websites/[websiteId]/stats.ts | 2 ++ 11 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 src/components/metrics/HostsTable.tsx diff --git a/src/app/(main)/websites/[websiteId]/WebsiteExpandedView.tsx b/src/app/(main)/websites/[websiteId]/WebsiteExpandedView.tsx index ea037852e2..56197ea943 100644 --- a/src/app/(main)/websites/[websiteId]/WebsiteExpandedView.tsx +++ b/src/app/(main)/websites/[websiteId]/WebsiteExpandedView.tsx @@ -9,6 +9,7 @@ import OSTable from 'components/metrics/OSTable'; import PagesTable from 'components/metrics/PagesTable'; import QueryParametersTable from 'components/metrics/QueryParametersTable'; import ReferrersTable from 'components/metrics/ReferrersTable'; +import HostsTable from 'components/metrics/HostsTable'; import ScreenTable from 'components/metrics/ScreenTable'; import EventsTable from 'components/metrics/EventsTable'; import SideNav from 'components/layout/SideNav'; @@ -20,6 +21,7 @@ const views = { url: PagesTable, title: PagesTable, referrer: ReferrersTable, + host: HostsTable, browser: BrowsersTable, os: OSTable, device: DevicesTable, @@ -58,6 +60,11 @@ export default function WebsiteExpandedView({ label: formatMessage(labels.referrers), url: renderUrl({ view: 'referrer' }), }, + { + key: 'host', + label: formatMessage(labels.hosts), + url: renderUrl({ view: 'host' }), + }, { key: 'browser', label: formatMessage(labels.browsers), diff --git a/src/app/(main)/websites/[websiteId]/WebsiteTableView.tsx b/src/app/(main)/websites/[websiteId]/WebsiteTableView.tsx index 7cc415e5cd..6825ed45cb 100644 --- a/src/app/(main)/websites/[websiteId]/WebsiteTableView.tsx +++ b/src/app/(main)/websites/[websiteId]/WebsiteTableView.tsx @@ -2,6 +2,7 @@ import { useState } from 'react'; import { Grid, GridRow } from 'components/layout/Grid'; import PagesTable from 'components/metrics/PagesTable'; import ReferrersTable from 'components/metrics/ReferrersTable'; +import HostsTable from 'components/metrics/HostsTable'; import BrowsersTable from 'components/metrics/BrowsersTable'; import OSTable from 'components/metrics/OSTable'; import DevicesTable from 'components/metrics/DevicesTable'; @@ -26,9 +27,10 @@ export default function WebsiteTableView({ return ( - + + diff --git a/src/components/hooks/queries/useWebsitePageviews.ts b/src/components/hooks/queries/useWebsitePageviews.ts index 2d6e3428be..7dd0565980 100644 --- a/src/components/hooks/queries/useWebsitePageviews.ts +++ b/src/components/hooks/queries/useWebsitePageviews.ts @@ -7,7 +7,7 @@ export function useWebsitePageviews(websiteId: string, options?: { [key: string] const { startDate, endDate, unit } = dateRange; const { timezone } = useTimezone(); const { - query: { url, referrer, os, browser, device, country, region, city, title }, + query: { url, referrer, host, os, browser, device, country, region, city, title }, } = useNavigation(); const params = { @@ -17,6 +17,7 @@ export function useWebsitePageviews(websiteId: string, options?: { [key: string] timezone, url, referrer, + host, os, browser, device, diff --git a/src/components/hooks/queries/useWebsiteStats.ts b/src/components/hooks/queries/useWebsiteStats.ts index 2ada662f5e..a00b221dcc 100644 --- a/src/components/hooks/queries/useWebsiteStats.ts +++ b/src/components/hooks/queries/useWebsiteStats.ts @@ -5,7 +5,7 @@ export function useWebsiteStats(websiteId: string, options?: { [key: string]: st const [dateRange] = useDateRange(websiteId); const { startDate, endDate } = dateRange; const { - query: { url, referrer, title, os, browser, device, country, region, city }, + query: { url, referrer, host, title, os, browser, device, country, region, city }, } = useNavigation(); const params = { @@ -13,6 +13,7 @@ export function useWebsiteStats(websiteId: string, options?: { [key: string]: st endAt: +endDate, url, referrer, + host, title, os, browser, diff --git a/src/components/hooks/useFields.ts b/src/components/hooks/useFields.ts index 05d2b4588c..d08a234041 100644 --- a/src/components/hooks/useFields.ts +++ b/src/components/hooks/useFields.ts @@ -7,6 +7,7 @@ export function useFields() { { name: 'url', type: 'string', label: formatMessage(labels.url) }, { name: 'title', type: 'string', label: formatMessage(labels.pageTitle) }, { name: 'referrer', type: 'string', label: formatMessage(labels.referrer) }, + { name: 'host', type: 'string', label: formatMessage(labels.host) }, { name: 'query', type: 'string', label: formatMessage(labels.query) }, { name: 'browser', type: 'string', label: formatMessage(labels.browser) }, { name: 'os', type: 'string', label: formatMessage(labels.os) }, diff --git a/src/components/messages.ts b/src/components/messages.ts index 79a6b92ca1..f31cd555b7 100644 --- a/src/components/messages.ts +++ b/src/components/messages.ts @@ -87,6 +87,7 @@ export const labels = defineMessages({ refresh: { id: 'label.refresh', defaultMessage: 'Refresh' }, pages: { id: 'label.pages', defaultMessage: 'Pages' }, referrers: { id: 'label.referrers', defaultMessage: 'Referrers' }, + hosts: { id: 'label.hosts', defaultMessage: 'Hosts' }, screens: { id: 'label.screens', defaultMessage: 'Screens' }, browsers: { id: 'label.browsers', defaultMessage: 'Browsers' }, os: { id: 'label.os', defaultMessage: 'OS' }, @@ -196,6 +197,7 @@ export const labels = defineMessages({ }, dropoff: { id: 'label.dropoff', defaultMessage: 'Dropoff' }, referrer: { id: 'label.referrer', defaultMessage: 'Referrer' }, + host: { id: 'label.host', defaultMessage: 'Host' }, country: { id: 'label.country', defaultMessage: 'Country' }, region: { id: 'label.region', defaultMessage: 'Region' }, city: { id: 'label.city', defaultMessage: 'City' }, diff --git a/src/components/metrics/HostsTable.tsx b/src/components/metrics/HostsTable.tsx new file mode 100644 index 0000000000..d3a0f3bf39 --- /dev/null +++ b/src/components/metrics/HostsTable.tsx @@ -0,0 +1,35 @@ +import MetricsTable, { MetricsTableProps } from './MetricsTable'; +import FilterLink from 'components/common/FilterLink'; +import { useMessages } from 'components/hooks'; +import { Flexbox } from 'react-basics'; + +export function HostsTable(props: MetricsTableProps) { + const { formatMessage, labels } = useMessages(); + + const renderLink = ({ x: host }) => { + return ( + + + + ); + }; + + return ( + <> + + + ); +} + +export default HostsTable; diff --git a/src/components/metrics/MetricsTable.tsx b/src/components/metrics/MetricsTable.tsx index 26355018ff..288835285b 100644 --- a/src/components/metrics/MetricsTable.tsx +++ b/src/components/metrics/MetricsTable.tsx @@ -48,7 +48,7 @@ export function MetricsTable({ const [{ startDate, endDate }] = useDateRange(websiteId); const { renderUrl, - query: { url, referrer, title, os, browser, device, country, region, city }, + query: { url, referrer, host, title, os, browser, device, country, region, city }, } = useNavigation(); const { formatMessage, labels } = useMessages(); const { dir } = useLocale(); @@ -61,6 +61,7 @@ export function MetricsTable({ endAt: +endDate, url, referrer, + host, os, title, browser, diff --git a/src/lib/constants.ts b/src/lib/constants.ts index 66e17dfbe0..7d47e0c2df 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -31,7 +31,7 @@ export const FILTER_RANGE = 'filter-range'; export const FILTER_REFERRERS = 'filter-referrers'; export const FILTER_PAGES = 'filter-pages'; export const UNIT_TYPES = ['year', 'month', 'hour', 'day']; -export const EVENT_COLUMNS = ['url', 'referrer', 'title', 'query', 'event']; +export const EVENT_COLUMNS = ['url', 'referrer', 'title', 'query', 'event', 'host']; export const SESSION_COLUMNS = [ 'browser', @@ -42,11 +42,13 @@ export const SESSION_COLUMNS = [ 'country', 'region', 'city', + 'host', ]; export const FILTER_COLUMNS = { url: 'url_path', referrer: 'referrer_domain', + host: 'hostname', title: 'page_title', query: 'url_query', os: 'os', diff --git a/src/pages/api/websites/[websiteId]/pageviews.ts b/src/pages/api/websites/[websiteId]/pageviews.ts index 1967106431..c1c081748e 100644 --- a/src/pages/api/websites/[websiteId]/pageviews.ts +++ b/src/pages/api/websites/[websiteId]/pageviews.ts @@ -14,6 +14,7 @@ export interface WebsitePageviewRequestQuery { timezone?: string; url?: string; referrer?: string; + host?: string; title?: string; os?: string; browser?: string; @@ -34,6 +35,7 @@ const schema = { timezone: TimezoneTest, url: yup.string(), referrer: yup.string(), + host: yup.string(), title: yup.string(), os: yup.string(), browser: yup.string(), diff --git a/src/pages/api/websites/[websiteId]/stats.ts b/src/pages/api/websites/[websiteId]/stats.ts index 81a6d83547..3d15e4384a 100644 --- a/src/pages/api/websites/[websiteId]/stats.ts +++ b/src/pages/api/websites/[websiteId]/stats.ts @@ -13,6 +13,7 @@ export interface WebsiteStatsRequestQuery { endAt: number; url?: string; referrer?: string; + host?: string; title?: string; query?: string; event?: string; @@ -32,6 +33,7 @@ const schema = { endAt: yup.number().required(), url: yup.string(), referrer: yup.string(), + host: yup.string(), title: yup.string(), query: yup.string(), event: yup.string(), From 4ca4be4445b5b42f2585d3e84fcd67eebac35f7a Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Thu, 18 Apr 2024 14:23:14 -0700 Subject: [PATCH 016/438] Added types for session data. --- package.json | 2 +- src/lib/detect.ts | 2 +- src/lib/middleware.ts | 4 ++-- src/lib/session.ts | 22 ++++------------------ src/lib/types.ts | 17 +++++++++++++++++ 5 files changed, 25 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index ad2bc79d26..c72a054f74 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "umami", - "version": "2.11.2", + "version": "2.12.0", "description": "A simple, fast, privacy-focused alternative to Google Analytics.", "author": "Umami Software, Inc. ", "license": "MIT", diff --git a/src/lib/detect.ts b/src/lib/detect.ts index 25dee386bd..64f70e6ca5 100644 --- a/src/lib/detect.ts +++ b/src/lib/detect.ts @@ -132,7 +132,7 @@ export async function getClientInfo(req: NextApiRequestCollect) { const subdivision2 = location?.subdivision2; const city = location?.city; const browser = browserName(userAgent); - const os = detectOS(userAgent); + const os = detectOS(userAgent) as string; const device = getDevice(req.body?.payload?.screen, os); return { userAgent, browser, os, ip, country, subdivision1, subdivision2, city, device }; diff --git a/src/lib/middleware.ts b/src/lib/middleware.ts index 6885de908f..8145ac1167 100644 --- a/src/lib/middleware.ts +++ b/src/lib/middleware.ts @@ -4,7 +4,7 @@ import redis from '@umami/redis-client'; import { getAuthToken, parseShareToken } from 'lib/auth'; import { ROLES } from 'lib/constants'; import { secret } from 'lib/crypto'; -import { findSession } from 'lib/session'; +import { getSession } from 'lib/session'; import { badRequest, createMiddleware, @@ -27,7 +27,7 @@ export const useCors = createMiddleware( export const useSession = createMiddleware(async (req, res, next) => { try { - const session = await findSession(req as NextApiRequestCollect); + const session = await getSession(req as NextApiRequestCollect); if (!session) { log('useSession: Session not found'); diff --git a/src/lib/session.ts b/src/lib/session.ts index 5f3020e17c..1f87ffcce8 100644 --- a/src/lib/session.ts +++ b/src/lib/session.ts @@ -6,23 +6,9 @@ import { createSession } from 'queries'; import cache from './cache'; import clickhouse from './clickhouse'; import { loadSession, loadWebsite } from './load'; +import { SessionData } from 'lib/types'; -export async function findSession(req: NextApiRequestCollect): Promise<{ - id: any; - websiteId: string; - visitId: string; - hostname: string; - browser: string; - os: any; - device: string; - screen: string; - language: string; - country: any; - subdivision1: any; - subdivision2: any; - city: any; - ownerId: string; -}> { +export async function getSession(req: NextApiRequestCollect): Promise { const { payload } = req.body; if (!payload) { @@ -35,6 +21,7 @@ export async function findSession(req: NextApiRequestCollect): Promise<{ if (cacheToken) { const result = await parseToken(cacheToken, secret()); + // Token is valid if (result) { await checkUserBlock(result?.ownerId); @@ -45,7 +32,6 @@ export async function findSession(req: NextApiRequestCollect): Promise<{ // Verify payload const { website: websiteId, hostname, screen, language } = payload; - // Check the hostname value for legality to eliminate dirty data const validHostnameRegex = /^[\w-.]+$/; if (!validHostnameRegex.test(hostname)) { throw new Error('Invalid hostname.'); @@ -78,7 +64,7 @@ export async function findSession(req: NextApiRequestCollect): Promise<{ visitId, hostname, browser, - os: os as any, + os, device, screen, language, diff --git a/src/lib/types.ts b/src/lib/types.ts index 5c9a39c6e7..27db220f0c 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -230,3 +230,20 @@ export interface RealtimeData { countries?: any[]; visitors?: any[]; } + +export interface SessionData { + id: string; + websiteId: string; + visitId: string; + hostname: string; + browser: string; + os: string; + device: string; + screen: string; + language: string; + country: string; + subdivision1: string; + subdivision2: string; + city: string; + ownerId: string; +} From 81283ee9e4b072cc2b3644420b664ad0cc15acad Mon Sep 17 00:00:00 2001 From: Celil6p Date: Sat, 20 Apr 2024 22:30:40 +0300 Subject: [PATCH 017/438] Turkish language updated --- src/lang/tr-TR.json | 308 ++++++++++++++++++++++---------------------- 1 file changed, 154 insertions(+), 154 deletions(-) diff --git a/src/lang/tr-TR.json b/src/lang/tr-TR.json index cb8ef1fa6b..d4e46b634e 100644 --- a/src/lang/tr-TR.json +++ b/src/lang/tr-TR.json @@ -1,246 +1,246 @@ { - "label.access-code": "Access code", + "label.access-code": "Erişim Kodu", "label.actions": "Hareketler", - "label.activity-log": "Activity log", - "label.add": "Add", - "label.add-description": "Add description", - "label.add-member": "Add member", - "label.add-step": "Add step", + "label.activity-log": "Aktivite Kaydı", + "label.add": "Ekle", + "label.add-description": "Açıklama ekle", + "label.add-member": "Üye ekle", + "label.add-step": "Adım ekle", "label.add-website": "Web sitesi ekle", - "label.admin": "Yönetici", - "label.after": "After", + "label.administrator": "Yönetici", + "label.after": "Sonra", "label.all": "Tümü", - "label.all-time": "All time", - "label.analytics": "Analytics", - "label.average": "Average", + "label.all-time": "Tüm zamanlar", + "label.analytics": "Analitik", + "label.average": "Ortalama", "label.average-visit-time": "Ortalama ziyaret süresi", "label.back": "Geri", - "label.before": "Before", - "label.bounce-rate": "Çıkma oranı", - "label.breakdown": "Breakdown", - "label.browser": "Browser", + "label.before": "Önce", + "label.bounce-rate": "Tek sayfa ziyaret oranı", + "label.breakdown": "Dağılım", + "label.browser": "Tarayıcı", "label.browsers": "Tarayıcılar", "label.cancel": "İptal", "label.change-password": "Şifre değiştir", - "label.cities": "Cities", - "label.city": "City", - "label.clear-all": "Clear all", - "label.confirm": "Confirm", + "label.cities": "Şehirler", + "label.city": "Şehir", + "label.clear-all": "Hepsini temizle", + "label.confirm": "Onayla", "label.confirm-password": "Parolayı onayla", - "label.contains": "Contains", - "label.continue": "Continue", + "label.contains": "İçeriği", + "label.continue": "Devam et", "label.countries": "Ülkeler", - "label.country": "Country", - "label.create": "Create", - "label.create-report": "Create report", - "label.create-team": "Create team", - "label.create-user": "Create user", - "label.created": "Created", - "label.created-by": "Created By", + "label.country": "Ülke", + "label.create": "Oluştur", + "label.create-report": "Rapor oluştur", + "label.create-team": "Takım oluştur", + "label.create-user": "Kullanıcı oluştur", + "label.created": "Oluşturuldu", + "label.created-by": "Tarafından oluşturldu", "label.current-password": "Mevcut parola", "label.custom-range": "Özelleştirilmiş aralık", "label.dashboard": "Kontrol Paneli", - "label.data": "Data", - "label.date": "Date", + "label.data": "Veri", + "label.date": "Tarih", "label.date-range": "Tarih aralığı", - "label.day": "Day", + "label.day": "Gün", "label.default-date-range": "Varsayılan tarih aralığı", "label.delete": "Sil", - "label.delete-report": "Delete report", - "label.delete-team": "Delete team", - "label.delete-user": "Delete user", + "label.delete-report": "Rapor sil", + "label.delete-team": "Takım sil", + "label.delete-user": "Kullanıcı sil", "label.delete-website": "Web sitesini sil", - "label.description": "Description", + "label.description": "Açıklama", "label.desktop": "Masaüstü", - "label.details": "Details", - "label.device": "Device", + "label.details": "Detaylar", + "label.device": "Cihaz", "label.devices": "Cihazlar", "label.dismiss": "Reddet", - "label.does-not-contain": "Does not contain", + "label.does-not-contain": "İçermez", "label.domain": "Alan adı", - "label.dropoff": "Dropoff", + "label.dropoff": "Bırakma", "label.edit": "Düzenle", - "label.edit-dashboard": "Edit dashboard", - "label.edit-member": "Edit member", + "label.edit-dashboard": "Kontrol panelini düzenle", + "label.edit-member": "Üyeyi düzenle", "label.enable-share-url": "Anonim paylaşım URL'i aktif", - "label.event": "Event", - "label.event-data": "Event data", + "label.event": "Olay", + "label.event-data": "Olay verisi", "label.events": "Olaylar", - "label.false": "False", - "label.field": "Field", - "label.fields": "Fields", - "label.filter": "Filter", - "label.filter-combined": "Birleşik", - "label.filter-raw": "Ham", - "label.filters": "Filters", - "label.funnel": "Funnel", - "label.funnel-description": "Understand the conversion and drop-off rate of users.", - "label.greater-than": "Greater than", - "label.greater-than-equals": "Greater than or equals", + "label.false": "Yanlış", + "label.field": "Alan", + "label.fields": "Alanlar", + "label.filter": "Filtre", + "label.filter-combined": "Birleşik filtre", + "label.filter-raw": "Ham filtre", + "label.filters": "Filtreler", + "label.funnel": "Huni", + "label.funnel-description": "Kullanıcıların dönüşüm ve ayrılma oranlarını anlayın.", + "label.greater-than": "Büyüktür", + "label.greater-than-equals": "Büyük veya eşittir", "label.insights": "Insights", - "label.insights-description": "Dive deeper into your data by using segments and filters.", + "label.insights-description": "Segmentleri ve filtreleri kullanarak verilerinizi derinlemesine inceleyin.", "label.is": "Is", - "label.is-not": "Is not", - "label.is-not-set": "Is not set", - "label.is-set": "Is set", - "label.join": "Join", - "label.join-team": "Join team", - "label.language": "Language", - "label.languages": "Languages", + "label.is-not": "Değil", + "label.is-not-set": "Ayarlanmamış", + "label.is-set": "Ayarlandı", + "label.join": "Katıl", + "label.join-team": "Takıma katıl", + "label.language": "Dil", + "label.languages": "Diller", "label.laptop": "Dizüstü", "label.last-days": "Son {x} gün", "label.last-hours": "Son {x} saat", - "label.last-months": "Last {x} months", - "label.leave": "Leave", - "label.leave-team": "Leave team", - "label.less-than": "Less than", - "label.less-than-equals": "Less than or equals", + "label.last-months": "Son {x} ay", + "label.leave": "Ayrıl", + "label.leave-team": "Takımdan Ayrıl", + "label.less-than": "Küçüktür", + "label.less-than-equals": "Küçük veya eşittir", "label.login": "Giriş Yap", "label.logout": "Çıkış Yap", - "label.manage": "Manage", + "label.manage": "Yönet", "label.max": "Max", - "label.member": "Member", - "label.members": "Members", + "label.member": "Üye", + "label.members": "Üyeler", "label.min": "Min", "label.mobile": "Mobil Cihaz", "label.more": "Detaylı göster", - "label.my-account": "My account", - "label.my-websites": "My websites", + "label.my-account": "Hesabım", + "label.my-websites": "Web sitelerim", "label.name": "İsim", "label.new-password": "Yeni parola", - "label.none": "None", + "label.none": "Yok", "label.number-of-records": "{x} {x, plural, one {record} other {records}}", - "label.ok": "OK", + "label.ok": "TAMAM", "label.os": "OS", - "label.overview": "Overview", - "label.owner": "Owner", - "label.page-of": "Page {current} of {total}", + "label.overview": "Genel bakış", + "label.owner": "Sahibi", + "label.page-of": "{total} sayfada {current} ", "label.page-views": "Sayfa görünümü", - "label.pageTitle": "Page title", + "label.pageTitle": "Sayfa başlığı", "label.pages": "Sayfalar", "label.password": "Parola", "label.powered-by": "Sağlayıcı: {name}", "label.profile": "Profil", - "label.queries": "Queries", - "label.query": "Query", - "label.query-parameters": "Query parameters", + "label.queries": "Sorgular", + "label.query": "Sorgu", + "label.query-parameters": "Sorgu parametreleri", "label.realtime": "Gerçek Zamanlı", "label.referrer": "Referrer", "label.referrers": "Yönlendirenler", "label.refresh": "Yenile", - "label.regenerate": "Regenerate", - "label.region": "Region", - "label.regions": "Regions", - "label.remove": "Remove", - "label.remove-member": "Remove member", - "label.reports": "Reports", + "label.regenerate": "Yeniden Oluştur", + "label.region": "Bölge", + "label.regions": "Bölgeler", + "label.remove": "Kaldır", + "label.remove-member": "Üyeyi kaldır", + "label.reports": "Raporlar", "label.required": "Zorunlu alan", "label.reset": "Sıfırla", - "label.reset-website": "Reset statistics", - "label.retention": "Retention", - "label.retention-description": "Measure your website stickiness by tracking how often users return.", - "label.role": "Role", - "label.run-query": "Run query", + "label.reset-website": "İstatistikleri sıfırla", + "label.retention": "Geri dönüş", + "label.retention-description": "Kullanıcıların ne sıklıkla geri döndüğünü takip ederek web sitenizin kalıcılığını ölçün.", + "label.role": "Rol", + "label.run-query": "Sorgu çalıştır", "label.save": "Kaydet", "label.screens": "Ekranlar", - "label.search": "Search", - "label.select": "Select", - "label.select-date": "Select date", - "label.select-role": "Select role", - "label.select-website": "Select website", + "label.search": "Ara", + "label.select": "Seç", + "label.select-date": "Tarih seç", + "label.select-role": "Rol seç", + "label.select-website": "Web sitesi seç", "label.sessions": "Sessions", "label.settings": "Ayarlar", "label.share-url": "Paylaşım adresi", "label.single-day": "Tekil gün", - "label.steps": "Steps", - "label.sum": "Sum", + "label.steps": "Adımlar", + "label.sum": "Toplam", "label.tablet": "Tablet", - "label.team": "Team", - "label.team-id": "Team ID", - "label.team-member": "Team member", - "label.team-name": "Team name", - "label.team-owner": "Team owner", - "label.team-view-only": "Team view only", - "label.team-websites": "Team websites", - "label.teams": "Teams", - "label.theme": "Theme", + "label.team": "Takım", + "label.team-id": "Takım ID", + "label.team-member": "Takım üyesi", + "label.team-name": "Takım ismi", + "label.team-owner": "Takım sahibi", + "label.team-view-only": "Yalnızca ekip görünümü", + "label.team-websites": "Takım web siteleri", + "label.teams": "Takımlar", + "label.theme": "Tema", "label.this-month": "Bu ay", "label.this-week": "Bu hafta", "label.this-year": "Bu yıl", "label.timezone": "Zaman dilimi", - "label.title": "Title", + "label.title": "Başlık", "label.today": "Bugün", - "label.toggle-charts": "Toggle charts", - "label.total": "Total", - "label.total-records": "Total records", + "label.toggle-charts": "Grafikleri değiştir", + "label.total": "Toplam", + "label.total-records": "Toplam kayıt", "label.tracking-code": "İzleme kodu", "label.transfer": "Transfer", - "label.transfer-website": "Transfer website", - "label.true": "True", - "label.type": "Type", - "label.unique": "Unique", + "label.transfer-website": "Transfer web sitesi", + "label.true": "Doğru", + "label.type": "Tip", + "label.unique": "Benzersiz", "label.unique-visitors": "Tekil kullanıcı", "label.unknown": "Bilinmeyen", - "label.untitled": "Untitled", - "label.update": "Update", + "label.untitled": "İsimsiz", + "label.update": "Güncelle", "label.url": "URL", "label.urls": "URLs", - "label.user": "User", + "label.user": "Kullanıcı", "label.username": "Kullanıcı adı", - "label.users": "Users", + "label.users": "Kullanıcılar", "label.utm": "UTM", - "label.utm-description": "Track your campaigns through UTM parameters.", - "label.value": "Value", - "label.view": "View", + "label.utm-description": "Kampanyalarınızı UTM parametreleri aracılığıyla takip edin.", + "label.value": "Değer", + "label.view": "Görünüm", "label.view-details": "Detayı incele", - "label.view-only": "View only", + "label.view-only": "Sadece görünüm", "label.views": "Görüntüleme", - "label.views-per-visit": "Views per visit", + "label.views-per-visit": "Ziyaret başına görüntüleme", "label.visitors": "Ziyaretçi", - "label.visits": "Visits", - "label.website": "Website", + "label.visits": "Ziyaretler", + "label.website": "Web sitesi", "label.website-id": "Website ID", "label.websites": "Web siteleri", - "label.window": "Window", - "label.yesterday": "Yesterday", - "message.action-confirmation": "Type {confirmation} in the box below to confirm.", + "label.window": "Pencere", + "label.yesterday": "Dün", + "message.action-confirmation": "Onaylamak için aşağıdaki kutuya {confirmation} yazın.", "message.active-users": "{x} aktif ziyaretçi", "message.confirm-delete": "{target} kaydını silmek istediğinizden emin misiniz?", - "message.confirm-leave": "Are you sure you want to leave {target}?", - "message.confirm-remove": "Are you sure you want to remove {target}?", - "message.confirm-reset": "Are your sure you want to reset {target}'s statistics?", - "message.delete-team-warning": "Deleting a team will also delete all team websites.", - "message.delete-website-warning": "İlişkili tüm veriler de silinecektir.", + "message.confirm-leave": "{target} kaydından ayrılmak istediğinizden emin misiniz?", + "message.confirm-remove": "{target} kaydını kaldırmak istediğinizden emin misiniz?", + "message.confirm-reset": "{target} istatistiklerini sıfırlamak istediğinizden emin misiniz?", + "message.delete-team-warning": "Bir takımı silmek tüm takım web sitelerini de silecektir.", + "message.delete-website-warning": "İlişkili tüm veriler de silinecektir.", "message.error": "Bir şeyler ters gitti!", "message.event-log": "{event} on {url}", "message.go-to-settings": "Ayarlara git", "message.incorrect-username-password": "Hatalı kullanıcı adı ya da parola.", "message.invalid-domain": "Geçersiz alan adı", - "message.min-password-length": "Minimum length of {n} characters", - "message.new-version-available": "A new version of Umami {version} is available!", + "message.min-password-length": "Minimum {n} karakter uzunluğu", + "message.new-version-available": "Yeni versiyon Umami {version} mevcut!", "message.no-data-available": "Henüz hiç veri yok.", - "message.no-event-data": "No event data is available.", + "message.no-event-data": "Hiçbir olay verisi mevcut değil.", "message.no-match-password": "Parolalar uyuşmuyor", - "message.no-results-found": "No results were found.", - "message.no-team-websites": "This team does not have any websites.", - "message.no-teams": "You have not created any teams.", - "message.no-users": "There are no users.", + "message.no-results-found": "Hiçbir sonuç bulunamadı.", + "message.no-team-websites": "Bu takımın herhangi bir web sitesi yok.", + "message.no-teams": "Herhangi bir takım oluşturmadınız.", + "message.no-users": "Kullanıcı yok.", "message.no-websites-configured": "Henüz hiç web sitesi tanımlamadınız", "message.page-not-found": "Sayfa bulunamadı.", - "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", - "message.reset-website-warning": "All statistics for this website will be deleted, but your tracking code will remain intact.", + "message.reset-website": "Bu websitesini sıfılamak için aşağıdaki kutuya {confirmation} yazın.", + "message.reset-website-warning": "Bu web sitesi için tüm istatistikler silinecek, ancak izleme kodunuz bozulmadan kalacaktır.", "message.saved": "Başarıyla kaydedildi.", "message.share-url": "{target} için kullanılabilir anonim paylaşım adresidir.", - "message.team-already-member": "You are already a member of the team.", - "message.team-not-found": "Team not found.", - "message.team-websites-info": "Websites can be viewed by anyone on the team.", + "message.team-already-member": "Zaten bu takımın üyesisiniz", + "message.team-not-found": "Takım bulunamadı", + "message.team-websites-info": "Web siteleri takımdaki herkes tarafından görüntülenebilir.", "message.tracking-code": "İzleme kodu", - "message.transfer-team-website-to-user": "Transfer this website to your account?", - "message.transfer-user-website-to-team": "Select the team to transfer this website to.", - "message.transfer-website": "Transfer website ownership to your account or another team.", - "message.triggered-event": "Triggered event", - "message.user-deleted": "User deleted.", - "message.viewed-page": "Viewed page", + "message.transfer-team-website-to-user": "Bu web sitesi hesbınıza aktarılsın mı?", + "message.transfer-user-website-to-team": "Bu web sitesinin aktarılacağı takımı seçin.", + "message.transfer-website": "Web sitesi sahipliğini hesabınıza veya başka bir takıma aktarın", + "message.triggered-event": "Tetiklenen olay", + "message.user-deleted": "Kullanıcı silindi.", + "message.viewed-page": "Görüntülenen sayfa", "message.visitor-log": "Yeni ziyaretçi: {country}, {os}, {device}, {browser}", - "message.visitors-dropped-off": "Visitors dropped off" + "message.visitors-dropped-off": "Bırakan ziyaretçiler" } From 22ab8b8222625b7f13b8542495f51ed847504548 Mon Sep 17 00:00:00 2001 From: Rui Bin Choo Date: Sun, 21 Apr 2024 12:51:10 +0800 Subject: [PATCH 018/438] order event data in descending order by count --- src/queries/analytics/eventData/getEventDataEvents.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/queries/analytics/eventData/getEventDataEvents.ts b/src/queries/analytics/eventData/getEventDataEvents.ts index f869deae49..76ad3fce85 100644 --- a/src/queries/analytics/eventData/getEventDataEvents.ts +++ b/src/queries/analytics/eventData/getEventDataEvents.ts @@ -33,7 +33,7 @@ async function relationalQuery(websiteId: string, filters: QueryFilters) { and event_data.created_at between {{startDate}} and {{endDate}} and website_event.event_name = {{event}} group by website_event.event_name, event_data.data_key, event_data.data_type, event_data.string_value - order by 1 asc, 2 asc, 3 asc, 4 desc + order by 1 asc, 2 asc, 3 asc, 5 desc `, params, ); @@ -81,7 +81,7 @@ async function clickhouseQuery( and created_at between {startDate:DateTime64} and {endDate:DateTime64} and event_name = {event:String} group by data_key, data_type, string_value, event_name - order by 1 asc, 2 asc, 3 asc, 4 desc + order by 1 asc, 2 asc, 3 asc, 5 desc limit 500 `, params, From 5aa9b20ff72ed09993fdb06faadc53f596923d9f Mon Sep 17 00:00:00 2001 From: Sakib Hadziavdic Date: Mon, 22 Apr 2024 14:03:35 +0200 Subject: [PATCH 019/438] Add Bosnian language --- public/intl/country/bs-BA.json | 251 +++++ public/intl/language/bs-BA.json | 611 +++++++++++ public/intl/messages/bs-BA.json | 1676 +++++++++++++++++++++++++++++++ src/lang/bs-BA.json | 246 +++++ src/lib/lang.ts | 2 + 5 files changed, 2786 insertions(+) create mode 100644 public/intl/country/bs-BA.json create mode 100644 public/intl/language/bs-BA.json create mode 100644 public/intl/messages/bs-BA.json create mode 100644 src/lang/bs-BA.json diff --git a/public/intl/country/bs-BA.json b/public/intl/country/bs-BA.json new file mode 100644 index 0000000000..068f7658df --- /dev/null +++ b/public/intl/country/bs-BA.json @@ -0,0 +1,251 @@ +{ + "AF": "Afganistan", + "AL": "Albanija", + "DZ": "Al\u017eir", + "VI": "Ameri\u010dka Djevi\u010danska ostrva", + "AS": "Ameri\u010dka Samoa", + "UM": "Ameri\u010dka Vanjska Ostrva", + "AD": "Andora", + "AO": "Angola", + "AI": "Angvila", + "AQ": "Antarktika", + "AG": "Antigva i Barbuda", + "AR": "Argentina", + "AM": "Armenija", + "AW": "Aruba", + "AU": "Australija", + "AT": "Austrija", + "AZ": "Azerbejd\u017ean", + "BS": "Bahami", + "BH": "Bahrein", + "BD": "Banglade\u0161", + "BB": "Barbados", + "BE": "Belgija", + "BZ": "Belize", + "BJ": "Benin", + "BM": "Bermuda", + "BY": "Bjelorusija", + "BW": "Bocvana", + "BO": "Bolivija", + "BA": "Bosna i Hercegovina", + "CX": "Bo\u017ei\u0107no ostrvo", + "BR": "Brazil", + "VG": "Britanska Djevi\u010danska ostrva", + "IO": "Britanska Teritorija u Indijskom Okeanu", + "BN": "Brunej", + "BG": "Bugarska", + "BF": "Burkina Faso", + "BI": "Burundi", + "BT": "Butan", + "CF": "Centralnoafri\u010dka Republika", + "ME": "Crna Gora", + "TD": "\u010cad", + "CZ": "\u010ce\u0161ka", + "CL": "\u010cile", + "DK": "Danska", + "CD": "Demokratska Republika Kongo", + "DM": "Dominika", + "DO": "Dominikanska Republika", + "DJ": "D\u017eibuti", + "EG": "Egipat", + "EC": "Ekvador", + "GQ": "Ekvatorijalna Gvineja", + "ER": "Eritreja", + "EE": "Estonija", + "SZ": "Esvatini", + "ET": "Etiopija", + "FO": "Farska ostrva", + "FJ": "Fid\u017ei", + "PH": "Filipini", + "FI": "Finska", + "FK": "Folklandska ostrva", + "FR": "Francuska", + "GF": "Francuska Gvajana", + "PF": "Francuska Polinezija", + "TF": "Francuske Ju\u017ene Teritorije", + "GA": "Gabon", + "GM": "Gambija", + "GH": "Gana", + "GG": "Gernzi", + "GI": "Gibraltar", + "GR": "Gr\u010dka", + "GD": "Grenada", + "GL": "Grenland", + "GE": "Gruzija", + "GU": "Guam", + "GP": "Gvadalupe", + "GY": "Gvajana", + "GT": "Gvatemala", + "GN": "Gvineja", + "GW": "Gvineja-Bisao", + "HT": "Haiti", + "HM": "Herd i arhipelag MekDonald", + "NL": "Holandija", + "HN": "Honduras", + "HK": "Hong Kong (SAR Kina)", + "HR": "Hrvatska", + "IN": "Indija", + "ID": "Indonezija", + "IQ": "Irak", + "IR": "Iran", + "IE": "Irska", + "IS": "Island", + "TL": "Isto\u010dni Timor", + "IT": "Italija", + "IL": "Izrael", + "JM": "Jamajka", + "JP": "Japan", + "YE": "Jemen", + "JE": "Jersey", + "JO": "Jordan", + "GS": "Ju\u017ena D\u017eord\u017eija i Ju\u017ena Sendvi\u010d ostrva", + "KR": "Ju\u017ena Koreja", + "SS": "Ju\u017eni Sudan", + "ZA": "Ju\u017enoafri\u010dka Republika", + "KY": "Kajmanska ostrva", + "KH": "Kambod\u017ea", + "CM": "Kamerun", + "CA": "Kanada", + "CV": "Kape Verde", + "BQ": "Karipska Holandija", + "QA": "Katar", + "KZ": "Kazahstan", + "KE": "Kenija", + "CN": "Kina", + "CY": "Kipar", + "KG": "Kirgistan", + "KI": "Kiribati", + "CC": "Kokosova (Keelingova) ostrva", + "CO": "Kolumbija", + "KM": "Komori", + "CG": "Kongo", + "CR": "Kostarika", + "CU": "Kuba", + "CK": "Kukova ostrva", + "CW": "Kurasao", + "KW": "Kuvajt", + "LA": "Laos", + "LV": "Latvija", + "LS": "Lesoto", + "LB": "Liban", + "LR": "Liberija", + "LY": "Libija", + "LI": "Lihten\u0161tajn", + "LT": "Litvanija", + "LU": "Luksemburg", + "MG": "Madagaskar", + "HU": "Ma\u0111arska", + "YT": "Majote", + "MO": "Makao (SAR Kina)", + "MW": "Malavi", + "MV": "Maldivi", + "MY": "Malezija", + "ML": "Mali", + "MT": "Malta", + "MA": "Maroko", + "MH": "Mar\u0161alova ostrva", + "MQ": "Martinik", + "MU": "Mauricijus", + "MR": "Mauritanija", + "MX": "Meksiko", + "FM": "Mikronezija", + "MM": "Mjanmar", + "MD": "Moldavija", + "MC": "Monako", + "MN": "Mongolija", + "MS": "Monserat", + "MZ": "Mozambik", + "NA": "Namibija", + "NR": "Nauru", + "NP": "Nepal", + "NE": "Niger", + "NG": "Nigerija", + "NI": "Nikaragva", + "NU": "Niue", + "NO": "Norve\u0161ka", + "NC": "Nova Kaledonija", + "NZ": "Novi Zeland", + "DE": "Njema\u010dka", + "CI": "Obala Slonova\u010de", + "AX": "Olandska ostrva", + "OM": "Oman", + "TC": "Ostrva Turks i Kaikos", + "WF": "Ostrva Valis i Futuna", + "BV": "Ostrvo Buve", + "IM": "Ostrvo Man", + "NF": "Ostrvo Norfolk", + "PK": "Pakistan", + "PW": "Palau", + "PS": "Palestinska Teritorija", + "PA": "Panama", + "PG": "Papua Nova Gvineja", + "PY": "Paragvaj", + "PE": "Peru", + "PN": "Pitkernska Ostrva", + "PL": "Poljska", + "PR": "Porto Riko", + "PT": "Portugal", + "RE": "Reunion", + "RW": "Ruanda", + "RO": "Rumunija", + "RU": "Rusija", + "SV": "Salvador", + "WS": "Samoa", + "SM": "San Marino", + "ST": "Sao Tome i Principe", + "SA": "Saudijska Arabija", + "SC": "Sej\u0161eli", + "SN": "Senegal", + "SL": "Sijera Leone", + "SG": "Singapur", + "SX": "Sint Marten", + "SY": "Sirija", + "US": "Sjedinjene Dr\u017eave", + "KP": "Sjeverna Koreja", + "MK": "Sjeverna Makedonija", + "MP": "Sjeverna Marijanska ostrva", + "SK": "Slova\u010dka", + "SI": "Slovenija", + "SB": "Solomonska Ostrva", + "SO": "Somalija", + "RS": "Srbija", + "SD": "Sudan", + "SR": "Surinam", + "SJ": "Svalbard i Jan Majen", + "SH": "Sveta Helena", + "LC": "Sveta Lucija", + "BL": "Sveti Bartolomej", + "KN": "Sveti Kits i Nevis", + "MF": "Sveti Martin", + "PM": "Sveti Petar i Mikelon", + "VC": "Sveti Vinsent i Grenadin", + "ES": "\u0160panija", + "LK": "\u0160ri Lanka", + "SE": "\u0160vedska", + "CH": "\u0160vicarska", + "TJ": "Tad\u017eikistan", + "TH": "Tajland", + "TW": "Tajvan", + "TZ": "Tanzanija", + "TG": "Togo", + "TK": "Tokelau", + "TO": "Tonga", + "TT": "Trinidad i Tobago", + "TN": "Tunis", + "TM": "Turkmenistan", + "TR": "Turska", + "TV": "Tuvalu", + "UG": "Uganda", + "AE": "Ujedinjeni Arapski Emirati", + "GB": "Ujedinjeno Kraljevstvo", + "UA": "Ukrajina", + "UY": "Urugvaj", + "UZ": "Uzbekistan", + "VU": "Vanuatu", + "VA": "Vatikan", + "VE": "Venecuela", + "VN": "Vijetnam", + "ZM": "Zambija", + "EH": "Zapadna Sahara", + "ZW": "Zimbabve" +} diff --git a/public/intl/language/bs-BA.json b/public/intl/language/bs-BA.json new file mode 100644 index 0000000000..960e472225 --- /dev/null +++ b/public/intl/language/bs-BA.json @@ -0,0 +1,611 @@ +{ + "ab": "abhazijski", + "ace": "a\u010dineski", + "ada": "adangmejski", + "ady": "adigejski", + "aa": "afarski", + "afh": "afrihili", + "af": "afrikanerski", + "agq": "aghem", + "ain": "ainu", + "ay": "ajmara", + "akk": "akadijski", + "ak": "akan", + "ach": "akoli", + "bss": "Akoose", + "akz": "Alabama", + "sq": "albanski", + "arq": "Algerian Arabic", + "ale": "aljut", + "ase": "American Sign Language", + "en_US": "ameri\u010dki engleski", + "am": "amharski", + "anp": "angika", + "njo": "Ao Naga", + "an": "aragone\u017eanski", + "aro": "Araona", + "arp": "arapaho", + "ar": "arapski", + "arn": "araukanski", + "arw": "aravak", + "arc": "armajski", + "rup": "aromanijski", + "frp": "Arpitan", + "as": "asemijski", + "ast": "asturijski", + "asa": "asu", + "cch": "atsam", + "en_AU": "australski engleski", + "de_AT": "austrijski njema\u010dki", + "awa": "avadhi", + "av": "avarski", + "ae": "avestanski", + "az": "azerbejd\u017eanski", + "bfq": "Badaga", + "ksf": "bafia", + "bfd": "Bafut", + "bqi": "Bakhtiari", + "ban": "balinezijski", + "bal": "balu\u010di", + "bm": "bambara", + "bax": "Bamun", + "bjn": "Banjar", + "bas": "basa", + "eu": "baskijski", + "ba": "ba\u0161kirski", + "bbc": "Batak Toba", + "bar": "Bavarian", + "bej": "beja", + "bem": "bemba", + "bez": "bena", + "bn": "bengalski", + "bew": "Betawi", + "zxx": "bez lingvisti\u010dkog sadr\u017eaja", + "bik": "bikol", + "bin": "bini", + "bpy": "Bishnupriya", + "bi": "bislama", + "be": "bjeloruski", + "byn": "blin", + "zbl": "blisimboli", + "brx": "bodo", + "bho": "bojpuri", + "bs": "bosanski", + "brh": "Brahui", + "bra": "braj", + "pt_BR": "Brazilian Portuguese", + "br": "bretonski", + "en_GB": "britanski engleski", + "bg": "bugarski", + "bug": "bugine\u017eanskii", + "bum": "Bulu", + "bua": "buriat", + "my": "burmanski", + "frc": "Cajun French", + "yue": "Cantonese", + "cps": "Capiznon", + "cay": "Cayuga", + "ceb": "cebuano", + "dtp": "Central Dusun", + "esu": "Central Yupik", + "shu": "Chadian Arabic", + "qug": "Chimborazo Highland Quichua", + "ksh": "Colognian", + "swb": "Comorian", + "cy": "cy", + "chg": "\u010dagatai", + "ch": "\u010damoro", + "ce": "\u010de\u010denski", + "chy": "\u010dejenski", + "cs": "\u010de\u0161ki", + "chb": "\u010dib\u010da", + "cgg": "\u010diga", + "chn": "\u010dinukski", + "chp": "\u010dipvijanski", + "chr": "\u010diroki", + "cho": "\u010doktavski", + "chk": "\u010dukeski", + "cv": "\u010duva\u0161ki", + "dak": "dakota", + "da": "danski", + "dar": "dargva", + "dzg": "Dazaga", + "del": "delaver", + "din": "dinka", + "dv": "divehijski", + "doi": "dogri", + "dgr": "dogrib", + "dsb": "donjolu\u017ei\u010dkosrpski", + "dua": "duala", + "gez": "d\u017eiz", + "dz": "d\u017eonga", + "dyu": "\u0111ula", + "efi": "efikski", + "arz": "Egyptian Arabic", + "eka": "ekajuk", + "elx": "elamitski", + "ebu": "embu", + "egl": "Emilian", + "en": "engleski", + "myv": "erzija", + "eo": "esperanto", + "et": "estonski", + "pt_PT": "European Portuguese", + "ee": "eve", + "ewo": "evondo", + "es_ES": "evropski \u0161panski", + "ext": "Extremaduran", + "fan": "fang", + "fat": "fanti", + "fo": "farski", + "phn": "feni\u010danski", + "fj": "fid\u017eijski", + "hif": "Fiji Hindi", + "fil": "filipinski", + "fi": "finski", + "nl_BE": "flamanski", + "fon": "fon", + "gur": "Frafra", + "fr": "francuski", + "fur": "friulijski", + "fy": "frizijski", + "ff": "fulah", + "gaa": "ga", + "gag": "gagau\u0161ki", + "gay": "gajo", + "gl": "galski", + "gan": "Gan Chinese", + "lg": "ganda", + "gba": "gbaja", + "aln": "Gheg Albanian", + "bbj": "Ghomala", + "glk": "Gilaki", + "gil": "gilbert\u0161ki", + "gom": "Goan Konkani", + "gon": "gondi", + "hsb": "gornjolu\u017ei\u010dkosrpski", + "de_CH": "gornjonjema\u010dki (\u0161vicarski)", + "gor": "gorontalo", + "got": "gotski", + "el": "gr\u010dki", + "grb": "grebo", + "ka": "gruzijski", + "gu": "gud\u017earati", + "guz": "gusii", + "gn": "gvarani", + "gwi": "Gwich\u02bcin", + "ht": "hai\u0107anski", + "hai": "haida", + "hak": "Hakka Chinese", + "ha": "hausa", + "haw": "havajski", + "he": "hebrejski", + "hz": "herero", + "hil": "hiligajnon", + "hi": "hindi", + "ho": "hiri motu", + "hit": "hitite", + "hmn": "hmong", + "nl": "holandski", + "hr": "hrvatski", + "hup": "hupa", + "iba": "iban", + "ibb": "Ibibio", + "io": "ido", + "ig": "igbo", + "ilo": "iloko", + "smn": "inari sami", + "id": "indonezijski", + "izh": "Ingrian", + "inh": "ingu\u0161etski", + "ia": "interlingva", + "ie": "interlingve", + "iu": "inuktitut", + "ik": "inupiak", + "ga": "irski", + "is": "islandski", + "frs": "isto\u010dni frizijski", + "it": "italijanski", + "sah": "jakut", + "jam": "Jamaican Creole English", + "yao": "jao", + "ja": "japanski", + "yap": "jape\u0161ki", + "jv": "javanski", + "hy": "jermenski", + "yi": "jidi\u0161", + "dyo": "jola-fonyi", + "yo": "jorubanski", + "jrb": "judeo-arapski", + "jpr": "judeo-persijski", + "jut": "Jutish", + "alt": "ju\u017eni altai", + "nr": "ju\u017eni ndebele", + "sma": "ju\u017eni sami", + "kbd": "kabardijski", + "kab": "kabile", + "kac": "ka\u010din", + "cad": "kado", + "kgp": "Kaingang", + "kkj": "Kako", + "kl": "kalalisutski", + "kln": "kalenjin", + "xal": "kalmik", + "kam": "kamba", + "kn": "kanada", + "en_CA": "kanadski engleski", + "fr_CA": "kanadski francuski", + "kbl": "Kanembu", + "kr": "kanuri", + "kaa": "kara-kalpa\u0161ki", + "krc": "kara\u010daj-balkar", + "krl": "karelijski", + "car": "karipski", + "kha": "kasi", + "ks": "ka\u0161miri", + "csb": "ka\u0161ubijanski", + "ca": "katalonski", + "kaw": "kavi", + "kk": "kaza\u010dki", + "ken": "Kenyang", + "khw": "Khowar", + "quc": "ki\u010de", + "ki": "kikuju", + "kmb": "kimbundu", + "krj": "Kinaray-a", + "zh": "kineski", + "zh_Hans": "kineski (pojednostavljeni)", + "zh_Hant": "kineski (tradicionalni)", + "rw": "kinjarvanda", + "ky": "kirgiski", + "kiu": "Kirmanjki", + "nwc": "klasi\u010dni nevari", + "syc": "klasi\u010dni sirijski", + "tlh": "klingonski", + "km": "kmerski", + "ses": "kojraboro seni", + "bkm": "Kom", + "kv": "komi", + "koi": "komi-permja\u010dki", + "kg": "kongo", + "swc": "kongoanski swahili", + "kok": "konkani", + "cop": "koptski", + "ko": "korejski", + "kw": "korni\u0161ki", + "kfo": "koro", + "co": "korzikanski", + "xh": "kosa", + "kos": "kosreanski", + "kho": "kotanizijski", + "avk": "Kotava", + "khq": "koyra chiini", + "kpe": "kpele", + "cr": "kri", + "crh": "krimeanski turski", + "kri": "Krio", + "mus": "kri\u0161ki", + "kj": "kuanjama", + "kum": "kumik", + "ku": "kurdski", + "kru": "kurukh", + "kut": "kutenai", + "qu": "kven\u010da", + "nmg": "kwasio", + "lad": "ladino", + "lkt": "lakota", + "lam": "lamba", + "lah": "landa", + "lag": "langi", + "lo": "lao\u0161ki", + "ltg": "Latgalian", + "es_419": "latinoameri\u010dki \u0161panski", + "la": "latinski", + "lzz": "Laz", + "lv": "letonski", + "lez": "lezgian", + "lij": "Ligurian", + "li": "limburgi\u0161", + "ln": "lingala", + "lfn": "Lingua Franca Nova", + "lzh": "Literary Chinese", + "lt": "litvanski", + "liv": "Livonian", + "jbo": "lojban", + "lmo": "Lombard", + "sli": "Lower Silesian", + "loz": "lozi", + "lu": "luba-katanga", + "lua": "luba-lulua", + "lui": "luiseno", + "lb": "luksembur\u0161ki", + "smj": "lule sami", + "lun": "lunda", + "luo": "luo", + "lus": "lu\u0161ai", + "luy": "luyia", + "mde": "Maba", + "jmc": "machame", + "mad": "madure\u0161ki", + "hu": "ma\u0111arski", + "maf": "Mafa", + "mag": "magahi", + "moh": "mahavski", + "vmf": "Main-Franconian", + "mai": "maitili", + "mak": "makasar", + "mk": "makedonski", + "mgh": "makhuwa-meetto", + "kde": "makonde", + "mg": "malagazijski", + "ml": "malajalam", + "ms": "malajski", + "mt": "malte\u0161ki", + "mnc": "man\u010du", + "mdr": "mandar", + "man": "mandingo", + "mni": "manipuri", + "gv": "manks", + "mi": "maorski", + "mr": "marati", + "chm": "mari", + "tzm": "marokanski tamazigt", + "mh": "mar\u0161alski", + "mwr": "marvari", + "mas": "masai", + "mfe": "mauricijski kreolski", + "mzn": "Mazanderani", + "byv": "Medumba", + "es_MX": "meksi\u010dki \u0161panski", + "men": "mende", + "mwv": "Mentawai", + "mer": "meru", + "mgo": "meta\u2019", + "mic": "mikmak", + "nan": "Min Nan Chinese", + "min": "minangkabau", + "xmf": "Mingrelian", + "mwl": "mirande\u0161ki", + "ar_001": "moderni standardni arapski", + "mdf": "mok\u0161a", + "ro_MD": "moldavski", + "lol": "mongo", + "mn": "mongolski", + "ary": "Moroccan Arabic", + "mos": "mosi", + "mua": "mundang", + "ttt": "Muslim Tat", + "mye": "Myene", + "naq": "nama", + "na": "nauru", + "nv": "navaho", + "ng": "ndonga", + "nap": "neapolitanski", + "ne": "nepalski", + "und": "nepoznati ili neva\u017ee\u0107i jezik", + "new": "nevari", + "sba": "Ngambay", + "nnh": "Ngiemboon", + "jgo": "ngomba", + "yrl": "Nheengatu", + "nia": "nias", + "nds": "niski nema\u010dki", + "niu": "niuean", + "nqo": "nko", + "nog": "nogai", + "no": "norve\u0161ki", + "nb": "norve\u0161ki bokmal", + "nn": "norve\u0161ki njorsk", + "nov": "Novial", + "nus": "nuer", + "nzi": "nzima", + "nym": "njamvezi", + "nyn": "njankole", + "ny": "njanja", + "tog": "njasa tonga", + "de": "njema\u010dki", + "nyo": "njoro", + "oj": "ojibva", + "or": "orijski", + "om": "oromo", + "osa": "osage", + "os": "osetski", + "ota": "otomanski turski", + "pal": "pahlavi", + "pfl": "Palatine German", + "pau": "palauanski", + "pi": "pali", + "pam": "pampanga", + "pa": "pand\u017eabski", + "pag": "pangasinski", + "pap": "papiamento", + "ps": "pa\u0161tunski", + "pdc": "Pennsylvania German", + "fa": "perzijski", + "pcd": "Picard", + "pms": "Piedmontese", + "pdt": "Plautdietsch", + "pl": "poljski", + "pon": "ponpejski", + "pnt": "Pontic", + "pt": "portugalski", + "oc": "provansalski", + "prg": "Prussian", + "raj": "ra\u0111astani", + "rap": "rapanui", + "rar": "rarotongan", + "rm": "reto-romanski", + "rif": "Riffian", + "rgn": "Romagnol", + "rom": "romani", + "rof": "rombo", + "rtm": "Rotuman", + "rug": "Roviana", + "rwk": "rua", + "ro": "rumunski", + "root": "run", + "rn": "rundi", + "ru": "ruski", + "rue": "Rusyn", + "ssy": "Saho", + "sam": "samaritanski aramejski", + "saq": "samburu", + "sm": "samoanski", + "sgs": "Samogitian", + "sad": "sandave", + "sg": "sango", + "sbp": "sangu", + "sa": "sanskrit", + "sat": "santali", + "sc": "sardinijski", + "sas": "sasak", + "sdc": "Sassarese Sardinian", + "stq": "Saterland Frisian", + "saz": "Saurashtra", + "sly": "Selayar", + "sel": "selkap", + "seh": "sena", + "see": "Seneca", + "srr": "serer", + "sei": "Seri", + "st": "sesoto", + "nso": "severni soto", + "frr": "severno-frizijski", + "ksb": "shambala", + "scn": "sicilijanski", + "ii": "si\u010duan ji", + "sid": "sidamo", + "bla": "siksika", + "szl": "Silesian", + "sd": "sindi", + "si": "singaleski", + "syr": "sirijski", + "nd": "sjeverni ndebele", + "se": "sjeverni sami", + "sms": "skoltski jezik", + "den": "slavski", + "sk": "slova\u010dki", + "sl": "slovena\u010dki", + "sog": "sod\u017eijenski", + "xog": "soga", + "so": "somalski", + "snk": "soninke", + "ckb": "soranski kurdski", + "azb": "South Azerbaijani", + "srn": "srananski tongo", + "enm": "srednji engleski", + "frm": "srednji francuski", + "dum": "srednji holandski", + "mga": "srednji irski", + "gmh": "srednji visoki nema\u010dki", + "sr": "srpski", + "sh": "srpskohrvatski", + "zgh": "standardni marokanski tamazigt", + "non": "stari norski", + "egy": "staroegipatski", + "ang": "staroengleski", + "fro": "starofrancuski", + "grc": "starogr\u010dki", + "sga": "staroirski", + "goh": "staronema\u010dki", + "peo": "staropersijski", + "pro": "staroprovansalski", + "cu": "staroslovenski", + "su": "sudanski", + "suk": "sukuma", + "sux": "sumerski", + "sus": "susu", + "sw": "svahili", + "ss": "svati", + "shn": "\u0161an", + "sco": "\u0161kotski", + "gd": "\u0161kotski galski", + "sn": "\u0161ona", + "es": "\u0161panski", + "fr_CH": "\u0161vajcarski francuski", + "gsw": "\u0161vajcarski njema\u010dki", + "sv": "\u0161vedski", + "tg": "tad\u017ei\u010dki", + "tl": "tagalski", + "shi": "tahelhit", + "ty": "tahi\u0107anski", + "dav": "taita", + "th": "tajlandski", + "tly": "Talysh", + "tmh": "tama\u0161ek", + "ta": "tamilski", + "trv": "Taroko", + "twq": "tasavak", + "tt": "tatarski", + "te": "telugu", + "ter": "tereno", + "teo": "teso", + "tet": "tetum", + "bo": "tibetanski", + "tig": "tigre", + "ti": "tigrinja", + "tem": "timne", + "tiv": "tiv", + "kcg": "tjap", + "tli": "tlingit", + "tpi": "tok pisin", + "tkl": "tokelau", + "to": "tonga", + "fit": "Tornedalen Finnish", + "tkr": "Tsakhur", + "tsd": "Tsakonian", + "tsi": "tsim\u0161ian", + "ts": "tsonga", + "tn": "tsvana", + "tcy": "Tulu", + "tum": "tumbuka", + "aeb": "Tunisian Arabic", + "tk": "turkmenski", + "tru": "Turoyo", + "tr": "turski", + "tvl": "tuvalu", + "tyv": "tuvinijski", + "tw": "tvi", + "udm": "udmurt", + "uga": "ugaritski", + "ug": "ujgurski", + "uk": "ukrajinski", + "umb": "umbundu", + "ur": "urdu", + "uz": "uzbe\u010dki", + "vai": "vai", + "wal": "valamo", + "wa": "valun", + "war": "varej", + "was": "va\u0161o", + "ve": "venda", + "vec": "Venetian", + "vep": "Veps", + "vi": "vijetnamski", + "mul": "vi\u0161e jezika", + "vo": "volap\u00fck", + "wo": "volof", + "vro": "V\u00f5ro", + "vot": "votski", + "vun": "vunjo", + "wae": "Walser", + "wbp": "Warlpiri", + "guc": "Wayuu", + "vls": "West Flemish", + "mrj": "Western Mari", + "wuu": "Wu Chinese", + "hsn": "Xiang Chinese", + "yav": "Yangben", + "ybb": "Yemba", + "zap": "zapote\u010dki", + "dje": "zarma", + "zza": "zaza", + "zea": "Zeelandic", + "kea": "zelenortski", + "zen": "zenaga", + "gbz": "Zoroastrian Dari", + "za": "zuang", + "zu": "zulu", + "zun": "zuni", + "kaj": "\u017eju" +} diff --git a/public/intl/messages/bs-BA.json b/public/intl/messages/bs-BA.json new file mode 100644 index 0000000000..eb368d9ce2 --- /dev/null +++ b/public/intl/messages/bs-BA.json @@ -0,0 +1,1676 @@ +{ + "label.access-code": [ + { + "type": 0, + "value": "Pristupni kod" + } + ], + "label.actions": [ + { + "type": 0, + "value": "Akcije" + } + ], + "label.activity-log": [ + { + "type": 0, + "value": "Log aktivnosti" + } + ], + "label.add": [ + { + "type": 0, + "value": "Dodaj" + } + ], + "label.add-description": [ + { + "type": 0, + "value": "Dodaj opis" + } + ], + "label.add-member": [ + { + "type": 0, + "value": "Dodaj člana" + } + ], + "label.add-step": [ + { + "type": 0, + "value": "Dodaj korak" + } + ], + "label.add-website": [ + { + "type": 0, + "value": "Dodaj web stranicu" + } + ], + "label.admin": [ + { + "type": 0, + "value": "Administrator" + } + ], + "label.after": [ + { + "type": 0, + "value": "Nakon" + } + ], + "label.all": [ + { + "type": 0, + "value": "Sve" + } + ], + "label.all-time": [ + { + "type": 0, + "value": "Cijelo vrijeme" + } + ], + "label.analytics": [ + { + "type": 0, + "value": "Analitike" + } + ], + "label.average": [ + { + "type": 0, + "value": "Prosjek" + } + ], + "label.average-visit-time": [ + { + "type": 0, + "value": "Prosječno vrijeme posjete" + } + ], + "label.back": [ + { + "type": 0, + "value": "Nazad" + } + ], + "label.before": [ + { + "type": 0, + "value": "Prije" + } + ], + "label.bounce-rate": [ + { + "type": 0, + "value": "Bounce rate" + } + ], + "label.breakdown": [ + { + "type": 0, + "value": "Pregled po kategorijama" + } + ], + "label.browser": [ + { + "type": 0, + "value": "Browser" + } + ], + "label.browsers": [ + { + "type": 0, + "value": "Browseri" + } + ], + "label.cancel": [ + { + "type": 0, + "value": "Otkaži" + } + ], + "label.change-password": [ + { + "type": 0, + "value": "Promijeni šifru" + } + ], + "label.cities": [ + { + "type": 0, + "value": "Gradovi" + } + ], + "label.city": [ + { + "type": 0, + "value": "Grad" + } + ], + "label.clear-all": [ + { + "type": 0, + "value": "Očisti sve" + } + ], + "label.confirm": [ + { + "type": 0, + "value": "Potvrdi" + } + ], + "label.confirm-password": [ + { + "type": 0, + "value": "Potvrdi šifru" + } + ], + "label.contains": [ + { + "type": 0, + "value": "Sadrži" + } + ], + "label.continue": [ + { + "type": 0, + "value": "Nastavi" + } + ], + "label.countries": [ + { + "type": 0, + "value": "Zemlje" + } + ], + "label.country": [ + { + "type": 0, + "value": "Zemlja" + } + ], + "label.create": [ + { + "type": 0, + "value": "Kreiraj" + } + ], + "label.create-report": [ + { + "type": 0, + "value": "Kreiraj izvještaj" + } + ], + "label.create-team": [ + { + "type": 0, + "value": "Kreiraj tim" + } + ], + "label.create-user": [ + { + "type": 0, + "value": "Kreiraj korisnika" + } + ], + "label.created": [ + { + "type": 0, + "value": "Kreiraj" + } + ], + "label.created-by": [ + { + "type": 0, + "value": "Kreirao" + } + ], + "label.current-password": [ + { + "type": 0, + "value": "Trenutna šifra" + } + ], + "label.custom-range": [ + { + "type": 0, + "value": "Proizvoljni raspon" + } + ], + "label.dashboard": [ + { + "type": 0, + "value": "Dashboard" + } + ], + "label.data": [ + { + "type": 0, + "value": "Podaci" + } + ], + "label.date": [ + { + "type": 0, + "value": "Datum" + } + ], + "label.date-range": [ + { + "type": 0, + "value": "Datumski raspon" + } + ], + "label.day": [ + { + "type": 0, + "value": "Dan" + } + ], + "label.default-date-range": [ + { + "type": 0, + "value": "Defaultni datumski raspon" + } + ], + "label.delete": [ + { + "type": 0, + "value": "Izbriši" + } + ], + "label.delete-report": [ + { + "type": 0, + "value": "Izbriši report" + } + ], + "label.delete-team": [ + { + "type": 0, + "value": "Izbriši tim" + } + ], + "label.delete-user": [ + { + "type": 0, + "value": "Izbriši korisnika" + } + ], + "label.delete-website": [ + { + "type": 0, + "value": "Izbriši web stranicu" + } + ], + "label.description": [ + { + "type": 0, + "value": "Opis" + } + ], + "label.desktop": [ + { + "type": 0, + "value": "Desktop" + } + ], + "label.details": [ + { + "type": 0, + "value": "Detalji" + } + ], + "label.device": [ + { + "type": 0, + "value": "Uređaj" + } + ], + "label.devices": [ + { + "type": 0, + "value": "Uređaji" + } + ], + "label.dismiss": [ + { + "type": 0, + "value": "Odbaci" + } + ], + "label.does-not-contain": [ + { + "type": 0, + "value": "Ne sadrži" + } + ], + "label.domain": [ + { + "type": 0, + "value": "Domena" + } + ], + "label.dropoff": [ + { + "type": 0, + "value": "Dropoff" + } + ], + "label.edit": [ + { + "type": 0, + "value": "Uredi" + } + ], + "label.edit-dashboard": [ + { + "type": 0, + "value": "Uredi dashboard" + } + ], + "label.edit-member": [ + { + "type": 0, + "value": "Uredi člana" + } + ], + "label.enable-share-url": [ + { + "type": 0, + "value": "Omogući URL za dijeljenje" + } + ], + "label.event": [ + { + "type": 0, + "value": "Događaj" + } + ], + "label.event-data": [ + { + "type": 0, + "value": "Podaci o događaju" + } + ], + "label.events": [ + { + "type": 0, + "value": "Događaji" + } + ], + "label.false": [ + { + "type": 0, + "value": "Ne" + } + ], + "label.field": [ + { + "type": 0, + "value": "Polje" + } + ], + "label.fields": [ + { + "type": 0, + "value": "Polja" + } + ], + "label.filter": [ + { + "type": 0, + "value": "Filter" + } + ], + "label.filter-combined": [ + { + "type": 0, + "value": "Kombinovano" + } + ], + "label.filter-raw": [ + { + "type": 0, + "value": "Sirovo" + } + ], + "label.filters": [ + { + "type": 0, + "value": "Filtri" + } + ], + "label.funnel": [ + { + "type": 0, + "value": "Lijevak" + } + ], + "label.funnel-description": [ + { + "type": 0, + "value": "Razumite koverziju i drop-off učestalost korisnika." + } + ], + "label.greater-than": [ + { + "type": 0, + "value": "Veće od" + } + ], + "label.greater-than-equals": [ + { + "type": 0, + "value": "Veće od ili jednako" + } + ], + "label.insights": [ + { + "type": 0, + "value": "Uvidi" + } + ], + "label.insights-description": [ + { + "type": 0, + "value": "Zaronite dublje u vaše podatke korištenjem segmenata i filtera" + } + ], + "label.is": [ + { + "type": 0, + "value": "Jeste" + } + ], + "label.is-not": [ + { + "type": 0, + "value": "Nije" + } + ], + "label.is-not-set": [ + { + "type": 0, + "value": "Nije setano" + } + ], + "label.is-set": [ + { + "type": 0, + "value": "Jeste setano" + } + ], + "label.join": [ + { + "type": 0, + "value": "Join" + } + ], + "label.join-team": [ + { + "type": 0, + "value": "Join team" + } + ], + "label.language": [ + { + "type": 0, + "value": "Jezik" + } + ], + "label.languages": [ + { + "type": 0, + "value": "Jezici" + } + ], + "label.laptop": [ + { + "type": 0, + "value": "Laptop" + } + ], + "label.last-days": [ + { + "type": 0, + "value": "Zadnjih " + }, + { + "type": 1, + "value": "x" + }, + { + "type": 0, + "value": " dana" + } + ], + "label.last-hours": [ + { + "type": 0, + "value": "Zadnjih " + }, + { + "type": 1, + "value": "x" + }, + { + "type": 0, + "value": " sati" + } + ], + "label.last-months": [ + { + "type": 0, + "value": "Zadnjih " + }, + { + "type": 1, + "value": "x" + }, + { + "type": 0, + "value": " mjeseci" + } + ], + "label.leave": [ + { + "type": 0, + "value": "Napusti" + } + ], + "label.leave-team": [ + { + "type": 0, + "value": "Napusti tim" + } + ], + "label.less-than": [ + { + "type": 0, + "value": "Manje od" + } + ], + "label.less-than-equals": [ + { + "type": 0, + "value": "Manje od ili jednako" + } + ], + "label.login": [ + { + "type": 0, + "value": "Login" + } + ], + "label.logout": [ + { + "type": 0, + "value": "Logout" + } + ], + "label.manage": [ + { + "type": 0, + "value": "Manage" + } + ], + "label.max": [ + { + "type": 0, + "value": "Max" + } + ], + "label.member": [ + { + "type": 0, + "value": "Član" + } + ], + "label.members": [ + { + "type": 0, + "value": "Članovi" + } + ], + "label.min": [ + { + "type": 0, + "value": "Min" + } + ], + "label.mobile": [ + { + "type": 0, + "value": "Mobile" + } + ], + "label.more": [ + { + "type": 0, + "value": "Više" + } + ], + "label.my-account": [ + { + "type": 0, + "value": "Moj račun" + } + ], + "label.my-websites": [ + { + "type": 0, + "value": "Moje web stranice" + } + ], + "label.name": [ + { + "type": 0, + "value": "Ime" + } + ], + "label.new-password": [ + { + "type": 0, + "value": "Nova šifra" + } + ], + "label.none": [ + { + "type": 0, + "value": "None" + } + ], + "label.number-of-records": [ + { + "type": 1, + "value": "x" + }, + { + "type": 0, + "value": " " + }, + { + "offset": 0, + "options": { + "one": { + "value": [ + { + "type": 0, + "value": "record" + } + ] + }, + "other": { + "value": [ + { + "type": 0, + "value": "records" + } + ] + } + }, + "pluralType": "cardinal", + "type": 6, + "value": "x" + } + ], + "label.ok": [ + { + "type": 0, + "value": "OK" + } + ], + "label.os": [ + { + "type": 0, + "value": "OS" + } + ], + "label.overview": [ + { + "type": 0, + "value": "Pregled" + } + ], + "label.owner": [ + { + "type": 0, + "value": "Vlasnik" + } + ], + "label.page-of": [ + { + "type": 0, + "value": "Strana " + }, + { + "type": 1, + "value": "current" + }, + { + "type": 0, + "value": " od " + }, + { + "type": 1, + "value": "total" + } + ], + "label.page-views": [ + { + "type": 0, + "value": "Pregleda stranica" + } + ], + "label.pageTitle": [ + { + "type": 0, + "value": "Naslov stranice" + } + ], + "label.pages": [ + { + "type": 0, + "value": "Stranice" + } + ], + "label.password": [ + { + "type": 0, + "value": "Šifra" + } + ], + "label.powered-by": [ + { + "type": 0, + "value": "Omogućeno s " + }, + { + "type": 1, + "value": "name" + } + ], + "label.profile": [ + { + "type": 0, + "value": "Profil" + } + ], + "label.queries": [ + { + "type": 0, + "value": "Queryji" + } + ], + "label.query": [ + { + "type": 0, + "value": "Query" + } + ], + "label.query-parameters": [ + { + "type": 0, + "value": "Query parametri" + } + ], + "label.realtime": [ + { + "type": 0, + "value": "Realno vrijeme" + } + ], + "label.referrer": [ + { + "type": 0, + "value": "Referrer" + } + ], + "label.referrers": [ + { + "type": 0, + "value": "Referrers" + } + ], + "label.refresh": [ + { + "type": 0, + "value": "Refresh" + } + ], + "label.regenerate": [ + { + "type": 0, + "value": "Regeneriši" + } + ], + "label.region": [ + { + "type": 0, + "value": "Region" + } + ], + "label.regions": [ + { + "type": 0, + "value": "Regioni" + } + ], + "label.remove": [ + { + "type": 0, + "value": "Ukloni" + } + ], + "label.remove-member": [ + { + "type": 0, + "value": "Ukloni člana" + } + ], + "label.reports": [ + { + "type": 0, + "value": "Izvještaji" + } + ], + "label.required": [ + { + "type": 0, + "value": "Required" + } + ], + "label.reset": [ + { + "type": 0, + "value": "Resetuj" + } + ], + "label.reset-website": [ + { + "type": 0, + "value": "Resetuj web stranicu" + } + ], + "label.retention": [ + { + "type": 0, + "value": "Retention" + } + ], + "label.retention-description": [ + { + "type": 0, + "value": "Izmjeri 'ljepljivost' svoje web stranice praćenjem koliko često set korisnici vraćaju." + } + ], + "label.role": [ + { + "type": 0, + "value": "Rola" + } + ], + "label.run-query": [ + { + "type": 0, + "value": "Pokreni query" + } + ], + "label.save": [ + { + "type": 0, + "value": "Sačuvaj" + } + ], + "label.screens": [ + { + "type": 0, + "value": "Ekrani" + } + ], + "label.search": [ + { + "type": 0, + "value": "Traži" + } + ], + "label.select": [ + { + "type": 0, + "value": "Odaberi" + } + ], + "label.select-date": [ + { + "type": 0, + "value": "Odaberi datum" + } + ], + "label.select-role": [ + { + "type": 0, + "value": "Odaberi rolu" + } + ], + "label.select-website": [ + { + "type": 0, + "value": "Odaberi web stranicu" + } + ], + "label.sessions": [ + { + "type": 0, + "value": "Sesije" + } + ], + "label.settings": [ + { + "type": 0, + "value": "Postavke" + } + ], + "label.share-url": [ + { + "type": 0, + "value": "Share URL" + } + ], + "label.single-day": [ + { + "type": 0, + "value": "Jedan dan" + } + ], + "label.steps": [ + { + "type": 0, + "value": "Koraci" + } + ], + "label.sum": [ + { + "type": 0, + "value": "Suma" + } + ], + "label.tablet": [ + { + "type": 0, + "value": "Tablet" + } + ], + "label.team": [ + { + "type": 0, + "value": "Tim" + } + ], + "label.team-id": [ + { + "type": 0, + "value": "Tim ID" + } + ], + "label.team-member": [ + { + "type": 0, + "value": "Član tima" + } + ], + "label.team-name": [ + { + "type": 0, + "value": "Naziv tima" + } + ], + "label.team-owner": [ + { + "type": 0, + "value": "Vlasnik tima" + } + ], + "label.team-view-only": [ + { + "type": 0, + "value": "Samo tim može vidjeti" + } + ], + "label.team-websites": [ + { + "type": 0, + "value": "Timske web stranice" + } + ], + "label.teams": [ + { + "type": 0, + "value": "Timovi" + } + ], + "label.theme": [ + { + "type": 0, + "value": "Teme" + } + ], + "label.this-month": [ + { + "type": 0, + "value": "Ovaj mjesec" + } + ], + "label.this-week": [ + { + "type": 0, + "value": "Ova sedmica" + } + ], + "label.this-year": [ + { + "type": 0, + "value": "Ova godina" + } + ], + "label.timezone": [ + { + "type": 0, + "value": "Vremenska zona" + } + ], + "label.title": [ + { + "type": 0, + "value": "Naslov" + } + ], + "label.today": [ + { + "type": 0, + "value": "Danas" + } + ], + "label.toggle-charts": [ + { + "type": 0, + "value": "Uklj/isklj grafikone" + } + ], + "label.total": [ + { + "type": 0, + "value": "Ukupno" + } + ], + "label.total-records": [ + { + "type": 0, + "value": "Ukupno redova" + } + ], + "label.tracking-code": [ + { + "type": 0, + "value": "Kod za praćenje" + } + ], + "label.transfer": [ + { + "type": 0, + "value": "Transfer" + } + ], + "label.transfer-website": [ + { + "type": 0, + "value": "Transfer web stranice" + } + ], + "label.true": [ + { + "type": 0, + "value": "Da" + } + ], + "label.type": [ + { + "type": 0, + "value": "Tip" + } + ], + "label.unique": [ + { + "type": 0, + "value": "Jedinstveno" + } + ], + "label.unique-visitors": [ + { + "type": 0, + "value": "Jedinstvenih posjetitelja" + } + ], + "label.unknown": [ + { + "type": 0, + "value": "Nepoznato" + } + ], + "label.untitled": [ + { + "type": 0, + "value": "Bezimeno" + } + ], + "label.update": [ + { + "type": 0, + "value": "Update" + } + ], + "label.url": [ + { + "type": 0, + "value": "URL" + } + ], + "label.urls": [ + { + "type": 0, + "value": "URLs" + } + ], + "label.user": [ + { + "type": 0, + "value": "Korisnik" + } + ], + "label.username": [ + { + "type": 0, + "value": "Korisničko ime" + } + ], + "label.users": [ + { + "type": 0, + "value": "Korisnici" + } + ], + "label.utm": [ + { + "type": 0, + "value": "UTM" + } + ], + "label.utm-description": [ + { + "type": 0, + "value": "Pratite vaše kampanje kroz UTM parametre." + } + ], + "label.value": [ + { + "type": 0, + "value": "Vrijednost" + } + ], + "label.view": [ + { + "type": 0, + "value": "Pregled" + } + ], + "label.view-details": [ + { + "type": 0, + "value": "Pogledaj detalje" + } + ], + "label.view-only": [ + { + "type": 0, + "value": "Samo gledanje" + } + ], + "label.views": [ + { + "type": 0, + "value": "Pregledi" + } + ], + "label.views-per-visit": [ + { + "type": 0, + "value": "Pregledi po posjeti" + } + ], + "label.visitors": [ + { + "type": 0, + "value": "Posjetitelji" + } + ], + "label.visits": [ + { + "type": 0, + "value": "Posjete" + } + ], + "label.website": [ + { + "type": 0, + "value": "Web stranica" + } + ], + "label.website-id": [ + { + "type": 0, + "value": "ID web stranice" + } + ], + "label.websites": [ + { + "type": 0, + "value": "Web stranice" + } + ], + "label.window": [ + { + "type": 0, + "value": "Prozor" + } + ], + "label.yesterday": [ + { + "type": 0, + "value": "Jučer" + } + ], + "message.action-confirmation": [ + { + "type": 0, + "value": "Unesite " + }, + { + "type": 1, + "value": "confirmation" + }, + { + "type": 0, + "value": " ispod da potvrdite." + } + ], + "message.active-users": [ + { + "type": 1, + "value": "x" + }, + { + "type": 0, + "value": " trenutno " + }, + { + "offset": 0, + "options": { + "one": { + "value": [ + { + "type": 0, + "value": "posjetitelj" + } + ] + }, + "other": { + "value": [ + { + "type": 0, + "value": "posjetitelja" + } + ] + } + }, + "pluralType": "cardinal", + "type": 6, + "value": "x" + } + ], + "message.confirm-delete": [ + { + "type": 0, + "value": "Jeste li sigurni da želite obrisati " + }, + { + "type": 1, + "value": "target" + }, + { + "type": 0, + "value": "?" + } + ], + "message.confirm-leave": [ + { + "type": 0, + "value": "Jeste li sigurni da želite napustiti " + }, + { + "type": 1, + "value": "target" + }, + { + "type": 0, + "value": "?" + } + ], + "message.confirm-remove": [ + { + "type": 0, + "value": "Jeste li sigurni da želite ukloniti " + }, + { + "type": 1, + "value": "target" + }, + { + "type": 0, + "value": "?" + } + ], + "message.confirm-reset": [ + { + "type": 0, + "value": "Jeste li sigurni da želite resetovati " + }, + { + "type": 1, + "value": "target" + }, + { + "type": 0, + "value": "?" + } + ], + "message.delete-team-warning": [ + { + "type": 0, + "value": "Brisanje tima će također obrisati sve web stranice tima." + } + ], + "message.delete-website-warning": [ + { + "type": 0, + "value": "Svi podaci web stranice biće obrisani." + } + ], + "message.error": [ + { + "type": 0, + "value": "Nešto je pošlo po zlu." + } + ], + "message.event-log": [ + { + "type": 1, + "value": "event" + }, + { + "type": 0, + "value": " na " + }, + { + "type": 1, + "value": "url" + } + ], + "message.go-to-settings": [ + { + "type": 0, + "value": "Idi na postavke" + } + ], + "message.incorrect-username-password": [ + { + "type": 0, + "value": "Pogrešno korisničko ime i/ili šifra." + } + ], + "message.invalid-domain": [ + { + "type": 0, + "value": "Nevalidna domena. Ne uključujte http/https." + } + ], + "message.min-password-length": [ + { + "type": 0, + "value": "Minimalna dužina od " + }, + { + "type": 1, + "value": "n" + }, + { + "type": 0, + "value": " karaktera" + } + ], + "message.new-version-available": [ + { + "type": 0, + "value": "Nova verzija Umami " + }, + { + "type": 1, + "value": "version" + }, + { + "type": 0, + "value": " je dostupna!" + } + ], + "message.no-data-available": [ + { + "type": 0, + "value": "Nema dostupnih podataka." + } + ], + "message.no-event-data": [ + { + "type": 0, + "value": "Nema dostupnih podataka o događajima." + } + ], + "message.no-match-password": [ + { + "type": 0, + "value": "Šifre se ne poklapaju." + } + ], + "message.no-results-found": [ + { + "type": 0, + "value": "Nema rezultata." + } + ], + "message.no-team-websites": [ + { + "type": 0, + "value": "Ovaj tim nema nikakvih web stranica." + } + ], + "message.no-teams": [ + { + "type": 0, + "value": "Niste kreirali nijedan tim." + } + ], + "message.no-users": [ + { + "type": 0, + "value": "Nema nikakvih korisnika." + } + ], + "message.no-websites-configured": [ + { + "type": 0, + "value": "Nemate iskonfigurisanu nijednu web stranicu." + } + ], + "message.page-not-found": [ + { + "type": 0, + "value": "Stranica nije pronađena" + } + ], + "message.reset-website": [ + { + "type": 0, + "value": "Da resetujete ovu web stranicu, upišite " + }, + { + "type": 1, + "value": "confirmation" + }, + { + "type": 0, + "value": " dole da potvrdite." + } + ], + "message.reset-website-warning": [ + { + "type": 0, + "value": "Sve statistike o ovoj web stranici će biti obrisane, ali vaše postavke neće biti dirane." + } + ], + "message.saved": [ + { + "type": 0, + "value": "Sačuvano." + } + ], + "message.share-url": [ + { + "type": 0, + "value": "Statistike vaše web stranice su javno dostupne na sljedećem URLu:" + } + ], + "message.team-already-member": [ + { + "type": 0, + "value": "Već ste član tima." + } + ], + "message.team-not-found": [ + { + "type": 0, + "value": "Tim nije pronađen." + } + ], + "message.team-websites-info": [ + { + "type": 0, + "value": "Web stranice može vidjeti bilo ko iz tima." + } + ], + "message.tracking-code": [ + { + "type": 0, + "value": "Da pratite statistike ove web stranice, stavite sljedeći kod u " + }, + { + "children": [ + { + "type": 0, + "value": "..." + } + ], + "type": 8, + "value": "head" + }, + { + "type": 0, + "value": " sekciju vašeg HTMLa." + } + ], + "message.transfer-team-website-to-user": [ + { + "type": 0, + "value": "Prebacite ovu web stranicu na vaš račun?" + } + ], + "message.transfer-user-website-to-team": [ + { + "type": 0, + "value": "Odaberite tim u koji želite prebaciti ovu web stranicu." + } + ], + "message.transfer-website": [ + { + "type": 0, + "value": "Prebacite vlasništvo web stranice na vaš račun ili drugi tim." + } + ], + "message.triggered-event": [ + { + "type": 0, + "value": "Trigerovani događaj" + } + ], + "message.user-deleted": [ + { + "type": 0, + "value": "Korisnik obrisan." + } + ], + "message.viewed-page": [ + { + "type": 0, + "value": "Pogledana stranica" + } + ], + "message.visitor-log": [ + { + "type": 0, + "value": "Posjetitelj iz " + }, + { + "type": 1, + "value": "country" + }, + { + "type": 0, + "value": " koristi " + }, + { + "type": 1, + "value": "browser" + }, + { + "type": 0, + "value": " na " + }, + { + "type": 1, + "value": "os" + }, + { + "type": 0, + "value": " " + }, + { + "type": 1, + "value": "device" + } + ], + "message.visitors-dropped-off": [ + { + "type": 0, + "value": "Posjetitelji koji su napustili stranicu" + } + ] +} diff --git a/src/lang/bs-BA.json b/src/lang/bs-BA.json new file mode 100644 index 0000000000..27318df0db --- /dev/null +++ b/src/lang/bs-BA.json @@ -0,0 +1,246 @@ +{ + "label.access-code": "Pristupni kod", + "label.actions": "Akcije", + "label.activity-log": "Log aktivnosti", + "label.add": "Dodaj", + "label.add-description": "Dodaj opis", + "label.add-member": "Dodaj člana", + "label.add-step": "Dodaj korak", + "label.add-website": "Dodaj web stranicu", + "label.admin": "Administrator", + "label.after": "Nakon", + "label.all": "Sve", + "label.all-time": "Cijelo vrijeme", + "label.analytics": "Analitike", + "label.average": "Prosjek", + "label.average-visit-time": "Prosječno vrijeme posjete", + "label.back": "Nazad", + "label.before": "Prije", + "label.bounce-rate": "Bounce rate", + "label.breakdown": "Pregled po kategorijama", + "label.browser": "Browser", + "label.browsers": "Browseri", + "label.cancel": "Otkaži", + "label.change-password": "Promijeni šifru", + "label.cities": "Gradovi", + "label.city": "Grad", + "label.clear-all": "Očisti sve", + "label.confirm": "Potvrdi", + "label.confirm-password": "Potvrdi šifru", + "label.contains": "Sadrži", + "label.continue": "Nastavi", + "label.countries": "Zemlje", + "label.country": "Zemlja", + "label.create": "Kreiraj", + "label.create-report": "Kreiraj izvještaj", + "label.create-team": "Kreiraj tim", + "label.create-user": "Kreiraj korisnika", + "label.created": "Kreiraj", + "label.created-by": "Kreirao", + "label.current-password": "Trenutna šifra", + "label.custom-range": "Proizvoljni raspon", + "label.dashboard": "Dashboard", + "label.data": "Podaci", + "label.date": "Datum", + "label.date-range": "Datumski raspon", + "label.day": "Dan", + "label.default-date-range": "Defaultni datumski raspon", + "label.delete": "Izbriši", + "label.delete-report": "Izbriši report", + "label.delete-team": "Izbriši tim", + "label.delete-user": "Izbriši korisnika", + "label.delete-website": "Izbriši web stranicu", + "label.description": "Opis", + "label.desktop": "Desktop", + "label.details": "Detalji", + "label.device": "Uređaj", + "label.devices": "Uređaji", + "label.dismiss": "Odbaci", + "label.does-not-contain": "Ne sadrži", + "label.domain": "Domena", + "label.dropoff": "Dropoff", + "label.edit": "Uredi", + "label.edit-dashboard": "Uredi dashboard", + "label.edit-member": "Uredi člana", + "label.enable-share-url": "Omogući URL za dijeljenje", + "label.event": "Događaj", + "label.event-data": "Podaci o događaju", + "label.events": "Događaji", + "label.false": "Ne", + "label.field": "Polje", + "label.fields": "Polja", + "label.filter": "Filter", + "label.filter-combined": "Kombinovano", + "label.filter-raw": "Sirovo", + "label.filters": "Filtri", + "label.funnel": "Lijevak", + "label.funnel-description": "Razumite koverziju i drop-off učestalost korisnika.", + "label.greater-than": "Veće od", + "label.greater-than-equals": "Veće od ili jednako", + "label.insights": "Uvidi", + "label.insights-description": "Zaronite dublje u vaše podatke korištenjem segmenata i filtera", + "label.is": "Jeste", + "label.is-not": "Nije", + "label.is-not-set": "Nije setano", + "label.is-set": "Jeste setano", + "label.join": "Učlani se", + "label.join-team": "Učlani se u tim", + "label.language": "Jezik", + "label.languages": "Jezici", + "label.laptop": "Laptop", + "label.last-days": "Zadnjih {x} dana", + "label.last-hours": "Zadnjih {x} sati", + "label.last-months": "Zadnjih {x} mjeseci", + "label.leave": "Napusti", + "label.leave-team": "Napusti tim", + "label.less-than": "Manje od", + "label.less-than-equals": "Manje od ili jednako", + "label.login": "Login", + "label.logout": "Logout", + "label.manage": "Manage", + "label.max": "Max", + "label.member": "Član", + "label.members": "Članovi", + "label.min": "Min", + "label.mobile": "Mobile", + "label.more": "Više", + "label.my-account": "Moj račun", + "label.my-websites": "Moje web stranice", + "label.name": "Ime", + "label.new-password": "Nova šifra", + "label.none": "None", + "label.number-of-records": "{x} {x, plural, one {record} other {records}}", + "label.ok": "OK", + "label.os": "OS", + "label.overview": "Pregled", + "label.owner": "Vlasnik", + "label.page-of": "Strana {current} od {total}", + "label.page-views": "Pregleda stranica", + "label.pageTitle": "Naslov stranice", + "label.pages": "Stranice", + "label.password": "Šifra", + "label.powered-by": "Omogućeno s {name}", + "label.profile": "Profil", + "label.queries": "Queryji", + "label.query": "Query", + "label.query-parameters": "Query parametri", + "label.realtime": "Realno vrijeme", + "label.referrer": "Referrer", + "label.referrers": "Referrers", + "label.refresh": "Refresh", + "label.regenerate": "Regeneriši", + "label.region": "Region", + "label.regions": "Regioni", + "label.remove": "Ukloni", + "label.remove-member": "Ukloni člana", + "label.reports": "Izvještaji", + "label.required": "Required", + "label.reset": "Resetuj", + "label.reset-website": "Resetuj web stranicu", + "label.retention": "Retention", + "label.retention-description": "Izmjeri 'ljepljivost' svoje web stranice praćenjem koliko često set korisnici vraćaju.", + "label.role": "Rola", + "label.run-query": "Pokreni query", + "label.save": "Sačuvaj", + "label.screens": "Ekrani", + "label.search": "Traži", + "label.select": "Odaberi", + "label.select-date": "Odaberi datum", + "label.select-role": "Odaberi rolu", + "label.select-website": "Odaberi web stranicu", + "label.sessions": "Sesije", + "label.settings": "Postavke", + "label.share-url": "Share URL", + "label.single-day": "Jedan dan", + "label.steps": "Koraci", + "label.sum": "Suma", + "label.tablet": "Tablet", + "label.team": "Tim", + "label.team-id": "Tim ID", + "label.team-member": "Član tima", + "label.team-name": "Naziv tima", + "label.team-owner": "Vlasnik tima", + "label.team-view-only": "Samo tim može vidjeti", + "label.team-websites": "Timske web stranice", + "label.teams": "Timovi", + "label.theme": "Teme", + "label.this-month": "Ovaj mjesec", + "label.this-week": "Ova sedmica", + "label.this-year": "Ova godina", + "label.timezone": "Vremenska zona", + "label.title": "Naslov", + "label.today": "Danas", + "label.toggle-charts": "Uklj/isklj grafikone", + "label.total": "Ukupno", + "label.total-records": "Ukupno redova", + "label.tracking-code": "Kod za praćenje", + "label.transfer": "Transfer", + "label.transfer-website": "Transfer web stranice", + "label.true": "Da", + "label.type": "Tip", + "label.unique": "Jedinstveno", + "label.unique-visitors": "Jedinstvenih posjetitelja", + "label.unknown": "Nepoznato", + "label.untitled": "Bezimeno", + "label.update": "Update", + "label.url": "URL", + "label.urls": "URLs", + "label.user": "Korisnik", + "label.username": "Korisničko ime", + "label.users": "Korisnici", + "label.utm": "UTM", + "label.utm-description": "Pratite vaše kampanje kroz UTM parametre.", + "label.value": "Vrijednost", + "label.view": "Pregled", + "label.view-details": "Pogledaj detalje", + "label.view-only": "Samo gledanje", + "label.views": "Pregledi", + "label.views-per-visit": "Pregledi po posjeti", + "label.visitors": "Posjetitelji", + "label.visits": "Posjete", + "label.website": "Web stranica", + "label.website-id": "ID web stranice", + "label.websites": "Web stranice", + "label.window": "Prozor", + "label.yesterday": "Jučer", + "message.action-confirmation": "Unesite {confirmation} ispod da potvrdite.", + "message.active-users": "{x} trenutno {x, plural, one {posjetitelj} other {posjetitelja}}", + "message.confirm-delete": "Jeste li sigurni da želite obrisati {target}?", + "message.confirm-leave": "Jeste li sigurni da želite napustiti {target}?", + "message.confirm-remove": "Jeste li sigurni da želite ukloniti {target}?", + "message.confirm-reset": "Jeste li sigurni da želite resetovati {target}?", + "message.delete-team-warning": "Brisanje tima će također obrisati sve web stranice tima.", + "message.delete-website-warning": "Svi podaci web stranice biće obrisani.", + "message.error": "Nešto je pošlo po zlu.", + "message.event-log": "{event} na {url}", + "message.go-to-settings": "Idi na postavke", + "message.incorrect-username-password": "Pogrešno korisničko ime i/ili šifra.", + "message.invalid-domain": "Nevalidna domena. Ne uključujte http/https.", + "message.min-password-length": "Minimalna dužina od {n} karaktera", + "message.new-version-available": "Nova verzija Umami {version} je dostupna!", + "message.no-data-available": "Nema dostupnih podataka.", + "message.no-event-data": "Nema dostupnih podataka o događajima.", + "message.no-match-password": "Šifre se ne poklapaju.", + "message.no-results-found": "Nema rezultata.", + "message.no-team-websites": "Ovaj tim nema nikakvih web stranica.", + "message.no-teams": "Niste kreirali nijedan tim.", + "message.no-users": "Nema nikakvih korisnika.", + "message.no-websites-configured": "Nemate iskonfigurisanu nijednu web stranicu.", + "message.page-not-found": "Stranica nije pronađena", + "message.reset-website": "Da resetujete ovu web stranicu, upišite {confirmation} dole da potvrdite.", + "message.reset-website-warning": "Sve statistike o ovoj web stranici će biti obrisane, ali vaše postavke neće biti dirane.", + "message.saved": "Sačuvano.", + "message.share-url": "Statistike vaše web stranice su javno dostupne na sljedećem URLu:", + "message.team-already-member": "Već ste član tima.", + "message.team-not-found": "Tim nije pronađen.", + "message.team-websites-info": "Web stranice može vidjeti bilo ko iz tima.", + "message.tracking-code": "Da pratite statistike ove web stranice, stavite sljedeći kod u ... sekciju vašeg HTMLa.", + "message.transfer-team-website-to-user": "Prebacite ovu web stranicu na vaš račun?", + "message.transfer-user-website-to-team": "Odaberite tim u koji želite prebaciti ovu web stranicu.", + "message.transfer-website": "Prebacite vlasništvo web stranice na vaš račun ili drugi tim.", + "message.triggered-event": "Trigerovani događaj", + "message.user-deleted": "Korisnik obrisan.", + "message.viewed-page": "Pogledana stranica", + "message.visitor-log": "Posjetitelj iz {country} koristi {browser} na {os} {device}", + "message.visitors-dropped-off": "Posjetitelji koji su napustili stranicu" +} diff --git a/src/lib/lang.ts b/src/lib/lang.ts index 2e86212ebd..2d9ac58c0e 100644 --- a/src/lib/lang.ts +++ b/src/lib/lang.ts @@ -2,6 +2,7 @@ import { arSA, be, bn, + bs, cs, sk, da, @@ -48,6 +49,7 @@ export const languages = { 'ar-SA': { label: 'العربية', dateLocale: arSA, dir: 'rtl' }, 'be-BY': { label: 'Беларуская', dateLocale: be }, 'bn-BD': { label: 'বাংলা', dateLocale: bn }, + 'bs-BA': { label: 'Bosanski', dateLocale: bs }, 'ca-ES': { label: 'Català', dateLocale: ca }, 'cs-CZ': { label: 'Čeština', dateLocale: cs }, 'da-DK': { label: 'Dansk', dateLocale: da }, From 436f55c1a5b3ad04d07626c3213b1313e49b16b7 Mon Sep 17 00:00:00 2001 From: mobeicanyue <81098819+mobeicanyue@users.noreply.github.com> Date: Tue, 23 Apr 2024 02:16:22 +0800 Subject: [PATCH 020/438] Update zh-CN.json --- src/lang/zh-CN.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/lang/zh-CN.json b/src/lang/zh-CN.json index 02fc18ae12..772562b483 100644 --- a/src/lang/zh-CN.json +++ b/src/lang/zh-CN.json @@ -5,7 +5,7 @@ "label.add": "添加", "label.add-description": "添加描述", "label.add-member": "添加成员", - "label.add-step": "Add step", + "label.add-step": "添加步骤", "label.add-website": "添加网站", "label.admin": "管理员", "label.after": "之后", @@ -90,7 +90,7 @@ "label.laptop": "笔记本", "label.last-days": "最近 {x} 天", "label.last-hours": "最近 {x} 小时", - "label.last-months": "Last {x} months", + "label.last-months": "最近 {x} 个月", "label.leave": "离开", "label.leave-team": "离开团队", "label.less-than": "少于", @@ -182,22 +182,22 @@ "label.unique-visitors": "独立访客", "label.unknown": "未知", "label.untitled": "未命名", - "label.update": "Update", + "label.update": "更新", "label.url": "网址", "label.urls": "网址", "label.user": "用户", "label.username": "用户名", "label.users": "用户", "label.utm": "UTM", - "label.utm-description": "Track your campaigns through UTM parameters.", + "label.utm-description": "通过UTM参数追踪您的广告活动。", "label.value": "值", "label.view": "查看", "label.view-details": "查看更多", "label.view-only": "仅浏览量", "label.views": "浏览量", - "label.views-per-visit": "Views per visit", + "label.views-per-visit": "每次访问的浏览量", "label.visitors": "访客", - "label.visits": "Visits", + "label.visits": "访问次数", "label.website": "网站", "label.website-id": "网站 ID", "label.websites": "网站", From 758b289a510082f49fbd72c5fe647055be17425d Mon Sep 17 00:00:00 2001 From: Francis Cao Date: Mon, 22 Apr 2024 12:58:58 -0700 Subject: [PATCH 021/438] fix bug for teams UTM report --- src/app/(main)/teams/[teamId]/reports/utm/page.tsx | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 src/app/(main)/teams/[teamId]/reports/utm/page.tsx diff --git a/src/app/(main)/teams/[teamId]/reports/utm/page.tsx b/src/app/(main)/teams/[teamId]/reports/utm/page.tsx new file mode 100644 index 0000000000..6070e7c52d --- /dev/null +++ b/src/app/(main)/teams/[teamId]/reports/utm/page.tsx @@ -0,0 +1,3 @@ +import Page from 'app/(main)/reports/utm/page'; + +export default Page; From 4b40b4e9cf3a846dc95baded5e82c7806f623f55 Mon Sep 17 00:00:00 2001 From: Francis Cao Date: Mon, 22 Apr 2024 13:17:24 -0700 Subject: [PATCH 022/438] stay in team context for website header links --- .../[teamId]/websites/[websiteId]/event-data/page.tsx | 3 +++ .../[teamId]/websites/[websiteId]/realtime/page.tsx | 3 +++ .../teams/[teamId]/websites/[websiteId]/reports/page.tsx | 3 +++ src/app/(main)/websites/[websiteId]/WebsiteHeader.tsx | 9 +++++++-- 4 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 src/app/(main)/teams/[teamId]/websites/[websiteId]/event-data/page.tsx create mode 100644 src/app/(main)/teams/[teamId]/websites/[websiteId]/realtime/page.tsx create mode 100644 src/app/(main)/teams/[teamId]/websites/[websiteId]/reports/page.tsx diff --git a/src/app/(main)/teams/[teamId]/websites/[websiteId]/event-data/page.tsx b/src/app/(main)/teams/[teamId]/websites/[websiteId]/event-data/page.tsx new file mode 100644 index 0000000000..87de2abe2c --- /dev/null +++ b/src/app/(main)/teams/[teamId]/websites/[websiteId]/event-data/page.tsx @@ -0,0 +1,3 @@ +import Page from 'app/(main)/websites/[websiteId]/event-data/page'; + +export default Page; diff --git a/src/app/(main)/teams/[teamId]/websites/[websiteId]/realtime/page.tsx b/src/app/(main)/teams/[teamId]/websites/[websiteId]/realtime/page.tsx new file mode 100644 index 0000000000..ffeaa9288f --- /dev/null +++ b/src/app/(main)/teams/[teamId]/websites/[websiteId]/realtime/page.tsx @@ -0,0 +1,3 @@ +import Page from 'app/(main)/websites/[websiteId]/realtime/page'; + +export default Page; diff --git a/src/app/(main)/teams/[teamId]/websites/[websiteId]/reports/page.tsx b/src/app/(main)/teams/[teamId]/websites/[websiteId]/reports/page.tsx new file mode 100644 index 0000000000..9a97b9c502 --- /dev/null +++ b/src/app/(main)/teams/[teamId]/websites/[websiteId]/reports/page.tsx @@ -0,0 +1,3 @@ +import Page from 'app/(main)/websites/[websiteId]/reports/page'; + +export default Page; diff --git a/src/app/(main)/websites/[websiteId]/WebsiteHeader.tsx b/src/app/(main)/websites/[websiteId]/WebsiteHeader.tsx index 3d02925060..dc0f4338eb 100644 --- a/src/app/(main)/websites/[websiteId]/WebsiteHeader.tsx +++ b/src/app/(main)/websites/[websiteId]/WebsiteHeader.tsx @@ -1,6 +1,6 @@ import classNames from 'classnames'; import Favicon from 'components/common/Favicon'; -import { useMessages, useWebsite } from 'components/hooks'; +import { useMessages, useTeamUrl, useWebsite } from 'components/hooks'; import Icons from 'components/icons'; import ActiveUsers from 'components/metrics/ActiveUsers'; import Link from 'next/link'; @@ -19,6 +19,7 @@ export function WebsiteHeader({ children?: ReactNode; }) { const { formatMessage, labels } = useMessages(); + const { renderTeamUrl } = useTeamUrl(); const pathname = usePathname(); const { data: website } = useWebsite(websiteId); const { name, domain } = website || {}; @@ -62,7 +63,11 @@ export function WebsiteHeader({ : pathname.match(/^\/websites\/[\w-]+$/); return ( - + + + + ); +} + +export default GoalsAddForm; diff --git a/src/app/(main)/reports/goals/GoalsChart.module.css b/src/app/(main)/reports/goals/GoalsChart.module.css new file mode 100644 index 0000000000..c9f158d2fe --- /dev/null +++ b/src/app/(main)/reports/goals/GoalsChart.module.css @@ -0,0 +1,87 @@ +.chart { + display: grid; +} + +.num { + display: flex; + align-items: center; + justify-content: center; + border-radius: 100%; + width: 50px; + height: 50px; + font-size: 16px; + font-weight: 700; + color: var(--base800); + background: var(--base100); + z-index: 1; +} + +.step { + display: grid; + grid-template-columns: max-content 1fr; + column-gap: 30px; + position: relative; + padding-bottom: 60px; +} + +.card { + display: grid; + gap: 20px; + margin-top: 14px; +} + +.header { + display: flex; + flex-direction: column; + gap: 20px; +} + +.bar { + display: flex; + align-items: center; + justify-content: flex-end; + background: var(--base900); + height: 30px; + border-radius: 5px; + overflow: hidden; + position: relative; +} + +.label { + color: var(--base600); + font-weight: 700; + text-transform: uppercase; +} + +.track { + background-color: var(--base100); + border-radius: 5px; +} + +.item { + font-size: 20px; + color: var(--base900); + font-weight: 700; +} + +.metric { + color: var(--base700); + display: flex; + justify-content: space-between; + gap: 10px; + margin: 10px 0; + text-transform: lowercase; +} + +.visitors { + color: var(--base900); + font-size: 24px; + font-weight: 900; + margin-right: 10px; +} + +.percent { + font-size: 20px; + font-weight: 700; + align-self: flex-end; +} diff --git a/src/app/(main)/reports/goals/GoalsChart.tsx b/src/app/(main)/reports/goals/GoalsChart.tsx new file mode 100644 index 0000000000..7cebbe217d --- /dev/null +++ b/src/app/(main)/reports/goals/GoalsChart.tsx @@ -0,0 +1,49 @@ +import { useContext } from 'react'; +import classNames from 'classnames'; +import { useMessages } from 'components/hooks'; +import { ReportContext } from '../[reportId]/Report'; +import { formatLongNumber } from 'lib/format'; +import styles from './GoalsChart.module.css'; + +export function GoalsChart({ className }: { className?: string; isLoading?: boolean }) { + const { report } = useContext(ReportContext); + const { formatMessage, labels } = useMessages(); + + const { data } = report || {}; + + return ( +
+ {data?.map(({ type, value, goal, result }, index: number) => { + return ( +
+
{index + 1}
+
+
+ + {formatMessage(type === 'url' ? labels.viewedPage : labels.triggeredEvent)} + + {value} +
+
+
+ {formatLongNumber(result)} + {formatMessage(labels.visitors)} +
+
+ {formatLongNumber(goal)} + {formatMessage(labels.goal)} +
+
{(result / goal).toFixed(2)}%
+
+
+
+
+
+
+ ); + })} +
+ ); +} + +export default GoalsChart; diff --git a/src/app/(main)/reports/goals/GoalsParameters.module.css b/src/app/(main)/reports/goals/GoalsParameters.module.css new file mode 100644 index 0000000000..421433f0eb --- /dev/null +++ b/src/app/(main)/reports/goals/GoalsParameters.module.css @@ -0,0 +1,26 @@ +.item { + display: flex; + align-items: center; + gap: 10px; + width: 100%; +} + +.type { + color: var(--base700); +} + +.value { + display: flex; + align-self: center; + gap: 20px; +} + +.goal { + color: var(--blue900); + background-color: var(--blue100); + font-size: 12px; + font-weight: 900; + padding: 2px 8px; + border-radius: 5px; + white-space: nowrap; +} diff --git a/src/app/(main)/reports/goals/GoalsParameters.tsx b/src/app/(main)/reports/goals/GoalsParameters.tsx new file mode 100644 index 0000000000..b4743d2d1e --- /dev/null +++ b/src/app/(main)/reports/goals/GoalsParameters.tsx @@ -0,0 +1,123 @@ +import { useMessages } from 'components/hooks'; +import Icons from 'components/icons'; +import { formatNumber } from 'lib/format'; +import { useContext } from 'react'; +import { + Button, + Form, + FormButtons, + FormRow, + Icon, + Popup, + PopupTrigger, + SubmitButton, +} from 'react-basics'; +import BaseParameters from '../[reportId]/BaseParameters'; +import ParameterList from '../[reportId]/ParameterList'; +import PopupForm from '../[reportId]/PopupForm'; +import { ReportContext } from '../[reportId]/Report'; +import GoalsAddForm from './GoalsAddForm'; +import styles from './GoalsParameters.module.css'; + +export function GoalsParameters() { + const { report, runReport, updateReport, isRunning } = useContext(ReportContext); + const { formatMessage, labels } = useMessages(); + + const { id, parameters } = report || {}; + const { websiteId, dateRange, goals } = parameters || {}; + const queryDisabled = !websiteId || !dateRange || goals?.length < 1; + + const handleSubmit = (data: any, e: any) => { + e.stopPropagation(); + e.preventDefault(); + + if (!queryDisabled) { + runReport(data); + } + }; + + const handleAddGoals = (goal: { type: string; value: string }) => { + updateReport({ parameters: { goals: parameters.goals.concat(goal) } }); + }; + + const handleUpdateGoals = ( + close: () => void, + index: number, + goal: { type: string; value: string }, + ) => { + const goals = [...parameters.goals]; + goals[index] = goal; + updateReport({ parameters: { goals } }); + close(); + }; + + const handleRemoveGoals = (index: number) => { + const goals = [...parameters.goals]; + delete goals[index]; + updateReport({ parameters: { goals: goals.filter(n => n) } }); + }; + + const AddGoalsButton = () => { + return ( + + + + + + + + + ); + }; + + return ( +
+ + }> + + {goals.map((goal: { type: string; value: string; goal: number }, index: number) => { + return ( + + handleRemoveGoals(index)} + > +
+
+ {goal.type === 'url' ? : } +
+
{goal.value}
+
{formatNumber(goal.goal)}
+
+
+ + {(close: () => void) => ( + + + + )} + +
+ ); + })} +
+
+ + + {formatMessage(labels.runQuery)} + + + + ); +} + +export default GoalsParameters; diff --git a/src/app/(main)/reports/goals/GoalsReport.module.css b/src/app/(main)/reports/goals/GoalsReport.module.css new file mode 100644 index 0000000000..aed66b74ef --- /dev/null +++ b/src/app/(main)/reports/goals/GoalsReport.module.css @@ -0,0 +1,10 @@ +.filters { + display: flex; + flex-direction: column; + justify-content: space-between; + border: 1px solid var(--base400); + border-radius: var(--border-radius); + line-height: 32px; + padding: 10px; + overflow: hidden; +} diff --git a/src/app/(main)/reports/goals/GoalsReport.tsx b/src/app/(main)/reports/goals/GoalsReport.tsx new file mode 100644 index 0000000000..d6171c3184 --- /dev/null +++ b/src/app/(main)/reports/goals/GoalsReport.tsx @@ -0,0 +1,27 @@ +import GoalsChart from './GoalsChart'; +import GoalsParameters from './GoalsParameters'; +import Report from '../[reportId]/Report'; +import ReportHeader from '../[reportId]/ReportHeader'; +import ReportMenu from '../[reportId]/ReportMenu'; +import ReportBody from '../[reportId]/ReportBody'; +import Goals from 'assets/funnel.svg'; +import { REPORT_TYPES } from 'lib/constants'; + +const defaultParameters = { + type: REPORT_TYPES.goals, + parameters: { goals: [] }, +}; + +export default function GoalsReport({ reportId }: { reportId?: string }) { + return ( + + } /> + + + + + + + + ); +} diff --git a/src/app/(main)/reports/goals/GoalsReportPage.tsx b/src/app/(main)/reports/goals/GoalsReportPage.tsx new file mode 100644 index 0000000000..cbab8bd0a7 --- /dev/null +++ b/src/app/(main)/reports/goals/GoalsReportPage.tsx @@ -0,0 +1,6 @@ +'use client'; +import GoalReport from './GoalsReport'; + +export default function GoalReportPage() { + return ; +} diff --git a/src/app/(main)/reports/goals/page.tsx b/src/app/(main)/reports/goals/page.tsx new file mode 100644 index 0000000000..112ae47cfc --- /dev/null +++ b/src/app/(main)/reports/goals/page.tsx @@ -0,0 +1,10 @@ +import GoalsReportPage from './GoalsReportPage'; +import { Metadata } from 'next'; + +export default function () { + return ; +} + +export const metadata: Metadata = { + title: 'Goals Report', +}; diff --git a/src/app/(main)/reports/utm/page.tsx b/src/app/(main)/reports/utm/page.tsx index 12b6cc5b34..7fa506608d 100644 --- a/src/app/(main)/reports/utm/page.tsx +++ b/src/app/(main)/reports/utm/page.tsx @@ -6,5 +6,5 @@ export default function () { } export const metadata: Metadata = { - title: 'UTM Report', + title: 'Goals Report', }; diff --git a/src/components/messages.ts b/src/components/messages.ts index 7a11aa8993..1413549fdd 100644 --- a/src/components/messages.ts +++ b/src/components/messages.ts @@ -235,6 +235,13 @@ export const labels = defineMessages({ }, steps: { id: 'label.steps', defaultMessage: 'Steps' }, addStep: { id: 'label.add-step', defaultMessage: 'Add step' }, + goal: { id: 'label.goal', defaultMessage: 'Goal' }, + goals: { id: 'label.goals', defaultMessage: 'Goals' }, + goalsDescription: { + id: 'label.goals-description', + defaultMessage: 'Track your goals for pageviews or events.', + }, + count: { id: 'label.count', defaultMessage: 'Count' }, }); export const messages = defineMessages({ diff --git a/src/lib/clickhouse.ts b/src/lib/clickhouse.ts index c1b9d25f27..3563484178 100644 --- a/src/lib/clickhouse.ts +++ b/src/lib/clickhouse.ts @@ -119,7 +119,10 @@ async function parseFilters(websiteId: string, filters: QueryFilters = {}, optio }; } -async function rawQuery(query: string, params: Record = {}): Promise { +async function rawQuery( + query: string, + params: Record = {}, +): Promise { if (process.env.LOG_QUERY) { log('QUERY:\n', query); log('PARAMETERS:\n', params); diff --git a/src/lib/constants.ts b/src/lib/constants.ts index 0b6f7d264f..697a48367f 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -111,6 +111,7 @@ export const DATA_TYPES = { export const REPORT_TYPES = { funnel: 'funnel', + goals: 'goals', insights: 'insights', retention: 'retention', utm: 'utm', diff --git a/src/pages/api/reports/[reportId].ts b/src/pages/api/reports/[reportId].ts index db7d0bcc7f..be2db82f57 100644 --- a/src/pages/api/reports/[reportId].ts +++ b/src/pages/api/reports/[reportId].ts @@ -27,7 +27,7 @@ const schema: YupRequest = { websiteId: yup.string().uuid().required(), type: yup .string() - .matches(/funnel|insights|retention|utm/i) + .matches(/funnel|insights|retention|utm|goals/i) .required(), name: yup.string().max(200).required(), description: yup.string().max(500), diff --git a/src/pages/api/reports/goals.ts b/src/pages/api/reports/goals.ts new file mode 100644 index 0000000000..bb7667751c --- /dev/null +++ b/src/pages/api/reports/goals.ts @@ -0,0 +1,70 @@ +import { canViewWebsite } from 'lib/auth'; +import { useAuth, useCors, useValidate } from 'lib/middleware'; +import { NextApiRequestQueryBody } from 'lib/types'; +import { TimezoneTest } from 'lib/yup'; +import { NextApiResponse } from 'next'; +import { methodNotAllowed, ok, unauthorized } from 'next-basics'; +import { getGoals } from 'queries/analytics/reports/getGoals'; +import * as yup from 'yup'; + +export interface RetentionRequestBody { + websiteId: string; + dateRange: { startDate: string; endDate: string; timezone: string }; + goals: { type: string; value: string; goal: number }[]; +} + +const schema = { + POST: yup.object().shape({ + websiteId: yup.string().uuid().required(), + dateRange: yup + .object() + .shape({ + startDate: yup.date().required(), + endDate: yup.date().required(), + timezone: TimezoneTest, + }) + .required(), + goals: yup + .array() + .of( + yup.object().shape({ + type: yup.string().required(), + value: yup.string().required(), + goal: yup.number().required(), + }), + ) + .min(1) + .required(), + }), +}; + +export default async ( + req: NextApiRequestQueryBody, + res: NextApiResponse, +) => { + await useCors(req, res); + await useAuth(req, res); + await useValidate(schema, req, res); + + if (req.method === 'POST') { + const { + websiteId, + dateRange: { startDate, endDate }, + goals, + } = req.body; + + if (!(await canViewWebsite(req.auth, websiteId))) { + return unauthorized(res); + } + + const data = await getGoals(websiteId, { + startDate: new Date(startDate), + endDate: new Date(endDate), + goals, + }); + + return ok(res, data); + } + + return methodNotAllowed(res); +}; diff --git a/src/pages/api/reports/index.ts b/src/pages/api/reports/index.ts index d231f0b7f5..186a18211f 100644 --- a/src/pages/api/reports/index.ts +++ b/src/pages/api/reports/index.ts @@ -27,7 +27,7 @@ const schema = { name: yup.string().max(200).required(), type: yup .string() - .matches(/funnel|insights|retention|utm/i) + .matches(/funnel|insights|retention|utm|goals/i) .required(), description: yup.string().max(500), parameters: yup diff --git a/src/queries/analytics/reports/getGoals.ts b/src/queries/analytics/reports/getGoals.ts new file mode 100644 index 0000000000..f275d60461 --- /dev/null +++ b/src/queries/analytics/reports/getGoals.ts @@ -0,0 +1,225 @@ +import clickhouse from 'lib/clickhouse'; +import { CLICKHOUSE, PRISMA, runQuery } from 'lib/db'; +import prisma from 'lib/prisma'; + +export async function getGoals( + ...args: [ + websiteId: string, + criteria: { + startDate: Date; + endDate: Date; + goals: { type: string; value: string; goal: number }[]; + }, + ] +) { + return runQuery({ + [PRISMA]: () => relationalQuery(...args), + [CLICKHOUSE]: () => clickhouseQuery(...args), + }); +} + +async function relationalQuery( + websiteId: string, + criteria: { + startDate: Date; + endDate: Date; + goals: { type: string; value: string; goal: number }[]; + }, +): Promise { + const { startDate, endDate, goals } = criteria; + const { rawQuery } = prisma; + + const hasUrl = goals.some(a => a.type === 'url'); + const hasEvent = goals.some(a => a.type === 'event'); + + function getParameters(goals: { type: string; value: string; goal: number }[]) { + const urls = goals + .filter(a => a.type === 'url') + .reduce((acc, cv, i) => { + acc[`${cv.type}${i}`] = cv.value; + return acc; + }, {}); + + const events = goals + .filter(a => a.type === 'event') + .reduce((acc, cv, i) => { + acc[`${cv.type}${i}`] = cv.value; + return acc; + }, {}); + + return { + urls: { ...urls, startDate, endDate, websiteId }, + events: { ...events, startDate, endDate, websiteId }, + }; + } + + function getColumns(goals: { type: string; value: string; goal: number }[]) { + const urls = goals + .filter(a => a.type === 'url') + .map((a, i) => `COUNT(CASE WHEN url_path = {{url${i}}} THEN 1 END) AS URL${i}`) + .join('\n'); + const events = goals + .filter(a => a.type === 'event') + .map((a, i) => `COUNT(CASE WHEN url_path = {{event${i}}} THEN 1 END) AS EVENT${i}`) + .join('\n'); + + return { urls, events }; + } + + function getWhere(goals: { type: string; value: string; goal: number }[]) { + const urls = goals + .filter(a => a.type === 'url') + .map((a, i) => `{{url${i}}}`) + .join(','); + const events = goals + .filter(a => a.type === 'event') + .map((a, i) => `{{event${i}}}`) + .join(','); + + return { urls: `and url_path in (${urls})`, events: `and event_name in (${events})` }; + } + + const parameters = getParameters(goals); + const columns = getColumns(goals); + const where = getWhere(goals); + + const urls = hasUrl + ? await rawQuery( + ` + select + ${columns.urls} + from website_event + where websiteId = {{websiteId::uuid}} + ${where.urls} + and created_at between {{startDate}} and {{endDate}} + `, + parameters.urls, + ) + : []; + + const events = hasEvent + ? await rawQuery( + ` + select + ${columns.events} + from website_event + where websiteId = {{websiteId::uuid}} + ${where.events} + and created_at between {{startDate}} and {{endDate}} + `, + parameters.events, + ) + : []; + + return [...urls, ...events]; +} + +async function clickhouseQuery( + websiteId: string, + criteria: { + startDate: Date; + endDate: Date; + goals: { type: string; value: string; goal: number }[]; + }, +): Promise<{ type: string; value: string; goal: number; result: number }[]> { + const { startDate, endDate, goals } = criteria; + const { rawQuery } = clickhouse; + + const urls = goals.filter(a => a.type === 'url'); + const events = goals.filter(a => a.type === 'event'); + + const hasUrl = urls.length > 0; + const hasEvent = events.length > 0; + + function getParameters( + urls: { type: string; value: string; goal: number }[], + events: { type: string; value: string; goal: number }[], + ) { + const urlParam = urls.reduce((acc, cv, i) => { + acc[`${cv.type}${i}`] = cv.value; + return acc; + }, {}); + + const eventParam = events.reduce((acc, cv, i) => { + acc[`${cv.type}${i}`] = cv.value; + return acc; + }, {}); + + return { + urls: { ...urlParam, startDate, endDate, websiteId }, + events: { ...eventParam, startDate, endDate, websiteId }, + }; + } + + function getColumns( + urls: { type: string; value: string; goal: number }[], + events: { type: string; value: string; goal: number }[], + ) { + const urlColumns = urls + .map((a, i) => `countIf(url_path = {url${i}:String}) AS URL${i},`) + .join('\n') + .slice(0, -1); + const eventColumns = events + .map((a, i) => `countIf(event_name = {event${i}:String}) AS EVENT${i}`) + .join('\n') + .slice(0, -1); + + return { url: urlColumns, events: eventColumns }; + } + + function getWhere( + urls: { type: string; value: string; goal: number }[], + events: { type: string; value: string; goal: number }[], + ) { + const urlWhere = urls.map((a, i) => `{url${i}:String}`).join(','); + const eventWhere = events.map((a, i) => `{event${i}:String}`).join(','); + + return { urls: `and url_path in (${urlWhere})`, events: `and event_name in (${eventWhere})` }; + } + + const parameters = getParameters(urls, events); + const columns = getColumns(urls, events); + const where = getWhere(urls, events); + + const urlResults = hasUrl + ? await rawQuery( + ` + select + ${columns.url} + from website_event + where website_id = {websiteId:UUID} + ${where.urls} + and created_at between {startDate:DateTime64} and {endDate:DateTime64} + `, + parameters.urls, + ).then(a => { + const results = a[0]; + + return Object.keys(results).map((key, i) => { + return { ...urls[i], result: results[key] }; + }); + }) + : []; + + const eventResults = hasEvent + ? await rawQuery( + ` + select + ${columns.events} + from website_event + where website_id = {websiteId:UUID} + ${where.events} + and created_at between {startDate:DateTime64} and {endDate:DateTime64} + `, + parameters.events, + ).then(a => { + const results = a[0]; + + return Object.keys(results).map((key, i) => { + return { ...events[i], result: results[key] }; + }); + }) + : []; + + return [...urlResults, ...eventResults]; +} From 4d66d400a949976bedde82ad3f531377b3118f46 Mon Sep 17 00:00:00 2001 From: Brian Cao Date: Sun, 5 May 2024 22:28:18 -0700 Subject: [PATCH 043/438] Fix percentages. --- src/app/(main)/reports/goals/GoalsChart.tsx | 7 +++++-- src/queries/analytics/reports/getGoals.ts | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/app/(main)/reports/goals/GoalsChart.tsx b/src/app/(main)/reports/goals/GoalsChart.tsx index 7cebbe217d..f20c4f9b36 100644 --- a/src/app/(main)/reports/goals/GoalsChart.tsx +++ b/src/app/(main)/reports/goals/GoalsChart.tsx @@ -33,10 +33,13 @@ export function GoalsChart({ className }: { className?: string; isLoading?: bool {formatLongNumber(goal)} {formatMessage(labels.goal)} -
{(result / goal).toFixed(2)}%
+
{((result / goal) * 100).toFixed(2)}%
-
+
goal ? 100 : (result / goal) * 100}%` }} + >
diff --git a/src/queries/analytics/reports/getGoals.ts b/src/queries/analytics/reports/getGoals.ts index f275d60461..d26998d03a 100644 --- a/src/queries/analytics/reports/getGoals.ts +++ b/src/queries/analytics/reports/getGoals.ts @@ -196,7 +196,7 @@ async function clickhouseQuery( const results = a[0]; return Object.keys(results).map((key, i) => { - return { ...urls[i], result: results[key] }; + return { ...urls[i], goal: Number(urls[i].goal), result: Number(results[key]) }; }); }) : []; @@ -216,7 +216,7 @@ async function clickhouseQuery( const results = a[0]; return Object.keys(results).map((key, i) => { - return { ...events[i], result: results[key] }; + return { ...events[i], goal: Number(events[i].goal), result: Number(results[key]) }; }); }) : []; From fb16cae12ef9e70a6395439af21e7a4e4112c4b4 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Mon, 6 May 2024 11:16:54 -0700 Subject: [PATCH 044/438] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index ae469eaaf3..84d795698e 100644 --- a/README.md +++ b/README.md @@ -101,3 +101,5 @@ docker compose up --force-recreate ## License MIT + + From 7a75639dd3d7aeff46104b71ebfb3853fc0eee09 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Mon, 6 May 2024 21:24:17 -0700 Subject: [PATCH 045/438] Update README.md --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 84d795698e..6d9755d4de 100644 --- a/README.md +++ b/README.md @@ -72,13 +72,13 @@ docker compose up -d Alternatively, to pull just the Umami Docker image with PostgreSQL support: ```bash -docker pull ghcr.io/umami-software/umami:postgresql-latest +docker pull docker.umami.is/umami-software/umami:postgresql-latest ``` Or with MySQL support: ```bash -docker pull ghcr.io/umami-software/umami:mysql-latest +docker pull docker.umami.is/umami-software/umami:mysql-latest ``` ## Getting updates @@ -102,4 +102,3 @@ docker compose up --force-recreate MIT - From 8bdb3337167bd0fa447c17ad3317ded1b85c52bd Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Tue, 7 May 2024 17:26:15 -0700 Subject: [PATCH 046/438] Remove offset from query parameters. --- src/components/hooks/useFilterParams.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/hooks/useFilterParams.ts b/src/components/hooks/useFilterParams.ts index 4fc36f39d8..fd76fd4786 100644 --- a/src/components/hooks/useFilterParams.ts +++ b/src/components/hooks/useFilterParams.ts @@ -5,7 +5,7 @@ import { zonedTimeToUtc } from 'date-fns-tz'; export function useFilterParams(websiteId: string) { const [dateRange] = useDateRange(websiteId); - const { startDate, endDate, unit, offset } = dateRange; + const { startDate, endDate, unit } = dateRange; const { timezone } = useTimezone(); const { query: { url, referrer, title, query, os, browser, device, country, region, city, event }, @@ -15,7 +15,6 @@ export function useFilterParams(websiteId: string) { startAt: +zonedTimeToUtc(startDate, timezone), endAt: +zonedTimeToUtc(endDate, timezone), unit, - offset, timezone, url, referrer, From 42b475b0619c35301d178822e6114da8065310c4 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Tue, 7 May 2024 17:26:15 -0700 Subject: [PATCH 047/438] Remove offset from query parameters. --- src/components/hooks/useFilterParams.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/hooks/useFilterParams.ts b/src/components/hooks/useFilterParams.ts index 4fc36f39d8..fd76fd4786 100644 --- a/src/components/hooks/useFilterParams.ts +++ b/src/components/hooks/useFilterParams.ts @@ -5,7 +5,7 @@ import { zonedTimeToUtc } from 'date-fns-tz'; export function useFilterParams(websiteId: string) { const [dateRange] = useDateRange(websiteId); - const { startDate, endDate, unit, offset } = dateRange; + const { startDate, endDate, unit } = dateRange; const { timezone } = useTimezone(); const { query: { url, referrer, title, query, os, browser, device, country, region, city, event }, @@ -15,7 +15,6 @@ export function useFilterParams(websiteId: string) { startAt: +zonedTimeToUtc(startDate, timezone), endAt: +zonedTimeToUtc(endDate, timezone), unit, - offset, timezone, url, referrer, From 3c27f08a97554ea1bac0f479dab279d3caf4f532 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Tue, 7 May 2024 22:47:39 -0700 Subject: [PATCH 048/438] Render children for data tables. --- package.json | 2 +- .../settings/websites/WebsitesDataTable.tsx | 8 ++-- .../settings/websites/WebsitesTable.tsx | 5 ++- src/components/common/DataTable.module.css | 14 ------- src/components/common/DataTable.tsx | 2 +- src/components/hooks/queries/useRealtime.ts | 2 +- .../hooks/queries/useWebsiteValues.ts | 2 +- yarn.lock | 39 +++++++++++++++---- 8 files changed, 45 insertions(+), 29 deletions(-) diff --git a/package.json b/package.json index d5a090dfd6..3d5b74ae2e 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "@react-spring/web": "^9.7.3", "@tanstack/react-query": "^5.28.6", "@umami/prisma-client": "^0.14.0", - "@umami/redis-client": "^0.20.0", + "@umami/redis-client": "^0.21.0", "chalk": "^4.1.1", "chart.js": "^4.4.2", "chartjs-adapter-date-fns": "^3.0.0", diff --git a/src/app/(main)/settings/websites/WebsitesDataTable.tsx b/src/app/(main)/settings/websites/WebsitesDataTable.tsx index 6ffe6fd011..b3472942b4 100644 --- a/src/app/(main)/settings/websites/WebsitesDataTable.tsx +++ b/src/app/(main)/settings/websites/WebsitesDataTable.tsx @@ -18,6 +18,10 @@ export function WebsitesDataTable({ }) { const queryResult = useWebsites({ teamId }); + if (!queryResult?.result?.data?.length) { + return children; + } + return ( {({ data }) => ( @@ -27,9 +31,7 @@ export function WebsitesDataTable({ showActions={showActions} allowEdit={allowEdit} allowView={allowView} - > - {children} - + /> )} ); diff --git a/src/app/(main)/settings/websites/WebsitesTable.tsx b/src/app/(main)/settings/websites/WebsitesTable.tsx index 022191cf35..dced90be50 100644 --- a/src/app/(main)/settings/websites/WebsitesTable.tsx +++ b/src/app/(main)/settings/websites/WebsitesTable.tsx @@ -23,6 +23,10 @@ export function WebsitesTable({ const breakpoint = useBreakpoint(); const { renderTeamUrl } = useTeamUrl(); + if (!data?.length) { + return children; + } + return ( @@ -55,7 +59,6 @@ export function WebsitesTable({ }} )} - {children} ); } diff --git a/src/components/common/DataTable.module.css b/src/components/common/DataTable.module.css index 98d84c7599..9a7cffb769 100644 --- a/src/components/common/DataTable.module.css +++ b/src/components/common/DataTable.module.css @@ -1,22 +1,8 @@ -.table { - grid-template-rows: repeat(auto-fit, max-content); -} - -.table td { - align-items: center; - max-height: max-content; -} - .search { max-width: 300px; margin: 20px 0; } -.action { - justify-content: flex-end; - gap: 5px; -} - .body { display: flex; flex-direction: column; diff --git a/src/components/common/DataTable.tsx b/src/components/common/DataTable.tsx index 4bca7fc397..ed910def7d 100644 --- a/src/components/common/DataTable.tsx +++ b/src/components/common/DataTable.tsx @@ -4,8 +4,8 @@ import { Banner, Loading, SearchField } from 'react-basics'; import { useMessages } from 'components/hooks'; import Empty from 'components/common/Empty'; import Pager from 'components/common/Pager'; -import styles from './DataTable.module.css'; import { FilterQueryResult } from 'lib/types'; +import styles from './DataTable.module.css'; const DEFAULT_SEARCH_DELAY = 600; diff --git a/src/components/hooks/queries/useRealtime.ts b/src/components/hooks/queries/useRealtime.ts index ccf6a62df8..92b03bd03f 100644 --- a/src/components/hooks/queries/useRealtime.ts +++ b/src/components/hooks/queries/useRealtime.ts @@ -1,6 +1,6 @@ import { useMemo, useRef } from 'react'; import { RealtimeData } from 'lib/types'; -import { useApi } from 'components/hooks'; +import { useApi } from './useApi'; import { REALTIME_INTERVAL, REALTIME_RANGE } from 'lib/constants'; import { startOfMinute, subMinutes } from 'date-fns'; import { percentFilter } from 'lib/filters'; diff --git a/src/components/hooks/queries/useWebsiteValues.ts b/src/components/hooks/queries/useWebsiteValues.ts index 02e26fc332..c5358df233 100644 --- a/src/components/hooks/queries/useWebsiteValues.ts +++ b/src/components/hooks/queries/useWebsiteValues.ts @@ -1,4 +1,4 @@ -import { useApi } from 'components/hooks'; +import { useApi } from './useApi'; export function useWebsiteValues({ websiteId, diff --git a/yarn.lock b/yarn.lock index 95cc310bfe..5720f25d98 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2899,10 +2899,10 @@ chalk "^4.1.2" debug "^4.3.4" -"@umami/redis-client@^0.20.0": - version "0.20.0" - resolved "https://registry.yarnpkg.com/@umami/redis-client/-/redis-client-0.20.0.tgz#93b4598d68983b1ad266a0a527c56533c6248bf2" - integrity sha512-ACpoO+M/J2eLWEtusjbslhR4le+rPN4h9x7TXjaVJ905icVE0Qgu5y+A7nxXjcYvlgkHk+8HPeVeeaw5P+rxqw== +"@umami/redis-client@^0.21.0": + version "0.21.0" + resolved "https://registry.yarnpkg.com/@umami/redis-client/-/redis-client-0.21.0.tgz#96426b28860b8b06fae8825fc2f2d9575b64e863" + integrity sha512-PpdJunvT4sAsVWIeEl+cHU6iSV2r/Df9dof2gdUwSigfD88ACsVs1/BvlWERxk/T93rTgVJWSpLvdw/oMYvkcw== dependencies: debug "^4.3.4" redis "^4.5.1" @@ -9532,7 +9532,16 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -9605,7 +9614,14 @@ string.prototype.trimstart@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -10366,7 +10382,7 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -10384,6 +10400,15 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" From 90bd72cf984761c545e60a99e68452b3039d543f Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Tue, 7 May 2024 23:09:19 -0700 Subject: [PATCH 049/438] Updated data table render check. --- src/app/(main)/reports/ReportsDataTable.tsx | 7 +++++++ src/app/(main)/settings/teams/TeamsDataTable.tsx | 7 +++++++ src/app/(main)/settings/users/UsersDataTable.tsx | 13 ++++++++++++- .../(main)/settings/websites/WebsitesDataTable.tsx | 2 +- 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/app/(main)/reports/ReportsDataTable.tsx b/src/app/(main)/reports/ReportsDataTable.tsx index cf5953e856..7c99fb25f7 100644 --- a/src/app/(main)/reports/ReportsDataTable.tsx +++ b/src/app/(main)/reports/ReportsDataTable.tsx @@ -1,16 +1,23 @@ import { useReports } from 'components/hooks'; import ReportsTable from './ReportsTable'; import DataTable from 'components/common/DataTable'; +import { ReactNode } from 'react'; export default function ReportsDataTable({ websiteId, teamId, + children, }: { websiteId?: string; teamId?: string; + children?: ReactNode; }) { const queryResult = useReports({ websiteId, teamId }); + if (queryResult?.result?.data?.length === 0) { + return children; + } + return ( {({ data }) => } diff --git a/src/app/(main)/settings/teams/TeamsDataTable.tsx b/src/app/(main)/settings/teams/TeamsDataTable.tsx index fe92b6a05c..6baeba3313 100644 --- a/src/app/(main)/settings/teams/TeamsDataTable.tsx +++ b/src/app/(main)/settings/teams/TeamsDataTable.tsx @@ -1,17 +1,24 @@ import DataTable from 'components/common/DataTable'; import TeamsTable from 'app/(main)/settings/teams/TeamsTable'; import { useLogin, useTeams } from 'components/hooks'; +import { ReactNode } from 'react'; export function TeamsDataTable({ allowEdit, showActions, + children, }: { allowEdit?: boolean; showActions?: boolean; + children?: ReactNode; }) { const { user } = useLogin(); const queryResult = useTeams(user.id); + if (queryResult?.result?.data?.length === 0) { + return children; + } + return ( {({ data }) => { diff --git a/src/app/(main)/settings/users/UsersDataTable.tsx b/src/app/(main)/settings/users/UsersDataTable.tsx index cfff4e71c4..681b4dc2d6 100644 --- a/src/app/(main)/settings/users/UsersDataTable.tsx +++ b/src/app/(main)/settings/users/UsersDataTable.tsx @@ -1,10 +1,21 @@ import DataTable from 'components/common/DataTable'; import { useUsers } from 'components/hooks'; import UsersTable from './UsersTable'; +import { ReactNode } from 'react'; -export function UsersDataTable({ showActions }: { showActions?: boolean }) { +export function UsersDataTable({ + showActions, + children, +}: { + showActions?: boolean; + children?: ReactNode; +}) { const queryResult = useUsers(); + if (queryResult?.result?.data?.length === 0) { + return children; + } + return ( {({ data }) => } diff --git a/src/app/(main)/settings/websites/WebsitesDataTable.tsx b/src/app/(main)/settings/websites/WebsitesDataTable.tsx index b3472942b4..1780dfb4a3 100644 --- a/src/app/(main)/settings/websites/WebsitesDataTable.tsx +++ b/src/app/(main)/settings/websites/WebsitesDataTable.tsx @@ -18,7 +18,7 @@ export function WebsitesDataTable({ }) { const queryResult = useWebsites({ teamId }); - if (!queryResult?.result?.data?.length) { + if (queryResult?.result?.data?.length === 0) { return children; } From f259130202f18c9260b7e2e6a46514d15b2ec76a Mon Sep 17 00:00:00 2001 From: Francis Cao Date: Thu, 9 May 2024 11:55:54 -0700 Subject: [PATCH 050/438] add redis calls to website delete/reset --- src/queries/admin/website.ts | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/queries/admin/website.ts b/src/queries/admin/website.ts index 1f513bd4f6..d191aa657d 100644 --- a/src/queries/admin/website.ts +++ b/src/queries/admin/website.ts @@ -1,4 +1,5 @@ import { Prisma, Website } from '@prisma/client'; +import redis from '@umami/redis-client'; import prisma from 'lib/prisma'; import { PageResult, PageParams } from 'lib/types'; import WebsiteFindManyArgs = Prisma.WebsiteFindManyArgs; @@ -122,6 +123,7 @@ export async function resetWebsite( websiteId: string, ): Promise<[Prisma.BatchPayload, Prisma.BatchPayload, Website]> { const { client, transaction } = prisma; + const cloudMode = !!process.env.cloudMode; return transaction([ client.eventData.deleteMany({ @@ -139,14 +141,20 @@ export async function resetWebsite( resetAt: new Date(), }, }), - ]); + ]).then(async data => { + if (cloudMode) { + await redis.client.set(`website:${websiteId}`, data[3]); + } + + return data; + }); } export async function deleteWebsite( websiteId: string, ): Promise<[Prisma.BatchPayload, Prisma.BatchPayload, Website]> { const { client, transaction } = prisma; - const cloudMode = process.env.CLOUD_MODE; + const cloudMode = !!process.env.CLOUD_MODE; return transaction([ client.eventData.deleteMany({ @@ -173,5 +181,11 @@ export async function deleteWebsite( : client.website.delete({ where: { id: websiteId }, }), - ]); + ]).then(async data => { + if (cloudMode) { + await redis.client.del(`website:${websiteId}`); + } + + return data; + }); } From 4731c1cca32e6e64ecccab6139f4e39ab117f330 Mon Sep 17 00:00:00 2001 From: Francis Cao Date: Thu, 9 May 2024 11:55:54 -0700 Subject: [PATCH 051/438] add redis calls to website delete/reset --- src/queries/admin/website.ts | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/queries/admin/website.ts b/src/queries/admin/website.ts index 1f513bd4f6..d191aa657d 100644 --- a/src/queries/admin/website.ts +++ b/src/queries/admin/website.ts @@ -1,4 +1,5 @@ import { Prisma, Website } from '@prisma/client'; +import redis from '@umami/redis-client'; import prisma from 'lib/prisma'; import { PageResult, PageParams } from 'lib/types'; import WebsiteFindManyArgs = Prisma.WebsiteFindManyArgs; @@ -122,6 +123,7 @@ export async function resetWebsite( websiteId: string, ): Promise<[Prisma.BatchPayload, Prisma.BatchPayload, Website]> { const { client, transaction } = prisma; + const cloudMode = !!process.env.cloudMode; return transaction([ client.eventData.deleteMany({ @@ -139,14 +141,20 @@ export async function resetWebsite( resetAt: new Date(), }, }), - ]); + ]).then(async data => { + if (cloudMode) { + await redis.client.set(`website:${websiteId}`, data[3]); + } + + return data; + }); } export async function deleteWebsite( websiteId: string, ): Promise<[Prisma.BatchPayload, Prisma.BatchPayload, Website]> { const { client, transaction } = prisma; - const cloudMode = process.env.CLOUD_MODE; + const cloudMode = !!process.env.CLOUD_MODE; return transaction([ client.eventData.deleteMany({ @@ -173,5 +181,11 @@ export async function deleteWebsite( : client.website.delete({ where: { id: websiteId }, }), - ]); + ]).then(async data => { + if (cloudMode) { + await redis.client.del(`website:${websiteId}`); + } + + return data; + }); } From a92eb841b8e54c46965f411089031e68df61526e Mon Sep 17 00:00:00 2001 From: Eddu Date: Thu, 9 May 2024 20:02:51 -0300 Subject: [PATCH 052/438] consistent spelling in Brazilian Portuguese --- src/lang/pt-BR.json | 330 ++++++++++++++++++++++---------------------- 1 file changed, 165 insertions(+), 165 deletions(-) diff --git a/src/lang/pt-BR.json b/src/lang/pt-BR.json index 0615494477..7fcfa087ac 100644 --- a/src/lang/pt-BR.json +++ b/src/lang/pt-BR.json @@ -1,88 +1,88 @@ { "label.access-code": "Código de acesso", "label.actions": "Ações", - "label.activity-log": "Log de atividade", - "label.add": "Add", - "label.add-description": "Add description", - "label.add-member": "Add member", - "label.add-step": "Add step", + "label.activity-log": "Registro de atividades", + "label.add": "Adicionar", + "label.add-description": "Adicionar descrição", + "label.add-member": "Adicionar membro", + "label.add-step": "Adicionar etapa", "label.add-website": "Adicionar site", "label.admin": "Administrador", "label.after": "Depois", "label.all": "Todos", "label.all-time": "Todo o período", - "label.analytics": "Estatísticas", - "label.average": "Average", - "label.average-visit-time": "Tempo médio da visita", + "label.analytics": "Análise de dados", + "label.average": "Média", + "label.average-visit-time": "Tempo médio de visita", "label.back": "Voltar", "label.before": "Antes", "label.bounce-rate": "Taxa de rejeição", - "label.breakdown": "Breakdown", - "label.browser": "Browser", + "label.breakdown": "Detalhamento", + "label.browser": "Navegador", "label.browsers": "Navegadores", "label.cancel": "Cancelar", - "label.change-password": "Alterar a senha", + "label.change-password": "Alterar senha", "label.cities": "Cidades", - "label.city": "City", + "label.city": "Cidade", "label.clear-all": "Limpar tudo", "label.confirm": "Confirmar", - "label.confirm-password": "Confirme a nova senha", - "label.contains": "Contains", + "label.confirm-password": "Confirmar nova senha", + "label.contains": "Contém", "label.continue": "Continuar", "label.countries": "Países", - "label.country": "Country", - "label.create": "Create", + "label.country": "País", + "label.create": "Criar", "label.create-report": "Criar relatório", "label.create-team": "Criar time", "label.create-user": "Criar usuário", - "label.created": "Criado", - "label.created-by": "Created By", + "label.created": "Criado(a)", + "label.created-by": "Criado(a) por", "label.current-password": "Senha atual", "label.custom-range": "Intervalo personalizado", - "label.dashboard": "Painel", - "label.data": "Data", - "label.date": "Date", + "label.dashboard": "Painel de controle", + "label.data": "Dados", + "label.date": "Data", "label.date-range": "Intervalo de datas", - "label.day": "Day", - "label.default-date-range": "Intervalo de datas predefinido", - "label.delete": "Remover", - "label.delete-report": "Delete report", - "label.delete-team": "Remover time", - "label.delete-user": "Remover usuário", - "label.delete-website": "Remover site", + "label.day": "Dia", + "label.default-date-range": "Intervalo de datas padrão", + "label.delete": "Excluir", + "label.delete-report": "Excluir relatório", + "label.delete-team": "Excluir time", + "label.delete-user": "Excluir usuário", + "label.delete-website": "Excluir site", "label.description": "Descrição", "label.desktop": "Computador", "label.details": "Detalhes", - "label.device": "Device", + "label.device": "Dispositivo", "label.devices": "Dispositivos", "label.dismiss": "Dispensar", - "label.does-not-contain": "Does not contain", + "label.does-not-contain": "Não contém", "label.domain": "Domínio", - "label.dropoff": "Dropoff", + "label.dropoff": "Abandono", "label.edit": "Editar", "label.edit-dashboard": "Editar painel", - "label.edit-member": "Edit member", - "label.enable-share-url": "Ativar link de compartilhamento", + "label.edit-member": "Editar membro", + "label.enable-share-url": "Habilitar link de compartilhamento", "label.event": "Evento", - "label.event-data": "Event data", + "label.event-data": "Dados de evento", "label.events": "Eventos", - "label.false": "False", + "label.false": "Falso", "label.field": "Campo", "label.fields": "Campos", - "label.filter": "Filter", - "label.filter-combined": "Combinado", - "label.filter-raw": "Dados brutos", - "label.filters": "Filters", + "label.filter": "Filtro", + "label.filter-combined": "Filtro combinado", + "label.filter-raw": "Filtro de dados brutos", + "label.filters": "Filtros", "label.funnel": "Funil", - "label.funnel-description": "Understand the conversion and drop-off rate of users.", + "label.funnel-description": "Entenda a conversão e taxa de abandono dos usuários.", "label.greater-than": "Maior que", - "label.greater-than-equals": "Maior que ou igual", - "label.insights": "Insights", - "label.insights-description": "Dive deeper into your data by using segments and filters.", - "label.is": "Is", - "label.is-not": "Is not", - "label.is-not-set": "Is not set", - "label.is-set": "Is set", + "label.greater-than-equals": "Maior ou igual a", + "label.insights": "Informações", + "label.insights-description": "Explore seus dados em mais profundidade usando segmentos e filtros.", + "label.is": "É", + "label.is-not": "Não é", + "label.is-not-set": "Não está definido", + "label.is-set": "Está definido", "label.join": "Entrar", "label.join-team": "Entrar no time", "label.language": "Idioma", @@ -90,157 +90,157 @@ "label.laptop": "Notebook", "label.last-days": "Últimos {x} dias", "label.last-hours": "Últimas {x} horas", - "label.last-months": "Last {x} months", + "label.last-months": "Últimos {x} meses", "label.leave": "Sair", "label.leave-team": "Sair do time", "label.less-than": "Menor que", - "label.less-than-equals": "Menor que ou igual", - "label.login": "Iniciar sessão", + "label.less-than-equals": "Menor ou igual a", + "label.login": "Entrar", "label.logout": "Sair", - "label.manage": "Manage", - "label.max": "Max", - "label.member": "Member", + "label.manage": "Gerenciar", + "label.max": "Máximo", + "label.member": "Membro", "label.members": "Membros", - "label.min": "Min", + "label.min": "Mínimo", "label.mobile": "Celular", "label.more": "Mais", - "label.my-account": "My account", - "label.my-websites": "My websites", + "label.my-account": "Minha conta", + "label.my-websites": "Meus sites", "label.name": "Nome", "label.new-password": "Nova senha", "label.none": "Nenhum", - "label.number-of-records": "{x} {x, plural, one {record} other {records}}", + "label.number-of-records": "{x} {x, plural, one {registro} other {registros}}", "label.ok": "OK", - "label.os": "OS", - "label.overview": "Overview", + "label.os": "Sistema Operacional", + "label.overview": "Visão geral", "label.owner": "Proprietário", - "label.page-of": "Page {current} of {total}", + "label.page-of": "Página {current} de {total}", "label.page-views": "Visualizações de página", - "label.pageTitle": "Page title", + "label.pageTitle": "Título da página", "label.pages": "Páginas", "label.password": "Senha", - "label.powered-by": "Distribuído por {name}", + "label.powered-by": "Desenvolvido por {name}", "label.profile": "Perfil", - "label.queries": "Parâmetros", - "label.query": "Query", - "label.query-parameters": "Parâmetros de Consulta", + "label.queries": "Buscas", + "label.query": "Busca", + "label.query-parameters": "Parâmetros da busca", "label.realtime": "Tempo real", - "label.referrer": "Referrer", + "label.referrer": "Referência", "label.referrers": "Referências", "label.refresh": "Atualizar", - "label.regenerate": "Regerar", - "label.region": "Region", + "label.regenerate": "Gerar novamente", + "label.region": "Região", "label.regions": "Regiões", "label.remove": "Remover", - "label.remove-member": "Remove member", - "label.reports": "Reports", + "label.remove-member": "Remover membro", + "label.reports": "Relatórios", "label.required": "Obrigatório", "label.reset": "Redefinir", "label.reset-website": "Redefinir estatísticas", - "label.retention": "Retention", - "label.retention-description": "Measure your website stickiness by tracking how often users return.", - "label.role": "Papel", - "label.run-query": "Executar query", + "label.retention": "Retenção", + "label.retention-description": "Analise a retenção de usuários do seu site acompanhando a frequência com que eles retornam.", + "label.role": "Função", + "label.run-query": "Executar busca", "label.save": "Salvar", "label.screens": "Telas", - "label.search": "Search", - "label.select": "Select", + "label.search": "Pesquisar", + "label.select": "Selecionar", "label.select-date": "Selecionar data", - "label.select-role": "Select role", + "label.select-role": "Selecionar função", "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.steps": "Steps", - "label.sum": "Sum", + "label.steps": "Etapas", + "label.sum": "Soma", "label.tablet": "Tablet", "label.team": "Time", "label.team-id": "ID do Time", - "label.team-member": "Membro", - "label.team-name": "Team name", - "label.team-owner": "Proprietário", - "label.team-view-only": "Team view only", - "label.team-websites": "Team websites", - "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": "Título", - "label.today": "Hoje", - "label.toggle-charts": "Mostrar/Esconder gráficos", - "label.total": "Total", - "label.total-records": "Total records", - "label.tracking-code": "Código de rastreamento", - "label.transfer": "Transfer", - "label.transfer-website": "Transfer website", - "label.true": "True", - "label.type": "Tipo", - "label.unique": "Único", - "label.unique-visitors": "Visitantes únicos", - "label.unknown": "Desconhecido", - "label.untitled": "Sem título", - "label.update": "Update", - "label.url": "URL", - "label.urls": "URLs", - "label.user": "Usuário", - "label.username": "Nome de usuário", - "label.users": "Usuários", - "label.utm": "UTM", - "label.utm-description": "Track your campaigns through UTM parameters.", - "label.value": "Valor", - "label.view": "Ver", - "label.view-details": "Ver detalhes", - "label.view-only": "Somente visualização", - "label.views": "Visualizações", - "label.views-per-visit": "Views per visit", - "label.visitors": "Visitantes", - "label.visits": "Visits", - "label.website": "Website", - "label.website-id": "ID do Site", - "label.websites": "Sites", - "label.window": "Janela", - "label.yesterday": "Ontem", - "message.action-confirmation": "Type {confirmation} in the box below to confirm.", - "message.active-users": "{x} {x, plural, one {visitante} other {visitantes}} neste momento", - "message.confirm-delete": "Deseja realmente remover {target}?", - "message.confirm-leave": "Você tem certeza que deseja sair de {target}?", - "message.confirm-remove": "Are you sure you want to remove {target}?", - "message.confirm-reset": "Você tem certeza que deseja redefinir as estatísticas de {target}?", - "message.delete-team-warning": "Deleting a team will also delete all team websites.", - "message.delete-website-warning": "Todos os dados associados também serão eliminados.", - "message.error": "Ocorreu um erro.", - "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": "Quantidade mínima de {n} caracteres", - "message.new-version-available": "Uma nova versão do Umami {version} está disponível!", - "message.no-data-available": "Sem dados disponíveis.", - "message.no-event-data": "Nenhum dado de evento está disponível.", - "message.no-match-password": "As senhas não correspondem", - "message.no-results-found": "Nenhum resultado foi encontrado.", - "message.no-team-websites": "Este time não possui nenhum site.", - "message.no-teams": "Você não criou nenhum time.", - "message.no-users": "Não há nenhum usuário.", - "message.no-websites-configured": "Nenhum site foi configurado ainda.", - "message.page-not-found": "Página não encontrada.", - "message.reset-website": "Para redefinir este site, digite {confirmation} na caixa abaixo para confirmar.", - "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": "Você já um membro do time.", - "message.team-not-found": "Time não encontrado.", - "message.team-websites-info": "Os sites podem ser visualizados por qualquer membro da equipe.", - "message.tracking-code": "Código de rastreamento", - "message.transfer-team-website-to-user": "Transfer this website to your account?", - "message.transfer-user-website-to-team": "Select the team to transfer this website to.", - "message.transfer-website": "Transfer website ownership to your account or another team.", - "message.triggered-event": "Triggered event", - "message.user-deleted": "Usuário removido.", - "message.viewed-page": "Viewed page", - "message.visitor-log": "Visitante de {country} usando {browser} no {device} {os}", - "message.visitors-dropped-off": "Visitors dropped off" +"label.team-member": "Membro do time", +"label.team-name": "Nome do time", +"label.team-owner": "Proprietário do time", +"label.team-view-only": "Visualização apenas de time", +"label.team-websites": "Sites do time", +"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": "Título", +"label.today": "Hoje", +"label.toggle-charts": "Mostrar/Esconder gráficos", +"label.total": "Total", +"label.total-records": "Total de registros", +"label.tracking-code": "Código de rastreamento", +"label.transfer": "Transferir", +"label.transfer-website": "Transferir site", +"label.true": "Verdadeiro", +"label.type": "Tipo", +"label.unique": "Único", +"label.unique-visitors": "Visitantes únicos", +"label.unknown": "Desconhecido", +"label.untitled": "Sem título", +"label.update": "Atualizar", +"label.url": "URL", +"label.urls": "URLs", +"label.user": "Usuário", +"label.username": "Nome de usuário", +"label.users": "Usuários", +"label.utm": "UTM", +"label.utm-description": "Rastreie suas campanhas por meio de parâmetros UTM.", +"label.value": "Valor", +"label.view": "Visualizar", +"label.view-details": "Ver detalhes", +"label.view-only": "Somente visualização", +"label.views": "Visualizações", +"label.views-per-visit": "Visualizações por visita", +"label.visitors": "Visitantes", +"label.visits": "Visitas", +"label.website": "Site", +"label.website-id": "ID do site", +"label.websites": "Sites", +"label.window": "Janela", +"label.yesterday": "Ontem", +"message.action-confirmation": "Digite {confirmation} na caixa abaixo para confirmar.", +"message.active-users": "{x} {x, plural, one {visitante} other {visitantes}} neste momento", +"message.confirm-delete": "Deseja realmente remover {target}?", +"message.confirm-leave": "Você tem certeza que deseja sair de {target}?", +"message.confirm-remove": "Tem certeza que deseja remover {target}?", +"message.confirm-reset": "Tem certeza que deseja redefinir as estatísticas de {target}?", +"message.delete-team-warning": "Excluir um time também excluirá todos os sites do time.", +"message.delete-website-warning": "Todos os dados associados também serão excluídos.", +"message.error": "Ocorreu um erro.", +"message.event-log": "{event} em {url}", +"message.go-to-settings": "Ir para as configurações", +"message.incorrect-username-password": "Nome de usuário e/ou senha incorretos.", +"message.invalid-domain": "Domínio inválido", +"message.min-password-length": "Quantidade mínima de {n} caracteres", +"message.new-version-available": "Uma nova versão do Umami {version} está disponível!", +"message.no-data-available": "Sem dados disponíveis.", +"message.no-event-data": "Nenhum dado de evento disponível.", +"message.no-match-password": "As senhas não coincidem", +"message.no-results-found": "Nenhum resultado foi encontrado.", +"message.no-team-websites": "Este time não possui nenhum site.", +"message.no-teams": "Você não criou nenhum time.", +"message.no-users": "Não há usuários.", +"message.no-websites-configured": "Nenhum site foi configurado ainda.", +"message.page-not-found": "Página não encontrada.", +"message.reset-website": "Para redefinir este site, digite {confirmation} na caixa abaixo para confirmar.", +"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": "Você já é um membro do time.", +"message.team-not-found": "Time não encontrado.", +"message.team-websites-info": "Os sites podem ser visualizados por qualquer membro da equipe.", +"message.tracking-code": "Código de rastreamento", +"message.transfer-team-website-to-user": "Transferir este site para a sua conta?", +"message.transfer-user-website-to-team": "Selecione o time para o qual deseja transferir este site.", +"message.transfer-website": "Transferir a propriedade do site para a sua conta ou para outro time.", +"message.triggered-event": "Evento disparado", +"message.user-deleted": "Usuário removido.", +"message.viewed-page": "Página visualizada", +"message.visitor-log": "Visitante de {country} usando {browser} no {device} {os}", +"message.visitors-dropped-off": "Visitantes que abandonaram" } From cfe791ec8c0dfec5c5b5d425bd16b10e40e58338 Mon Sep 17 00:00:00 2001 From: Eddu Date: Thu, 9 May 2024 20:16:15 -0300 Subject: [PATCH 053/438] =?UTF-8?q?pt-BR=20todas=20as=20apari=C3=A7=C3=B5e?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lang/pt-BR.json | 311 ++++++++++++++++++++++---------------------- 1 file changed, 156 insertions(+), 155 deletions(-) diff --git a/src/lang/pt-BR.json b/src/lang/pt-BR.json index 7fcfa087ac..8e3c9bfd4b 100644 --- a/src/lang/pt-BR.json +++ b/src/lang/pt-BR.json @@ -1,6 +1,6 @@ { "label.access-code": "Código de acesso", - "label.actions": "Ações", + "label.actions": "Ações do usuário", "label.activity-log": "Registro de atividades", "label.add": "Adicionar", "label.add-description": "Adicionar descrição", @@ -10,8 +10,8 @@ "label.admin": "Administrador", "label.after": "Depois", "label.all": "Todos", - "label.all-time": "Todo o período", - "label.analytics": "Análise de dados", + "label.all-time": "Todos os períodos", + "label.analytics": "Análise", "label.average": "Média", "label.average-visit-time": "Tempo médio de visita", "label.back": "Voltar", @@ -26,221 +26,222 @@ "label.city": "Cidade", "label.clear-all": "Limpar tudo", "label.confirm": "Confirmar", - "label.confirm-password": "Confirmar nova senha", + "label.confirm-password": "Confirmar senha", "label.contains": "Contém", "label.continue": "Continuar", "label.countries": "Países", "label.country": "País", "label.create": "Criar", "label.create-report": "Criar relatório", - "label.create-team": "Criar time", + "label.create-team": "Criar equipe", "label.create-user": "Criar usuário", - "label.created": "Criado(a)", - "label.created-by": "Criado(a) por", + "label.created": "Criado", + "label.created-by": "Criado por", "label.current-password": "Senha atual", - "label.custom-range": "Intervalo personalizado", - "label.dashboard": "Painel de controle", + "label.custom-range": "Período personalizado", + "label.dashboard": "Painel", "label.data": "Dados", "label.date": "Data", - "label.date-range": "Intervalo de datas", + "label.date-range": "Período", "label.day": "Dia", - "label.default-date-range": "Intervalo de datas padrão", + "label.default-date-range": "Período padrão", "label.delete": "Excluir", "label.delete-report": "Excluir relatório", - "label.delete-team": "Excluir time", + "label.delete-team": "Excluir equipe", "label.delete-user": "Excluir usuário", "label.delete-website": "Excluir site", "label.description": "Descrição", - "label.desktop": "Computador", + "label.desktop": "Desktop", "label.details": "Detalhes", "label.device": "Dispositivo", "label.devices": "Dispositivos", - "label.dismiss": "Dispensar", + "label.dismiss": "Fechar", "label.does-not-contain": "Não contém", "label.domain": "Domínio", "label.dropoff": "Abandono", "label.edit": "Editar", "label.edit-dashboard": "Editar painel", "label.edit-member": "Editar membro", - "label.enable-share-url": "Habilitar link de compartilhamento", + "label.enable-share-url": "Ativar link para compartilhar", "label.event": "Evento", - "label.event-data": "Dados de evento", - "label.events": "Eventos", - "label.false": "Falso", + "label.event-data": "Dados do evento", + "label.events": "Tipos de eventos", + "label.false": "Não", "label.field": "Campo", "label.fields": "Campos", "label.filter": "Filtro", - "label.filter-combined": "Filtro combinado", - "label.filter-raw": "Filtro de dados brutos", + "label.filter-combined": "Combinado", + "label.filter-raw": "Bruto", "label.filters": "Filtros", "label.funnel": "Funil", - "label.funnel-description": "Entenda a conversão e taxa de abandono dos usuários.", + "label.funnel-description": "Entenda a taxa de conversão e abandono dos seus usuários.", "label.greater-than": "Maior que", "label.greater-than-equals": "Maior ou igual a", - "label.insights": "Informações", - "label.insights-description": "Explore seus dados em mais profundidade usando segmentos e filtros.", - "label.is": "É", - "label.is-not": "Não é", - "label.is-not-set": "Não está definido", - "label.is-set": "Está definido", - "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.last-months": "Últimos {x} meses", - "label.leave": "Sair", - "label.leave-team": "Sair do time", - "label.less-than": "Menor que", - "label.less-than-equals": "Menor ou igual a", - "label.login": "Entrar", - "label.logout": "Sair", - "label.manage": "Gerenciar", - "label.max": "Máximo", - "label.member": "Membro", - "label.members": "Membros", - "label.min": "Mínimo", - "label.mobile": "Celular", - "label.more": "Mais", - "label.my-account": "Minha conta", - "label.my-websites": "Meus sites", - "label.name": "Nome", - "label.new-password": "Nova senha", - "label.none": "Nenhum", - "label.number-of-records": "{x} {x, plural, one {registro} other {registros}}", - "label.ok": "OK", - "label.os": "Sistema Operacional", - "label.overview": "Visão geral", - "label.owner": "Proprietário", - "label.page-of": "Página {current} de {total}", - "label.page-views": "Visualizações de página", - "label.pageTitle": "Título da página", - "label.pages": "Páginas", - "label.password": "Senha", - "label.powered-by": "Desenvolvido por {name}", - "label.profile": "Perfil", - "label.queries": "Buscas", - "label.query": "Busca", - "label.query-parameters": "Parâmetros da busca", - "label.realtime": "Tempo real", - "label.referrer": "Referência", - "label.referrers": "Referências", - "label.refresh": "Atualizar", - "label.regenerate": "Gerar novamente", - "label.region": "Região", - "label.regions": "Regiões", - "label.remove": "Remover", - "label.remove-member": "Remover membro", - "label.reports": "Relatórios", - "label.required": "Obrigatório", - "label.reset": "Redefinir", - "label.reset-website": "Redefinir estatísticas", - "label.retention": "Retenção", - "label.retention-description": "Analise a retenção de usuários do seu site acompanhando a frequência com que eles retornam.", - "label.role": "Função", - "label.run-query": "Executar busca", - "label.save": "Salvar", - "label.screens": "Telas", - "label.search": "Pesquisar", - "label.select": "Selecionar", - "label.select-date": "Selecionar data", - "label.select-role": "Selecionar função", - "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.steps": "Etapas", - "label.sum": "Soma", - "label.tablet": "Tablet", - "label.team": "Time", - "label.team-id": "ID do Time", -"label.team-member": "Membro do time", -"label.team-name": "Nome do time", -"label.team-owner": "Proprietário do time", -"label.team-view-only": "Visualização apenas de time", -"label.team-websites": "Sites do time", -"label.teams": "Times", + "label.insights": "Insights", + "label.insights-description": "Explore seus dados em mais detalhes usando filtros", + "label.insights-description": "Explore seus dados em mais detalhes usando filtros e segmentação por períodos.", +"label.is": "É igual a", +"label.is-not": "Não é igual a", +"label.is-not-set": "Não definido", +"label.is-set": "Definido", +"label.join": "Participar", +"label.join-team": "Participar da equipe", +"label.language": "Idioma", +"label.languages": "Idiomas", +"label.laptop": "Notebook", +"label.last-days": "Últimos {x} dias", +"label.last-hours": "Últimas {x} horas", +"label.last-months": "Últimos {x} meses", +"label.leave": "Sair", +"label.leave-team": "Sair da equipe", +"label.less-than": "Menor que", +"label.less-than-equals": "Menor ou igual a", +"label.login": "Entrar", +"label.logout": "Sair", +"label.manage": "Gerenciar", +"label.max": "Máximo", +"label.member": "Membro", +"label.members": "Membros", +"label.min": "Mínimo", +"label.mobile": "Celular", +"label.more": "Mais", +"label.my-account": "Minha conta", +"label.my-websites": "Meus sites", +"label.name": "Nome", +"label.new-password": "Nova senha", +"label.none": "Nenhum", +"label.number-of-records": "{x} {x, plural, one {registro} other {registros}}", +"label.ok": "OK", +"label.os": "Sistema operacional", +"label.overview": "Visão geral", +"label.owner": "Proprietário", +"label.page-of": "Página {current} de {total}", +"label.page-views": "Visualizações de página", +"label.pageTitle": "Título", +"label.pages": "Páginas", +"label.password": "Senha", +"label.powered-by": "Desenvolvido por {name}", +"label.profile": "Perfil", +"label.queries": "Consultas", +"label.query": "Consulta", +"label.query-parameters": "Parâmetros da consulta", +"label.realtime": "Tempo real", +"label.referrer": "Referência", +"label.referrers": "Referências", +"label.refresh": "Atualizar", +"label.regenerate": "Gerar novamente", +"label.region": "Estado", +"label.regions": "Estados", +"label.remove": "Remover", +"label.remove-member": "Remover membro", +"label.reports": "Relatórios", +"label.required": "Obrigatório", +"label.reset": "Redefinir", +"label.reset-website": "Redefinir dados", +"label.retention": "Retenção", +"label.retention-description": "Avalie a fidelidade dos seus usuários medindo a frequência com que eles retornam.", +"label.role": "Função", +"label.run-query": "Executar consulta", +"label.save": "Salvar", +"label.screens": "Tamanhos de tela", +"label.search": "Pesquisar", +"label.select": "Selecionar", +"label.select-date": "Selecionar data", +"label.select-role": "Selecionar função", +"label.select-website": "Selecionar site", +"label.sessions": "Sessões", +"label.settings": "Configurações", +"label.share-url": "Link para compartilhar", +"label.single-day": "Apenas um dia", +"label.steps": "Etapas", +"label.sum": "Soma", +"label.tablet": "Tablet", +"label.team": "Equipe", +"label.team-id": "ID da equipe", +"label.team-member": "Membro da equipe", +"label.team-name": "Nome da equipe", +"label.team-owner": "Proprietário da equipe", +"label.team-view-only": "Apenas visualização da equipe", +"label.team-websites": "Sites da equipe", +"label.teams": "Equipes", "label.theme": "Tema", -"label.this-month": "Este mês", -"label.this-week": "Esta semana", +"label.this-month": "Este mês", +"label.this-week": "Esta semana", "label.this-year": "Este ano", "label.timezone": "Fuso horário", "label.title": "Título", -"label.today": "Hoje", -"label.toggle-charts": "Mostrar/Esconder gráficos", +"label.today": "Hoje", +"label.toggle-charts": "Alternar gráficos", "label.total": "Total", -"label.total-records": "Total de registros", +"label.total-records": "Total de registros", "label.tracking-code": "Código de rastreamento", "label.transfer": "Transferir", "label.transfer-website": "Transferir site", -"label.true": "Verdadeiro", -"label.type": "Tipo", -"label.unique": "Único", +"label.true": "Sim", +"label.type": "Tipo", +"label.unique": "Únicos", "label.unique-visitors": "Visitantes únicos", "label.unknown": "Desconhecido", "label.untitled": "Sem título", -"label.update": "Atualizar", -"label.url": "URL", +"label.update": "Atualizar", +"label.url": "URL", "label.urls": "URLs", "label.user": "Usuário", -"label.username": "Nome de usuário", +"label.username": "Nome de usuário", "label.users": "Usuários", "label.utm": "UTM", -"label.utm-description": "Rastreie suas campanhas por meio de parâmetros UTM.", -"label.value": "Valor", +"label.utm-description": "Acompanhe suas campanhas de publicidade através de parâmetros UTM.", +"label.value": "Valor", "label.view": "Visualizar", -"label.view-details": "Ver detalhes", +"label.view-details": "Ver mais", "label.view-only": "Somente visualização", "label.views": "Visualizações", -"label.views-per-visit": "Visualizações por visita", -"label.visitors": "Visitantes", +"label.views-per-visit": "Visualizações por visita", +"label.visitors": "Visitantes", "label.visits": "Visitas", "label.website": "Site", -"label.website-id": "ID do site", +"label.website-id": "ID do site", "label.websites": "Sites", "label.window": "Janela", -"label.yesterday": "Ontem", -"message.action-confirmation": "Digite {confirmation} na caixa abaixo para confirmar.", -"message.active-users": "{x} {x, plural, one {visitante} other {visitantes}} neste momento", -"message.confirm-delete": "Deseja realmente remover {target}?", -"message.confirm-leave": "Você tem certeza que deseja sair de {target}?", -"message.confirm-remove": "Tem certeza que deseja remover {target}?", -"message.confirm-reset": "Tem certeza que deseja redefinir as estatísticas de {target}?", -"message.delete-team-warning": "Excluir um time também excluirá todos os sites do time.", -"message.delete-website-warning": "Todos os dados associados também serão excluídos.", +"label.yesterday": "Ontem", +"message.action-confirmation": "Digite {confirmation} na caixa abaixo para confirmar.", +"message.active-users": " Atualmente {x} usuários ativos", +"message.confirm-delete": "Tem certeza de que deseja excluir {target}?", +"message.confirm-leave": "Tem certeza de que deseja sair de {target}?", +"message.confirm-remove": "Tem certeza que deseja remover {target}?", +"message.confirm-reset": "Tem certeza que deseja redefinir os dados de {target}?", +"message.delete-team-warning": "Excluir a equipe também excluirá todos os sites da equipe.", +"message.delete-website-warning": "Todos os dados relacionados serão excluídos.", "message.error": "Ocorreu um erro.", "message.event-log": "{event} em {url}", "message.go-to-settings": "Ir para as configurações", -"message.incorrect-username-password": "Nome de usuário e/ou senha incorretos.", +"message.incorrect-username-password": "Nome de usuário ou senha incorretos.", "message.invalid-domain": "Domínio inválido", -"message.min-password-length": "Quantidade mínima de {n} caracteres", -"message.new-version-available": "Uma nova versão do Umami {version} está disponível!", -"message.no-data-available": "Sem dados disponíveis.", -"message.no-event-data": "Nenhum dado de evento disponível.", -"message.no-match-password": "As senhas não coincidem", -"message.no-results-found": "Nenhum resultado foi encontrado.", -"message.no-team-websites": "Este time não possui nenhum site.", -"message.no-teams": "Você não criou nenhum time.", +"message.min-password-length": "A senha deve ter no mínimo {n} caracteres", +"message.new-version-available": "Uma nova versão {version} do Umami está disponível!", +"message.no-data-available": "Não há dados disponíveis.", +"message.no-event-data": "Não há eventos disponíveis.", +"message.no-match-password": "As senhas não coincidem.", +"message.no-results-found": "Nenhum resultado encontrado.", +"message.no-team-websites": "Esta equipe não possui sites.", +"message.no-teams": "Você ainda não criou nenhuma equipe.", "message.no-users": "Não há usuários.", -"message.no-websites-configured": "Nenhum site foi configurado ainda.", +"message.no-websites-configured": "Você ainda não configurou nenhum site.", "message.page-not-found": "Página não encontrada.", -"message.reset-website": "Para redefinir este site, digite {confirmation} na caixa abaixo para confirmar.", -"message.reset-website-warning": "Todas as estatísticas deste site serão removidas, mas seu código de rastreamento permanecerá intacto.", +"message.reset-website": "Se você tiver certeza de que deseja redefinir este site, digite {confirmation} na caixa de entrada abaixo para confirmar.", +"message.reset-website-warning": "Todos os dados estatísticos deste site serão excluídos, mas seu código de rastreamento permanecerá o mesmo.", "message.saved": "Salvo com sucesso.", -"message.share-url": "Este é o link público de compartilhamento para {target}.", -"message.team-already-member": "Você já é um membro do time.", -"message.team-not-found": "Time não encontrado.", -"message.team-websites-info": "Os sites podem ser visualizados por qualquer membro da equipe.", +"message.share-url": "Este é o link para compartilhar {target}.", +"message.team-already-member": "Você já é membro desta equipe.", +"message.team-not-found": "Equipe não encontrada.", +"message.team-websites-info": "Qualquer membro da equipe pode visualizar os sites.", "message.tracking-code": "Código de rastreamento", -"message.transfer-team-website-to-user": "Transferir este site para a sua conta?", -"message.transfer-user-website-to-team": "Selecione o time para o qual deseja transferir este site.", -"message.transfer-website": "Transferir a propriedade do site para a sua conta ou para outro time.", +"message.transfer-team-website-to-user": "Transferir este site para sua conta?", +"message.transfer-user-website-to-team": "Selecione para qual equipe deseja transferir este site.", +"message.transfer-website": "Transfira a propriedade do site para sua conta ou para outra equipe.", "message.triggered-event": "Evento disparado", -"message.user-deleted": "Usuário removido.", +"message.user-deleted": "Usuário excluído.", "message.viewed-page": "Página visualizada", -"message.visitor-log": "Visitante de {country} usando {browser} no {device} {os}", -"message.visitors-dropped-off": "Visitantes que abandonaram" +"message.visitor-log": "Visitante de {country} usando o navegador {browser} em um {device} com sistema operacional {os}.", +"message.visitors-dropped-off": "Visitantes abandonados" } From fed261023c31e2626316e7a4d8757c60f7492107 Mon Sep 17 00:00:00 2001 From: Eddu Date: Thu, 9 May 2024 20:25:42 -0300 Subject: [PATCH 054/438] pt-br release --- src/lang/pt-BR.json | 333 ++++++++++++++++++++++---------------------- 1 file changed, 166 insertions(+), 167 deletions(-) diff --git a/src/lang/pt-BR.json b/src/lang/pt-BR.json index 8e3c9bfd4b..5c0425ea6a 100644 --- a/src/lang/pt-BR.json +++ b/src/lang/pt-BR.json @@ -78,170 +78,169 @@ "label.greater-than": "Maior que", "label.greater-than-equals": "Maior ou igual a", "label.insights": "Insights", - "label.insights-description": "Explore seus dados em mais detalhes usando filtros", - "label.insights-description": "Explore seus dados em mais detalhes usando filtros e segmentação por períodos.", -"label.is": "É igual a", -"label.is-not": "Não é igual a", -"label.is-not-set": "Não definido", -"label.is-set": "Definido", -"label.join": "Participar", -"label.join-team": "Participar da equipe", -"label.language": "Idioma", -"label.languages": "Idiomas", -"label.laptop": "Notebook", -"label.last-days": "Últimos {x} dias", -"label.last-hours": "Últimas {x} horas", -"label.last-months": "Últimos {x} meses", -"label.leave": "Sair", -"label.leave-team": "Sair da equipe", -"label.less-than": "Menor que", -"label.less-than-equals": "Menor ou igual a", -"label.login": "Entrar", -"label.logout": "Sair", -"label.manage": "Gerenciar", -"label.max": "Máximo", -"label.member": "Membro", -"label.members": "Membros", -"label.min": "Mínimo", -"label.mobile": "Celular", -"label.more": "Mais", -"label.my-account": "Minha conta", -"label.my-websites": "Meus sites", -"label.name": "Nome", -"label.new-password": "Nova senha", -"label.none": "Nenhum", -"label.number-of-records": "{x} {x, plural, one {registro} other {registros}}", -"label.ok": "OK", -"label.os": "Sistema operacional", -"label.overview": "Visão geral", -"label.owner": "Proprietário", -"label.page-of": "Página {current} de {total}", -"label.page-views": "Visualizações de página", -"label.pageTitle": "Título", -"label.pages": "Páginas", -"label.password": "Senha", -"label.powered-by": "Desenvolvido por {name}", -"label.profile": "Perfil", -"label.queries": "Consultas", -"label.query": "Consulta", -"label.query-parameters": "Parâmetros da consulta", -"label.realtime": "Tempo real", -"label.referrer": "Referência", -"label.referrers": "Referências", -"label.refresh": "Atualizar", -"label.regenerate": "Gerar novamente", -"label.region": "Estado", -"label.regions": "Estados", -"label.remove": "Remover", -"label.remove-member": "Remover membro", -"label.reports": "Relatórios", -"label.required": "Obrigatório", -"label.reset": "Redefinir", -"label.reset-website": "Redefinir dados", -"label.retention": "Retenção", -"label.retention-description": "Avalie a fidelidade dos seus usuários medindo a frequência com que eles retornam.", -"label.role": "Função", -"label.run-query": "Executar consulta", -"label.save": "Salvar", -"label.screens": "Tamanhos de tela", -"label.search": "Pesquisar", -"label.select": "Selecionar", -"label.select-date": "Selecionar data", -"label.select-role": "Selecionar função", -"label.select-website": "Selecionar site", -"label.sessions": "Sessões", -"label.settings": "Configurações", -"label.share-url": "Link para compartilhar", -"label.single-day": "Apenas um dia", -"label.steps": "Etapas", -"label.sum": "Soma", -"label.tablet": "Tablet", -"label.team": "Equipe", -"label.team-id": "ID da equipe", -"label.team-member": "Membro da equipe", -"label.team-name": "Nome da equipe", -"label.team-owner": "Proprietário da equipe", -"label.team-view-only": "Apenas visualização da equipe", -"label.team-websites": "Sites da equipe", -"label.teams": "Equipes", -"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": "Título", -"label.today": "Hoje", -"label.toggle-charts": "Alternar gráficos", -"label.total": "Total", -"label.total-records": "Total de registros", -"label.tracking-code": "Código de rastreamento", -"label.transfer": "Transferir", -"label.transfer-website": "Transferir site", -"label.true": "Sim", -"label.type": "Tipo", -"label.unique": "Únicos", -"label.unique-visitors": "Visitantes únicos", -"label.unknown": "Desconhecido", -"label.untitled": "Sem título", -"label.update": "Atualizar", -"label.url": "URL", -"label.urls": "URLs", -"label.user": "Usuário", -"label.username": "Nome de usuário", -"label.users": "Usuários", -"label.utm": "UTM", -"label.utm-description": "Acompanhe suas campanhas de publicidade através de parâmetros UTM.", -"label.value": "Valor", -"label.view": "Visualizar", -"label.view-details": "Ver mais", -"label.view-only": "Somente visualização", -"label.views": "Visualizações", -"label.views-per-visit": "Visualizações por visita", -"label.visitors": "Visitantes", -"label.visits": "Visitas", -"label.website": "Site", -"label.website-id": "ID do site", -"label.websites": "Sites", -"label.window": "Janela", -"label.yesterday": "Ontem", -"message.action-confirmation": "Digite {confirmation} na caixa abaixo para confirmar.", -"message.active-users": " Atualmente {x} usuários ativos", -"message.confirm-delete": "Tem certeza de que deseja excluir {target}?", -"message.confirm-leave": "Tem certeza de que deseja sair de {target}?", -"message.confirm-remove": "Tem certeza que deseja remover {target}?", -"message.confirm-reset": "Tem certeza que deseja redefinir os dados de {target}?", -"message.delete-team-warning": "Excluir a equipe também excluirá todos os sites da equipe.", -"message.delete-website-warning": "Todos os dados relacionados serão excluídos.", -"message.error": "Ocorreu um erro.", -"message.event-log": "{event} em {url}", -"message.go-to-settings": "Ir para as configurações", -"message.incorrect-username-password": "Nome de usuário ou senha incorretos.", -"message.invalid-domain": "Domínio inválido", -"message.min-password-length": "A senha deve ter no mínimo {n} caracteres", -"message.new-version-available": "Uma nova versão {version} do Umami está disponível!", -"message.no-data-available": "Não há dados disponíveis.", -"message.no-event-data": "Não há eventos disponíveis.", -"message.no-match-password": "As senhas não coincidem.", -"message.no-results-found": "Nenhum resultado encontrado.", -"message.no-team-websites": "Esta equipe não possui sites.", -"message.no-teams": "Você ainda não criou nenhuma equipe.", -"message.no-users": "Não há usuários.", -"message.no-websites-configured": "Você ainda não configurou nenhum site.", -"message.page-not-found": "Página não encontrada.", -"message.reset-website": "Se você tiver certeza de que deseja redefinir este site, digite {confirmation} na caixa de entrada abaixo para confirmar.", -"message.reset-website-warning": "Todos os dados estatísticos deste site serão excluídos, mas seu código de rastreamento permanecerá o mesmo.", -"message.saved": "Salvo com sucesso.", -"message.share-url": "Este é o link para compartilhar {target}.", -"message.team-already-member": "Você já é membro desta equipe.", -"message.team-not-found": "Equipe não encontrada.", -"message.team-websites-info": "Qualquer membro da equipe pode visualizar os sites.", -"message.tracking-code": "Código de rastreamento", -"message.transfer-team-website-to-user": "Transferir este site para sua conta?", -"message.transfer-user-website-to-team": "Selecione para qual equipe deseja transferir este site.", -"message.transfer-website": "Transfira a propriedade do site para sua conta ou para outra equipe.", -"message.triggered-event": "Evento disparado", -"message.user-deleted": "Usuário excluído.", -"message.viewed-page": "Página visualizada", -"message.visitor-log": "Visitante de {country} usando o navegador {browser} em um {device} com sistema operacional {os}.", -"message.visitors-dropped-off": "Visitantes abandonados" -} + "label.insights-description": "Explore seus dados em mais detalhes usando filtros", + "label.is": "É igual a", + "label.is-not": "Não é igual a", + "label.is-not-set": "Não definido", + "label.is-set": "Definido", + "label.join": "Participar", + "label.join-team": "Participar da equipe", + "label.language": "Idioma", + "label.languages": "Idiomas", + "label.laptop": "Notebook", + "label.last-days": "Últimos {x} dias", + "label.last-hours": "Últimas {x} horas", + "label.last-months": "Últimos {x} meses", + "label.leave": "Sair", + "label.leave-team": "Sair da equipe", + "label.less-than": "Menor que", + "label.less-than-equals": "Menor ou igual a", + "label.login": "Entrar", + "label.logout": "Sair", + "label.manage": "Gerenciar", + "label.max": "Máximo", + "label.member": "Membro", + "label.members": "Membros", + "label.min": "Mínimo", + "label.mobile": "Celular", + "label.more": "Mais", + "label.my-account": "Minha conta", + "label.my-websites": "Meus sites", + "label.name": "Nome", + "label.new-password": "Nova senha", + "label.none": "Nenhum", + "label.number-of-records": "{x} {x, plural, one {registro} other {registros}}", + "label.ok": "OK", + "label.os": "Sistema operacional", + "label.overview": "Visão geral", + "label.owner": "Proprietário", + "label.page-of": "Página {current} de {total}", + "label.page-views": "Visualizações de página", + "label.pageTitle": "Título", + "label.pages": "Páginas", + "label.password": "Senha", + "label.powered-by": "Desenvolvido por {name}", + "label.profile": "Perfil", + "label.queries": "Consultas", + "label.query": "Consulta", + "label.query-parameters": "Parâmetros da consulta", + "label.realtime": "Tempo real", + "label.referrer": "Referência", + "label.referrers": "Referências", + "label.refresh": "Atualizar", + "label.regenerate": "Gerar novamente", + "label.region": "Estado", + "label.regions": "Estados", + "label.remove": "Remover", + "label.remove-member": "Remover membro", + "label.reports": "Relatórios", + "label.required": "Obrigatório", + "label.reset": "Redefinir", + "label.reset-website": "Redefinir dados", + "label.retention": "Retenção", + "label.retention-description": "Avalie a fidelidade dos seus usuários medindo a frequência com que eles retornam.", + "label.role": "Função", + "label.run-query": "Executar consulta", + "label.save": "Salvar", + "label.screens": "Tamanhos de tela", + "label.search": "Pesquisar", + "label.select": "Selecionar", + "label.select-date": "Selecionar data", + "label.select-role": "Selecionar função", + "label.select-website": "Selecionar site", + "label.sessions": "Sessões", + "label.settings": "Configurações", + "label.share-url": "Link para compartilhar", + "label.single-day": "Apenas um dia", + "label.steps": "Etapas", + "label.sum": "Soma", + "label.tablet": "Tablet", + "label.team": "Equipe", + "label.team-id": "ID da equipe", + "label.team-member": "Membro da equipe", + "label.team-name": "Nome da equipe", + "label.team-owner": "Proprietário da equipe", + "label.team-view-only": "Apenas visualização da equipe", + "label.team-websites": "Sites da equipe", + "label.teams": "Equipes", + "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": "Título", + "label.today": "Hoje", + "label.toggle-charts": "Alternar gráficos", + "label.total": "Total", + "label.total-records": "Total de registros", + "label.tracking-code": "Código de rastreamento", + "label.transfer": "Transferir", + "label.transfer-website": "Transferir site", + "label.true": "Sim", + "label.type": "Tipo", + "label.unique": "Únicos", + "label.unique-visitors": "Visitantes únicos", + "label.unknown": "Desconhecido", + "label.untitled": "Sem título", + "label.update": "Atualizar", + "label.url": "URL", + "label.urls": "URLs", + "label.user": "Usuário", + "label.username": "Nome de usuário", + "label.users": "Usuários", + "label.utm": "UTM", + "label.utm-description": "Acompanhe suas campanhas de publicidade através de parâmetros UTM.", + "label.value": "Valor", + "label.view": "Visualizar", + "label.view-details": "Ver mais", + "label.view-only": "Somente visualização", + "label.views": "Visualizações", + "label.views-per-visit": "Visualizações por visita", + "label.visitors": "Visitantes", + "label.visits": "Visitas", + "label.website": "Site", + "label.website-id": "ID do site", + "label.websites": "Sites", + "label.window": "Janela", + "label.yesterday": "Ontem", + "message.action-confirmation": "Digite {confirmation} na caixa abaixo para confirmar.", + "message.active-users": " Atualmente {x} usuários ativos", + "message.confirm-delete": "Tem certeza de que deseja excluir {target}?", + "message.confirm-leave": "Tem certeza de que deseja sair de {target}?", + "message.confirm-remove": "Tem certeza que deseja remover {target}?", + "message.confirm-reset": "Tem certeza que deseja redefinir os dados de {target}?", + "message.delete-team-warning": "Excluir a equipe também excluirá todos os sites da equipe.", + "message.delete-website-warning": "Todos os dados relacionados serão excluídos.", + "message.error": "Ocorreu um erro.", + "message.event-log": "{event} em {url}", + "message.go-to-settings": "Ir para as configurações", + "message.incorrect-username-password": "Nome de usuário ou senha incorretos.", + "message.invalid-domain": "Domínio inválido", + "message.min-password-length": "A senha deve ter no mínimo {n} caracteres", + "message.new-version-available": "Uma nova versão {version} do Umami está disponível!", + "message.no-data-available": "Não há dados disponíveis.", + "message.no-event-data": "Não há eventos disponíveis.", + "message.no-match-password": "As senhas não coincidem.", + "message.no-results-found": "Nenhum resultado encontrado.", + "message.no-team-websites": "Esta equipe não possui sites.", + "message.no-teams": "Você ainda não criou nenhuma equipe.", + "message.no-users": "Não há usuários.", + "message.no-websites-configured": "Você ainda não configurou nenhum site.", + "message.page-not-found": "Página não encontrada.", + "message.reset-website": "Se você tiver certeza de que deseja redefinir este site, digite {confirmation} na caixa de entrada abaixo para confirmar.", + "message.reset-website-warning": "Todos os dados estatísticos deste site serão excluídos, mas seu código de rastreamento permanecerá o mesmo.", + "message.saved": "Salvo com sucesso.", + "message.share-url": "Este é o link para compartilhar {target}.", + "message.team-already-member": "Você já é membro desta equipe.", + "message.team-not-found": "Equipe não encontrada.", + "message.team-websites-info": "Qualquer membro da equipe pode visualizar os sites.", + "message.tracking-code": "Código de rastreamento", + "message.transfer-team-website-to-user": "Transferir este site para sua conta?", + "message.transfer-user-website-to-team": "Selecione para qual equipe deseja transferir este site.", + "message.transfer-website": "Transfira a propriedade do site para sua conta ou para outra equipe.", + "message.triggered-event": "Evento disparado", + "message.user-deleted": "Usuário excluído.", + "message.viewed-page": "Página visualizada", + "message.visitor-log": "Visitante de {country} usando o navegador {browser} em um {device} com sistema operacional {os}.", + "message.visitors-dropped-off": "Visitantes abandonados" + } From 92a45f9d91537205b43afa5ff92a2c290ce5ea17 Mon Sep 17 00:00:00 2001 From: Eddu Date: Thu, 9 May 2024 23:07:13 -0300 Subject: [PATCH 055/438] pt-br release --- public/intl/messages/pt-BR.json | 320 ++++++++++++++++---------------- 1 file changed, 163 insertions(+), 157 deletions(-) diff --git a/public/intl/messages/pt-BR.json b/public/intl/messages/pt-BR.json index f142817f45..cde65c3848 100644 --- a/public/intl/messages/pt-BR.json +++ b/public/intl/messages/pt-BR.json @@ -14,31 +14,31 @@ "label.activity-log": [ { "type": 0, - "value": "Log de atividade" + "value": "Registro de atividades" } ], "label.add": [ { "type": 0, - "value": "Add" + "value": "Adicionar" } ], "label.add-description": [ { "type": 0, - "value": "Add description" + "value": "Adicionar descrição" } ], "label.add-member": [ { "type": 0, - "value": "Add member" + "value": "Adicionar membro" } ], "label.add-step": [ { "type": 0, - "value": "Add step" + "value": "Adicionar etapa" } ], "label.add-website": [ @@ -56,7 +56,7 @@ "label.after": [ { "type": 0, - "value": "Depois" + "value": "Depois de" } ], "label.all": [ @@ -74,19 +74,19 @@ "label.analytics": [ { "type": 0, - "value": "Estatísticas" + "value": "Análises" } ], "label.average": [ { "type": 0, - "value": "Average" + "value": "Média" } ], "label.average-visit-time": [ { "type": 0, - "value": "Tempo médio da visita" + "value": "Tempo médio de visita" } ], "label.back": [ @@ -98,7 +98,7 @@ "label.before": [ { "type": 0, - "value": "Antes" + "value": "Antes de" } ], "label.bounce-rate": [ @@ -110,13 +110,13 @@ "label.breakdown": [ { "type": 0, - "value": "Breakdown" + "value": "Detalhamento" } ], "label.browser": [ { "type": 0, - "value": "Browser" + "value": "Navegador" } ], "label.browsers": [ @@ -134,7 +134,7 @@ "label.change-password": [ { "type": 0, - "value": "Alterar a senha" + "value": "Alterar senha" } ], "label.cities": [ @@ -146,7 +146,7 @@ "label.city": [ { "type": 0, - "value": "City" + "value": "Cidade" } ], "label.clear-all": [ @@ -164,13 +164,13 @@ "label.confirm-password": [ { "type": 0, - "value": "Confirme a nova senha" + "value": "Confirmar senha" } ], "label.contains": [ { "type": 0, - "value": "Contains" + "value": "Contém" } ], "label.continue": [ @@ -188,13 +188,13 @@ "label.country": [ { "type": 0, - "value": "Country" + "value": "País" } ], "label.create": [ { "type": 0, - "value": "Create" + "value": "Criar" } ], "label.create-report": [ @@ -206,7 +206,7 @@ "label.create-team": [ { "type": 0, - "value": "Criar time" + "value": "Criar equipe" } ], "label.create-user": [ @@ -224,7 +224,7 @@ "label.created-by": [ { "type": 0, - "value": "Created By" + "value": "Criado por" } ], "label.current-password": [ @@ -248,13 +248,13 @@ "label.data": [ { "type": 0, - "value": "Data" + "value": "Dados" } ], "label.date": [ { "type": 0, - "value": "Date" + "value": "Data" } ], "label.date-range": [ @@ -266,43 +266,43 @@ "label.day": [ { "type": 0, - "value": "Day" + "value": "Dia" } ], "label.default-date-range": [ { "type": 0, - "value": "Intervalo de datas predefinido" + "value": "Intervalo padrão de datas" } ], "label.delete": [ { "type": 0, - "value": "Remover" + "value": "Excluir" } ], "label.delete-report": [ { "type": 0, - "value": "Delete report" + "value": "Excluir relatório" } ], "label.delete-team": [ { "type": 0, - "value": "Remover time" + "value": "Excluir equipe" } ], "label.delete-user": [ { "type": 0, - "value": "Remover usuário" + "value": "Excluir usuário" } ], "label.delete-website": [ { "type": 0, - "value": "Remover site" + "value": "Excluir site" } ], "label.description": [ @@ -314,7 +314,7 @@ "label.desktop": [ { "type": 0, - "value": "Computador" + "value": "Desktop" } ], "label.details": [ @@ -326,7 +326,7 @@ "label.device": [ { "type": 0, - "value": "Device" + "value": "Dispositivo" } ], "label.devices": [ @@ -344,7 +344,7 @@ "label.does-not-contain": [ { "type": 0, - "value": "Does not contain" + "value": "Não contém" } ], "label.domain": [ @@ -356,7 +356,7 @@ "label.dropoff": [ { "type": 0, - "value": "Dropoff" + "value": "Queda" } ], "label.edit": [ @@ -368,19 +368,19 @@ "label.edit-dashboard": [ { "type": 0, - "value": "Editar painel" + "value": "Editar dashboard" } ], "label.edit-member": [ { "type": 0, - "value": "Edit member" + "value": "Editar membro" } ], "label.enable-share-url": [ { "type": 0, - "value": "Ativar link de compartilhamento" + "value": "Habilitar URL de compartilhamento" } ], "label.event": [ @@ -392,7 +392,7 @@ "label.event-data": [ { "type": 0, - "value": "Event data" + "value": "Dados do evento" } ], "label.events": [ @@ -404,7 +404,7 @@ "label.false": [ { "type": 0, - "value": "False" + "value": "Falso" } ], "label.field": [ @@ -422,7 +422,7 @@ "label.filter": [ { "type": 0, - "value": "Filter" + "value": "Filtro" } ], "label.filter-combined": [ @@ -434,13 +434,13 @@ "label.filter-raw": [ { "type": 0, - "value": "Dados brutos" + "value": "Bruto" } ], "label.filters": [ { "type": 0, - "value": "Filters" + "value": "Filtros" } ], "label.funnel": [ @@ -452,7 +452,7 @@ "label.funnel-description": [ { "type": 0, - "value": "Understand the conversion and drop-off rate of users." + "value": "Entenda a conversão e a taxa de abandono dos usuários." } ], "label.greater-than": [ @@ -464,7 +464,7 @@ "label.greater-than-equals": [ { "type": 0, - "value": "Maior que ou igual" + "value": "Maior que ou igual a" } ], "label.insights": [ @@ -476,43 +476,43 @@ "label.insights-description": [ { "type": 0, - "value": "Dive deeper into your data by using segments and filters." + "value": "Explore seus dados mais profundamente usando segmentos e filtros." } ], "label.is": [ { "type": 0, - "value": "Is" + "value": "É" } ], "label.is-not": [ { "type": 0, - "value": "Is not" + "value": "Não é" } ], "label.is-not-set": [ { "type": 0, - "value": "Is not set" + "value": "Não está definido" } ], "label.is-set": [ { "type": 0, - "value": "Is set" + "value": "Está definido" } ], "label.join": [ { "type": 0, - "value": "Entrar" + "value": "Participar" } ], "label.join-team": [ { "type": 0, - "value": "Entrar no time" + "value": "Entrar na equipe" } ], "label.language": [ @@ -530,7 +530,7 @@ "label.laptop": [ { "type": 0, - "value": "Notebook" + "value": "Laptop" } ], "label.last-days": [ @@ -564,7 +564,7 @@ "label.last-months": [ { "type": 0, - "value": "Last " + "value": "Últimos " }, { "type": 1, @@ -572,7 +572,7 @@ }, { "type": 0, - "value": " months" + "value": " meses" } ], "label.leave": [ @@ -584,49 +584,49 @@ "label.leave-team": [ { "type": 0, - "value": "Sair do time" + "value": "Sair da equipe" } ], "label.less-than": [ { "type": 0, - "value": "Menor que" + "value": "Menos que" } ], "label.less-than-equals": [ { "type": 0, - "value": "Menor que ou igual" + "value": "Menos que ou igual a" } ], "label.login": [ { "type": 0, - "value": "Iniciar sessão" + "value": "Login" } ], "label.logout": [ { "type": 0, - "value": "Sair" + "value": "Logout" } ], "label.manage": [ { "type": 0, - "value": "Manage" + "value": "Gerenciar" } ], "label.max": [ { "type": 0, - "value": "Max" + "value": "Máx" } ], "label.member": [ { "type": 0, - "value": "Member" + "value": "Membro" } ], "label.members": [ @@ -638,7 +638,7 @@ "label.min": [ { "type": 0, - "value": "Min" + "value": "Mín" } ], "label.mobile": [ @@ -656,13 +656,13 @@ "label.my-account": [ { "type": 0, - "value": "My account" + "value": "Minha conta" } ], "label.my-websites": [ { "type": 0, - "value": "My websites" + "value": "Meus sites" } ], "label.name": [ @@ -699,7 +699,7 @@ "value": [ { "type": 0, - "value": "record" + "value": "registro" } ] }, @@ -707,7 +707,7 @@ "value": [ { "type": 0, - "value": "records" + "value": "registro" } ] } @@ -726,13 +726,13 @@ "label.os": [ { "type": 0, - "value": "OS" + "value": "SO" } ], "label.overview": [ { "type": 0, - "value": "Overview" + "value": "Visão geral" } ], "label.owner": [ @@ -744,7 +744,7 @@ "label.page-of": [ { "type": 0, - "value": "Page " + "value": "Página " }, { "type": 1, @@ -752,7 +752,7 @@ }, { "type": 0, - "value": " of " + "value": " de " }, { "type": 1, @@ -768,7 +768,7 @@ "label.pageTitle": [ { "type": 0, - "value": "Page title" + "value": "Título da página" } ], "label.pages": [ @@ -786,7 +786,7 @@ "label.powered-by": [ { "type": 0, - "value": "Distribuído por " + "value": "Desenvolvido por " }, { "type": 1, @@ -802,19 +802,19 @@ "label.queries": [ { "type": 0, - "value": "Parâmetros" + "value": "Consultas" } ], "label.query": [ { "type": 0, - "value": "Query" + "value": "Consulta" } ], "label.query-parameters": [ { "type": 0, - "value": "Parâmetros de Consulta" + "value": "Parâmetros de consulta" } ], "label.realtime": [ @@ -826,13 +826,13 @@ "label.referrer": [ { "type": 0, - "value": "Referrer" + "value": "Referenciador" } ], "label.referrers": [ { "type": 0, - "value": "Referências" + "value": "Referenciadores" } ], "label.refresh": [ @@ -850,7 +850,7 @@ "label.region": [ { "type": 0, - "value": "Region" + "value": "Região" } ], "label.regions": [ @@ -868,13 +868,13 @@ "label.remove-member": [ { "type": 0, - "value": "Remove member" + "value": "Remover membro" } ], "label.reports": [ { "type": 0, - "value": "Reports" + "value": "Relatórios" } ], "label.required": [ @@ -892,31 +892,31 @@ "label.reset-website": [ { "type": 0, - "value": "Redefinir estatísticas" + "value": "Redefinir site" } ], "label.retention": [ { "type": 0, - "value": "Retention" + "value": "Retenção" } ], "label.retention-description": [ { "type": 0, - "value": "Measure your website stickiness by tracking how often users return." + "value": "Meça a aderência do seu website monitorando a frequência com que os usuários retornam." } ], "label.role": [ { "type": 0, - "value": "Papel" + "value": "Função" } ], "label.run-query": [ { "type": 0, - "value": "Executar query" + "value": "Executar consulta" } ], "label.save": [ @@ -934,13 +934,13 @@ "label.search": [ { "type": 0, - "value": "Search" + "value": "Buscar" } ], "label.select": [ { "type": 0, - "value": "Select" + "value": "Selecionar" } ], "label.select-date": [ @@ -952,7 +952,7 @@ "label.select-role": [ { "type": 0, - "value": "Select role" + "value": "Selecionar função" } ], "label.select-website": [ @@ -976,25 +976,25 @@ "label.share-url": [ { "type": 0, - "value": "Link de compartilhamento" + "value": "Compartilhar URL" } ], "label.single-day": [ { "type": 0, - "value": "Dia específico" + "value": "Dia único" } ], "label.steps": [ { "type": 0, - "value": "Steps" + "value": "Passos" } ], "label.sum": [ { "type": 0, - "value": "Sum" + "value": "Soma" } ], "label.tablet": [ @@ -1006,49 +1006,49 @@ "label.team": [ { "type": 0, - "value": "Time" + "value": "Equipe" } ], "label.team-id": [ { "type": 0, - "value": "ID do Time" + "value": "ID da Equipe" } ], "label.team-member": [ { "type": 0, - "value": "Membro" + "value": "Membro da equipe" } ], "label.team-name": [ { "type": 0, - "value": "Team name" + "value": "Nome da equipe" } ], "label.team-owner": [ { "type": 0, - "value": "Proprietário" + "value": "Proprietário da equipe" } ], "label.team-view-only": [ { "type": 0, - "value": "Team view only" + "value": "Equipe Somente leitura" } ], "label.team-websites": [ { "type": 0, - "value": "Team websites" + "value": "Sites daequipe" } ], "label.teams": [ { "type": 0, - "value": "Times" + "value": "Equipes" } ], "label.theme": [ @@ -1096,7 +1096,7 @@ "label.toggle-charts": [ { "type": 0, - "value": "Mostrar/Esconder gráficos" + "value": "Alternar gráficos" } ], "label.total": [ @@ -1108,7 +1108,7 @@ "label.total-records": [ { "type": 0, - "value": "Total records" + "value": "Total de registros" } ], "label.tracking-code": [ @@ -1120,19 +1120,19 @@ "label.transfer": [ { "type": 0, - "value": "Transfer" + "value": "Transferir" } ], "label.transfer-website": [ { "type": 0, - "value": "Transfer website" + "value": "Transferir site" } ], "label.true": [ { "type": 0, - "value": "True" + "value": "Verdadeiro" } ], "label.type": [ @@ -1168,7 +1168,7 @@ "label.update": [ { "type": 0, - "value": "Update" + "value": "Atualizar" } ], "label.url": [ @@ -1210,7 +1210,7 @@ "label.utm-description": [ { "type": 0, - "value": "Track your campaigns through UTM parameters." + "value": "Acompanhe suas campanhas por meio de parâmetros UTM." } ], "label.value": [ @@ -1222,7 +1222,7 @@ "label.view": [ { "type": 0, - "value": "Ver" + "value": "Visualizar" } ], "label.view-details": [ @@ -1234,7 +1234,7 @@ "label.view-only": [ { "type": 0, - "value": "Somente visualização" + "value": "Somente leitura" } ], "label.views": [ @@ -1246,7 +1246,7 @@ "label.views-per-visit": [ { "type": 0, - "value": "Views per visit" + "value": "Visualizações por visita" } ], "label.visitors": [ @@ -1258,19 +1258,19 @@ "label.visits": [ { "type": 0, - "value": "Visits" + "value": "Visitas" } ], "label.website": [ { "type": 0, - "value": "Website" + "value": "Site" } ], "label.website-id": [ { "type": 0, - "value": "ID do Site" + "value": "ID do site" } ], "label.websites": [ @@ -1294,7 +1294,7 @@ "message.action-confirmation": [ { "type": 0, - "value": "Type " + "value": "Digite " }, { "type": 1, @@ -1302,7 +1302,7 @@ }, { "type": 0, - "value": " in the box below to confirm." + "value": " na caixa abaixo para confirmar." } ], "message.active-users": [ @@ -1346,7 +1346,7 @@ "message.confirm-delete": [ { "type": 0, - "value": "Deseja realmente remover " + "value": "Tem certeza que deseja excluir " }, { "type": 1, @@ -1360,7 +1360,7 @@ "message.confirm-leave": [ { "type": 0, - "value": "Você tem certeza que deseja sair de " + "value": "Tem certeza que deseja sair de " }, { "type": 1, @@ -1374,7 +1374,7 @@ "message.confirm-remove": [ { "type": 0, - "value": "Are you sure you want to remove " + "value": "Tem certeza que deseja remover " }, { "type": 1, @@ -1388,7 +1388,7 @@ "message.confirm-reset": [ { "type": 0, - "value": "Você tem certeza que deseja redefinir as estatísticas de " + "value": "Tem certeza que deseja redefinir " }, { "type": 1, @@ -1402,19 +1402,19 @@ "message.delete-team-warning": [ { "type": 0, - "value": "Deleting a team will also delete all team websites." + "value": "Excluir uma equipe também excluirá todos os sites da equipe." } ], "message.delete-website-warning": [ { "type": 0, - "value": "Todos os dados associados também serão eliminados." + "value": "Todos os dados do site serão excluídos." } ], "message.error": [ { "type": 0, - "value": "Ocorreu um erro." + "value": "Algo deu errado." } ], "message.event-log": [ @@ -1434,25 +1434,25 @@ "message.go-to-settings": [ { "type": 0, - "value": "Ir para as configurações" + "value": "Ir para configurações" } ], "message.incorrect-username-password": [ { "type": 0, - "value": "O nome de usuário e/ou senha está incorreto." + "value": "Nome de usuário e/ou senha incorretos." } ], "message.invalid-domain": [ { "type": 0, - "value": "Domínio inválido" + "value": "Domínio inválido. Não inclua http/https." } ], "message.min-password-length": [ { "type": 0, - "value": "Quantidade mínima de " + "value": "Tamanho mínimo de " }, { "type": 1, @@ -1480,7 +1480,7 @@ "message.no-data-available": [ { "type": 0, - "value": "Sem dados disponíveis." + "value": "Nenhum dado disponível." } ], "message.no-event-data": [ @@ -1492,43 +1492,43 @@ "message.no-match-password": [ { "type": 0, - "value": "As senhas não correspondem" + "value": "As senhas não coincidem." } ], "message.no-results-found": [ { "type": 0, - "value": "Nenhum resultado foi encontrado." + "value": "Nenhum resultado encontrado." } ], "message.no-team-websites": [ { "type": 0, - "value": "Este time não possui nenhum site." + "value": "Esta equipe não possui nenhum site." } ], "message.no-teams": [ { "type": 0, - "value": "Você não criou nenhum time." + "value": "Você não criou nenhuma equipe." } ], "message.no-users": [ { "type": 0, - "value": "Não há nenhum usuário." + "value": "Não há usuários." } ], "message.no-websites-configured": [ { "type": 0, - "value": "Nenhum site foi configurado ainda." + "value": "Você não possui nenhum site configurado." } ], "message.page-not-found": [ { "type": 0, - "value": "Página não encontrada." + "value": "Página não encontrada" } ], "message.reset-website": [ @@ -1548,39 +1548,31 @@ "message.reset-website-warning": [ { "type": 0, - "value": "Todas as estatísticas deste site serão removidas, mas seu código de rastreamento permanecerá intacto." + "value": "Todas as estatísticas deste site serão excluídas, mas suas configurações permanecerão intactas." } ], "message.saved": [ { "type": 0, - "value": "Salvo com sucesso." + "value": "Salvo." } ], "message.share-url": [ { "type": 0, - "value": "Este é o link público de compartilhamento para " - }, - { - "type": 1, - "value": "target" - }, - { - "type": 0, - "value": "." + "value": "As estatísticas do seu site estão publicamente disponíveis no seguinte URL:" } ], "message.team-already-member": [ { "type": 0, - "value": "Você já um membro do time." + "value": "Você já é um membro da equipe." } ], "message.team-not-found": [ { "type": 0, - "value": "Time não encontrado." + "value": "Equipe não encontrada." } ], "message.team-websites-info": [ @@ -1592,43 +1584,57 @@ "message.tracking-code": [ { "type": 0, - "value": "Código de rastreamento" + "value": "Para rastrear estatísticas para este site, coloque o código a seguir na seção " + }, + { + "children": [ + { + "type": 0, + "value": "..." + } + ], + "type": 8, + "value": "head" + }, + { + "type": 0, + "value": " do HTML." } ], "message.transfer-team-website-to-user": [ { "type": 0, - "value": "Transfer this website to your account?" + "value": "Transferir este website para a sua conta?" } ], "message.transfer-user-website-to-team": [ { "type": 0, - "value": "Select the team to transfer this website to." + "value": "Selecione a equipe para a qual deseja transferir este site." } ], "message.transfer-website": [ { "type": 0, - "value": "Transfer website ownership to your account or another team." + "value": "Transfira a propriedade do site para sua conta ou outra equipe." } ], "message.triggered-event": [ { "type": 0, - "value": "Triggered event" + "value": "Evento acionado" } ], "message.user-deleted": [ { "type": 0, - "value": "Usuário removido." + "value": "Usuário excluído." } ], "message.viewed-page": [ { "type": 0, - "value": "Viewed page" + "value": "Página visualizada" } ], "message.visitor-log": [ @@ -1654,7 +1660,7 @@ }, { "type": 1, - "value": "device" + "value": "os" }, { "type": 0, @@ -1662,13 +1668,13 @@ }, { "type": 1, - "value": "os" + "value": "device" } ], "message.visitors-dropped-off": [ { "type": 0, - "value": "Visitors dropped off" + "value": "Visitantes abandonaram o site" } ] } From 6060ff7be0587d5b4e573dd49bd21d4a96658841 Mon Sep 17 00:00:00 2001 From: Eddu Date: Thu, 9 May 2024 23:43:24 -0300 Subject: [PATCH 056/438] spelling corrections --- public/intl/messages/pt-BR.json | 34 ++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/public/intl/messages/pt-BR.json b/public/intl/messages/pt-BR.json index cde65c3848..c7cb8797fc 100644 --- a/public/intl/messages/pt-BR.json +++ b/public/intl/messages/pt-BR.json @@ -392,7 +392,7 @@ "label.event-data": [ { "type": 0, - "value": "Dados do evento" + "value": "Dados de eventos" } ], "label.events": [ @@ -470,13 +470,13 @@ "label.insights": [ { "type": 0, - "value": "Insights" + "value": "Compreensão" } ], "label.insights-description": [ { "type": 0, - "value": "Explore seus dados mais profundamente usando segmentos e filtros." + "value": "Explore seus dados mais profundamente usando campos e filtros." } ], "label.is": [ @@ -608,7 +608,7 @@ "label.logout": [ { "type": 0, - "value": "Logout" + "value": "Sair" } ], "label.manage": [ @@ -650,7 +650,7 @@ "label.more": [ { "type": 0, - "value": "Mais" + "value": "Ver todos" } ], "label.my-account": [ @@ -726,7 +726,7 @@ "label.os": [ { "type": 0, - "value": "SO" + "value": "Sistema operacional" } ], "label.overview": [ @@ -738,7 +738,7 @@ "label.owner": [ { "type": 0, - "value": "Proprietário" + "value": "Criado por" } ], "label.page-of": [ @@ -802,19 +802,19 @@ "label.queries": [ { "type": 0, - "value": "Consultas" + "value": "Parâmetros" } ], "label.query": [ { "type": 0, - "value": "Consulta" + "value": "Parâmetro" } ], "label.query-parameters": [ { "type": 0, - "value": "Parâmetros de consulta" + "value": "Chave-valor de parâmetro" } ], "label.realtime": [ @@ -826,13 +826,13 @@ "label.referrer": [ { "type": 0, - "value": "Referenciador" + "value": "Origem" } ], "label.referrers": [ { "type": 0, - "value": "Referenciadores" + "value": "Origens" } ], "label.refresh": [ @@ -892,7 +892,7 @@ "label.reset-website": [ { "type": 0, - "value": "Redefinir site" + "value": "Apagar dados do site" } ], "label.retention": [ @@ -916,7 +916,7 @@ "label.run-query": [ { "type": 0, - "value": "Executar consulta" + "value": "Realizar consulta" } ], "label.save": [ @@ -1030,7 +1030,7 @@ "label.team-owner": [ { "type": 0, - "value": "Proprietário da equipe" + "value": "Criador da equipe" } ], "label.team-view-only": [ @@ -1096,7 +1096,7 @@ "label.toggle-charts": [ { "type": 0, - "value": "Alternar gráficos" + "value": "Esconder gráficos" } ], "label.total": [ @@ -1560,7 +1560,7 @@ "message.share-url": [ { "type": 0, - "value": "As estatísticas do seu site estão publicamente disponíveis no seguinte URL:" + "value": "As estatísticas do seu site estão publicamente disponíveis na seguinte URL:" } ], "message.team-already-member": [ From 8b6b81cfeecab66e37bdbc25bfed4dc00481fa6e Mon Sep 17 00:00:00 2001 From: Eddu Date: Thu, 9 May 2024 23:47:25 -0300 Subject: [PATCH 057/438] small spelling corrections --- public/intl/messages/pt-BR.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/public/intl/messages/pt-BR.json b/public/intl/messages/pt-BR.json index c7cb8797fc..27a648d3c5 100644 --- a/public/intl/messages/pt-BR.json +++ b/public/intl/messages/pt-BR.json @@ -748,7 +748,7 @@ }, { "type": 1, - "value": "current" + "value": "átual" }, { "type": 0, @@ -1470,7 +1470,7 @@ }, { "type": 1, - "value": "version" + "value": "versão" }, { "type": 0, @@ -1644,7 +1644,7 @@ }, { "type": 1, - "value": "country" + "value": "país" }, { "type": 0, @@ -1652,7 +1652,7 @@ }, { "type": 1, - "value": "browser" + "value": "navegador" }, { "type": 0, @@ -1668,7 +1668,7 @@ }, { "type": 1, - "value": "device" + "value": "dispositivo" } ], "message.visitors-dropped-off": [ From 9f43ae67ef8fab7917847f9e4db793983798fee4 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Fri, 10 May 2024 11:15:23 -0700 Subject: [PATCH 058/438] Updated styling of goals report. --- .../[reportId]/ParameterList.module.css | 19 ++++- .../reports/[reportId]/ParameterList.tsx | 7 +- .../(main)/reports/create/ReportTemplates.tsx | 3 +- .../funnel/FunnelParameters.module.css | 4 - .../reports/funnel/FunnelParameters.tsx | 4 +- src/app/(main)/reports/goals/GoalsAddForm.tsx | 2 - .../reports/goals/GoalsChart.module.css | 78 ++++++++++--------- src/app/(main)/reports/goals/GoalsChart.tsx | 27 ++++--- .../reports/goals/GoalsParameters.module.css | 18 +---- .../(main)/reports/goals/GoalsParameters.tsx | 11 +-- src/app/(main)/reports/goals/GoalsReport.tsx | 4 +- src/assets/target.svg | 1 + 12 files changed, 93 insertions(+), 85 deletions(-) create mode 100644 src/assets/target.svg diff --git a/src/app/(main)/reports/[reportId]/ParameterList.module.css b/src/app/(main)/reports/[reportId]/ParameterList.module.css index fca087ca91..75860b2565 100644 --- a/src/app/(main)/reports/[reportId]/ParameterList.module.css +++ b/src/app/(main)/reports/[reportId]/ParameterList.module.css @@ -6,11 +6,24 @@ .item { display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; + gap: 12px; + width: 100%; + flex-wrap: nowrap; padding: 12px; border: 1px solid var(--base400); border-radius: var(--border-radius); box-shadow: 1px 1px 1px var(--base400); } + +.value { + display: flex; + flex-direction: row; + align-items: center; + flex-wrap: wrap; + flex: 1; +} + +.icon, +.close { + height: 1.5rem; +} diff --git a/src/app/(main)/reports/[reportId]/ParameterList.tsx b/src/app/(main)/reports/[reportId]/ParameterList.tsx index f2ac988fc6..d4b6477bb5 100644 --- a/src/app/(main)/reports/[reportId]/ParameterList.tsx +++ b/src/app/(main)/reports/[reportId]/ParameterList.tsx @@ -24,18 +24,21 @@ export function ParameterList({ children }: ParameterListProps) { const Item = ({ children, className, + icon, onClick, onRemove, }: { children?: ReactNode; className?: string; + icon?: ReactNode; onClick?: () => void; onRemove?: () => void; }) => { return (
- {children} - + {icon && {icon}} +
{children}
+
diff --git a/src/app/(main)/reports/create/ReportTemplates.tsx b/src/app/(main)/reports/create/ReportTemplates.tsx index ac29f5c31d..fdf5c5f527 100644 --- a/src/app/(main)/reports/create/ReportTemplates.tsx +++ b/src/app/(main)/reports/create/ReportTemplates.tsx @@ -5,6 +5,7 @@ import Funnel from 'assets/funnel.svg'; import Lightbulb from 'assets/lightbulb.svg'; import Magnet from 'assets/magnet.svg'; import Tag from 'assets/tag.svg'; +import Target from 'assets/target.svg'; import styles from './ReportTemplates.module.css'; import { useMessages, useTeamUrl } from 'components/hooks'; @@ -41,7 +42,7 @@ export function ReportTemplates({ showHeader = true }: { showHeader?: boolean }) title: formatMessage(labels.goals), description: formatMessage(labels.goalsDescription), url: renderTeamUrl('/reports/goals'), - icon: , + icon: , }, ]; diff --git a/src/app/(main)/reports/funnel/FunnelParameters.module.css b/src/app/(main)/reports/funnel/FunnelParameters.module.css index 219b980763..0f27d515f2 100644 --- a/src/app/(main)/reports/funnel/FunnelParameters.module.css +++ b/src/app/(main)/reports/funnel/FunnelParameters.module.css @@ -5,10 +5,6 @@ width: 100%; } -.type { - color: var(--base700); -} - .value { display: flex; align-self: center; diff --git a/src/app/(main)/reports/funnel/FunnelParameters.tsx b/src/app/(main)/reports/funnel/FunnelParameters.tsx index 7b1fb0c810..ef4ffbfb55 100644 --- a/src/app/(main)/reports/funnel/FunnelParameters.tsx +++ b/src/app/(main)/reports/funnel/FunnelParameters.tsx @@ -93,12 +93,10 @@ export function FunnelParameters() { : } onRemove={() => handleRemoveStep(index)} >
-
- {step.type === 'url' ? : } -
{step.value}
diff --git a/src/app/(main)/reports/goals/GoalsAddForm.tsx b/src/app/(main)/reports/goals/GoalsAddForm.tsx index fdfa7aad9b..a8a77c58e8 100644 --- a/src/app/(main)/reports/goals/GoalsAddForm.tsx +++ b/src/app/(main)/reports/goals/GoalsAddForm.tsx @@ -76,11 +76,9 @@ export function GoalsAddForm({ className={styles.input} value={goal?.toString()} onChange={e => handleChange(e, setGoal)} - autoFocus={true} autoComplete="off" onKeyDown={handleKeyDown} /> - . diff --git a/src/app/(main)/reports/goals/GoalsChart.module.css b/src/app/(main)/reports/goals/GoalsChart.module.css index c9f158d2fe..799f5fddcd 100644 --- a/src/app/(main)/reports/goals/GoalsChart.module.css +++ b/src/app/(main)/reports/goals/GoalsChart.module.css @@ -1,27 +1,15 @@ .chart { display: grid; + gap: 30px; } -.num { - display: flex; - align-items: center; - justify-content: center; - border-radius: 100%; - width: 50px; - height: 50px; - font-size: 16px; - font-weight: 700; - color: var(--base800); - background: var(--base100); - z-index: 1; +.goal { + padding-bottom: 40px; + border-bottom: 1px solid var(--base400); } -.step { - display: grid; - grid-template-columns: max-content 1fr; - column-gap: 30px; - position: relative; - padding-bottom: 60px; +.goal:last-child { + border: 0; } .card { @@ -36,28 +24,12 @@ gap: 20px; } -.bar { - display: flex; - align-items: center; - justify-content: flex-end; - background: var(--base900); - height: 30px; - border-radius: 5px; - overflow: hidden; - position: relative; -} - .label { color: var(--base600); font-weight: 700; text-transform: uppercase; } -.track { - background-color: var(--base100); - border-radius: 5px; -} - .item { font-size: 20px; color: var(--base900); @@ -73,7 +45,7 @@ text-transform: lowercase; } -.visitors { +.value { color: var(--base900); font-size: 24px; font-weight: 900; @@ -85,3 +57,39 @@ font-weight: 700; align-self: flex-end; } + +.total { + color: var(--base700); +} + +.bar { + display: flex; + align-items: center; + justify-content: flex-end; + background: var(--base900); + height: 10px; + border-radius: 5px; + overflow: hidden; + position: relative; +} + +.bar.level1 { + background: var(--red800); +} +.bar.level2 { + background: var(--orange200); +} +.bar.level3 { + background: var(--orange400); +} +.bar.level4 { + background: var(--orange600); +} +.bar.level5 { + background: var(--green600); +} + +.track { + background-color: var(--base100); + border-radius: 5px; +} diff --git a/src/app/(main)/reports/goals/GoalsChart.tsx b/src/app/(main)/reports/goals/GoalsChart.tsx index f20c4f9b36..910f138c57 100644 --- a/src/app/(main)/reports/goals/GoalsChart.tsx +++ b/src/app/(main)/reports/goals/GoalsChart.tsx @@ -14,9 +14,10 @@ export function GoalsChart({ className }: { className?: string; isLoading?: bool return (
{data?.map(({ type, value, goal, result }, index: number) => { + const percent = result > goal ? 100 : (result / goal) * 100; + return ( -
-
{index + 1}
+
@@ -25,20 +26,24 @@ export function GoalsChart({ className }: { className?: string; isLoading?: bool {value}
-
- {formatLongNumber(result)} - {formatMessage(labels.visitors)} -
-
- {formatLongNumber(goal)} - {formatMessage(labels.goal)} +
+ {formatLongNumber(result)} + / {formatLongNumber(goal)}
{((result / goal) * 100).toFixed(2)}%
goal ? 100 : (result / goal) * 100}%` }} + className={classNames( + classNames(styles.bar, { + [styles.level1]: percent <= 20, + [styles.level2]: percent > 20 && percent <= 40, + [styles.level3]: percent > 40 && percent <= 60, + [styles.level4]: percent > 60 && percent <= 80, + [styles.level5]: percent > 80, + }), + )} + style={{ width: `${percent}%` }} >
diff --git a/src/app/(main)/reports/goals/GoalsParameters.module.css b/src/app/(main)/reports/goals/GoalsParameters.module.css index 421433f0eb..fbe47b84b7 100644 --- a/src/app/(main)/reports/goals/GoalsParameters.module.css +++ b/src/app/(main)/reports/goals/GoalsParameters.module.css @@ -1,18 +1,7 @@ -.item { - display: flex; - align-items: center; - gap: 10px; - width: 100%; -} - -.type { - color: var(--base700); -} - .value { - display: flex; - align-self: center; - gap: 20px; + width: 100%; + margin-bottom: 8px; + font-weight: 600; } .goal { @@ -22,5 +11,4 @@ font-weight: 900; padding: 2px 8px; border-radius: 5px; - white-space: nowrap; } diff --git a/src/app/(main)/reports/goals/GoalsParameters.tsx b/src/app/(main)/reports/goals/GoalsParameters.tsx index b4743d2d1e..55955973b9 100644 --- a/src/app/(main)/reports/goals/GoalsParameters.tsx +++ b/src/app/(main)/reports/goals/GoalsParameters.tsx @@ -83,15 +83,12 @@ export function GoalsParameters() { return ( : } onRemove={() => handleRemoveGoals(index)} > -
-
- {goal.type === 'url' ? : } -
-
{goal.value}
-
{formatNumber(goal.goal)}
+
{goal.value}
+
+ {formatMessage(labels.goal)}: {formatNumber(goal.goal)}
diff --git a/src/app/(main)/reports/goals/GoalsReport.tsx b/src/app/(main)/reports/goals/GoalsReport.tsx index d6171c3184..020d7d0900 100644 --- a/src/app/(main)/reports/goals/GoalsReport.tsx +++ b/src/app/(main)/reports/goals/GoalsReport.tsx @@ -4,7 +4,7 @@ import Report from '../[reportId]/Report'; import ReportHeader from '../[reportId]/ReportHeader'; import ReportMenu from '../[reportId]/ReportMenu'; import ReportBody from '../[reportId]/ReportBody'; -import Goals from 'assets/funnel.svg'; +import Target from 'assets/target.svg'; import { REPORT_TYPES } from 'lib/constants'; const defaultParameters = { @@ -15,7 +15,7 @@ const defaultParameters = { export default function GoalsReport({ reportId }: { reportId?: string }) { return ( - } /> + } /> diff --git a/src/assets/target.svg b/src/assets/target.svg new file mode 100644 index 0000000000..000f34c7d2 --- /dev/null +++ b/src/assets/target.svg @@ -0,0 +1 @@ + \ No newline at end of file From abd0913e9b66cd9f8fc9480d3d0f351950023d8d Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Fri, 10 May 2024 14:06:13 -0700 Subject: [PATCH 059/438] Updated goals chart. --- src/app/(main)/reports/goals/GoalsChart.tsx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/app/(main)/reports/goals/GoalsChart.tsx b/src/app/(main)/reports/goals/GoalsChart.tsx index 910f138c57..2476023434 100644 --- a/src/app/(main)/reports/goals/GoalsChart.tsx +++ b/src/app/(main)/reports/goals/GoalsChart.tsx @@ -25,13 +25,6 @@ export function GoalsChart({ className }: { className?: string; isLoading?: bool {value}
-
-
- {formatLongNumber(result)} - / {formatLongNumber(goal)} -
-
{((result / goal) * 100).toFixed(2)}%
-
+
+
+ {formatLongNumber(result)} + / {formatLongNumber(goal)} +
+
{((result / goal) * 100).toFixed(2)}%
+
); From 0db6ecf243f96dc56b2a9f919e22ebc265b3a7a8 Mon Sep 17 00:00:00 2001 From: Brian Cao Date: Fri, 10 May 2024 23:15:56 -0700 Subject: [PATCH 060/438] fix usage get. --- src/pages/api/users/[userId]/usage.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/api/users/[userId]/usage.ts b/src/pages/api/users/[userId]/usage.ts index 806b4128c2..66e9276884 100644 --- a/src/pages/api/users/[userId]/usage.ts +++ b/src/pages/api/users/[userId]/usage.ts @@ -24,7 +24,7 @@ export interface UserUsageRequestResponse { const schema = { GET: yup.object().shape({ - id: yup.string().uuid().required(), + userId: yup.string().uuid().required(), startAt: yup.number().integer().required(), endAt: yup.number().integer().min(yup.ref('startAt')).required(), }), From ab39ae8511166c410d9aa26199ba0ba66b471363 Mon Sep 17 00:00:00 2001 From: Brian Cao Date: Fri, 10 May 2024 23:15:56 -0700 Subject: [PATCH 061/438] fix usage get. --- src/pages/api/users/[userId]/usage.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/api/users/[userId]/usage.ts b/src/pages/api/users/[userId]/usage.ts index 806b4128c2..66e9276884 100644 --- a/src/pages/api/users/[userId]/usage.ts +++ b/src/pages/api/users/[userId]/usage.ts @@ -24,7 +24,7 @@ export interface UserUsageRequestResponse { const schema = { GET: yup.object().shape({ - id: yup.string().uuid().required(), + userId: yup.string().uuid().required(), startAt: yup.number().integer().required(), endAt: yup.number().integer().min(yup.ref('startAt')).required(), }), From 30c1933718c54eccf0809598c785ab80c376da0e Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Sat, 11 May 2024 21:52:40 -0700 Subject: [PATCH 062/438] Updated handling of env vars. --- next.config.js | 14 +- src/app/(main)/layout.module.css | 12 - src/app/(main)/layout.tsx | 4 + .../websites/[websiteId]/ShareUrl.tsx | 13 +- .../websites/[websiteId]/TrackingCode.tsx | 6 +- .../websites/[websiteId]/WebsiteSettings.tsx | 6 +- src/app/login/LoginPage.tsx | 2 +- yarn.lock | 290 +++++++++++------- 8 files changed, 192 insertions(+), 155 deletions(-) diff --git a/next.config.js b/next.config.js index f8850c60cf..8a0c6569b4 100644 --- a/next.config.js +++ b/next.config.js @@ -4,17 +4,18 @@ const path = require('path'); const pkg = require('./package.json'); const basePath = process.env.BASE_PATH || ''; -const forceSSL = process.env.FORCE_SSL || ''; const collectApiEndpoint = process.env.COLLECT_API_ENDPOINT || ''; -const defaultLocale = process.env.DEFAULT_LOCALE || ''; -const trackerScriptName = process.env.TRACKER_SCRIPT_NAME || ''; const cloudMode = process.env.CLOUD_MODE || ''; const cloudUrl = process.env.CLOUD_URL || ''; -const frameAncestors = process.env.ALLOWED_FRAME_URLS || ''; +const defaultLocale = process.env.DEFAULT_LOCALE || ''; const disableLogin = process.env.DISABLE_LOGIN || ''; const disableUI = process.env.DISABLE_UI || ''; -const hostURL = process.env.HOST_URL || ''; +const forceSSL = process.env.FORCE_SSL || ''; +const frameAncestors = process.env.ALLOWED_FRAME_URLS || ''; const privateMode = process.env.PRIVATE_MODE || ''; +const shareUrlHost = process.env.SHARE_HOST_URL || ''; +const trackerScriptHost = process.env.TRACKER_SCRIPT_HOST || ''; +const trackerScriptName = process.env.TRACKER_SCRIPT_NAME || ''; const contentSecurityPolicy = [ `default-src 'self'`, @@ -120,8 +121,9 @@ const config = { defaultLocale, disableLogin, disableUI, - hostURL, privateMode, + shareUrlHost, + trackerScriptHost, }, basePath, output: 'standalone', diff --git a/src/app/(main)/layout.module.css b/src/app/(main)/layout.module.css index 09b2eab723..58c1cacf63 100644 --- a/src/app/(main)/layout.module.css +++ b/src/app/(main)/layout.module.css @@ -19,15 +19,3 @@ height: calc(100vh - 60px); overflow-y: auto; } - -.content { - flex: 1; - display: flex; - flex-direction: column; - position: relative; - width: 100%; - max-width: 1320px; - margin: 0 auto; - padding: 0 20px; - min-height: calc(100vh - 60px); -} diff --git a/src/app/(main)/layout.tsx b/src/app/(main)/layout.tsx index 0ecce22cd8..ba2219908d 100644 --- a/src/app/(main)/layout.tsx +++ b/src/app/(main)/layout.tsx @@ -5,6 +5,10 @@ import Page from 'components/layout/Page'; import styles from './layout.module.css'; export default function ({ children }) { + if (process.env.DISABLE_UI) { + return null; + } + return (
diff --git a/src/app/(main)/settings/websites/[websiteId]/ShareUrl.tsx b/src/app/(main)/settings/websites/[websiteId]/ShareUrl.tsx index 989f4def39..ded2105d14 100644 --- a/src/app/(main)/settings/websites/[websiteId]/ShareUrl.tsx +++ b/src/app/(main)/settings/websites/[websiteId]/ShareUrl.tsx @@ -15,14 +15,7 @@ import { WebsiteContext } from 'app/(main)/websites/[websiteId]/WebsiteProvider' const generateId = () => getRandomChars(16); -export function ShareUrl({ - hostUrl, - onSave, -}: { - websiteId: string; - hostUrl?: string; - onSave?: () => void; -}) { +export function ShareUrl({ onSave }: { websiteId: string; onSave?: () => void }) { const website = useContext(WebsiteContext); const { domain, shareId } = website; const { formatMessage, labels, messages } = useMessages(); @@ -33,8 +26,8 @@ export function ShareUrl({ }); const { touch } = useModified(); - const url = `${hostUrl || process.env.hostUrl || window?.location.origin}${ - process.env.basePath + const url = `${process.env.shareUrlHost || window?.location.origin || ''}${ + process.env.basePath || '' }/share/${id}/${domain}`; const handleGenerate = () => { diff --git a/src/app/(main)/settings/websites/[websiteId]/TrackingCode.tsx b/src/app/(main)/settings/websites/[websiteId]/TrackingCode.tsx index 662223492e..18672abf8f 100644 --- a/src/app/(main)/settings/websites/[websiteId]/TrackingCode.tsx +++ b/src/app/(main)/settings/websites/[websiteId]/TrackingCode.tsx @@ -3,7 +3,7 @@ import { useMessages, useConfig } from 'components/hooks'; const SCRIPT_NAME = 'script.js'; -export function TrackingCode({ websiteId, hostUrl }: { websiteId: string; hostUrl?: string }) { +export function TrackingCode({ websiteId }: { websiteId: string }) { const { formatMessage, messages } = useMessages(); const config = useConfig(); @@ -12,8 +12,8 @@ export function TrackingCode({ websiteId, hostUrl }: { websiteId: string; hostUr const url = trackerScriptName?.startsWith('http') ? trackerScriptName - : `${hostUrl || process.env.hostUrl || window?.location.origin}${ - process.env.basePath + : `${process.env.trackerScriptHost || window?.location.origin || ''}${ + process.env.basePath || '' }/${trackerScriptName}`; const code = ``; diff --git a/src/app/(main)/settings/websites/[websiteId]/WebsiteSettings.tsx b/src/app/(main)/settings/websites/[websiteId]/WebsiteSettings.tsx index 99f9faa1db..1a92f1f114 100644 --- a/src/app/(main)/settings/websites/[websiteId]/WebsiteSettings.tsx +++ b/src/app/(main)/settings/websites/[websiteId]/WebsiteSettings.tsx @@ -13,11 +13,9 @@ import WebsiteEditForm from './WebsiteEditForm'; export function WebsiteSettings({ websiteId, - hostUrl, openExternal = false, }: { websiteId: string; - hostUrl?: string; openExternal?: boolean; }) { const website = useContext(WebsiteContext); @@ -62,8 +60,8 @@ export function WebsiteSettings({ {formatMessage(labels.data)} {tab === 'details' && } - {tab === 'tracking' && } - {tab === 'share' && } + {tab === 'tracking' && } + {tab === 'share' && } {tab === 'data' && } ); diff --git a/src/app/login/LoginPage.tsx b/src/app/login/LoginPage.tsx index 28a3c0247d..8ea0b4e20a 100644 --- a/src/app/login/LoginPage.tsx +++ b/src/app/login/LoginPage.tsx @@ -3,7 +3,7 @@ import LoginForm from './LoginForm'; import styles from './LoginPage.module.css'; export function LoginPage() { - if (process.env.loginDisabled) { + if (process.env.disableLogin) { return null; } diff --git a/yarn.lock b/yarn.lock index 5720f25d98..c4efa40993 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1127,9 +1127,9 @@ regenerator-runtime "^0.14.0" "@babel/runtime@^7.23.2": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.4.tgz#de795accd698007a66ba44add6cc86542aff1edd" - integrity sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA== + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.5.tgz#230946857c053a36ccc66e1dd03b17dd0c4ed02c" + integrity sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g== dependencies: regenerator-runtime "^0.14.0" @@ -1668,17 +1668,17 @@ "@formatjs/ecma402-abstract" "1.4.0" tslib "^2.0.1" -"@formatjs/intl@2.10.1": - version "2.10.1" - resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-2.10.1.tgz#75ae637070553bf7dfd213847ba8219f5ddae2b6" - integrity sha512-dsLG15U7xDi8yzKf4hcAWSsCaez3XrjTO2oaRHPyHtXLm1aEzYbDw6bClo/HMHu+iwS5GbDqT3DV+hYP2ylScg== +"@formatjs/intl@2.10.2": + version "2.10.2" + resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-2.10.2.tgz#c074439ac2dbde4c2b3768b8108dfc3932b7fb30" + integrity sha512-raPGWr3JRv3neXV78SqPFrGC05fIbhhNzVghHNxFde27ls2KkXiMhtP7HBybjGpikVSjjhdhaZto+4p1vmm9bQ== dependencies: "@formatjs/ecma402-abstract" "1.18.2" "@formatjs/fast-memoize" "2.2.0" "@formatjs/icu-messageformat-parser" "2.7.6" "@formatjs/intl-displaynames" "6.6.6" "@formatjs/intl-listformat" "7.5.5" - intl-messageformat "10.5.11" + intl-messageformat "10.5.12" tslib "^2.4.0" "@formatjs/ts-transformer@3.9.4": @@ -2002,19 +2002,19 @@ integrity sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw== "@netlify/plugin-nextjs@^5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@netlify/plugin-nextjs/-/plugin-nextjs-5.1.0.tgz#12fc0f7815b62cf091ea6bc98bc9f43ab103411d" - integrity sha512-nurSK6pMi36fVbuwLEiPIzMC/N2Dn/tHqA+seoStwHvGewsrXAphrjJ+8wq7eSCe+BEHCtGlwC1mNOeuqVkfbg== + version "5.2.2" + resolved "https://registry.yarnpkg.com/@netlify/plugin-nextjs/-/plugin-nextjs-5.2.2.tgz#3c283d335001f9e0fbcb4db75557e5fe1660db72" + integrity sha512-jV/P7o8+v1XaEGb7wvFfkF1fSLggAxjg7WYoBPkD3R93bsI6xmCDKBcUJ/6g7lqECRXt4dGKApSFtGk/pUmAHw== "@next/env@14.1.4": version "14.1.4" resolved "https://registry.yarnpkg.com/@next/env/-/env-14.1.4.tgz#432e80651733fbd67230bf262aee28be65252674" integrity sha512-e7X7bbn3Z6DWnDi75UWn+REgAbLEqxI8Tq2pkFOFAMpWAWApz/YCUhtWMWn410h8Q2fYiYL7Yg5OlxMOCfFjJQ== -"@next/eslint-plugin-next@14.1.4": - version "14.1.4" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.1.4.tgz#d7372b5ffede0e466af8af2ff534386418827fc8" - integrity sha512-n4zYNLSyCo0Ln5b7qxqQeQ34OZKXwgbdcx6kmkQbywr+0k6M3Vinft0T72R6CDAcDrne2IAgSud4uWCzFgc5HA== +"@next/eslint-plugin-next@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.3.tgz#287ad8620e7061ba01e8d3313d464db6d217b6df" + integrity sha512-L3oDricIIjgj1AVnRdRor21gI7mShlSwU/1ZGHmqM3LzHhXXhdkrfeNY5zif25Bi5Dd7fiJHsbhoZCHfXYvlAw== dependencies: glob "10.3.10" @@ -2273,9 +2273,9 @@ picomatch "^2.3.1" "@rushstack/eslint-patch@^1.3.3": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.1.tgz#7ca168b6937818e9a74b47ac4e2112b2e1a024cf" - integrity sha512-S3Kq8e7LqxkA9s7HKLqXGTGck1uwis5vAXan3FnU5yw1Ec5hsSGnq4s/UCaSqABPOnOTg7zASLyst7+ohgWexg== + version "1.10.2" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.2.tgz#053f1540703faa81dea2966b768ee5581c66aeda" + integrity sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw== "@sinclair/typebox@^0.27.8": version "0.27.8" @@ -2424,17 +2424,17 @@ dependencies: tslib "^2.4.0" -"@tanstack/query-core@5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.29.0.tgz#d0b3d12c07d5a47f42ab0c1ed4f317106f3d4b20" - integrity sha512-WgPTRs58hm9CMzEr5jpISe8HXa3qKQ8CxewdYZeVnA54JrPY9B1CZiwsCoLpLkf0dGRZq+LcX5OiJb0bEsOFww== +"@tanstack/query-core@5.35.5": + version "5.35.5" + resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.35.5.tgz#7b4100dc9cc7fee314b8a1bcbf502a236d43ffe3" + integrity sha512-OMWvlEqG01RfGj+XZb/piDzPp0eZkkHWSDHt2LvE/fd1zWburP/xwm0ghk6Iv8cuPlP+ACFkZviKXK0OVt6lhg== "@tanstack/react-query@^5.28.6": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.29.0.tgz#42b3a2de4ed1d63666f0af04392a34b5e70d49c0" - integrity sha512-yxlhHB73jaBla6h5B6zPaGmQjokkzAhMHN4veotkPNiQ3Ac/mCxgABRZPsJJrgCTvhpcncBZcDBFxaR2B37vug== + version "5.35.5" + resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.35.5.tgz#d41a087d58f42418824fa04aaca00ba93c99075c" + integrity sha512-sppX7L+PVn5GBV3In6zzj0zcKfnZRKhXbX1MfIfKo1OjIq2GMaopvAFOP0x1bRYTUk2ikrdYcQYOozX7PWkb8A== dependencies: - "@tanstack/query-core" "5.29.0" + "@tanstack/query-core" "5.35.5" "@trysound/sax@0.2.0": version "0.2.0" @@ -2647,9 +2647,9 @@ integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== "@types/node@*", "@types/node@^20.9.0": - version "20.12.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.6.tgz#72d068870518d7da1d97b49db401e2d6a1805294" - integrity sha512-3KurE8taB8GCvZBPngVbp0lk5CKi8M9f9k1rsADh0Evdz5SzJ+Q+Hx9uHoFGsLnLnd1xmkDQr2hVhlA0Mn0lKQ== + version "20.12.11" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.11.tgz#c4ef00d3507000d17690643278a60dc55a9dc9be" + integrity sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw== dependencies: undici-types "~5.26.4" @@ -2674,9 +2674,9 @@ integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== "@types/react-dom@^18.2.17": - version "18.2.24" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.24.tgz#8dda8f449ae436a7a6e91efed8035d4ab03ff759" - integrity sha512-cN6upcKd8zkGy4HU9F1+/s98Hrp6D4MOcippK4PoE8OZRngohHZpbJn1GsaDLz87MqvHNoT13nHvNqM9ocRHZg== + version "18.3.0" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.0.tgz#0cbc818755d87066ab6ca74fbedb2547d74a82b0" + integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg== dependencies: "@types/react" "*" @@ -2698,9 +2698,9 @@ "@types/react" "*" "@types/react@*", "@types/react@16 || 17 || 18", "@types/react@^18.2.41": - version "18.2.75" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.75.tgz#45d18f384939306d35312def1bf532eb38a68562" - integrity sha512-+DNnF7yc5y0bHkBTiLKqXFe+L4B3nvOphiMY3tuA5X10esmjqk7smyBZzbGTy2vsiy/Bnzj8yFIBL8xhRacoOg== + version "18.3.1" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.1.tgz#fed43985caa834a2084d002e4771e15dfcbdbe8e" + integrity sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw== dependencies: "@types/prop-types" "*" csstype "^3.0.2" @@ -2773,7 +2773,18 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/parser@^5.4.2 || ^6.0.0", "@typescript-eslint/parser@^6.7.3": +"@typescript-eslint/parser@^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.2.0.tgz#44356312aea8852a3a82deebdacd52ba614ec07a" + integrity sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg== + dependencies: + "@typescript-eslint/scope-manager" "7.2.0" + "@typescript-eslint/types" "7.2.0" + "@typescript-eslint/typescript-estree" "7.2.0" + "@typescript-eslint/visitor-keys" "7.2.0" + debug "^4.3.4" + +"@typescript-eslint/parser@^6.7.3": version "6.21.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== @@ -2800,6 +2811,14 @@ "@typescript-eslint/types" "6.21.0" "@typescript-eslint/visitor-keys" "6.21.0" +"@typescript-eslint/scope-manager@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz#cfb437b09a84f95a0930a76b066e89e35d94e3da" + integrity sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg== + dependencies: + "@typescript-eslint/types" "7.2.0" + "@typescript-eslint/visitor-keys" "7.2.0" + "@typescript-eslint/type-utils@6.21.0": version "6.21.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e" @@ -2820,6 +2839,11 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== +"@typescript-eslint/types@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.2.0.tgz#0feb685f16de320e8520f13cca30779c8b7c403f" + integrity sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA== + "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" @@ -2847,6 +2871,20 @@ semver "^7.5.4" ts-api-utils "^1.0.1" +"@typescript-eslint/typescript-estree@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz#5beda2876c4137f8440c5a84b4f0370828682556" + integrity sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA== + dependencies: + "@typescript-eslint/types" "7.2.0" + "@typescript-eslint/visitor-keys" "7.2.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + "@typescript-eslint/utils@6.21.0": version "6.21.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" @@ -2890,6 +2928,14 @@ "@typescript-eslint/types" "6.21.0" eslint-visitor-keys "^3.4.1" +"@typescript-eslint/visitor-keys@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz#5035f177752538a5750cca1af6044b633610bf9e" + integrity sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A== + dependencies: + "@typescript-eslint/types" "7.2.0" + eslint-visitor-keys "^3.4.1" + "@umami/prisma-client@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@umami/prisma-client/-/prisma-client-0.14.0.tgz#8489f23e7d766fdecb94790246b0b77b9d65223b" @@ -4215,9 +4261,9 @@ cypress@*: yauzl "^2.10.0" cypress@^13.6.6: - version "13.7.2" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-13.7.2.tgz#61e841382abb20e0a9a063086ee0d850af3ef6bc" - integrity sha512-FF5hFI5wlRIHY8urLZjJjj/YvfCBrRpglbZCLr/cYcL9MdDe0+5usa8kTIrDHthlEc9lwihbkb5dmwqBDNS2yw== + version "13.9.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-13.9.0.tgz#b529cfa8f8c39ba163ed0501a25bb5b09c143652" + integrity sha512-atNjmYfHsvTuCaxTxLZr9xGoHz53LLui3266WWxXJHY7+N6OdwJdg/feEa3T+buez9dmUXHT1izCOklqG82uCQ== dependencies: "@cypress/request" "^3.0.0" "@cypress/xvfb" "^1.2.4" @@ -4400,9 +4446,9 @@ dateformat@^5.0.3: integrity sha512-Kvr6HmPXUMerlLcLF+Pwq3K7apHpYmGDVqrxcDasBg86UcKeTSNWbEzU8bwdXnxnR44FtMhJAxI4Bov6Y/KUfA== dayjs@^1.10.4: - version "1.11.10" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" - integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== + version "1.11.11" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.11.tgz#dfe0e9d54c5f8b68ccf8ca5f72ac603e7e5ed59e" + integrity sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg== debounce@^1.2.1: version "1.2.1" @@ -4465,7 +4511,7 @@ define-data-property@^1.0.1, define-data-property@^1.1.4: es-errors "^1.3.0" gopd "^1.0.1" -define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: +define-properties@^1.2.0, define-properties@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== @@ -4679,9 +4725,9 @@ end-of-stream@^1.1.0: once "^1.4.0" enhanced-resolve@^5.12.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz#65ec88778083056cb32487faa9aef82ed0864787" - integrity sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA== + version "5.16.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz#e8bc63d51b826d6f1cbc0a150ecb5a8b0c62e567" + integrity sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -4711,7 +4757,7 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2: +es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: version "1.23.3" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== @@ -4776,13 +4822,13 @@ es-errors@^1.1.0, es-errors@^1.2.1, es-errors@^1.3.0: integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.17: - version "1.0.18" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz#4d3424f46b24df38d064af6fbbc89274e29ea69d" - integrity sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA== + version "1.0.19" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#117003d0e5fec237b4b5c08aded722e0c6d50ca8" + integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw== dependencies: call-bind "^1.0.7" define-properties "^1.2.1" - es-abstract "^1.23.0" + es-abstract "^1.23.3" es-errors "^1.3.0" es-set-tostringtag "^2.0.3" function-bind "^1.1.2" @@ -4881,13 +4927,13 @@ escape-string-regexp@^4.0.0: integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== eslint-config-next@^14.0.4: - version "14.1.4" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.1.4.tgz#22f2ba4c0993e991249d863656a64c204bae542c" - integrity sha512-cihIahbhYAWwXJwZkAaRPpUi5t9aOi/HdfWXOjZeUOqNWXHD8X22kd1KG58Dc3MVaRx3HoR/oMGk2ltcrqDn8g== + version "14.2.3" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.2.3.tgz#2fb0f7c4eccda530a4b5054438162b2303786d4f" + integrity sha512-ZkNztm3Q7hjqvB1rRlOX8P9E/cXRL9ajRcs8jufEtwMfTVYRqnmtnaSu57QqHyBlovMuiB8LEzfLBkh5RYV6Fg== dependencies: - "@next/eslint-plugin-next" "14.1.4" + "@next/eslint-plugin-next" "14.2.3" "@rushstack/eslint-patch" "^1.3.3" - "@typescript-eslint/parser" "^5.4.2 || ^6.0.0" + "@typescript-eslint/parser" "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0" eslint-import-resolver-node "^0.3.6" eslint-import-resolver-typescript "^3.5.2" eslint-plugin-import "^2.28.1" @@ -4943,9 +4989,9 @@ eslint-plugin-css-modules@^2.12.0: lodash "^4.17.2" eslint-plugin-cypress@^2.15.1: - version "2.15.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.15.1.tgz#336afa7e8e27451afaf65aa359c9509e0a4f3a7b" - integrity sha512-eLHLWP5Q+I4j2AWepYq0PgFEei9/s5LvjuSqWrxurkg1YZ8ltxdvMNmdSf0drnsNo57CTgYY/NIHHLRSWejR7w== + version "2.15.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.15.2.tgz#f22e12fad4c434edad7b298ef92bac8fa087ffa0" + integrity sha512-CtcFEQTDKyftpI22FVGpx8bkpKyYXBlNge6zSo0pl5/qJvBAnzaD76Vu2AsP16d6mTj478Ldn2mhgrWV+Xr0vQ== dependencies: globals "^13.20.0" @@ -5014,9 +5060,9 @@ eslint-plugin-promise@^6.1.1: integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig== "eslint-plugin-react-hooks@^4.5.0 || 5.0.0-canary-7118f5dd7-20230705": - version "4.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" - integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + version "4.6.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596" + integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== eslint-plugin-react@^7.33.2: version "7.34.1" @@ -5595,9 +5641,9 @@ get-symbol-description@^1.0.2: get-intrinsic "^1.2.4" get-tsconfig@^4.5.0: - version "4.7.3" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.3.tgz#0498163d98f7b58484dd4906999c0c9d5f103f83" - integrity sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg== + version "4.7.5" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.5.tgz#5e012498579e9a6947511ed0cd403272c7acbbaf" + integrity sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw== dependencies: resolve-pkg-maps "^1.0.0" @@ -5699,11 +5745,12 @@ globals@^13.19.0, globals@^13.20.0: type-fest "^0.20.2" globalthis@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== dependencies: - define-properties "^1.1.3" + define-properties "^1.2.1" + gopd "^1.0.1" globby@10.0.1: version "10.0.1" @@ -6015,10 +6062,10 @@ intl-messageformat-parser@^5.3.7: dependencies: "@formatjs/intl-numberformat" "^5.5.2" -intl-messageformat@10.5.11: - version "10.5.11" - resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.5.11.tgz#95d6a3b0b303f924d5d8c3f8d3ad057d1dc73c64" - integrity sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg== +intl-messageformat@10.5.12: + version "10.5.12" + resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.5.12.tgz#a0c1a20da896b7a1f4ba1b59c8ba5d9943c29c3f" + integrity sha512-izl0uxhy/melhw8gP2r8pGiVieviZmM4v5Oqx3c1/R7g9cwER2smmGfSjcIsp8Y3Q53bfciL/gkxacJRx/dUvg== dependencies: "@formatjs/ecma402-abstract" "1.18.2" "@formatjs/fast-memoize" "2.2.0" @@ -6026,9 +6073,9 @@ intl-messageformat@10.5.11: tslib "^2.4.0" ipaddr.js@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f" - integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== + version "2.2.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" + integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== is-array-buffer@^3.0.4: version "3.0.4" @@ -6320,9 +6367,9 @@ isarray@^2.0.5: integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== isbot@^5.1.1: - version "5.1.4" - resolved "https://registry.yarnpkg.com/isbot/-/isbot-5.1.4.tgz#3123c0fbf98ae867dc74ab95e47a809c13621a82" - integrity sha512-KuqD/TAG/qtgCDnO8Ab1v5rGRK3jl9hb+2KfJt+roIPE7R4Hiq99VinR0qrLGFptdUNIkClYjuXEpVTGkD9V/A== + version "5.1.6" + resolved "https://registry.yarnpkg.com/isbot/-/isbot-5.1.6.tgz#579a48515e92a3e064da63a41709815d8e641a30" + integrity sha512-Phksj1A0dBP/M/5xeOx0zWemKlZRQvrbNzI19/HWso0uodiOcR8YYCXN60IdzwbKsGj5LnxPkMy6FuBtgckMNw== isexe@^2.0.0: version "2.0.0" @@ -7237,9 +7284,9 @@ lower-case@^2.0.2: tslib "^2.0.3" lru-cache@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" - integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== + version "10.2.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" + integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== lru-cache@^5.1.1: version "5.1.1" @@ -7304,12 +7351,12 @@ mathml-tag-names@^2.1.3: integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== maxmind@^4.3.6: - version "4.3.18" - resolved "https://registry.yarnpkg.com/maxmind/-/maxmind-4.3.18.tgz#ad83f38d718ca5395c5d722933a109b7cb009226" - integrity sha512-5b9utU7ZxcGYTBaO7hCF0FXyfw3IpankLn+FnLW4RZS1zi97RBeSdfXJFJlk5UxNsMiFZlsdMT3lzvD+bD8MLQ== + version "4.3.19" + resolved "https://registry.yarnpkg.com/maxmind/-/maxmind-4.3.19.tgz#da97391185b41373961685419f0f12dfd7b97ff9" + integrity sha512-Bu/VEN7ZWAOCjifdZaXJQuN6/yO7+OK35pnJsqmz8sOndK3KQFvJoY+6HX09/MmLLqtCfa+sMK0iaQOaTejGNA== dependencies: mmdb-lib "2.1.0" - tiny-lru "11.2.5" + tiny-lru "11.2.6" md5@^2.3.0: version "2.3.0" @@ -7480,9 +7527,9 @@ minipass@^5.0.0: integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== "minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.0.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" - integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== + version "7.1.1" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.1.tgz#f7f85aff59aa22f110b20e27692465cf3bf89481" + integrity sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA== minizlib@^2.1.1: version "2.1.2" @@ -7916,9 +7963,9 @@ path-parse@^1.0.7: integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-scurry@^1.10.1: - version "1.10.2" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.2.tgz#8f6357eb1239d5fa1da8b9f70e9c080675458ba7" - integrity sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA== + version "1.11.0" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.0.tgz#332d64e9726bf667fb348e5a1c71005c09ad741a" + integrity sha512-LNHTaVkzaYaLGlO+0u3rQTz7QrHTFOuKyba9JMTQutkmtNew8dw8wOD7mTU/5fCPZzCWpfW0XnQKzY61P0aTaw== dependencies: lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -8737,12 +8784,12 @@ react-beautiful-dnd@^13.1.0: use-memo-one "^1.1.1" react-dom@^18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" - integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" + integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== dependencies: loose-envify "^1.1.0" - scheduler "^0.23.0" + scheduler "^0.23.2" react-error-boundary@^4.0.4: version "4.0.13" @@ -8757,19 +8804,19 @@ react-hook-form@^7.34.2: integrity sha512-F/TroLjTICipmHeFlMrLtNLceO2xr1jU3CyiNla5zdwsGUGu2UOxxR4UyJgLlhMwLW/Wzp4cpJ7CPfgJIeKdSg== react-intl@^6.5.5: - version "6.6.5" - resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-6.6.5.tgz#3dee5c4a9f866aebc8384a540a6d132a3fc694eb" - integrity sha512-OErDPbGqus0QKVj77MGCC9Plbnys3CDQrq6Lw41c60pmeTdn41AhoS1SIzXG6SUlyF7qNN2AVqfrrIvHUgSyLQ== + version "6.6.6" + resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-6.6.6.tgz#67979f790263c5ebd95b6ea581110eea3e7b550f" + integrity sha512-dKXQNUrhZTlCp8uelYW8PHiM4saNKyLmHCfsJYWK0N/kZ/Ien35wjPHB8x9yQcTJbeN/hBOmb4x16iKUrdL9MA== dependencies: "@formatjs/ecma402-abstract" "1.18.2" "@formatjs/icu-messageformat-parser" "2.7.6" - "@formatjs/intl" "2.10.1" + "@formatjs/intl" "2.10.2" "@formatjs/intl-displaynames" "6.6.6" "@formatjs/intl-listformat" "7.5.5" "@types/hoist-non-react-statics" "^3.3.1" "@types/react" "16 || 17 || 18" hoist-non-react-statics "^3.3.2" - intl-messageformat "10.5.11" + intl-messageformat "10.5.12" tslib "^2.4.0" react-is@^16.13.1, react-is@^16.7.0: @@ -8825,9 +8872,9 @@ react-window@^1.8.6: memoize-one ">=3.1.1 <6" react@^18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + version "18.3.1" + resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" + integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== dependencies: loose-envify "^1.1.0" @@ -9243,10 +9290,10 @@ safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -scheduler@^0.23.0: - version "0.23.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== +scheduler@^0.23.2: + version "0.23.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" + integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== dependencies: loose-envify "^1.1.0" @@ -9279,13 +9326,18 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.4, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: +semver@^7.3.4, semver@^7.3.7: version "7.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== dependencies: lru-cache "^6.0.0" +semver@^7.5.3, semver@^7.5.4: + version "7.6.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + serialize-javascript@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" @@ -9914,10 +9966,10 @@ tiny-invariant@^1.0.6: resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== -tiny-lru@11.2.5: - version "11.2.5" - resolved "https://registry.yarnpkg.com/tiny-lru/-/tiny-lru-11.2.5.tgz#b138b99022aa26c567fa51a8dbf9e3e2959b2b30" - integrity sha512-JpqM0K33lG6iQGKiigcwuURAKZlq6rHXfrgeL4/I8/REoyJTGU+tEMszvT/oTRVHG2OiylhGDjqPp1jWMlr3bw== +tiny-lru@11.2.6: + version "11.2.6" + resolved "https://registry.yarnpkg.com/tiny-lru/-/tiny-lru-11.2.6.tgz#86a4fd0ad615eac1639adf92010e8b944e209fdb" + integrity sha512-0PU3c9PjMnltZaFo2sGYv/nnJsMjG0Cxx8X6FXHPPGjFyoo1SJDxvUXW1207rdiSxYizf31roo+GrkIByQeZoA== tmp@~0.2.1: version "0.2.3" @@ -9954,9 +10006,9 @@ toposort@^2.0.2: integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== tough-cookie@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" - integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== + version "4.1.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" + integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== dependencies: psl "^1.1.33" punycode "^2.1.1" @@ -10149,9 +10201,9 @@ typescript@^4.0, typescript@^4.5: integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== typescript@^5.4.3: - version "5.4.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.4.tgz#eb2471e7b0a5f1377523700a21669dce30c2d952" - integrity sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw== + version "5.4.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" + integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== unbox-primitive@^1.0.2: version "1.0.2" From b911fecd8b73162bae1699ba0cb0064f0cbf7c54 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Sat, 11 May 2024 22:03:41 -0700 Subject: [PATCH 063/438] Updated packages. --- package.json | 8 +- yarn.lock | 232 ++++++++++++++++++++++++++------------------------- 2 files changed, 123 insertions(+), 117 deletions(-) diff --git a/package.json b/package.json index 3d5b74ae2e..be5bb5ac00 100644 --- a/package.json +++ b/package.json @@ -64,9 +64,9 @@ ".next/cache" ], "dependencies": { - "@clickhouse/client": "^0.2.2", + "@clickhouse/client": "^1.0.1", "@fontsource/inter": "^4.5.15", - "@prisma/client": "5.12.1", + "@prisma/client": "5.13.0", "@prisma/extension-read-replicas": "^0.3.0", "@react-spring/web": "^9.7.3", "@tanstack/react-query": "^5.28.6", @@ -98,11 +98,11 @@ "maxmind": "^4.3.6", "md5": "^2.3.0", "moment-timezone": "^0.5.35", - "next": "14.1.4", + "next": "14.2.3", "next-basics": "^0.39.0", "node-fetch": "^3.2.8", "npm-run-all": "^4.1.5", - "prisma": "5.12.1", + "prisma": "5.13.0", "react": "^18.2.0", "react-basics": "^0.123.0", "react-beautiful-dnd": "^13.1.0", diff --git a/yarn.lock b/yarn.lock index c4efa40993..80b8e4542f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1206,17 +1206,17 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@clickhouse/client-common@0.2.10": - version "0.2.10" - resolved "https://registry.yarnpkg.com/@clickhouse/client-common/-/client-common-0.2.10.tgz#62f454d2cc2ee27a325034a2cca47c6f5c90d22e" - integrity sha512-BvTY0IXS96y9RUeNCpKL4HUzHmY80L0lDcGN0lmUD6zjOqYMn78+xyHYJ/AIAX7JQsc+/KwFt2soZutQTKxoGQ== +"@clickhouse/client-common@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@clickhouse/client-common/-/client-common-1.0.1.tgz#c7dde5eafaad8189649373ecc23354c7a32847b3" + integrity sha512-3L6e0foP6VOktScoi6XWMjJyOpKCWgLUYgPVxP2c7gm6Kotq+iRmmmXtXTSg7B7uozcLZycTtPfIw2d80SYsYw== -"@clickhouse/client@^0.2.2": - version "0.2.10" - resolved "https://registry.yarnpkg.com/@clickhouse/client/-/client-0.2.10.tgz#519561f3a4fff837bb606c52abfe74e5e7e9abb3" - integrity sha512-ZwBgzjEAFN/ogS0ym5KHVbR7Hx/oYCX01qGp2baEyfN2HM73kf/7Vp3GvMHWRy+zUXISONEtFv7UTViOXnmFrg== +"@clickhouse/client@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@clickhouse/client/-/client-1.0.1.tgz#364db28d9ef9beaf19104f962c2b06090cb10468" + integrity sha512-fluUNnE2R7COJ6rn6DorYfi4D+AQn3t2qeBtEq37bQV3pD4EbKrBfKAwJ13e1lmMWdQ2B9bJUTMqGsRIDdWhJw== dependencies: - "@clickhouse/client-common" "0.2.10" + "@clickhouse/client-common" "1.0.1" "@colors/colors@1.5.0": version "1.5.0" @@ -2006,10 +2006,10 @@ resolved "https://registry.yarnpkg.com/@netlify/plugin-nextjs/-/plugin-nextjs-5.2.2.tgz#3c283d335001f9e0fbcb4db75557e5fe1660db72" integrity sha512-jV/P7o8+v1XaEGb7wvFfkF1fSLggAxjg7WYoBPkD3R93bsI6xmCDKBcUJ/6g7lqECRXt4dGKApSFtGk/pUmAHw== -"@next/env@14.1.4": - version "14.1.4" - resolved "https://registry.yarnpkg.com/@next/env/-/env-14.1.4.tgz#432e80651733fbd67230bf262aee28be65252674" - integrity sha512-e7X7bbn3Z6DWnDi75UWn+REgAbLEqxI8Tq2pkFOFAMpWAWApz/YCUhtWMWn410h8Q2fYiYL7Yg5OlxMOCfFjJQ== +"@next/env@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/env/-/env-14.2.3.tgz#d6def29d1c763c0afb397343a15a82e7d92353a0" + integrity sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA== "@next/eslint-plugin-next@14.2.3": version "14.2.3" @@ -2018,50 +2018,50 @@ dependencies: glob "10.3.10" -"@next/swc-darwin-arm64@14.1.4": - version "14.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.1.4.tgz#a3bca0dc4393ac4cf3169bbf24df63441de66bb7" - integrity sha512-ubmUkbmW65nIAOmoxT1IROZdmmJMmdYvXIe8211send9ZYJu+SqxSnJM4TrPj9wmL6g9Atvj0S/2cFmMSS99jg== - -"@next/swc-darwin-x64@14.1.4": - version "14.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.1.4.tgz#ba3683d4e2d30099f3f2864dd7349a4d9f440140" - integrity sha512-b0Xo1ELj3u7IkZWAKcJPJEhBop117U78l70nfoQGo4xUSvv0PJSTaV4U9xQBLvZlnjsYkc8RwQN1HoH/oQmLlQ== - -"@next/swc-linux-arm64-gnu@14.1.4": - version "14.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.1.4.tgz#3519969293f16379954b7e196deb0c1eecbb2f8b" - integrity sha512-457G0hcLrdYA/u1O2XkRMsDKId5VKe3uKPvrKVOyuARa6nXrdhJOOYU9hkKKyQTMru1B8qEP78IAhf/1XnVqKA== - -"@next/swc-linux-arm64-musl@14.1.4": - version "14.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.1.4.tgz#4bb3196bd402b3f84cf5373ff1021f547264d62f" - integrity sha512-l/kMG+z6MB+fKA9KdtyprkTQ1ihlJcBh66cf0HvqGP+rXBbOXX0dpJatjZbHeunvEHoBBS69GYQG5ry78JMy3g== - -"@next/swc-linux-x64-gnu@14.1.4": - version "14.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.1.4.tgz#1b3372c98c83dcdab946cdb4ee06e068b8139ba3" - integrity sha512-BapIFZ3ZRnvQ1uWbmqEGJuPT9cgLwvKtxhK/L2t4QYO7l+/DxXuIGjvp1x8rvfa/x1FFSsipERZK70pewbtJtw== - -"@next/swc-linux-x64-musl@14.1.4": - version "14.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.1.4.tgz#8459088bdc872648ff78f121db596f2533df5808" - integrity sha512-mqVxTwk4XuBl49qn2A5UmzFImoL1iLm0KQQwtdRJRKl21ylQwwGCxJtIYo2rbfkZHoSKlh/YgztY0qH3wG1xIg== - -"@next/swc-win32-arm64-msvc@14.1.4": - version "14.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.1.4.tgz#84280a08c00cc3be24ddd3a12f4617b108e6dea6" - integrity sha512-xzxF4ErcumXjO2Pvg/wVGrtr9QQJLk3IyQX1ddAC/fi6/5jZCZ9xpuL9Tzc4KPWMFq8GGWFVDMshZOdHGdkvag== - -"@next/swc-win32-ia32-msvc@14.1.4": - version "14.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.1.4.tgz#23ff7f4bd0a27177428669ef6fa5c3923c738031" - integrity sha512-WZiz8OdbkpRw6/IU/lredZWKKZopUMhcI2F+XiMAcPja0uZYdMTZQRoQ0WZcvinn9xZAidimE7tN9W5v9Yyfyw== - -"@next/swc-win32-x64-msvc@14.1.4": - version "14.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.4.tgz#bccf5beccfde66d6c66fa4e2509118c796385eda" - integrity sha512-4Rto21sPfw555sZ/XNLqfxDUNeLhNYGO2dlPqsnuCg8N8a2a9u1ltqBOPQ4vj1Gf7eJC0W2hHG2eYUHuiXgY2w== +"@next/swc-darwin-arm64@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.3.tgz#db1a05eb88c0224089b815ad10ac128ec79c2cdb" + integrity sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A== + +"@next/swc-darwin-x64@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.3.tgz#a3f8af05b5f9a52ac3082e66ac29e125ab1d7b9c" + integrity sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA== + +"@next/swc-linux-arm64-gnu@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.3.tgz#4e63f43879285b52554bfd39e6e0cc78a9b27bbf" + integrity sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA== + +"@next/swc-linux-arm64-musl@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.3.tgz#ebdaed26214448b1e6f2c3e8b3cd29bfba387990" + integrity sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw== + +"@next/swc-linux-x64-gnu@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.3.tgz#19e3bcc137c3b582a1ab867106817e5c90a20593" + integrity sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w== + +"@next/swc-linux-x64-musl@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.3.tgz#794a539b98e064169cf0ff7741b2a4fb16adec7d" + integrity sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ== + +"@next/swc-win32-arm64-msvc@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.3.tgz#eda9fa0fbf1ff9113e87ac2668ee67ce9e5add5a" + integrity sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A== + +"@next/swc-win32-ia32-msvc@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.3.tgz#7c1190e3f640ab16580c6bdbd7d0e766b9920457" + integrity sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw== + +"@next/swc-win32-x64-msvc@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.3.tgz#2be4e39ee25bfbd85be78eea17c0e7751dc4323c" + integrity sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -2089,51 +2089,51 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@prisma/client@5.12.1": - version "5.12.1" - resolved "https://registry.yarnpkg.com/@prisma/client/-/client-5.12.1.tgz#c26a674fea76754b3a9e8b90a11e617f90212f76" - integrity sha512-6/JnizEdlSBxDIdiLbrBdMW5NqDxOmhXAJaNXiPpgzAPr/nLZResT6MMpbOHLo5yAbQ1Vv5UU8PTPRzb0WIxdA== +"@prisma/client@5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@prisma/client/-/client-5.13.0.tgz#b9f1d0983d714e982675201d8222a9ecb4bdad4a" + integrity sha512-uYdfpPncbZ/syJyiYBwGZS8Gt1PTNoErNYMuqHDa2r30rNSFtgTA/LXsSk55R7pdRTMi5pHkeP9B14K6nHmwkg== -"@prisma/debug@5.12.1": - version "5.12.1" - resolved "https://registry.yarnpkg.com/@prisma/debug/-/debug-5.12.1.tgz#007c8ad2e466d565bcd0671b8846c27f8700c722" - integrity sha512-kd/wNsR0klrv79o1ITsbWxYyh4QWuBidvxsXSParPsYSu0ircUmNk3q4ojsgNc3/81b0ozg76iastOG43tbf8A== +"@prisma/debug@5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@prisma/debug/-/debug-5.13.0.tgz#d88b0f6fafa0c216e20e284ed9fc30f1cbe45786" + integrity sha512-699iqlEvzyCj9ETrXhs8o8wQc/eVW+FigSsHpiskSFydhjVuwTJEfj/nIYqTaWFYuxiWQRfm3r01meuW97SZaQ== -"@prisma/engines-version@5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab": - version "5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab" - resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab.tgz#c78d099a3fe86d446db7442e64e56987e39e7f32" - integrity sha512-6yvO8s80Tym61aB4QNtYZfWVmE3pwqe807jEtzm8C5VDe7nw8O1FGX3TXUaXmWV0fQTIAfRbeL2Gwrndabp/0g== +"@prisma/engines-version@5.13.0-23.b9a39a7ee606c28e3455d0fd60e78c3ba82b1a2b": + version "5.13.0-23.b9a39a7ee606c28e3455d0fd60e78c3ba82b1a2b" + resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-5.13.0-23.b9a39a7ee606c28e3455d0fd60e78c3ba82b1a2b.tgz#a72a4fb83ba1fd01ad45f795aa55168f60d34723" + integrity sha512-AyUuhahTINGn8auyqYdmxsN+qn0mw3eg+uhkp8zwknXYIqoT3bChG4RqNY/nfDkPvzWAPBa9mrDyBeOnWSgO6A== -"@prisma/engines@5.12.1": - version "5.12.1" - resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-5.12.1.tgz#a50649427d627a9af962a188a84c65d61c6e2b3f" - integrity sha512-HQDdglLw2bZR/TXD2Y+YfDMvi5Q8H+acbswqOsWyq9pPjBLYJ6gzM+ptlTU/AV6tl0XSZLU1/7F4qaWa8bqpJA== +"@prisma/engines@5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-5.13.0.tgz#8994ebf7b4e35aee7746a8465ec22738379bcab6" + integrity sha512-hIFLm4H1boj6CBZx55P4xKby9jgDTeDG0Jj3iXtwaaHmlD5JmiDkZhh8+DYWkTGchu+rRF36AVROLnk0oaqhHw== dependencies: - "@prisma/debug" "5.12.1" - "@prisma/engines-version" "5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab" - "@prisma/fetch-engine" "5.12.1" - "@prisma/get-platform" "5.12.1" + "@prisma/debug" "5.13.0" + "@prisma/engines-version" "5.13.0-23.b9a39a7ee606c28e3455d0fd60e78c3ba82b1a2b" + "@prisma/fetch-engine" "5.13.0" + "@prisma/get-platform" "5.13.0" "@prisma/extension-read-replicas@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@prisma/extension-read-replicas/-/extension-read-replicas-0.3.0.tgz#2842a7c928f957c1dd58a6256104797596d43426" integrity sha512-F9+rSmYday6GT2qjhJtkZcBOpLO5LtpvFcMGqrBDHf+78LEdSuxfFjOxYlNuqk4B+th62yxpbhfpmB9/Mca14Q== -"@prisma/fetch-engine@5.12.1": - version "5.12.1" - resolved "https://registry.yarnpkg.com/@prisma/fetch-engine/-/fetch-engine-5.12.1.tgz#c38e9fa17fdc535b4c83cbb7645569ad0a511fa9" - integrity sha512-qSs3KcX1HKcea1A+hlJVK/ljj0PNIUHDxAayGMvgJBqmaN32P9tCidlKz1EGv6WoRFICYnk3Dd/YFLBwnFIozA== +"@prisma/fetch-engine@5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@prisma/fetch-engine/-/fetch-engine-5.13.0.tgz#9b6945c7b38bb59e840f8905b20ea7a3d059ca55" + integrity sha512-Yh4W+t6YKyqgcSEB3odBXt7QyVSm0OQlBSldQF2SNXtmOgMX8D7PF/fvH6E6qBCpjB/yeJLy/FfwfFijoHI6sA== dependencies: - "@prisma/debug" "5.12.1" - "@prisma/engines-version" "5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab" - "@prisma/get-platform" "5.12.1" + "@prisma/debug" "5.13.0" + "@prisma/engines-version" "5.13.0-23.b9a39a7ee606c28e3455d0fd60e78c3ba82b1a2b" + "@prisma/get-platform" "5.13.0" -"@prisma/get-platform@5.12.1": - version "5.12.1" - resolved "https://registry.yarnpkg.com/@prisma/get-platform/-/get-platform-5.12.1.tgz#33f427f6d744dee62a9e06858889691d78b50804" - integrity sha512-pgIR+pSvhYHiUcqXVEZS31NrFOTENC9yFUdEAcx7cdQBoZPmHVjtjN4Ss6NzVDMYPrKJJ51U14EhEoeuBlMioQ== +"@prisma/get-platform@5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@prisma/get-platform/-/get-platform-5.13.0.tgz#99ef909a52b9d79b64d72d2d3d8210c4892b6572" + integrity sha512-B/WrQwYTzwr7qCLifQzYOmQhZcFmIFhR81xC45gweInSUn2hTEbfKUPd2keAog+y5WI5xLAFNJ3wkXplvSVkSw== dependencies: - "@prisma/debug" "5.12.1" + "@prisma/debug" "5.13.0" "@react-spring/animated@~9.7.3": version "9.7.3" @@ -2417,11 +2417,17 @@ "@svgr/plugin-jsx" "8.1.0" "@svgr/plugin-svgo" "8.1.0" -"@swc/helpers@0.5.2": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.2.tgz#85ea0c76450b61ad7d10a37050289eded783c27d" - integrity sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw== +"@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + +"@swc/helpers@0.5.5": + version "0.5.5" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.5.tgz#12689df71bfc9b21c4f4ca00ae55f2f16c8b77c0" + integrity sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A== dependencies: + "@swc/counter" "^0.1.3" tslib "^2.4.0" "@tanstack/query-core@5.35.5": @@ -7595,28 +7601,28 @@ next-basics@^0.39.0: jsonwebtoken "^9.0.0" pure-rand "^6.0.2" -next@14.1.4: - version "14.1.4" - resolved "https://registry.yarnpkg.com/next/-/next-14.1.4.tgz#203310f7310578563fd5c961f0db4729ce7a502d" - integrity sha512-1WTaXeSrUwlz/XcnhGTY7+8eiaFvdet5z9u3V2jb+Ek1vFo0VhHKSAIJvDWfQpttWjnyw14kBeq28TPq7bTeEQ== +next@14.2.3: + version "14.2.3" + resolved "https://registry.yarnpkg.com/next/-/next-14.2.3.tgz#f117dd5d5f20c307e7b8e4f9c1c97d961008925d" + integrity sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A== dependencies: - "@next/env" "14.1.4" - "@swc/helpers" "0.5.2" + "@next/env" "14.2.3" + "@swc/helpers" "0.5.5" busboy "1.6.0" caniuse-lite "^1.0.30001579" graceful-fs "^4.2.11" postcss "8.4.31" styled-jsx "5.1.1" optionalDependencies: - "@next/swc-darwin-arm64" "14.1.4" - "@next/swc-darwin-x64" "14.1.4" - "@next/swc-linux-arm64-gnu" "14.1.4" - "@next/swc-linux-arm64-musl" "14.1.4" - "@next/swc-linux-x64-gnu" "14.1.4" - "@next/swc-linux-x64-musl" "14.1.4" - "@next/swc-win32-arm64-msvc" "14.1.4" - "@next/swc-win32-ia32-msvc" "14.1.4" - "@next/swc-win32-x64-msvc" "14.1.4" + "@next/swc-darwin-arm64" "14.2.3" + "@next/swc-darwin-x64" "14.2.3" + "@next/swc-linux-arm64-gnu" "14.2.3" + "@next/swc-linux-arm64-musl" "14.2.3" + "@next/swc-linux-x64-gnu" "14.2.3" + "@next/swc-linux-x64-musl" "14.2.3" + "@next/swc-win32-arm64-msvc" "14.2.3" + "@next/swc-win32-ia32-msvc" "14.2.3" + "@next/swc-win32-x64-msvc" "14.2.3" nice-try@^1.0.4: version "1.0.5" @@ -8653,12 +8659,12 @@ pretty-format@^29.0.0, pretty-format@^29.7.0: ansi-styles "^5.0.0" react-is "^18.0.0" -prisma@5.12.1: - version "5.12.1" - resolved "https://registry.yarnpkg.com/prisma/-/prisma-5.12.1.tgz#db4596253bb066afc9f08744642f200a398d8d51" - integrity sha512-SkMnb6wyIxTv9ACqiHBI2u9gD6y98qXRoCoLEnZsF6yee5Qg828G+ARrESN+lQHdw4maSZFFSBPPDpvSiVTo0Q== +prisma@5.13.0: + version "5.13.0" + resolved "https://registry.yarnpkg.com/prisma/-/prisma-5.13.0.tgz#1f06e20ccfb6038ad68869e6eacd3b346f9d0851" + integrity sha512-kGtcJaElNRAdAGsCNykFSZ7dBKpL14Cbs+VaQ8cECxQlRPDjBlMHNFYeYt0SKovAVy2Y65JXQwB3A5+zIQwnTg== dependencies: - "@prisma/engines" "5.12.1" + "@prisma/engines" "5.13.0" process@^0.11.10: version "0.11.10" From 98a0a83ccf928d31ce9c49303a91177e93861b4f Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Sun, 12 May 2024 23:15:49 -0700 Subject: [PATCH 064/438] Updated handling of env vars. --- next.config.js | 26 +++++++++---------- src/app/(main)/App.tsx | 2 +- src/app/(main)/console/TestConsole.tsx | 2 +- .../realtime/RealtimeCountries.tsx | 2 +- src/components/hooks/useCountryNames.ts | 2 +- src/components/hooks/useLanguageNames.ts | 2 +- src/components/hooks/useLocale.ts | 4 ++- src/components/metrics/BrowsersTable.tsx | 2 +- src/components/metrics/CitiesTable.tsx | 2 +- src/components/metrics/CountriesTable.tsx | 2 +- src/components/metrics/DevicesTable.tsx | 4 ++- src/components/metrics/RegionsTable.tsx | 2 +- src/components/metrics/WorldMap.tsx | 2 +- 13 files changed, 29 insertions(+), 25 deletions(-) diff --git a/next.config.js b/next.config.js index 8a0c6569b4..92b66943d1 100644 --- a/next.config.js +++ b/next.config.js @@ -3,19 +3,19 @@ require('dotenv').config(); const path = require('path'); const pkg = require('./package.json'); -const basePath = process.env.BASE_PATH || ''; -const collectApiEndpoint = process.env.COLLECT_API_ENDPOINT || ''; -const cloudMode = process.env.CLOUD_MODE || ''; -const cloudUrl = process.env.CLOUD_URL || ''; -const defaultLocale = process.env.DEFAULT_LOCALE || ''; -const disableLogin = process.env.DISABLE_LOGIN || ''; -const disableUI = process.env.DISABLE_UI || ''; -const forceSSL = process.env.FORCE_SSL || ''; -const frameAncestors = process.env.ALLOWED_FRAME_URLS || ''; -const privateMode = process.env.PRIVATE_MODE || ''; -const shareUrlHost = process.env.SHARE_HOST_URL || ''; -const trackerScriptHost = process.env.TRACKER_SCRIPT_HOST || ''; -const trackerScriptName = process.env.TRACKER_SCRIPT_NAME || ''; +const basePath = process.env.BASE_PATH; +const collectApiEndpoint = process.env.COLLECT_API_ENDPOINT; +const cloudMode = process.env.CLOUD_MODE; +const cloudUrl = process.env.CLOUD_URL; +const defaultLocale = process.env.DEFAULT_LOCALE; +const disableLogin = process.env.DISABLE_LOGIN; +const disableUI = process.env.DISABLE_UI; +const forceSSL = process.env.FORCE_SSL; +const frameAncestors = process.env.ALLOWED_FRAME_URLS; +const privateMode = process.env.PRIVATE_MODE; +const shareUrlHost = process.env.SHARE_URL_HOST; +const trackerScriptHost = process.env.TRACKER_SCRIPT_HOST; +const trackerScriptName = process.env.TRACKER_SCRIPT_NAME; const contentSecurityPolicy = [ `default-src 'self'`, diff --git a/src/app/(main)/App.tsx b/src/app/(main)/App.tsx index 406c2f1646..efb38043a0 100644 --- a/src/app/(main)/App.tsx +++ b/src/app/(main)/App.tsx @@ -27,7 +27,7 @@ export function App({ children }) { {children} {process.env.NODE_ENV === 'production' && !pathname.includes('/share/') && ( -