diff --git a/package.json b/package.json
index d002388f..a7a3aba1 100644
--- a/package.json
+++ b/package.json
@@ -64,9 +64,9 @@
".next/cache"
],
"dependencies": {
- "@clickhouse/client": "^1.0.2",
+ "@clickhouse/client": "^1.2.0",
"@fontsource/inter": "^4.5.15",
- "@prisma/client": "5.14.0",
+ "@prisma/client": "5.16.1",
"@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.2.3",
+ "next": "14.2.4",
"next-basics": "^0.39.0",
"node-fetch": "^3.2.8",
"npm-run-all": "^4.1.5",
- "prisma": "5.14.0",
+ "prisma": "5.16.1",
"react": "^18.2.0",
"react-basics": "^0.123.0",
"react-beautiful-dnd": "^13.1.0",
@@ -175,6 +175,6 @@
"tar": "^6.1.2",
"ts-jest": "^29.1.2",
"ts-node": "^10.9.1",
- "typescript": "^5.4.3"
+ "typescript": "^5.5.3"
}
}
diff --git a/public/intl/messages/am-ET.json b/public/intl/messages/am-ET.json
index 6565c98b..65427a02 100644
--- a/public/intl/messages/am-ET.json
+++ b/public/intl/messages/am-ET.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/ar-SA.json b/public/intl/messages/ar-SA.json
index 721584d5..d6a1855e 100644
--- a/public/intl/messages/ar-SA.json
+++ b/public/intl/messages/ar-SA.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/be-BY.json b/public/intl/messages/be-BY.json
index 9af4e895..e6afc2ca 100644
--- a/public/intl/messages/be-BY.json
+++ b/public/intl/messages/be-BY.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/bg-BG.json b/public/intl/messages/bg-BG.json
index bf5f15dc..e970ec52 100644
--- a/public/intl/messages/bg-BG.json
+++ b/public/intl/messages/bg-BG.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/bn-BD.json b/public/intl/messages/bn-BD.json
index 827271e3..31e04cfa 100644
--- a/public/intl/messages/bn-BD.json
+++ b/public/intl/messages/bn-BD.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/bs-BA.json b/public/intl/messages/bs-BA.json
index f3edb773..3b5c10ff 100644
--- a/public/intl/messages/bs-BA.json
+++ b/public/intl/messages/bs-BA.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/ca-ES.json b/public/intl/messages/ca-ES.json
index f9b63535..dc7b27a8 100644
--- a/public/intl/messages/ca-ES.json
+++ b/public/intl/messages/ca-ES.json
@@ -152,7 +152,7 @@
"label.compare": [
{
"type": 0,
- "value": "Compare"
+ "value": "Comparar"
}
],
"label.confirm": [
@@ -182,7 +182,7 @@
"label.count": [
{
"type": 0,
- "value": "Count"
+ "value": "Recompte"
}
],
"label.countries": [
@@ -236,7 +236,7 @@
"label.current": [
{
"type": 0,
- "value": "Current"
+ "value": "Actual"
}
],
"label.current-password": [
@@ -398,13 +398,13 @@
"label.end-step": [
{
"type": 0,
- "value": "End Step"
+ "value": "Pas Final"
}
],
"label.entry": [
{
"type": 0,
- "value": "Entry URL"
+ "value": "URL d'entrada"
}
],
"label.event": [
@@ -428,7 +428,7 @@
"label.exit": [
{
"type": 0,
- "value": "Exit URL"
+ "value": "URL de sortida"
}
],
"label.false": [
@@ -488,19 +488,19 @@
"label.goal": [
{
"type": 0,
- "value": "Goal"
+ "value": "Meta"
}
],
"label.goals": [
{
"type": 0,
- "value": "Goals"
+ "value": "Metes"
}
],
"label.goals-description": [
{
"type": 0,
- "value": "Track your goals for pageviews and events."
+ "value": "Feu un seguiment de les seves metes per a pàgines vistes i esdeveniments."
}
],
"label.greater-than": [
@@ -518,13 +518,13 @@
"label.host": [
{
"type": 0,
- "value": "Host"
+ "value": "Amfitrió"
}
],
"label.hosts": [
{
"type": 0,
- "value": "Hosts"
+ "value": "Amfitrions"
}
],
"label.insights": [
@@ -578,13 +578,13 @@
"label.journey": [
{
"type": 0,
- "value": "Journey"
+ "value": "Trajecte"
}
],
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Entengui com naveguen els usuaris pel seu lloc web."
}
],
"label.language": [
@@ -777,7 +777,7 @@
"value": [
{
"type": 0,
- "value": "record"
+ "value": "registre"
}
]
},
@@ -785,7 +785,7 @@
"value": [
{
"type": 0,
- "value": "records"
+ "value": "registres"
}
]
}
@@ -874,19 +874,19 @@
"label.previous": [
{
"type": 0,
- "value": "Previous"
+ "value": "Anterior"
}
],
"label.previous-period": [
{
"type": 0,
- "value": "Previous period"
+ "value": "Període anterior"
}
],
"label.previous-year": [
{
"type": 0,
- "value": "Previous year"
+ "value": "Any anterior"
}
],
"label.profile": [
@@ -898,7 +898,7 @@
"label.property": [
{
"type": 0,
- "value": "Property"
+ "value": "Propietat"
}
],
"label.queries": [
@@ -1090,7 +1090,7 @@
"label.start-step": [
{
"type": 0,
- "value": "Start Step"
+ "value": "Pas inicial"
}
],
"label.steps": [
@@ -1360,7 +1360,7 @@
"label.views-per-visit": [
{
"type": 0,
- "value": "Views per visit"
+ "value": "Vistes per visita"
}
],
"label.visit-duration": [
@@ -1462,7 +1462,7 @@
"message.collected-data": [
{
"type": 0,
- "value": "Collected data"
+ "value": "Dades recol·lectades"
}
],
"message.confirm-delete": [
@@ -1790,7 +1790,7 @@
"message.visitors-dropped-off": [
{
"type": 0,
- "value": "Els visitants han sortit"
+ "value": "Visitants han sortit"
}
]
}
diff --git a/public/intl/messages/cs-CZ.json b/public/intl/messages/cs-CZ.json
index a2500688..eaef4245 100644
--- a/public/intl/messages/cs-CZ.json
+++ b/public/intl/messages/cs-CZ.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/da-DK.json b/public/intl/messages/da-DK.json
index d9a6903f..aac48bbc 100644
--- a/public/intl/messages/da-DK.json
+++ b/public/intl/messages/da-DK.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/de-CH.json b/public/intl/messages/de-CH.json
index 32d3b443..0d06a0e0 100644
--- a/public/intl/messages/de-CH.json
+++ b/public/intl/messages/de-CH.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/de-DE.json b/public/intl/messages/de-DE.json
index 9a9b6d14..2482b208 100644
--- a/public/intl/messages/de-DE.json
+++ b/public/intl/messages/de-DE.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/el-GR.json b/public/intl/messages/el-GR.json
index f44bd026..af0f11be 100644
--- a/public/intl/messages/el-GR.json
+++ b/public/intl/messages/el-GR.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/en-GB.json b/public/intl/messages/en-GB.json
index efb8f1be..38a7857c 100644
--- a/public/intl/messages/en-GB.json
+++ b/public/intl/messages/en-GB.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/en-US.json b/public/intl/messages/en-US.json
index bf911728..52b968dd 100644
--- a/public/intl/messages/en-US.json
+++ b/public/intl/messages/en-US.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/es-ES.json b/public/intl/messages/es-ES.json
index 40ddded5..496fabc6 100644
--- a/public/intl/messages/es-ES.json
+++ b/public/intl/messages/es-ES.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/fa-IR.json b/public/intl/messages/fa-IR.json
index cb10df4b..d5408e64 100644
--- a/public/intl/messages/fa-IR.json
+++ b/public/intl/messages/fa-IR.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/fi-FI.json b/public/intl/messages/fi-FI.json
index e43a1855..0af4dc6f 100644
--- a/public/intl/messages/fi-FI.json
+++ b/public/intl/messages/fi-FI.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/fo-FO.json b/public/intl/messages/fo-FO.json
index 1b2d4f07..c9df65e1 100644
--- a/public/intl/messages/fo-FO.json
+++ b/public/intl/messages/fo-FO.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/fr-FR.json b/public/intl/messages/fr-FR.json
index 44fd708b..bc4c51bb 100644
--- a/public/intl/messages/fr-FR.json
+++ b/public/intl/messages/fr-FR.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/ga-ES.json b/public/intl/messages/ga-ES.json
index 690083ae..7e182d73 100644
--- a/public/intl/messages/ga-ES.json
+++ b/public/intl/messages/ga-ES.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/he-IL.json b/public/intl/messages/he-IL.json
index 740dfffa..ee8599f3 100644
--- a/public/intl/messages/he-IL.json
+++ b/public/intl/messages/he-IL.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/hi-IN.json b/public/intl/messages/hi-IN.json
index 2c178669..5fdffe37 100644
--- a/public/intl/messages/hi-IN.json
+++ b/public/intl/messages/hi-IN.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/hr-HR.json b/public/intl/messages/hr-HR.json
index 974bdebd..87f37e73 100644
--- a/public/intl/messages/hr-HR.json
+++ b/public/intl/messages/hr-HR.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/hu-HU.json b/public/intl/messages/hu-HU.json
index 227ef208..2cc464e9 100644
--- a/public/intl/messages/hu-HU.json
+++ b/public/intl/messages/hu-HU.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/id-ID.json b/public/intl/messages/id-ID.json
index dbe78a50..8123d03b 100644
--- a/public/intl/messages/id-ID.json
+++ b/public/intl/messages/id-ID.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/it-IT.json b/public/intl/messages/it-IT.json
index 21b70650..d755b277 100644
--- a/public/intl/messages/it-IT.json
+++ b/public/intl/messages/it-IT.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/ja-JP.json b/public/intl/messages/ja-JP.json
index c11311c4..b2bc66a0 100644
--- a/public/intl/messages/ja-JP.json
+++ b/public/intl/messages/ja-JP.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/km-KH.json b/public/intl/messages/km-KH.json
index d8f7d501..841dabdd 100644
--- a/public/intl/messages/km-KH.json
+++ b/public/intl/messages/km-KH.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/ko-KR.json b/public/intl/messages/ko-KR.json
index da196a3c..deab1408 100644
--- a/public/intl/messages/ko-KR.json
+++ b/public/intl/messages/ko-KR.json
@@ -2,7 +2,7 @@
"label.access-code": [
{
"type": 0,
- "value": "Access code"
+ "value": "액세스 코드"
}
],
"label.actions": [
@@ -14,31 +14,31 @@
"label.activity-log": [
{
"type": 0,
- "value": "Activity log"
+ "value": "활동 기록"
}
],
"label.add": [
{
"type": 0,
- "value": "Add"
+ "value": "추가"
}
],
"label.add-description": [
{
"type": 0,
- "value": "Add description"
+ "value": "설명 추가"
}
],
"label.add-member": [
{
"type": 0,
- "value": "Add member"
+ "value": "멤버 추가"
}
],
"label.add-step": [
{
"type": 0,
- "value": "Add step"
+ "value": "단계 추가"
}
],
"label.add-website": [
@@ -56,7 +56,7 @@
"label.after": [
{
"type": 0,
- "value": "After"
+ "value": "이후"
}
],
"label.all": [
@@ -68,19 +68,19 @@
"label.all-time": [
{
"type": 0,
- "value": "All time"
+ "value": "전체 시간"
}
],
"label.analytics": [
{
"type": 0,
- "value": "Analytics"
+ "value": "분석"
}
],
"label.average": [
{
"type": 0,
- "value": "Average"
+ "value": "평균"
}
],
"label.back": [
@@ -92,7 +92,7 @@
"label.before": [
{
"type": 0,
- "value": "Before"
+ "value": "이전"
}
],
"label.bounce-rate": [
@@ -104,13 +104,13 @@
"label.breakdown": [
{
"type": 0,
- "value": "Breakdown"
+ "value": "세부 사항"
}
],
"label.browser": [
{
"type": 0,
- "value": "Browser"
+ "value": "브라우저"
}
],
"label.browsers": [
@@ -128,37 +128,37 @@
"label.change-password": [
{
"type": 0,
- "value": "비밀번호 변경"
+ "value": "비밀번호 변경하기"
}
],
"label.cities": [
{
"type": 0,
- "value": "Cities"
+ "value": "도시"
}
],
"label.city": [
{
"type": 0,
- "value": "City"
+ "value": "도시"
}
],
"label.clear-all": [
{
"type": 0,
- "value": "Clear all"
+ "value": "모두 지우기"
}
],
"label.compare": [
{
"type": 0,
- "value": "Compare"
+ "value": "비교"
}
],
"label.confirm": [
{
"type": 0,
- "value": "Confirm"
+ "value": "확인"
}
],
"label.confirm-password": [
@@ -170,19 +170,19 @@
"label.contains": [
{
"type": 0,
- "value": "Contains"
+ "value": "포함"
}
],
"label.continue": [
{
"type": 0,
- "value": "Continue"
+ "value": "계속"
}
],
"label.count": [
{
"type": 0,
- "value": "Count"
+ "value": "수"
}
],
"label.countries": [
@@ -194,49 +194,49 @@
"label.country": [
{
"type": 0,
- "value": "Country"
+ "value": "국가"
}
],
"label.create": [
{
"type": 0,
- "value": "Create"
+ "value": "생성"
}
],
"label.create-report": [
{
"type": 0,
- "value": "Create report"
+ "value": "리포트 생성"
}
],
"label.create-team": [
{
"type": 0,
- "value": "Create team"
+ "value": "팀 생성"
}
],
"label.create-user": [
{
"type": 0,
- "value": "Create user"
+ "value": "사용자 생성"
}
],
"label.created": [
{
"type": 0,
- "value": "Created"
+ "value": "생성됨"
}
],
"label.created-by": [
{
"type": 0,
- "value": "Created By"
+ "value": "작성자"
}
],
"label.current": [
{
"type": 0,
- "value": "Current"
+ "value": "현재"
}
],
"label.current-password": [
@@ -260,13 +260,13 @@
"label.data": [
{
"type": 0,
- "value": "Data"
+ "value": "데이터"
}
],
"label.date": [
{
"type": 0,
- "value": "Date"
+ "value": "날짜"
}
],
"label.date-range": [
@@ -278,7 +278,7 @@
"label.day": [
{
"type": 0,
- "value": "Day"
+ "value": "일"
}
],
"label.default-date-range": [
@@ -296,19 +296,19 @@
"label.delete-report": [
{
"type": 0,
- "value": "Delete report"
+ "value": "리포트 삭제"
}
],
"label.delete-team": [
{
"type": 0,
- "value": "Delete team"
+ "value": "팀 삭제"
}
],
"label.delete-user": [
{
"type": 0,
- "value": "Delete user"
+ "value": "사용자 삭제"
}
],
"label.delete-website": [
@@ -320,7 +320,7 @@
"label.description": [
{
"type": 0,
- "value": "Description"
+ "value": "설명"
}
],
"label.desktop": [
@@ -332,13 +332,13 @@
"label.details": [
{
"type": 0,
- "value": "Details"
+ "value": "세부 사항"
}
],
"label.device": [
{
"type": 0,
- "value": "Device"
+ "value": "기기"
}
],
"label.devices": [
@@ -356,7 +356,7 @@
"label.does-not-contain": [
{
"type": 0,
- "value": "Does not contain"
+ "value": "포함하지 않음"
}
],
"label.domain": [
@@ -368,7 +368,7 @@
"label.dropoff": [
{
"type": 0,
- "value": "Dropoff"
+ "value": "이탈"
}
],
"label.edit": [
@@ -380,13 +380,13 @@
"label.edit-dashboard": [
{
"type": 0,
- "value": "Edit dashboard"
+ "value": "대시보드 편집"
}
],
"label.edit-member": [
{
"type": 0,
- "value": "Edit member"
+ "value": "회원 편집"
}
],
"label.enable-share-url": [
@@ -398,25 +398,25 @@
"label.end-step": [
{
"type": 0,
- "value": "End Step"
+ "value": "종료 단계"
}
],
"label.entry": [
{
"type": 0,
- "value": "Entry URL"
+ "value": "입장 URL"
}
],
"label.event": [
{
"type": 0,
- "value": "Event"
+ "value": "이벤트"
}
],
"label.event-data": [
{
"type": 0,
- "value": "Event data"
+ "value": "이벤트 데이터"
}
],
"label.events": [
@@ -428,31 +428,31 @@
"label.exit": [
{
"type": 0,
- "value": "Exit URL"
+ "value": "퇴장 URL"
}
],
"label.false": [
{
"type": 0,
- "value": "False"
+ "value": "거짓"
}
],
"label.field": [
{
"type": 0,
- "value": "Field"
+ "value": "필드"
}
],
"label.fields": [
{
"type": 0,
- "value": "Fields"
+ "value": "필드"
}
],
"label.filter": [
{
"type": 0,
- "value": "Filter"
+ "value": "필터"
}
],
"label.filter-combined": [
@@ -470,133 +470,133 @@
"label.filters": [
{
"type": 0,
- "value": "Filters"
+ "value": "필터"
}
],
"label.funnel": [
{
"type": 0,
- "value": "Funnel"
+ "value": "퍼널"
}
],
"label.funnel-description": [
{
"type": 0,
- "value": "Understand the conversion and drop-off rate of users."
+ "value": "사용자 전환율 및 이탈률을 살펴보세요."
}
],
"label.goal": [
{
"type": 0,
- "value": "Goal"
+ "value": "목표"
}
],
"label.goals": [
{
"type": 0,
- "value": "Goals"
+ "value": "목표"
}
],
"label.goals-description": [
{
"type": 0,
- "value": "Track your goals for pageviews and events."
+ "value": "페이지뷰 및 이벤트 목표를 추적합니다."
}
],
"label.greater-than": [
{
"type": 0,
- "value": "Greater than"
+ "value": "이상"
}
],
"label.greater-than-equals": [
{
"type": 0,
- "value": "Greater than or equals"
+ "value": "이상"
}
],
"label.host": [
{
"type": 0,
- "value": "Host"
+ "value": "호스트"
}
],
"label.hosts": [
{
"type": 0,
- "value": "Hosts"
+ "value": "호스트"
}
],
"label.insights": [
{
"type": 0,
- "value": "Insights"
+ "value": "인사이트"
}
],
"label.insights-description": [
{
"type": 0,
- "value": "Dive deeper into your data by using segments and filters."
+ "value": "세그먼트 및 필터를 사용하여 데이터를 더 자세히 살펴보세요."
}
],
"label.is": [
{
"type": 0,
- "value": "Is"
+ "value": "해당"
}
],
"label.is-not": [
{
"type": 0,
- "value": "Is not"
+ "value": "해당하지 않음"
}
],
"label.is-not-set": [
{
"type": 0,
- "value": "Is not set"
+ "value": "설정되지 않음"
}
],
"label.is-set": [
{
"type": 0,
- "value": "Is set"
+ "value": "설정됨"
}
],
"label.join": [
{
"type": 0,
- "value": "Join"
+ "value": "가입"
}
],
"label.join-team": [
{
"type": 0,
- "value": "Join team"
+ "value": "팀 가입"
}
],
"label.journey": [
{
"type": 0,
- "value": "Journey"
+ "value": "여정"
}
],
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "사용자가 웹사이트를 탐색하는 경로를 살펴보세요."
}
],
"label.language": [
{
"type": 0,
- "value": "Language"
+ "value": "언어"
}
],
"label.languages": [
{
"type": 0,
- "value": "Languages"
+ "value": "언어"
}
],
"label.laptop": [
@@ -616,7 +616,7 @@
},
{
"type": 0,
- "value": " 일간"
+ "value": " 일"
}
],
"label.last-hours": [
@@ -636,7 +636,7 @@
"label.last-months": [
{
"type": 0,
- "value": "Last "
+ "value": "최근 "
},
{
"type": 1,
@@ -644,31 +644,31 @@
},
{
"type": 0,
- "value": " months"
+ "value": " 개월"
}
],
"label.leave": [
{
"type": 0,
- "value": "Leave"
+ "value": "떠나기"
}
],
"label.leave-team": [
{
"type": 0,
- "value": "Leave team"
+ "value": "팀 떠나기"
}
],
"label.less-than": [
{
"type": 0,
- "value": "Less than"
+ "value": "미만"
}
],
"label.less-than-equals": [
{
"type": 0,
- "value": "Less than or equals"
+ "value": "이하"
}
],
"label.login": [
@@ -686,37 +686,37 @@
"label.manage": [
{
"type": 0,
- "value": "Manage"
+ "value": "관리"
}
],
"label.manager": [
{
"type": 0,
- "value": "Manager"
+ "value": "관리자"
}
],
"label.max": [
{
"type": 0,
- "value": "Max"
+ "value": "최대"
}
],
"label.member": [
{
"type": 0,
- "value": "Member"
+ "value": "멤버"
}
],
"label.members": [
{
"type": 0,
- "value": "Members"
+ "value": "멤버"
}
],
"label.min": [
{
"type": 0,
- "value": "Min"
+ "value": "최소"
}
],
"label.mobile": [
@@ -734,13 +734,13 @@
"label.my-account": [
{
"type": 0,
- "value": "My account"
+ "value": "내 계정"
}
],
"label.my-websites": [
{
"type": 0,
- "value": "My websites"
+ "value": "내 웹사이트"
}
],
"label.name": [
@@ -758,7 +758,7 @@
"label.none": [
{
"type": 0,
- "value": "None"
+ "value": "없음"
}
],
"label.number-of-records": [
@@ -785,7 +785,7 @@
"value": [
{
"type": 0,
- "value": "records"
+ "value": "레코드"
}
]
}
@@ -798,31 +798,35 @@
"label.ok": [
{
"type": 0,
- "value": "OK"
+ "value": "확인"
}
],
"label.os": [
{
"type": 0,
- "value": "OS"
+ "value": "운영체제"
}
],
"label.overview": [
{
"type": 0,
- "value": "Overview"
+ "value": "개요"
}
],
"label.owner": [
{
"type": 0,
- "value": "Owner"
+ "value": "소유자"
}
],
"label.page-of": [
+ {
+ "type": 1,
+ "value": "total"
+ },
{
"type": 0,
- "value": "Page "
+ "value": " 중 "
},
{
"type": 1,
@@ -830,23 +834,19 @@
},
{
"type": 0,
- "value": " of "
- },
- {
- "type": 1,
- "value": "total"
+ "value": " 페이지"
}
],
"label.page-views": [
{
"type": 0,
- "value": "페이지 뷰(PV)"
+ "value": "페이지 뷰"
}
],
"label.pageTitle": [
{
"type": 0,
- "value": "Page title"
+ "value": "페이지 제목"
}
],
"label.pages": [
@@ -878,19 +878,19 @@
"label.previous": [
{
"type": 0,
- "value": "Previous"
+ "value": "이전"
}
],
"label.previous-period": [
{
"type": 0,
- "value": "Previous period"
+ "value": "이전 기간"
}
],
"label.previous-year": [
{
"type": 0,
- "value": "Previous year"
+ "value": "이전 연도"
}
],
"label.profile": [
@@ -902,25 +902,25 @@
"label.property": [
{
"type": 0,
- "value": "Property"
+ "value": "속성"
}
],
"label.queries": [
{
"type": 0,
- "value": "Queries"
+ "value": "쿼리"
}
],
"label.query": [
{
"type": 0,
- "value": "Query"
+ "value": "쿼리"
}
],
"label.query-parameters": [
{
"type": 0,
- "value": "Query parameters"
+ "value": "쿼리 매개변수"
}
],
"label.realtime": [
@@ -932,7 +932,7 @@
"label.referrer": [
{
"type": 0,
- "value": "Referrer"
+ "value": "리퍼러"
}
],
"label.referrers": [
@@ -950,37 +950,37 @@
"label.regenerate": [
{
"type": 0,
- "value": "Regenerate"
+ "value": "다시 생성"
}
],
"label.region": [
{
"type": 0,
- "value": "Region"
+ "value": "지역"
}
],
"label.regions": [
{
"type": 0,
- "value": "Regions"
+ "value": "지역"
}
],
"label.remove": [
{
"type": 0,
- "value": "Remove"
+ "value": "제거"
}
],
"label.remove-member": [
{
"type": 0,
- "value": "Remove member"
+ "value": "멤버 제거"
}
],
"label.reports": [
{
"type": 0,
- "value": "Reports"
+ "value": "리포트"
}
],
"label.required": [
@@ -998,31 +998,31 @@
"label.reset-website": [
{
"type": 0,
- "value": "Reset statistics"
+ "value": "웹사이트 초기화"
}
],
"label.retention": [
{
"type": 0,
- "value": "Retention"
+ "value": "리텐션"
}
],
"label.retention-description": [
{
"type": 0,
- "value": "Measure your website stickiness by tracking how often users return."
+ "value": "사용자가 얼마나 자주 돌아오는지를 추적하여 웹사이트의 리텐션을 측정하십시오."
}
],
"label.role": [
{
"type": 0,
- "value": "Role"
+ "value": "역할"
}
],
"label.run-query": [
{
"type": 0,
- "value": "Run query"
+ "value": "쿼리 실행"
}
],
"label.save": [
@@ -1034,43 +1034,43 @@
"label.screens": [
{
"type": 0,
- "value": "Screens"
+ "value": "스크린"
}
],
"label.search": [
{
"type": 0,
- "value": "Search"
+ "value": "검색"
}
],
"label.select": [
{
"type": 0,
- "value": "Select"
+ "value": "선택"
}
],
"label.select-date": [
{
"type": 0,
- "value": "Select date"
+ "value": "날짜 선택"
}
],
"label.select-role": [
{
"type": 0,
- "value": "Select role"
+ "value": "역할 선택"
}
],
"label.select-website": [
{
"type": 0,
- "value": "Select website"
+ "value": "웹사이트 선택"
}
],
"label.sessions": [
{
"type": 0,
- "value": "Sessions"
+ "value": "세션"
}
],
"label.settings": [
@@ -1094,19 +1094,19 @@
"label.start-step": [
{
"type": 0,
- "value": "Start Step"
+ "value": "시작 단계"
}
],
"label.steps": [
{
"type": 0,
- "value": "Steps"
+ "value": "단계"
}
],
"label.sum": [
{
"type": 0,
- "value": "Sum"
+ "value": "합계"
}
],
"label.tablet": [
@@ -1118,61 +1118,61 @@
"label.team": [
{
"type": 0,
- "value": "Team"
+ "value": "팀"
}
],
"label.team-id": [
{
"type": 0,
- "value": "Team ID"
+ "value": "팀 ID"
}
],
"label.team-manager": [
{
"type": 0,
- "value": "Team manager"
+ "value": "팀 관리자"
}
],
"label.team-member": [
{
"type": 0,
- "value": "Team member"
+ "value": "팀 멤버"
}
],
"label.team-name": [
{
"type": 0,
- "value": "Team name"
+ "value": "팀 이름"
}
],
"label.team-owner": [
{
"type": 0,
- "value": "Team owner"
+ "value": "팀 소유자"
}
],
"label.team-view-only": [
{
"type": 0,
- "value": "Team view only"
+ "value": "팀 보기 전용"
}
],
"label.team-websites": [
{
"type": 0,
- "value": "Team websites"
+ "value": "팀 웹사이트"
}
],
"label.teams": [
{
"type": 0,
- "value": "Teams"
+ "value": "팀"
}
],
"label.theme": [
{
"type": 0,
- "value": "Theme"
+ "value": "테마"
}
],
"label.this-month": [
@@ -1202,7 +1202,7 @@
"label.title": [
{
"type": 0,
- "value": "Title"
+ "value": "제목"
}
],
"label.today": [
@@ -1214,19 +1214,19 @@
"label.toggle-charts": [
{
"type": 0,
- "value": "Toggle charts"
+ "value": "차트 전환"
}
],
"label.total": [
{
"type": 0,
- "value": "Total"
+ "value": "합계"
}
],
"label.total-records": [
{
"type": 0,
- "value": "Total records"
+ "value": "총 레코드"
}
],
"label.tracking-code": [
@@ -1238,31 +1238,31 @@
"label.transfer": [
{
"type": 0,
- "value": "Transfer"
+ "value": "전송"
}
],
"label.transfer-website": [
{
"type": 0,
- "value": "Transfer website"
+ "value": "웹사이트 전송"
}
],
"label.true": [
{
"type": 0,
- "value": "True"
+ "value": "참"
}
],
"label.type": [
{
"type": 0,
- "value": "Type"
+ "value": "유형"
}
],
"label.unique": [
{
"type": 0,
- "value": "Unique"
+ "value": "고유"
}
],
"label.unique-visitors": [
@@ -1280,13 +1280,13 @@
"label.untitled": [
{
"type": 0,
- "value": "Untitled"
+ "value": "제목 없음"
}
],
"label.update": [
{
"type": 0,
- "value": "Update"
+ "value": "업데이트"
}
],
"label.url": [
@@ -1298,13 +1298,13 @@
"label.urls": [
{
"type": 0,
- "value": "URLs"
+ "value": "URL"
}
],
"label.user": [
{
"type": 0,
- "value": "User"
+ "value": "사용자"
}
],
"label.username": [
@@ -1316,7 +1316,7 @@
"label.users": [
{
"type": 0,
- "value": "Users"
+ "value": "사용자"
}
],
"label.utm": [
@@ -1328,19 +1328,19 @@
"label.utm-description": [
{
"type": 0,
- "value": "Track your campaigns through UTM parameters."
+ "value": "UTM 매개변수를 통해 캠페인을 추적합니다."
}
],
"label.value": [
{
"type": 0,
- "value": "Value"
+ "value": "값"
}
],
"label.view": [
{
"type": 0,
- "value": "View"
+ "value": "보기"
}
],
"label.view-details": [
@@ -1352,7 +1352,7 @@
"label.view-only": [
{
"type": 0,
- "value": "View only"
+ "value": "보기 전용"
}
],
"label.views": [
@@ -1364,7 +1364,7 @@
"label.views-per-visit": [
{
"type": 0,
- "value": "Views per visit"
+ "value": "방문당 조회수"
}
],
"label.visit-duration": [
@@ -1382,19 +1382,19 @@
"label.visits": [
{
"type": 0,
- "value": "Visits"
+ "value": "방문"
}
],
"label.website": [
{
"type": 0,
- "value": "Website"
+ "value": "웹사이트"
}
],
"label.website-id": [
{
"type": 0,
- "value": "Website ID"
+ "value": "웹사이트 ID"
}
],
"label.websites": [
@@ -1406,19 +1406,19 @@
"label.window": [
{
"type": 0,
- "value": "Window"
+ "value": "창"
}
],
"label.yesterday": [
{
"type": 0,
- "value": "Yesterday"
+ "value": "어제"
}
],
"message.action-confirmation": [
{
"type": 0,
- "value": "Type "
+ "value": "확인을 위해 아래 상자에 "
},
{
"type": 1,
@@ -1426,7 +1426,7 @@
},
{
"type": 0,
- "value": " in the box below to confirm."
+ "value": "을(를) 입력하십시오."
}
],
"message.active-users": [
@@ -1442,7 +1442,7 @@
"message.collected-data": [
{
"type": 0,
- "value": "Collected data"
+ "value": "수집된 데이터"
}
],
"message.confirm-delete": [
@@ -1456,57 +1456,45 @@
}
],
"message.confirm-leave": [
- {
- "type": 0,
- "value": "Are you sure you want to leave "
- },
{
"type": 1,
"value": "target"
},
{
"type": 0,
- "value": "?"
+ "value": "을(를) 떠나시겠습니까?"
}
],
"message.confirm-remove": [
- {
- "type": 0,
- "value": "Are you sure you want to remove "
- },
{
"type": 1,
"value": "target"
},
{
"type": 0,
- "value": "?"
+ "value": "을(를) 제거하시겠습니까?"
}
],
"message.confirm-reset": [
- {
- "type": 0,
- "value": "Are your sure you want to reset "
- },
{
"type": 1,
"value": "target"
},
{
"type": 0,
- "value": "'s statistics?"
+ "value": "을(를) 초기화하시겠습니까?"
}
],
"message.delete-team-warning": [
{
"type": 0,
- "value": "Deleting a team will also delete all team websites."
+ "value": "팀을 삭제하면 팀에 등록된 모든 웹사이트도 삭제됩니다."
}
],
"message.delete-website-warning": [
{
"type": 0,
- "value": "관련된 모든 데이터도 삭제됩니다."
+ "value": "관련된 모든 데이터가 삭제됩니다."
}
],
"message.error": [
@@ -1522,7 +1510,7 @@
},
{
"type": 0,
- "value": " on "
+ "value": " - "
},
{
"type": 1,
@@ -1538,7 +1526,7 @@
"message.incorrect-username-password": [
{
"type": 0,
- "value": "사용자 이름/비밀번호가 잘못되었습니다.."
+ "value": "사용자 이름/비밀번호가 잘못되었습니다."
}
],
"message.invalid-domain": [
@@ -1550,7 +1538,7 @@
"message.min-password-length": [
{
"type": 0,
- "value": "Minimum length of "
+ "value": "최소 길이는 "
},
{
"type": 1,
@@ -1558,21 +1546,17 @@
},
{
"type": 0,
- "value": " characters"
+ "value": "자입니다"
}
],
"message.new-version-available": [
{
"type": 0,
- "value": "A new version of Umami "
+ "value": "새 버전이 사용 가능합니다! - Umami "
},
{
"type": 1,
"value": "version"
- },
- {
- "type": 0,
- "value": " is available!"
}
],
"message.no-data-available": [
@@ -1584,7 +1568,7 @@
"message.no-event-data": [
{
"type": 0,
- "value": "No event data is available."
+ "value": "사용 가능한 이벤트 데이터가 없습니다."
}
],
"message.no-match-password": [
@@ -1596,31 +1580,31 @@
"message.no-results-found": [
{
"type": 0,
- "value": "No results were found."
+ "value": "결과를 찾을 수 없습니다."
}
],
"message.no-team-websites": [
{
"type": 0,
- "value": "This team does not have any websites."
+ "value": "이 팀에는 웹사이트가 없습니다."
}
],
"message.no-teams": [
{
"type": 0,
- "value": "You have not created any teams."
+ "value": "생성된 팀이 없습니다."
}
],
"message.no-users": [
{
"type": 0,
- "value": "There are no users."
+ "value": "사용자가 없습니다."
}
],
"message.no-websites-configured": [
{
"type": 0,
- "value": "구성된 웹 사이트가 없습니다."
+ "value": "설정된 웹사이트가 없습니다."
}
],
"message.page-not-found": [
@@ -1632,7 +1616,7 @@
"message.reset-website": [
{
"type": 0,
- "value": "To reset this website, type "
+ "value": "이 웹사이트를 초기화하려면, 아래 상자에 "
},
{
"type": 1,
@@ -1640,13 +1624,13 @@
},
{
"type": 0,
- "value": " in the box below to confirm."
+ "value": "을(를) 입력하십시오."
}
],
"message.reset-website-warning": [
{
"type": 0,
- "value": "All statistics for this website will be deleted, but your tracking code will remain intact."
+ "value": "이 웹사이트의 모든 통계가 삭제되지만 설정은 그대로 유지됩니다."
}
],
"message.saved": [
@@ -1658,78 +1642,100 @@
"message.share-url": [
{
"type": 0,
- "value": "이것은 "
- },
- {
- "type": 1,
- "value": "target"
- },
- {
- "type": 0,
- "value": "의 공개적으로 공유된 URL입니다."
+ "value": "아래 링크를 통해 웹사이트의 통계를 누구나 볼 수 있습니다."
}
],
"message.team-already-member": [
{
"type": 0,
- "value": "You are already a member of the team."
+ "value": "이미 팀의 회원입니다."
}
],
"message.team-not-found": [
{
"type": 0,
- "value": "Team not found."
+ "value": "팀을 찾을 수 없습니다."
}
],
"message.team-websites-info": [
{
"type": 0,
- "value": "Websites can be viewed by anyone on the team."
+ "value": "웹사이트는 팀의 누구나 볼 수 있습니다."
}
],
"message.tracking-code": [
{
"type": 0,
- "value": "추적 코드"
+ "value": "이 웹사이트의 통계를 추적하려면, 다음 코드를 HTML의 "
+ },
+ {
+ "children": [
+ {
+ "type": 0,
+ "value": "..."
+ }
+ ],
+ "type": 8,
+ "value": "head"
+ },
+ {
+ "type": 0,
+ "value": " 섹션에 추가하십시오."
}
],
"message.transfer-team-website-to-user": [
{
"type": 0,
- "value": "Transfer this website to your account?"
+ "value": "이 웹사이트를 당신의 계정으로 전송하시겠습니까?"
}
],
"message.transfer-user-website-to-team": [
{
"type": 0,
- "value": "Select the team to transfer this website to."
+ "value": "이 웹사이트를 전송받을 팀을 선택하십시오."
}
],
"message.transfer-website": [
{
"type": 0,
- "value": "Transfer website ownership to your account or another team."
+ "value": "웹사이트 소유권을 계정이나 다른 팀으로 전송합니다."
}
],
"message.triggered-event": [
{
"type": 0,
- "value": "Triggered event"
+ "value": "트리거된 이벤트"
}
],
"message.user-deleted": [
{
"type": 0,
- "value": "User deleted."
+ "value": "사용자가 삭제되었습니다."
}
],
"message.viewed-page": [
{
"type": 0,
- "value": "Viewed page"
+ "value": "페이지 조회"
}
],
"message.visitor-log": [
+ {
+ "type": 1,
+ "value": "country"
+ },
+ {
+ "type": 0,
+ "value": "의 "
+ },
+ {
+ "type": 1,
+ "value": "browser"
+ },
+ {
+ "type": 0,
+ "value": " 브라우저를 사용하는 "
+ },
{
"type": 1,
"value": "os"
@@ -1744,29 +1750,13 @@
},
{
"type": 0,
- "value": "에서 "
- },
- {
- "type": 1,
- "value": "browser"
- },
- {
- "type": 0,
- "value": "을(를) 사용하는 "
- },
- {
- "type": 1,
- "value": "country"
- },
- {
- "type": 0,
- "value": "의 방문자"
+ "value": " 방문자"
}
],
"message.visitors-dropped-off": [
{
"type": 0,
- "value": "Visitors dropped off"
+ "value": "방문자가 이탈했습니다"
}
]
}
diff --git a/public/intl/messages/lt-LT.json b/public/intl/messages/lt-LT.json
index 891aed6f..e6c6cd18 100644
--- a/public/intl/messages/lt-LT.json
+++ b/public/intl/messages/lt-LT.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/mn-MN.json b/public/intl/messages/mn-MN.json
index b11d88c1..d9461929 100644
--- a/public/intl/messages/mn-MN.json
+++ b/public/intl/messages/mn-MN.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/ms-MY.json b/public/intl/messages/ms-MY.json
index 996af333..8f47f3cd 100644
--- a/public/intl/messages/ms-MY.json
+++ b/public/intl/messages/ms-MY.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/my-MM.json b/public/intl/messages/my-MM.json
index 34f83c02..9451a0fe 100644
--- a/public/intl/messages/my-MM.json
+++ b/public/intl/messages/my-MM.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/nb-NO.json b/public/intl/messages/nb-NO.json
index eeb648c4..3e73b45e 100644
--- a/public/intl/messages/nb-NO.json
+++ b/public/intl/messages/nb-NO.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/nl-NL.json b/public/intl/messages/nl-NL.json
index 16f2de07..a186de86 100644
--- a/public/intl/messages/nl-NL.json
+++ b/public/intl/messages/nl-NL.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/pl-PL.json b/public/intl/messages/pl-PL.json
index 29e99d4f..608c0b3a 100644
--- a/public/intl/messages/pl-PL.json
+++ b/public/intl/messages/pl-PL.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/pt-BR.json b/public/intl/messages/pt-BR.json
index 149af775..ae5b0de4 100644
--- a/public/intl/messages/pt-BR.json
+++ b/public/intl/messages/pt-BR.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/pt-PT.json b/public/intl/messages/pt-PT.json
index 340ebb88..02704e9e 100644
--- a/public/intl/messages/pt-PT.json
+++ b/public/intl/messages/pt-PT.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/ro-RO.json b/public/intl/messages/ro-RO.json
index 67d0929b..311199cf 100644
--- a/public/intl/messages/ro-RO.json
+++ b/public/intl/messages/ro-RO.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/ru-RU.json b/public/intl/messages/ru-RU.json
index 1d0a86a1..30974dd6 100644
--- a/public/intl/messages/ru-RU.json
+++ b/public/intl/messages/ru-RU.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/si-LK.json b/public/intl/messages/si-LK.json
index d7cfd7bf..e6b06c6b 100644
--- a/public/intl/messages/si-LK.json
+++ b/public/intl/messages/si-LK.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/sk-SK.json b/public/intl/messages/sk-SK.json
index 2be1f015..738ead43 100644
--- a/public/intl/messages/sk-SK.json
+++ b/public/intl/messages/sk-SK.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/sl-SI.json b/public/intl/messages/sl-SI.json
index 83c383c1..67f65ad4 100644
--- a/public/intl/messages/sl-SI.json
+++ b/public/intl/messages/sl-SI.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/sv-SE.json b/public/intl/messages/sv-SE.json
index a6336a30..c2b2c5e0 100644
--- a/public/intl/messages/sv-SE.json
+++ b/public/intl/messages/sv-SE.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/ta-IN.json b/public/intl/messages/ta-IN.json
index 4afcb8db..13ab6798 100644
--- a/public/intl/messages/ta-IN.json
+++ b/public/intl/messages/ta-IN.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/th-TH.json b/public/intl/messages/th-TH.json
index 32d5e677..43158951 100644
--- a/public/intl/messages/th-TH.json
+++ b/public/intl/messages/th-TH.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/tr-TR.json b/public/intl/messages/tr-TR.json
index ac49dd47..1edfdbbc 100644
--- a/public/intl/messages/tr-TR.json
+++ b/public/intl/messages/tr-TR.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/uk-UA.json b/public/intl/messages/uk-UA.json
index 6ea471a6..33579a33 100644
--- a/public/intl/messages/uk-UA.json
+++ b/public/intl/messages/uk-UA.json
@@ -566,7 +566,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/ur-PK.json b/public/intl/messages/ur-PK.json
index 18fce7eb..9d3c932b 100644
--- a/public/intl/messages/ur-PK.json
+++ b/public/intl/messages/ur-PK.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/vi-VN.json b/public/intl/messages/vi-VN.json
index 50409fab..424d30a6 100644
--- a/public/intl/messages/vi-VN.json
+++ b/public/intl/messages/vi-VN.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/public/intl/messages/zh-CN.json b/public/intl/messages/zh-CN.json
index e66a8eb1..0b7da8a5 100644
--- a/public/intl/messages/zh-CN.json
+++ b/public/intl/messages/zh-CN.json
@@ -152,7 +152,7 @@
"label.compare": [
{
"type": 0,
- "value": "Compare"
+ "value": "对比"
}
],
"label.confirm": [
@@ -182,7 +182,7 @@
"label.count": [
{
"type": 0,
- "value": "Count"
+ "value": "数量"
}
],
"label.countries": [
@@ -236,7 +236,7 @@
"label.current": [
{
"type": 0,
- "value": "Current"
+ "value": "当前"
}
],
"label.current-password": [
@@ -398,13 +398,13 @@
"label.end-step": [
{
"type": 0,
- "value": "End Step"
+ "value": "最后一步"
}
],
"label.entry": [
{
"type": 0,
- "value": "Entry URL"
+ "value": "首次访问 URL"
}
],
"label.event": [
@@ -428,7 +428,7 @@
"label.exit": [
{
"type": 0,
- "value": "Exit URL"
+ "value": "退出 URL"
}
],
"label.false": [
@@ -488,19 +488,19 @@
"label.goal": [
{
"type": 0,
- "value": "Goal"
+ "value": "目标"
}
],
"label.goals": [
{
"type": 0,
- "value": "Goals"
+ "value": "目标"
}
],
"label.goals-description": [
{
"type": 0,
- "value": "Track your goals for pageviews and events."
+ "value": "追踪您的页面浏览量和事件目标。"
}
],
"label.greater-than": [
@@ -518,13 +518,13 @@
"label.host": [
{
"type": 0,
- "value": "Host"
+ "value": "主机"
}
],
"label.hosts": [
{
"type": 0,
- "value": "Hosts"
+ "value": "主机"
}
],
"label.insights": [
@@ -578,13 +578,13 @@
"label.journey": [
{
"type": 0,
- "value": "Journey"
+ "value": "轨迹"
}
],
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "了解用户如何浏览您网站的哪些页面。"
}
],
"label.language": [
@@ -692,7 +692,7 @@
"label.manager": [
{
"type": 0,
- "value": "Manager"
+ "value": "管理者"
}
],
"label.max": [
@@ -798,7 +798,7 @@
"label.ok": [
{
"type": 0,
- "value": "OK"
+ "value": "好的"
}
],
"label.os": [
@@ -882,19 +882,19 @@
"label.previous": [
{
"type": 0,
- "value": "Previous"
+ "value": "之前"
}
],
"label.previous-period": [
{
"type": 0,
- "value": "Previous period"
+ "value": "前一周期"
}
],
"label.previous-year": [
{
"type": 0,
- "value": "Previous year"
+ "value": "前一年"
}
],
"label.profile": [
@@ -906,7 +906,7 @@
"label.property": [
{
"type": 0,
- "value": "Property"
+ "value": "属性"
}
],
"label.queries": [
@@ -1098,7 +1098,7 @@
"label.start-step": [
{
"type": 0,
- "value": "Start Step"
+ "value": "第一步"
}
],
"label.steps": [
@@ -1134,7 +1134,7 @@
"label.team-manager": [
{
"type": 0,
- "value": "Team manager"
+ "value": "团队管理"
}
],
"label.team-member": [
@@ -1450,7 +1450,7 @@
"message.collected-data": [
{
"type": 0,
- "value": "Collected data"
+ "value": "收集数据"
}
],
"message.confirm-delete": [
diff --git a/public/intl/messages/zh-TW.json b/public/intl/messages/zh-TW.json
index d6514ab4..37c490d7 100644
--- a/public/intl/messages/zh-TW.json
+++ b/public/intl/messages/zh-TW.json
@@ -584,7 +584,7 @@
"label.journey-description": [
{
"type": 0,
- "value": "Understand how users nagivate through your website."
+ "value": "Understand how users navigate through your website."
}
],
"label.language": [
diff --git a/src/app/(main)/console/TestConsole.tsx b/src/app/(main)/console/TestConsole.tsx
index d0afb14c..7461454f 100644
--- a/src/app/(main)/console/TestConsole.tsx
+++ b/src/app/(main)/console/TestConsole.tsx
@@ -21,8 +21,12 @@ export function TestConsole({ websiteId }: { websiteId: string }) {
router.push(`/console/${value}`);
}
- function handleClick() {
- window['umami'].track({ url: '/page-view', referrer: 'https://www.google.com' });
+ function handleRunScript() {
+ window['umami'].track(props => ({
+ ...props,
+ url: '/page-view',
+ referrer: 'https://www.google.com',
+ }));
window['umami'].track('track-event-no-data');
window['umami'].track('track-event-with-data', {
test: 'test-data',
@@ -44,7 +48,7 @@ export function TestConsole({ websiteId }: { websiteId: string }) {
});
}
- function handleIdentifyClick() {
+ function handleRunIdentify() {
window['umami'].identify({
userId: 123,
name: 'brian',
@@ -145,10 +149,10 @@ export function TestConsole({ websiteId }: { websiteId: string }) {
Javascript events
-
diff --git a/src/app/(main)/websites/[websiteId]/WebsiteHeader.tsx b/src/app/(main)/websites/[websiteId]/WebsiteHeader.tsx
index 0cbaeb44..bbd6460a 100644
--- a/src/app/(main)/websites/[websiteId]/WebsiteHeader.tsx
+++ b/src/app/(main)/websites/[websiteId]/WebsiteHeader.tsx
@@ -46,9 +46,14 @@ export function WebsiteHeader({
path: '/reports',
},
{
- label: formatMessage(labels.eventData),
+ label: formatMessage(labels.sessions),
+ icon: ,
+ path: '/sessions',
+ },
+ {
+ label: formatMessage(labels.events),
icon: ,
- path: '/event-data',
+ path: '/events',
},
];
diff --git a/src/app/(main)/websites/[websiteId]/event-data/EventDataMetricsBar.module.css b/src/app/(main)/websites/[websiteId]/events/EventDataMetricsBar.module.css
similarity index 100%
rename from src/app/(main)/websites/[websiteId]/event-data/EventDataMetricsBar.module.css
rename to src/app/(main)/websites/[websiteId]/events/EventDataMetricsBar.module.css
diff --git a/src/app/(main)/websites/[websiteId]/event-data/EventDataMetricsBar.tsx b/src/app/(main)/websites/[websiteId]/events/EventDataMetricsBar.tsx
similarity index 100%
rename from src/app/(main)/websites/[websiteId]/event-data/EventDataMetricsBar.tsx
rename to src/app/(main)/websites/[websiteId]/events/EventDataMetricsBar.tsx
diff --git a/src/app/(main)/websites/[websiteId]/event-data/EventDataPage.tsx b/src/app/(main)/websites/[websiteId]/events/EventDataPage.tsx
similarity index 100%
rename from src/app/(main)/websites/[websiteId]/event-data/EventDataPage.tsx
rename to src/app/(main)/websites/[websiteId]/events/EventDataPage.tsx
diff --git a/src/app/(main)/websites/[websiteId]/event-data/EventDataTable.tsx b/src/app/(main)/websites/[websiteId]/events/EventDataTable.tsx
similarity index 100%
rename from src/app/(main)/websites/[websiteId]/event-data/EventDataTable.tsx
rename to src/app/(main)/websites/[websiteId]/events/EventDataTable.tsx
diff --git a/src/app/(main)/websites/[websiteId]/event-data/EventDataValueTable.tsx b/src/app/(main)/websites/[websiteId]/events/EventDataValueTable.tsx
similarity index 100%
rename from src/app/(main)/websites/[websiteId]/event-data/EventDataValueTable.tsx
rename to src/app/(main)/websites/[websiteId]/events/EventDataValueTable.tsx
diff --git a/src/app/(main)/websites/[websiteId]/event-data/WebsiteEventData.module.css b/src/app/(main)/websites/[websiteId]/events/WebsiteEventData.module.css
similarity index 100%
rename from src/app/(main)/websites/[websiteId]/event-data/WebsiteEventData.module.css
rename to src/app/(main)/websites/[websiteId]/events/WebsiteEventData.module.css
diff --git a/src/app/(main)/websites/[websiteId]/event-data/WebsiteEventData.tsx b/src/app/(main)/websites/[websiteId]/events/WebsiteEventData.tsx
similarity index 100%
rename from src/app/(main)/websites/[websiteId]/event-data/WebsiteEventData.tsx
rename to src/app/(main)/websites/[websiteId]/events/WebsiteEventData.tsx
diff --git a/src/app/(main)/websites/[websiteId]/event-data/page.tsx b/src/app/(main)/websites/[websiteId]/events/page.tsx
similarity index 100%
rename from src/app/(main)/websites/[websiteId]/event-data/page.tsx
rename to src/app/(main)/websites/[websiteId]/events/page.tsx
diff --git a/src/app/(main)/websites/[websiteId]/realtime/RealtimeLog.tsx b/src/app/(main)/websites/[websiteId]/realtime/RealtimeLog.tsx
index cbdeb1ac..700e83ae 100644
--- a/src/app/(main)/websites/[websiteId]/realtime/RealtimeLog.tsx
+++ b/src/app/(main)/websites/[websiteId]/realtime/RealtimeLog.tsx
@@ -144,7 +144,10 @@ export function RealtimeLog({ data }: { data: RealtimeData }) {
const { events, visitors } = data;
let logs = [
- ...events.map(e => ({ __type: e.eventName ? TYPE_EVENT : TYPE_PAGEVIEW, ...e })),
+ ...events.map(e => ({
+ __type: e.eventName ? TYPE_EVENT : TYPE_PAGEVIEW,
+ ...e,
+ })),
...visitors.map(v => ({ __type: TYPE_SESSION, ...v })),
].sort(thenby.firstBy('timestamp', -1));
diff --git a/src/app/(main)/websites/[websiteId]/sessions/SessionsDataTable.tsx b/src/app/(main)/websites/[websiteId]/sessions/SessionsDataTable.tsx
new file mode 100644
index 00000000..9e9f97e9
--- /dev/null
+++ b/src/app/(main)/websites/[websiteId]/sessions/SessionsDataTable.tsx
@@ -0,0 +1,25 @@
+import { useSessions } from 'components/hooks';
+import SessionsTable from './SessionsTable';
+import DataTable from 'components/common/DataTable';
+import { ReactNode } from 'react';
+
+export default function SessionsDataTable({
+ websiteId,
+ children,
+}: {
+ websiteId?: string;
+ teamId?: string;
+ children?: ReactNode;
+}) {
+ const queryResult = useSessions(websiteId);
+
+ if (queryResult?.result?.data?.length === 0) {
+ return children;
+ }
+
+ return (
+
+ {({ data }) => }
+
+ );
+}
diff --git a/src/app/(main)/websites/[websiteId]/sessions/SessionsPage.tsx b/src/app/(main)/websites/[websiteId]/sessions/SessionsPage.tsx
new file mode 100644
index 00000000..e95145a7
--- /dev/null
+++ b/src/app/(main)/websites/[websiteId]/sessions/SessionsPage.tsx
@@ -0,0 +1,14 @@
+'use client';
+import WebsiteHeader from '../WebsiteHeader';
+import SessionsDataTable from './SessionsDataTable';
+
+export function SessionsPage({ websiteId }) {
+ return (
+ <>
+
+
+ >
+ );
+}
+
+export default SessionsPage;
diff --git a/src/app/(main)/websites/[websiteId]/sessions/SessionsTable.tsx b/src/app/(main)/websites/[websiteId]/sessions/SessionsTable.tsx
new file mode 100644
index 00000000..41c0fef3
--- /dev/null
+++ b/src/app/(main)/websites/[websiteId]/sessions/SessionsTable.tsx
@@ -0,0 +1,21 @@
+import { GridColumn, GridTable, useBreakpoint } from 'react-basics';
+import { useMessages } from 'components/hooks';
+
+export function SessionsTable({ data = [] }: { data: any[]; showDomain?: boolean }) {
+ const { formatMessage, labels } = useMessages();
+ const breakpoint = useBreakpoint();
+
+ return (
+
+
+
+
+
+
+
+
+
+ );
+}
+
+export default SessionsTable;
diff --git a/src/app/(main)/websites/[websiteId]/sessions/page.tsx b/src/app/(main)/websites/[websiteId]/sessions/page.tsx
new file mode 100644
index 00000000..771f682d
--- /dev/null
+++ b/src/app/(main)/websites/[websiteId]/sessions/page.tsx
@@ -0,0 +1,10 @@
+import SessionsPage from './SessionsPage';
+import { Metadata } from 'next';
+
+export default function ({ params: { websiteId } }) {
+ return ;
+}
+
+export const metadata: Metadata = {
+ title: 'Sessions',
+};
diff --git a/src/app/api/scripts/telemetry/route.ts b/src/app/api/scripts/telemetry/route.ts
new file mode 100644
index 00000000..ecd83fcb
--- /dev/null
+++ b/src/app/api/scripts/telemetry/route.ts
@@ -0,0 +1,28 @@
+import { CURRENT_VERSION, TELEMETRY_PIXEL } from 'lib/constants';
+
+export async function GET() {
+ if (
+ process.env.NODE_ENV !== 'production' &&
+ process.env.DISABLE_TELEMETRY &&
+ process.env.PRIVATE_MODE
+ ) {
+ const script = `
+ (()=>{const i=document.createElement('img');
+ i.setAttribute('src','${TELEMETRY_PIXEL}?v=${CURRENT_VERSION}');
+ i.setAttribute('style','width:0;height:0;position:absolute;pointer-events:none;');
+ document.body.appendChild(i);})();
+ `;
+
+ return new Response(script.replace(/\s\s+/g, ''), {
+ headers: {
+ 'content-type': 'text/javascript',
+ },
+ });
+ }
+
+ return new Response('/* telemetry disabled */', {
+ headers: {
+ 'content-type': 'text/javascript',
+ },
+ });
+}
diff --git a/src/components/hooks/index.ts b/src/components/hooks/index.ts
index df4fbd88..86abdd84 100644
--- a/src/components/hooks/index.ts
+++ b/src/components/hooks/index.ts
@@ -5,6 +5,7 @@ export * from './queries/useLogin';
export * from './queries/useRealtime';
export * from './queries/useReport';
export * from './queries/useReports';
+export * from './queries/useSessions';
export * from './queries/useShareToken';
export * from './queries/useTeam';
export * from './queries/useTeams';
diff --git a/src/components/hooks/queries/useSessions.ts b/src/components/hooks/queries/useSessions.ts
new file mode 100644
index 00000000..c54c3acd
--- /dev/null
+++ b/src/components/hooks/queries/useSessions.ts
@@ -0,0 +1,20 @@
+import { useApi } from './useApi';
+import { useFilterQuery } from './useFilterQuery';
+import useModified from '../useModified';
+
+export function useSessions(websiteId: string, params?: { [key: string]: string | number }) {
+ const { get } = useApi();
+ const { modified } = useModified(`websites`);
+
+ return useFilterQuery({
+ queryKey: ['sessions', { websiteId, modified, ...params }],
+ queryFn: (data: any) => {
+ return get(`/websites/${websiteId}/sessions`, {
+ ...data,
+ ...params,
+ });
+ },
+ });
+}
+
+export default useSessions;
diff --git a/src/components/messages.ts b/src/components/messages.ts
index fa515c66..66090762 100644
--- a/src/components/messages.ts
+++ b/src/components/messages.ts
@@ -265,7 +265,7 @@ export const labels = defineMessages({
journey: { id: 'label.journey', defaultMessage: 'Journey' },
journeyDescription: {
id: 'label.journey-description',
- defaultMessage: 'Understand how users nagivate through your website.',
+ defaultMessage: 'Understand how users navigate through your website.',
},
compare: { id: 'label.compare', defaultMessage: 'Compare' },
current: { id: 'label.current', defaultMessage: 'Current' },
diff --git a/src/lang/am-ET.json b/src/lang/am-ET.json
index 323fe4e8..7c533031 100644
--- a/src/lang/am-ET.json
+++ b/src/lang/am-ET.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "Languages",
"label.laptop": "Laptop",
diff --git a/src/lang/ar-SA.json b/src/lang/ar-SA.json
index a9fd02cf..f764f29e 100644
--- a/src/lang/ar-SA.json
+++ b/src/lang/ar-SA.json
@@ -96,7 +96,7 @@
"label.join": "انضم",
"label.join-team": "انضم للفريق",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "اللغة",
"label.languages": "اللغات",
"label.laptop": "لابتوب",
diff --git a/src/lang/be-BY.json b/src/lang/be-BY.json
index 3a4a0335..53533023 100644
--- a/src/lang/be-BY.json
+++ b/src/lang/be-BY.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Мова",
"label.languages": "Мовы",
"label.laptop": "Ноўтбук",
diff --git a/src/lang/bg-BG.json b/src/lang/bg-BG.json
index 9b22b466..5095b387 100644
--- a/src/lang/bg-BG.json
+++ b/src/lang/bg-BG.json
@@ -96,7 +96,7 @@
"label.join": "Присъедини се",
"label.join-team": "Присъедини се към екип",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Език",
"label.languages": "Езици",
"label.laptop": "Лаптоп",
diff --git a/src/lang/bn-BD.json b/src/lang/bn-BD.json
index 43b41420..18eb1d89 100644
--- a/src/lang/bn-BD.json
+++ b/src/lang/bn-BD.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "ভাষা",
"label.languages": "ভাষা",
"label.laptop": "ল্যাপটপ",
diff --git a/src/lang/bs-BA.json b/src/lang/bs-BA.json
index 04fb89ee..000af0dc 100644
--- a/src/lang/bs-BA.json
+++ b/src/lang/bs-BA.json
@@ -96,7 +96,7 @@
"label.join": "Učlani se",
"label.join-team": "Učlani se u tim",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Jezik",
"label.languages": "Jezici",
"label.laptop": "Laptop",
diff --git a/src/lang/cs-CZ.json b/src/lang/cs-CZ.json
index 9c6d3ba1..3a57f6b2 100644
--- a/src/lang/cs-CZ.json
+++ b/src/lang/cs-CZ.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "Languages",
"label.laptop": "Přenosný počítač",
diff --git a/src/lang/da-DK.json b/src/lang/da-DK.json
index a0cbe5e6..715df99e 100644
--- a/src/lang/da-DK.json
+++ b/src/lang/da-DK.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Sprog",
"label.languages": "Sprog",
"label.laptop": "Laptop",
diff --git a/src/lang/de-CH.json b/src/lang/de-CH.json
index bdd37cdc..6891480f 100644
--- a/src/lang/de-CH.json
+++ b/src/lang/de-CH.json
@@ -96,7 +96,7 @@
"label.join": "Biträte",
"label.join-team": "Team biträte",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Sprach",
"label.languages": "Sprache",
"label.laptop": "Laptop",
diff --git a/src/lang/el-GR.json b/src/lang/el-GR.json
index 8155b97a..ceb0812b 100644
--- a/src/lang/el-GR.json
+++ b/src/lang/el-GR.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "Languages",
"label.laptop": "Λάπτοπ",
diff --git a/src/lang/en-GB.json b/src/lang/en-GB.json
index aeefe439..9bb61811 100644
--- a/src/lang/en-GB.json
+++ b/src/lang/en-GB.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "Languages",
"label.laptop": "Laptop",
diff --git a/src/lang/en-US.json b/src/lang/en-US.json
index 7487e220..e895036c 100644
--- a/src/lang/en-US.json
+++ b/src/lang/en-US.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "Languages",
"label.laptop": "Laptop",
diff --git a/src/lang/es-ES.json b/src/lang/es-ES.json
index bdcb3e0a..d06bd19c 100644
--- a/src/lang/es-ES.json
+++ b/src/lang/es-ES.json
@@ -96,7 +96,7 @@
"label.join": "Unir",
"label.join-team": "Unirse al equipo",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Idioma",
"label.languages": "Idiomas",
"label.laptop": "Portátil",
diff --git a/src/lang/fa-IR.json b/src/lang/fa-IR.json
index 8eb2df24..fe1705e3 100644
--- a/src/lang/fa-IR.json
+++ b/src/lang/fa-IR.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "زبان",
"label.languages": "زبانها",
"label.laptop": "لپتاپ",
diff --git a/src/lang/fi-FI.json b/src/lang/fi-FI.json
index f6d18b35..02561dcb 100644
--- a/src/lang/fi-FI.json
+++ b/src/lang/fi-FI.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Kieli",
"label.languages": "Kielet",
"label.laptop": "Kannettava tietokone",
diff --git a/src/lang/fo-FO.json b/src/lang/fo-FO.json
index 98646d28..e9ca2aae 100644
--- a/src/lang/fo-FO.json
+++ b/src/lang/fo-FO.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "Languages",
"label.laptop": "Fartelda",
diff --git a/src/lang/fr-FR.json b/src/lang/fr-FR.json
index 23c66525..edb2abd3 100644
--- a/src/lang/fr-FR.json
+++ b/src/lang/fr-FR.json
@@ -96,7 +96,7 @@
"label.join": "Rejoindre",
"label.join-team": "Rejoindre une équipe",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Langue",
"label.languages": "Langues",
"label.laptop": "Portable",
diff --git a/src/lang/ga-ES.json b/src/lang/ga-ES.json
index 9e048061..d267137f 100644
--- a/src/lang/ga-ES.json
+++ b/src/lang/ga-ES.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Idioma",
"label.languages": "Idiomas",
"label.laptop": "Portátil",
diff --git a/src/lang/he-IL.json b/src/lang/he-IL.json
index 584d5f5d..d7ebf875 100644
--- a/src/lang/he-IL.json
+++ b/src/lang/he-IL.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "Languages",
"label.laptop": "לפטופ",
diff --git a/src/lang/hi-IN.json b/src/lang/hi-IN.json
index 0cf024e3..1fbee2c0 100644
--- a/src/lang/hi-IN.json
+++ b/src/lang/hi-IN.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "Languages",
"label.laptop": "लैपटॉप",
diff --git a/src/lang/hr-HR.json b/src/lang/hr-HR.json
index bc697426..39d4d9d1 100644
--- a/src/lang/hr-HR.json
+++ b/src/lang/hr-HR.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Jezik",
"label.languages": "Languages",
"label.laptop": "Laptop",
diff --git a/src/lang/hu-HU.json b/src/lang/hu-HU.json
index 111ce00f..6762181b 100644
--- a/src/lang/hu-HU.json
+++ b/src/lang/hu-HU.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "Languages",
"label.laptop": "Laptop",
diff --git a/src/lang/id-ID.json b/src/lang/id-ID.json
index 0f2c705a..930b02da 100644
--- a/src/lang/id-ID.json
+++ b/src/lang/id-ID.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Bahasa",
"label.languages": "Bahasa",
"label.laptop": "Laptop",
diff --git a/src/lang/it-IT.json b/src/lang/it-IT.json
index 3e737818..229254d5 100644
--- a/src/lang/it-IT.json
+++ b/src/lang/it-IT.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Lingua",
"label.languages": "Lingue",
"label.laptop": "Portatile",
diff --git a/src/lang/ja-JP.json b/src/lang/ja-JP.json
index ef0cce1d..02e300bb 100644
--- a/src/lang/ja-JP.json
+++ b/src/lang/ja-JP.json
@@ -96,7 +96,7 @@
"label.join": "参加",
"label.join-team": "チームに参加",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "言語",
"label.languages": "言語",
"label.laptop": "ノートPC",
diff --git a/src/lang/km-KH.json b/src/lang/km-KH.json
index 9a374a06..f3189ac2 100644
--- a/src/lang/km-KH.json
+++ b/src/lang/km-KH.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "ភាសា",
"label.languages": "ភាសា",
"label.laptop": "កុំព្យូទ័រយួរដៃ",
diff --git a/src/lang/ko-KR.json b/src/lang/ko-KR.json
index c1a30933..b3bee85f 100644
--- a/src/lang/ko-KR.json
+++ b/src/lang/ko-KR.json
@@ -1,267 +1,267 @@
{
- "label.access-code": "Access code",
+ "label.access-code": "액세스 코드",
"label.actions": "액션",
- "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": "활동 기록",
+ "label.add": "추가",
+ "label.add-description": "설명 추가",
+ "label.add-member": "멤버 추가",
+ "label.add-step": "단계 추가",
"label.add-website": "웹사이트 추가",
"label.admin": "관리자",
- "label.after": "After",
+ "label.after": "이후",
"label.all": "전체",
- "label.all-time": "All time",
- "label.analytics": "Analytics",
- "label.average": "Average",
+ "label.all-time": "전체 시간",
+ "label.analytics": "분석",
+ "label.average": "평균",
"label.back": "뒤로",
- "label.before": "Before",
+ "label.before": "이전",
"label.bounce-rate": "이탈률",
- "label.breakdown": "Breakdown",
- "label.browser": "Browser",
+ "label.breakdown": "세부 사항",
+ "label.browser": "브라우저",
"label.browsers": "브라우저",
"label.cancel": "취소",
- "label.change-password": "비밀번호 변경",
- "label.cities": "Cities",
- "label.city": "City",
- "label.clear-all": "Clear all",
- "label.compare": "Compare",
- "label.confirm": "Confirm",
+ "label.change-password": "비밀번호 변경하기",
+ "label.cities": "도시",
+ "label.city": "도시",
+ "label.clear-all": "모두 지우기",
+ "label.compare": "비교",
+ "label.confirm": "확인",
"label.confirm-password": "비밀번호 확인",
- "label.contains": "Contains",
- "label.continue": "Continue",
- "label.count": "Count",
+ "label.contains": "포함",
+ "label.continue": "계속",
+ "label.count": "수",
"label.countries": "국가",
- "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.current": "Current",
+ "label.country": "국가",
+ "label.create": "생성",
+ "label.create-report": "리포트 생성",
+ "label.create-team": "팀 생성",
+ "label.create-user": "사용자 생성",
+ "label.created": "생성됨",
+ "label.created-by": "작성자",
+ "label.current": "현재",
"label.current-password": "현재 비밀번호",
"label.custom-range": "범위 지정",
"label.dashboard": "대시보드",
- "label.data": "Data",
- "label.date": "Date",
+ "label.data": "데이터",
+ "label.date": "날짜",
"label.date-range": "날짜 범위",
- "label.day": "Day",
+ "label.day": "일",
"label.default-date-range": "기본 날짜 범위",
"label.delete": "삭제",
- "label.delete-report": "Delete report",
- "label.delete-team": "Delete team",
- "label.delete-user": "Delete user",
+ "label.delete-report": "리포트 삭제",
+ "label.delete-team": "팀 삭제",
+ "label.delete-user": "사용자 삭제",
"label.delete-website": "웹사이트 삭제",
- "label.description": "Description",
+ "label.description": "설명",
"label.desktop": "데스크탑",
- "label.details": "Details",
- "label.device": "Device",
+ "label.details": "세부 사항",
+ "label.device": "기기",
"label.devices": "기기",
"label.dismiss": "무시하기",
- "label.does-not-contain": "Does not contain",
+ "label.does-not-contain": "포함하지 않음",
"label.domain": "도메인",
- "label.dropoff": "Dropoff",
+ "label.dropoff": "이탈",
"label.edit": "편집",
- "label.edit-dashboard": "Edit dashboard",
- "label.edit-member": "Edit member",
+ "label.edit-dashboard": "대시보드 편집",
+ "label.edit-member": "회원 편집",
"label.enable-share-url": "URL 공유 활성화",
- "label.end-step": "End Step",
- "label.entry": "Entry URL",
- "label.event": "Event",
- "label.event-data": "Event data",
+ "label.end-step": "종료 단계",
+ "label.entry": "입장 URL",
+ "label.event": "이벤트",
+ "label.event-data": "이벤트 데이터",
"label.events": "이벤트",
- "label.exit": "Exit URL",
- "label.false": "False",
- "label.field": "Field",
- "label.fields": "Fields",
- "label.filter": "Filter",
+ "label.exit": "퇴장 URL",
+ "label.false": "거짓",
+ "label.field": "필드",
+ "label.fields": "필드",
+ "label.filter": "필터",
"label.filter-combined": "합쳐서 보기",
"label.filter-raw": "전체 보기",
- "label.filters": "Filters",
- "label.funnel": "Funnel",
- "label.funnel-description": "Understand the conversion and drop-off rate of users.",
- "label.goal": "Goal",
- "label.goals": "Goals",
- "label.goals-description": "Track your goals for pageviews and events.",
- "label.greater-than": "Greater than",
- "label.greater-than-equals": "Greater than or equals",
- "label.host": "Host",
- "label.hosts": "Hosts",
- "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.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
- "label.language": "Language",
- "label.languages": "Languages",
+ "label.filters": "필터",
+ "label.funnel": "퍼널",
+ "label.funnel-description": "사용자 전환율 및 이탈률을 살펴보세요.",
+ "label.goal": "목표",
+ "label.goals": "목표",
+ "label.goals-description": "페이지뷰 및 이벤트 목표를 추적합니다.",
+ "label.greater-than": "이상",
+ "label.greater-than-equals": "이상",
+ "label.host": "호스트",
+ "label.hosts": "호스트",
+ "label.insights": "인사이트",
+ "label.insights-description": "세그먼트 및 필터를 사용하여 데이터를 더 자세히 살펴보세요.",
+ "label.is": "해당",
+ "label.is-not": "해당하지 않음",
+ "label.is-not-set": "설정되지 않음",
+ "label.is-set": "설정됨",
+ "label.join": "가입",
+ "label.join-team": "팀 가입",
+ "label.journey": "여정",
+ "label.journey-description": "사용자가 웹사이트를 탐색하는 경로를 살펴보세요.",
+ "label.language": "언어",
+ "label.languages": "언어",
"label.laptop": "노트북",
- "label.last-days": "최근 {x} 일간",
+ "label.last-days": "최근 {x} 일",
"label.last-hours": "최근 {x} 시간",
- "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": "최근 {x} 개월",
+ "label.leave": "떠나기",
+ "label.leave-team": "팀 떠나기",
+ "label.less-than": "미만",
+ "label.less-than-equals": "이하",
"label.login": "로그인",
"label.logout": "로그아웃",
- "label.manage": "Manage",
- "label.manager": "Manager",
- "label.max": "Max",
- "label.member": "Member",
- "label.members": "Members",
- "label.min": "Min",
+ "label.manage": "관리",
+ "label.manager": "관리자",
+ "label.max": "최대",
+ "label.member": "멤버",
+ "label.members": "멤버",
+ "label.min": "최소",
"label.mobile": "모바일",
"label.more": "더 보기",
- "label.my-account": "My account",
- "label.my-websites": "My websites",
+ "label.my-account": "내 계정",
+ "label.my-websites": "내 웹사이트",
"label.name": "이름",
"label.new-password": "새 비밀번호",
- "label.none": "None",
- "label.number-of-records": "{x} {x, plural, one {record} other {records}}",
- "label.ok": "OK",
- "label.os": "OS",
- "label.overview": "Overview",
- "label.owner": "Owner",
- "label.page-of": "Page {current} of {total}",
- "label.page-views": "페이지 뷰(PV)",
- "label.pageTitle": "Page title",
+ "label.none": "없음",
+ "label.number-of-records": "{x} {x, plural, one {record} other {레코드}}",
+ "label.ok": "확인",
+ "label.os": "운영체제",
+ "label.overview": "개요",
+ "label.owner": "소유자",
+ "label.page-of": "{total} 중 {current} 페이지",
+ "label.page-views": "페이지 뷰",
+ "label.pageTitle": "페이지 제목",
"label.pages": "페이지",
"label.password": "비밀번호",
"label.powered-by": "이 시스템은 {name}에서 구동되고 있습니다.",
- "label.previous": "Previous",
- "label.previous-period": "Previous period",
- "label.previous-year": "Previous year",
+ "label.previous": "이전",
+ "label.previous-period": "이전 기간",
+ "label.previous-year": "이전 연도",
"label.profile": "프로필",
- "label.property": "Property",
- "label.queries": "Queries",
- "label.query": "Query",
- "label.query-parameters": "Query parameters",
+ "label.property": "속성",
+ "label.queries": "쿼리",
+ "label.query": "쿼리",
+ "label.query-parameters": "쿼리 매개변수",
"label.realtime": "실시간",
- "label.referrer": "Referrer",
+ "label.referrer": "리퍼러",
"label.referrers": "리퍼러",
"label.refresh": "새로고침",
- "label.regenerate": "Regenerate",
- "label.region": "Region",
- "label.regions": "Regions",
- "label.remove": "Remove",
- "label.remove-member": "Remove member",
- "label.reports": "Reports",
+ "label.regenerate": "다시 생성",
+ "label.region": "지역",
+ "label.regions": "지역",
+ "label.remove": "제거",
+ "label.remove-member": "멤버 제거",
+ "label.reports": "리포트",
"label.required": "필수",
"label.reset": "리셋",
- "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": "웹사이트 초기화",
+ "label.retention": "리텐션",
+ "label.retention-description": "사용자가 얼마나 자주 돌아오는지를 추적하여 웹사이트의 리텐션을 측정하십시오.",
+ "label.role": "역할",
+ "label.run-query": "쿼리 실행",
"label.save": "저장",
- "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.sessions": "Sessions",
+ "label.screens": "스크린",
+ "label.search": "검색",
+ "label.select": "선택",
+ "label.select-date": "날짜 선택",
+ "label.select-role": "역할 선택",
+ "label.select-website": "웹사이트 선택",
+ "label.sessions": "세션",
"label.settings": "설정",
"label.share-url": "공유 URL",
"label.single-day": "하루",
- "label.start-step": "Start Step",
- "label.steps": "Steps",
- "label.sum": "Sum",
+ "label.start-step": "시작 단계",
+ "label.steps": "단계",
+ "label.sum": "합계",
"label.tablet": "태블릿",
- "label.team": "Team",
- "label.team-id": "Team ID",
- "label.team-manager": "Team manager",
- "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": "팀",
+ "label.team-id": "팀 ID",
+ "label.team-manager": "팀 관리자",
+ "label.team-member": "팀 멤버",
+ "label.team-name": "팀 이름",
+ "label.team-owner": "팀 소유자",
+ "label.team-view-only": "팀 보기 전용",
+ "label.team-websites": "팀 웹사이트",
+ "label.teams": "팀",
+ "label.theme": "테마",
"label.this-month": "이번 달",
"label.this-week": "이번 주",
"label.this-year": "올해",
"label.timezone": "표준 시간대",
- "label.title": "Title",
+ "label.title": "제목",
"label.today": "오늘",
- "label.toggle-charts": "Toggle charts",
- "label.total": "Total",
- "label.total-records": "Total records",
+ "label.toggle-charts": "차트 전환",
+ "label.total": "합계",
+ "label.total-records": "총 레코드",
"label.tracking-code": "추적 코드",
- "label.transfer": "Transfer",
- "label.transfer-website": "Transfer website",
- "label.true": "True",
- "label.type": "Type",
- "label.unique": "Unique",
+ "label.transfer": "전송",
+ "label.transfer-website": "웹사이트 전송",
+ "label.true": "참",
+ "label.type": "유형",
+ "label.unique": "고유",
"label.unique-visitors": "순방문자(UV)",
"label.unknown": "알 수 없음",
- "label.untitled": "Untitled",
- "label.update": "Update",
+ "label.untitled": "제목 없음",
+ "label.update": "업데이트",
"label.url": "URL",
- "label.urls": "URLs",
- "label.user": "User",
+ "label.urls": "URL",
+ "label.user": "사용자",
"label.username": "사용자명",
- "label.users": "Users",
+ "label.users": "사용자",
"label.utm": "UTM",
- "label.utm-description": "Track your campaigns through UTM parameters.",
- "label.value": "Value",
- "label.view": "View",
+ "label.utm-description": "UTM 매개변수를 통해 캠페인을 추적합니다.",
+ "label.value": "값",
+ "label.view": "보기",
"label.view-details": "상세보기",
- "label.view-only": "View only",
+ "label.view-only": "보기 전용",
"label.views": "조회수",
- "label.views-per-visit": "Views per visit",
+ "label.views-per-visit": "방문당 조회수",
"label.visit-duration": "평균 방문 시간",
"label.visitors": "방문객",
- "label.visits": "Visits",
- "label.website": "Website",
- "label.website-id": "Website ID",
+ "label.visits": "방문",
+ "label.website": "웹사이트",
+ "label.website-id": "웹사이트 ID",
"label.websites": "웹사이트",
- "label.window": "Window",
- "label.yesterday": "Yesterday",
- "message.action-confirmation": "Type {confirmation} in the box below to confirm.",
+ "label.window": "창",
+ "label.yesterday": "어제",
+ "message.action-confirmation": "확인을 위해 아래 상자에 {confirmation}을(를) 입력하십시오.",
"message.active-users": "{x}명의 사용자가 보는 중입니다.",
- "message.collected-data": "Collected data",
+ "message.collected-data": "수집된 데이터",
"message.confirm-delete": "{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": "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": "관련된 모든 데이터도 삭제됩니다.",
+ "message.confirm-leave": "{target}을(를) 떠나시겠습니까?",
+ "message.confirm-remove": "{target}을(를) 제거하시겠습니까?",
+ "message.confirm-reset": "{target}을(를) 초기화하시겠습니까?",
+ "message.delete-team-warning": "팀을 삭제하면 팀에 등록된 모든 웹사이트도 삭제됩니다.",
+ "message.delete-website-warning": "관련된 모든 데이터가 삭제됩니다.",
"message.error": "오류가 발생하였습니다.",
- "message.event-log": "{event} on {url}",
+ "message.event-log": "{event} - {url}",
"message.go-to-settings": "설정으로 이동",
- "message.incorrect-username-password": "사용자 이름/비밀번호가 잘못되었습니다..",
+ "message.incorrect-username-password": "사용자 이름/비밀번호가 잘못되었습니다.",
"message.invalid-domain": "잘못된 도메인",
- "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": "최소 길이는 {n}자입니다",
+ "message.new-version-available": "새 버전이 사용 가능합니다! - Umami {version}",
"message.no-data-available": "사용 가능한 데이터가 없습니다.",
- "message.no-event-data": "No event data is available.",
+ "message.no-event-data": "사용 가능한 이벤트 데이터가 없습니다.",
"message.no-match-password": "비밀번호가 일치하지 않음",
- "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-websites-configured": "구성된 웹 사이트가 없습니다.",
+ "message.no-results-found": "결과를 찾을 수 없습니다.",
+ "message.no-team-websites": "이 팀에는 웹사이트가 없습니다.",
+ "message.no-teams": "생성된 팀이 없습니다.",
+ "message.no-users": "사용자가 없습니다.",
+ "message.no-websites-configured": "설정된 웹사이트가 없습니다.",
"message.page-not-found": "페이지를 찾을 수 없습니다.",
- "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": "이 웹사이트를 초기화하려면, 아래 상자에 {confirmation}을(를) 입력하십시오.",
+ "message.reset-website-warning": "이 웹사이트의 모든 통계가 삭제되지만 설정은 그대로 유지됩니다.",
"message.saved": "성공적으로 저장되었습니다.",
- "message.share-url": "이것은 {target}의 공개적으로 공유된 URL입니다.",
- "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.tracking-code": "추적 코드",
- "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.visitor-log": "{os} {device}에서 {browser}을(를) 사용하는 {country}의 방문자",
- "message.visitors-dropped-off": "Visitors dropped off"
+ "message.share-url": "아래 링크를 통해 웹사이트의 통계를 누구나 볼 수 있습니다.",
+ "message.team-already-member": "이미 팀의 회원입니다.",
+ "message.team-not-found": "팀을 찾을 수 없습니다.",
+ "message.team-websites-info": "웹사이트는 팀의 누구나 볼 수 있습니다.",
+ "message.tracking-code": "이 웹사이트의 통계를 추적하려면, 다음 코드를 HTML의 ... 섹션에 추가하십시오.",
+ "message.transfer-team-website-to-user": "이 웹사이트를 당신의 계정으로 전송하시겠습니까?",
+ "message.transfer-user-website-to-team": "이 웹사이트를 전송받을 팀을 선택하십시오.",
+ "message.transfer-website": "웹사이트 소유권을 계정이나 다른 팀으로 전송합니다.",
+ "message.triggered-event": "트리거된 이벤트",
+ "message.user-deleted": "사용자가 삭제되었습니다.",
+ "message.viewed-page": "페이지 조회",
+ "message.visitor-log": "{country}의 {browser} 브라우저를 사용하는 {os} {device} 방문자",
+ "message.visitors-dropped-off": "방문자가 이탈했습니다"
}
diff --git a/src/lang/lt-LT.json b/src/lang/lt-LT.json
index f96e643e..424c06ce 100644
--- a/src/lang/lt-LT.json
+++ b/src/lang/lt-LT.json
@@ -96,7 +96,7 @@
"label.join": "Prisijungti",
"label.join-team": "Prisijungti į komandą",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Kalba",
"label.languages": "Kalbos",
"label.laptop": "Laptop",
diff --git a/src/lang/mn-MN.json b/src/lang/mn-MN.json
index 47e08bca..0e998170 100644
--- a/src/lang/mn-MN.json
+++ b/src/lang/mn-MN.json
@@ -96,7 +96,7 @@
"label.join": "Нэгдэх",
"label.join-team": "Багт нэгдэх",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Хэл",
"label.languages": "Хэл",
"label.laptop": "Зөөврийн компьютер",
diff --git a/src/lang/ms-MY.json b/src/lang/ms-MY.json
index bf28b05c..82cfbb6b 100644
--- a/src/lang/ms-MY.json
+++ b/src/lang/ms-MY.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "Languages",
"label.laptop": "Laptop",
diff --git a/src/lang/my-MM.json b/src/lang/my-MM.json
index dffbe43e..8a71cd49 100644
--- a/src/lang/my-MM.json
+++ b/src/lang/my-MM.json
@@ -96,7 +96,7 @@
"label.join": "ဝင်မည်",
"label.join-team": "အသင်းဝင်မည်",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "ဘာသာစကား",
"label.languages": "ဘာသာစကားများ",
"label.laptop": "လက်တော့ပ်",
diff --git a/src/lang/nb-NO.json b/src/lang/nb-NO.json
index ca360d09..4a6e0409 100644
--- a/src/lang/nb-NO.json
+++ b/src/lang/nb-NO.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Språk",
"label.languages": "Språk",
"label.laptop": "Bærbar",
diff --git a/src/lang/nl-NL.json b/src/lang/nl-NL.json
index 62081473..9a1c852b 100644
--- a/src/lang/nl-NL.json
+++ b/src/lang/nl-NL.json
@@ -96,7 +96,7 @@
"label.join": "Lid worden",
"label.join-team": "Word lid van een team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Taal",
"label.languages": "Talen",
"label.laptop": "Laptop",
diff --git a/src/lang/pl-PL.json b/src/lang/pl-PL.json
index 8068d9b3..e663d445 100644
--- a/src/lang/pl-PL.json
+++ b/src/lang/pl-PL.json
@@ -96,7 +96,7 @@
"label.join": "Dołącz",
"label.join-team": "Dołącz do zespołu",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Język",
"label.languages": "Języki",
"label.laptop": "Laptop",
diff --git a/src/lang/pt-BR.json b/src/lang/pt-BR.json
index c1f9c708..be96d097 100644
--- a/src/lang/pt-BR.json
+++ b/src/lang/pt-BR.json
@@ -96,7 +96,7 @@
"label.join": "Participar",
"label.join-team": "Participar da equipe",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Idioma",
"label.languages": "Idiomas",
"label.laptop": "Notebook",
diff --git a/src/lang/pt-PT.json b/src/lang/pt-PT.json
index d497bb3a..252457f8 100644
--- a/src/lang/pt-PT.json
+++ b/src/lang/pt-PT.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Língua",
"label.languages": "Línguas",
"label.laptop": "Portátil",
diff --git a/src/lang/ro-RO.json b/src/lang/ro-RO.json
index 107303ae..c06690c2 100644
--- a/src/lang/ro-RO.json
+++ b/src/lang/ro-RO.json
@@ -96,7 +96,7 @@
"label.join": "Alătură-te",
"label.join-team": "Alătură-te echipei",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Limbă",
"label.languages": "Limbi",
"label.laptop": "Laptop",
diff --git a/src/lang/ru-RU.json b/src/lang/ru-RU.json
index 535d2292..257c0491 100644
--- a/src/lang/ru-RU.json
+++ b/src/lang/ru-RU.json
@@ -96,7 +96,7 @@
"label.join": "Присоединиться",
"label.join-team": "Присоединиться к команде",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Язык",
"label.languages": "Языки",
"label.laptop": "Ноутбук",
diff --git a/src/lang/si-LK.json b/src/lang/si-LK.json
index 03b42df7..6263f91a 100644
--- a/src/lang/si-LK.json
+++ b/src/lang/si-LK.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "භාෂාව",
"label.languages": "Languages",
"label.laptop": "Laptop",
diff --git a/src/lang/sk-SK.json b/src/lang/sk-SK.json
index 3d5b8fbb..4447ada2 100644
--- a/src/lang/sk-SK.json
+++ b/src/lang/sk-SK.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "Languages",
"label.laptop": "Prenosný počítač",
diff --git a/src/lang/sl-SI.json b/src/lang/sl-SI.json
index 01fc7f30..3c684dec 100644
--- a/src/lang/sl-SI.json
+++ b/src/lang/sl-SI.json
@@ -96,7 +96,7 @@
"label.join": "Pridruži se",
"label.join-team": "Pridruži se ekipi",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Jezik",
"label.languages": "Jeziki",
"label.laptop": "Prenosni računalnik",
diff --git a/src/lang/sv-SE.json b/src/lang/sv-SE.json
index 92c9df03..c60b6cf9 100644
--- a/src/lang/sv-SE.json
+++ b/src/lang/sv-SE.json
@@ -96,7 +96,7 @@
"label.join": "Gå med",
"label.join-team": "Gå med i team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Språk",
"label.languages": "Språk",
"label.laptop": "Bärbar",
diff --git a/src/lang/ta-IN.json b/src/lang/ta-IN.json
index 99558b11..0f95bc18 100644
--- a/src/lang/ta-IN.json
+++ b/src/lang/ta-IN.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "Languages",
"label.laptop": "மடிக்கணினி",
diff --git a/src/lang/th-TH.json b/src/lang/th-TH.json
index 253f420c..a594bb31 100644
--- a/src/lang/th-TH.json
+++ b/src/lang/th-TH.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "ภาษา",
"label.languages": "ภาษา",
"label.laptop": "แล็ปท็อป",
diff --git a/src/lang/tr-TR.json b/src/lang/tr-TR.json
index 49e71b9a..b8271ed2 100644
--- a/src/lang/tr-TR.json
+++ b/src/lang/tr-TR.json
@@ -96,7 +96,7 @@
"label.join": "Katıl",
"label.join-team": "Takıma katıl",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Dil",
"label.languages": "Diller",
"label.laptop": "Dizüstü",
diff --git a/src/lang/uk-UA.json b/src/lang/uk-UA.json
index ec658b7e..ecfd27f5 100644
--- a/src/lang/uk-UA.json
+++ b/src/lang/uk-UA.json
@@ -93,7 +93,7 @@
"label.join": "Приєднатись",
"label.join-team": "Приєднатись до команди",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Мова",
"label.languages": "Мови",
"label.laptop": "Ноутбук",
diff --git a/src/lang/ur-PK.json b/src/lang/ur-PK.json
index 7d649148..97de5d69 100644
--- a/src/lang/ur-PK.json
+++ b/src/lang/ur-PK.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "زبانیں",
"label.laptop": "لیپ ٹاپ",
diff --git a/src/lang/vi-VN.json b/src/lang/vi-VN.json
index 1be8684b..054f449a 100644
--- a/src/lang/vi-VN.json
+++ b/src/lang/vi-VN.json
@@ -96,7 +96,7 @@
"label.join": "Join",
"label.join-team": "Join team",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "Language",
"label.languages": "Ngôn ngữ",
"label.laptop": "Laptop",
diff --git a/src/lang/zh-TW.json b/src/lang/zh-TW.json
index 9d8329e9..10069181 100644
--- a/src/lang/zh-TW.json
+++ b/src/lang/zh-TW.json
@@ -96,7 +96,7 @@
"label.join": "加入",
"label.join-team": "加入團隊",
"label.journey": "Journey",
- "label.journey-description": "Understand how users nagivate through your website.",
+ "label.journey-description": "Understand how users navigate through your website.",
"label.language": "語言",
"label.languages": "語言",
"label.laptop": "筆記型電腦",
diff --git a/src/lib/clickhouse.ts b/src/lib/clickhouse.ts
index b6d0fc3f..e716d649 100644
--- a/src/lib/clickhouse.ts
+++ b/src/lib/clickhouse.ts
@@ -2,8 +2,8 @@ import { ClickHouseClient, createClient } from '@clickhouse/client';
import dateFormat from 'dateformat';
import debug from 'debug';
import { CLICKHOUSE } from 'lib/db';
-import { QueryFilters, QueryOptions } from './types';
-import { OPERATORS } from './constants';
+import { PageParams, QueryFilters, QueryOptions } from './types';
+import { DEFAULT_PAGE_SIZE, OPERATORS } from './constants';
import { fetchWebsite } from './load';
import { maxDate } from './date';
import { filtersToArray } from './params';
@@ -32,7 +32,7 @@ function getClient() {
} = new URL(process.env.CLICKHOUSE_URL);
const client = createClient({
- host: `${protocol}//${hostname}:${port}`,
+ url: `${protocol}//${hostname}:${port}`,
database: pathname.replace('/', ''),
username: username,
password,
@@ -47,11 +47,11 @@ function getClient() {
return client;
}
-function getDateStringQuery(data: any, unit: string | number) {
+function getDateStringSQL(data: any, unit: string | number) {
return `formatDateTime(${data}, '${CLICKHOUSE_DATE_FORMATS[unit]}')`;
}
-function getDateQuery(field: string, unit: string, timezone?: string) {
+function getDateSQL(field: string, unit: string, timezone?: string) {
if (timezone) {
return `date_trunc('${unit}', ${field}, '${timezone}')`;
}
@@ -95,6 +95,20 @@ function getFilterQuery(filters: QueryFilters = {}, options: QueryOptions = {})
return query.join('\n');
}
+function getDateQuery(filters: QueryFilters = {}) {
+ const { startDate, endDate } = filters;
+
+ if (startDate) {
+ if (endDate) {
+ return `and created_at between {startDate:DateTime64} and {endDate:DateTime64}`;
+ } else {
+ return `and created_at >= {startDate:DateTime64}`;
+ }
+ }
+
+ return '';
+}
+
function getFilterParams(filters: QueryFilters = {}) {
return filtersToArray(filters).reduce((obj, { name, value }) => {
if (name && value !== undefined) {
@@ -110,6 +124,7 @@ async function parseFilters(websiteId: string, filters: QueryFilters = {}, optio
return {
filterQuery: getFilterQuery(filters, options),
+ dateQuery: getDateQuery(filters),
params: {
...getFilterParams(filters),
websiteId,
@@ -119,6 +134,32 @@ async function parseFilters(websiteId: string, filters: QueryFilters = {}, optio
};
}
+async function pagedQuery(
+ query: string,
+ queryParams: { [key: string]: any },
+ pageParams: PageParams = {},
+) {
+ const { page = 1, pageSize, orderBy, sortDescending = false } = pageParams;
+ const size = +pageSize || DEFAULT_PAGE_SIZE;
+ const offset = +size * (page - 1);
+ const direction = sortDescending ? 'desc' : 'asc';
+
+ const statements = [
+ orderBy && `order by ${orderBy} ${direction}`,
+ +size > 0 && `limit ${+size} offset ${offset}`,
+ ]
+ .filter(n => n)
+ .join('\n');
+
+ const count = await rawQuery(`select count(*) as num from (${query}) t`, queryParams).then(
+ res => res[0].num,
+ );
+
+ const data = await rawQuery(`${query}${statements}`, queryParams);
+
+ return { data, count, page: +page, pageSize: size, orderBy };
+}
+
async function rawQuery(
query: string,
params: Record = {},
@@ -136,7 +177,13 @@ async function rawQuery(
format: 'JSONEachRow',
});
- return resultSet.json();
+ return resultSet.json() as T;
+}
+
+async function insert(table: string, values: any[]) {
+ await connect();
+
+ return clickhouse.insert({ table, values, format: 'JSONEachRow' });
}
async function findUnique(data: any[]) {
@@ -164,12 +211,14 @@ export default {
client: clickhouse,
log,
connect,
- getDateStringQuery,
- getDateQuery,
+ getDateStringSQL,
+ getDateSQL,
getDateFormat,
getFilterQuery,
parseFilters,
+ pagedQuery,
findUnique,
findFirst,
rawQuery,
+ insert,
};
diff --git a/src/lib/detect.ts b/src/lib/detect.ts
index 64f70e6c..56a037ec 100644
--- a/src/lib/detect.ts
+++ b/src/lib/detect.ts
@@ -2,9 +2,9 @@ import path from 'path';
import { getClientIp } from 'request-ip';
import { browserName, detectOS } from 'detect-browser';
import isLocalhost from 'is-localhost-ip';
+import ipaddr from 'ipaddr.js';
import maxmind from 'maxmind';
import { safeDecodeURIComponent } from 'next-basics';
-
import {
DESKTOP_OS,
MOBILE_OS,
@@ -137,3 +137,31 @@ export async function getClientInfo(req: NextApiRequestCollect) {
return { userAgent, browser, os, ip, country, subdivision1, subdivision2, city, device };
}
+
+export function hasBlockedIp(req: NextApiRequestCollect) {
+ const ignoreIps = process.env.IGNORE_IP;
+
+ if (ignoreIps) {
+ const ips = [];
+
+ if (ignoreIps) {
+ ips.push(...ignoreIps.split(',').map(n => n.trim()));
+ }
+
+ const clientIp = getIpAddress(req);
+
+ return ips.find(ip => {
+ if (ip === clientIp) return true;
+
+ // CIDR notation
+ if (ip.indexOf('/') > 0) {
+ const addr = ipaddr.parse(clientIp);
+ const range = ipaddr.parseCIDR(ip);
+
+ if (addr.kind() === range[0].kind() && addr.match(range)) return true;
+ }
+ });
+ }
+
+ return false;
+}
diff --git a/src/lib/kafka.ts b/src/lib/kafka.ts
index da38baa4..76692afb 100644
--- a/src/lib/kafka.ts
+++ b/src/lib/kafka.ts
@@ -61,8 +61,8 @@ function getDateFormat(date: Date, format?: string): string {
}
async function sendMessage(
- message: { [key: string]: string | number },
topic: string,
+ message: { [key: string]: string | number },
): Promise {
await connect();
@@ -77,7 +77,7 @@ async function sendMessage(
});
}
-async function sendMessages(messages: { [key: string]: string | number }[], topic: string) {
+async function sendMessages(topic: string, messages: { [key: string]: string | number }[]) {
await connect();
await producer.send({
diff --git a/src/lib/prisma.ts b/src/lib/prisma.ts
index 6250f2e5..28835414 100644
--- a/src/lib/prisma.ts
+++ b/src/lib/prisma.ts
@@ -60,7 +60,7 @@ function getCastColumnQuery(field: string, type: string): string {
}
}
-function getDateQuery(field: string, unit: string, timezone?: string): string {
+function getDateSQL(field: string, unit: string, timezone?: string): string {
const db = getDatabaseType();
if (db === POSTGRESQL) {
@@ -81,7 +81,19 @@ function getDateQuery(field: string, unit: string, timezone?: string): string {
}
}
-function getTimestampDiffQuery(field1: string, field2: string): string {
+export function getTimestampSQL(field: string) {
+ const db = getDatabaseType();
+
+ if (db === POSTGRESQL) {
+ return `floor(extract(epoch from ${field}))`;
+ }
+
+ if (db === MYSQL) {
+ return `UNIX_TIMESTAMP(${field})`;
+ }
+}
+
+function getTimestampDiffSQL(field1: string, field2: string): string {
const db = getDatabaseType();
if (db === POSTGRESQL) {
@@ -93,7 +105,7 @@ function getTimestampDiffQuery(field1: string, field2: string): string {
}
}
-function getSearchQuery(column: string): string {
+function getSearchSQL(column: string): string {
const db = getDatabaseType();
const like = db === POSTGRESQL ? 'ilike' : 'like';
@@ -137,6 +149,20 @@ function getFilterQuery(filters: QueryFilters = {}, options: QueryOptions = {}):
return query.join('\n');
}
+function getDateQuery(filters: QueryFilters = {}) {
+ const { startDate, endDate } = filters;
+
+ if (startDate) {
+ if (endDate) {
+ return `and website_event.created_at between {{startDate}} and {{endDate}}`;
+ } else {
+ return `and website_event.created_at >= {{startDate}}`;
+ }
+ }
+
+ return '';
+}
+
function getFilterParams(filters: QueryFilters = {}) {
return filtersToArray(filters).reduce((obj, { name, operator, value }) => {
obj[name] = [OPERATORS.contains, OPERATORS.doesNotContain].includes(operator)
@@ -161,6 +187,7 @@ async function parseFilters(
? `inner join session on website_event.session_id = session.session_id`
: '',
filterQuery: getFilterQuery(filters, options),
+ dateQuery: getDateQuery(filters),
params: {
...getFilterParams(filters),
websiteId,
@@ -191,8 +218,8 @@ async function rawQuery(sql: string, data: object): Promise {
return prisma.rawQuery(query, params);
}
-async function pagedQuery(model: string, criteria: T, filters: PageParams) {
- const { page = 1, pageSize, orderBy, sortDescending = false } = filters || {};
+async function pagedQuery(model: string, criteria: T, pageParams: PageParams) {
+ const { page = 1, pageSize, orderBy, sortDescending = false } = pageParams || {};
const size = +pageSize || DEFAULT_PAGE_SIZE;
const data = await prisma.client[model].findMany({
@@ -256,11 +283,11 @@ export default {
getAddIntervalQuery,
getCastColumnQuery,
getDayDiffQuery,
- getDateQuery,
+ getDateSQL,
getFilterQuery,
getSearchParameters,
- getTimestampDiffQuery,
- getSearchQuery,
+ getTimestampDiffSQL,
+ getSearchSQL,
getQueryMode,
pagedQuery,
parseFilters,
diff --git a/src/pages/api/scripts/telemetry.ts b/src/pages/api/scripts/telemetry.ts
deleted file mode 100644
index a8a8872e..00000000
--- a/src/pages/api/scripts/telemetry.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { ok } from 'next-basics';
-import { CURRENT_VERSION, TELEMETRY_PIXEL } from 'lib/constants';
-import { NextApiRequest, NextApiResponse } from 'next';
-
-export default function handler(req: NextApiRequest, res: NextApiResponse) {
- if (process.env.NODE_ENV === 'production') {
- res.setHeader('content-type', 'text/javascript');
-
- if (process.env.DISABLE_TELEMETRY || process.env.PRIVATE_MODE) {
- return res.send('/* telemetry disabled */');
- }
-
- const script = `
- (()=>{const i=document.createElement('img');
- i.setAttribute('src','${TELEMETRY_PIXEL}?v=${CURRENT_VERSION}');
- i.setAttribute('style','width:0;height:0;position:absolute;pointer-events:none;');
- document.body.appendChild(i);})();
- `;
-
- return res.send(script.replace(/\s\s+/g, ''));
- }
-
- return ok(res);
-}
diff --git a/src/pages/api/send.ts b/src/pages/api/send.ts
index ab565e6e..31318420 100644
--- a/src/pages/api/send.ts
+++ b/src/pages/api/send.ts
@@ -1,4 +1,3 @@
-import ipaddr from 'ipaddr.js';
import { isbot } from 'isbot';
import { NextApiRequest, NextApiResponse } from 'next';
import {
@@ -12,7 +11,7 @@ import {
} from 'next-basics';
import { COLLECTION_TYPE, HOSTNAME_REGEX, IP_REGEX } from 'lib/constants';
import { secret, visitSalt, uuid } from 'lib/crypto';
-import { getIpAddress } from 'lib/detect';
+import { hasBlockedIp } from 'lib/detect';
import { useCors, useSession, useValidate } from 'lib/middleware';
import { CollectionType, YupRequest } from 'lib/types';
import { saveEvent, saveSessionData } from 'queries';
@@ -122,7 +121,7 @@ export default async (req: NextApiRequestCollect, res: NextApiResponse) => {
urlPath = '/';
}
- if (referrerPath?.startsWith('http')) {
+ if (/^[\w-]+:\/\/\w+/.test(referrerPath)) {
const refUrl = new URL(referrer);
referrerPath = refUrl.pathname;
referrerQuery = refUrl.search.substring(1);
@@ -166,31 +165,3 @@ export default async (req: NextApiRequestCollect, res: NextApiResponse) => {
return methodNotAllowed(res);
};
-
-function hasBlockedIp(req: NextApiRequestCollect) {
- const ignoreIps = process.env.IGNORE_IP;
-
- if (ignoreIps) {
- const ips = [];
-
- if (ignoreIps) {
- ips.push(...ignoreIps.split(',').map(n => n.trim()));
- }
-
- const clientIp = getIpAddress(req);
-
- return ips.find(ip => {
- if (ip === clientIp) return true;
-
- // CIDR notation
- if (ip.indexOf('/') > 0) {
- const addr = ipaddr.parse(clientIp);
- const range = ipaddr.parseCIDR(ip);
-
- if (addr.kind() === range[0].kind() && addr.match(range)) return true;
- }
- });
- }
-
- return false;
-}
diff --git a/src/pages/api/websites/[websiteId]/sessions.ts b/src/pages/api/websites/[websiteId]/sessions.ts
new file mode 100644
index 00000000..21cacb1c
--- /dev/null
+++ b/src/pages/api/websites/[websiteId]/sessions.ts
@@ -0,0 +1,42 @@
+import * as yup from 'yup';
+import { canViewWebsite } from 'lib/auth';
+import { useAuth, useCors, useValidate } from 'lib/middleware';
+import { NextApiRequestQueryBody, PageParams } from 'lib/types';
+import { NextApiResponse } from 'next';
+import { methodNotAllowed, ok, unauthorized } from 'next-basics';
+import { pageInfo } from 'lib/schema';
+import { getSessions } from 'queries';
+
+export interface ReportsRequestQuery extends PageParams {
+ websiteId: string;
+}
+
+const schema = {
+ GET: yup.object().shape({
+ websiteId: yup.string().uuid().required(),
+ ...pageInfo,
+ }),
+};
+
+export default async (
+ req: NextApiRequestQueryBody,
+ res: NextApiResponse,
+) => {
+ await useCors(req, res);
+ await useAuth(req, res);
+ await useValidate(schema, req, res);
+
+ const { websiteId } = req.query;
+
+ if (req.method === 'GET') {
+ if (!(await canViewWebsite(req.auth, websiteId))) {
+ return unauthorized(res);
+ }
+
+ const data = await getSessions(websiteId, {}, req.query);
+
+ return ok(res, data);
+ }
+
+ return methodNotAllowed(res);
+};
diff --git a/src/queries/analytics/eventData/saveEventData.ts b/src/queries/analytics/eventData/saveEventData.ts
index 0ed3c8b0..9c7218e9 100644
--- a/src/queries/analytics/eventData/saveEventData.ts
+++ b/src/queries/analytics/eventData/saveEventData.ts
@@ -3,6 +3,7 @@ import { DATA_TYPE } from 'lib/constants';
import { uuid } from 'lib/crypto';
import { CLICKHOUSE, PRISMA, runQuery } from 'lib/db';
import { flattenJSON, getStringValue } from 'lib/data';
+import clickhouse from 'lib/clickhouse';
import kafka from 'lib/kafka';
import prisma from 'lib/prisma';
import { DynamicData } from 'lib/types';
@@ -59,6 +60,7 @@ async function clickhouseQuery(data: {
}) {
const { websiteId, sessionId, eventId, urlPath, eventName, eventData, createdAt } = data;
+ const { insert } = clickhouse;
const { getDateFormat, sendMessages } = kafka;
const jsonKeys = flattenJSON(eventData);
@@ -79,7 +81,11 @@ async function clickhouseQuery(data: {
};
});
- await sendMessages(messages, 'event_data');
+ if (kafka.enabled) {
+ await sendMessages('event_data', messages);
+ } else {
+ await insert('event_data', messages);
+ }
return data;
}
diff --git a/src/queries/analytics/events/getEventMetrics.ts b/src/queries/analytics/events/getEventMetrics.ts
index 32cccd3e..8efbf769 100644
--- a/src/queries/analytics/events/getEventMetrics.ts
+++ b/src/queries/analytics/events/getEventMetrics.ts
@@ -15,7 +15,7 @@ export async function getEventMetrics(
async function relationalQuery(websiteId: string, filters: QueryFilters) {
const { timezone = 'utc', unit = 'day' } = filters;
- const { rawQuery, getDateQuery, parseFilters } = prisma;
+ const { rawQuery, getDateSQL, parseFilters } = prisma;
const { filterQuery, joinSession, params } = await parseFilters(websiteId, {
...filters,
eventType: EVENT_TYPE.customEvent,
@@ -25,7 +25,7 @@ async function relationalQuery(websiteId: string, filters: QueryFilters) {
`
select
event_name x,
- ${getDateQuery('website_event.created_at', unit, timezone)} t,
+ ${getDateSQL('website_event.created_at', unit, timezone)} t,
count(*) y
from website_event
${joinSession}
@@ -45,7 +45,7 @@ async function clickhouseQuery(
filters: QueryFilters,
): Promise<{ x: string; t: string; y: number }[]> {
const { timezone = 'UTC', unit = 'day' } = filters;
- const { rawQuery, getDateQuery, parseFilters } = clickhouse;
+ const { rawQuery, getDateSQL, parseFilters } = clickhouse;
const { filterQuery, params } = await parseFilters(websiteId, {
...filters,
eventType: EVENT_TYPE.customEvent,
@@ -55,7 +55,7 @@ async function clickhouseQuery(
`
select
event_name x,
- ${getDateQuery('created_at', unit, timezone)} t,
+ ${getDateSQL('created_at', unit, timezone)} t,
count(*) y
from website_event
where website_id = {websiteId:UUID}
diff --git a/src/queries/analytics/events/getEvents.ts b/src/queries/analytics/events/getEvents.ts
index c333242e..a00f6848 100644
--- a/src/queries/analytics/events/getEvents.ts
+++ b/src/queries/analytics/events/getEvents.ts
@@ -1,45 +1,33 @@
import clickhouse from 'lib/clickhouse';
import { CLICKHOUSE, PRISMA, runQuery } from 'lib/db';
import prisma from 'lib/prisma';
-import { QueryFilters } from 'lib/types';
+import { PageParams, QueryFilters } from 'lib/types';
-export function getEvents(...args: [websiteId: string, filters: QueryFilters]) {
+export function getEvents(
+ ...args: [websiteId: string, filters: QueryFilters, pageParams?: PageParams]
+) {
return runQuery({
[PRISMA]: () => relationalQuery(...args),
[CLICKHOUSE]: () => clickhouseQuery(...args),
});
}
-function relationalQuery(websiteId: string, filters: QueryFilters) {
- const { startDate } = filters;
+async function relationalQuery(websiteId: string, filters: QueryFilters, pageParams?: PageParams) {
+ const { pagedQuery } = prisma;
- return prisma.client.websiteEvent
- .findMany({
- where: {
- websiteId,
- createdAt: {
- gte: startDate,
- },
- },
- orderBy: {
- createdAt: 'desc',
- },
- })
- .then(a => {
- return Object.values(a).map(a => {
- return {
- ...a,
- timestamp: new Date(a.createdAt).getTime() / 1000,
- };
- });
- });
+ const where = {
+ ...filters,
+ id: websiteId,
+ };
+
+ return pagedQuery('website_event', { where }, pageParams);
}
-function clickhouseQuery(websiteId: string, filters: QueryFilters) {
- const { rawQuery } = clickhouse;
- const { startDate } = filters;
+async function clickhouseQuery(websiteId: string, filters: QueryFilters, pageParams?: PageParams) {
+ const { pagedQuery, parseFilters } = clickhouse;
+ const { params, dateQuery, filterQuery } = await parseFilters(websiteId, filters);
- return rawQuery(
+ return pagedQuery(
`
select
event_id as id,
@@ -48,16 +36,20 @@ function clickhouseQuery(websiteId: string, filters: QueryFilters) {
created_at as createdAt,
toUnixTimestamp(created_at) as timestamp,
url_path as urlPath,
+ url_query as urlQuery,
+ referrer_path as referrerPath,
+ referrer_query as referrerQuery,
referrer_domain as referrerDomain,
+ page_title as pageTitle,
+ event_type as eventType,
event_name as eventName
from website_event
where website_id = {websiteId:UUID}
- and created_at >= {startDate:DateTime64}
+ ${dateQuery}
+ ${filterQuery}
order by created_at desc
`,
- {
- websiteId,
- startDate,
- },
+ params,
+ pageParams,
);
}
diff --git a/src/queries/analytics/events/saveEvent.ts b/src/queries/analytics/events/saveEvent.ts
index 25bcf9e7..cd41b7a3 100644
--- a/src/queries/analytics/events/saveEvent.ts
+++ b/src/queries/analytics/events/saveEvent.ts
@@ -1,5 +1,6 @@
import { EVENT_NAME_LENGTH, URL_LENGTH, EVENT_TYPE, PAGE_TITLE_LENGTH } from 'lib/constants';
import { CLICKHOUSE, PRISMA, runQuery } from 'lib/db';
+import clickhouse from 'lib/clickhouse';
import kafka from 'lib/kafka';
import prisma from 'lib/prisma';
import { uuid } from 'lib/crypto';
@@ -134,6 +135,7 @@ async function clickhouseQuery(data: {
city,
...args
} = data;
+ const { insert } = clickhouse;
const { getDateFormat, sendMessage } = kafka;
const eventId = uuid();
const createdAt = getDateFormat(new Date());
@@ -164,7 +166,11 @@ async function clickhouseQuery(data: {
created_at: createdAt,
};
- await sendMessage(message, 'event');
+ if (kafka.enabled) {
+ await sendMessage('event', message);
+ } else {
+ await insert('website_event', [message]);
+ }
if (eventData) {
await saveEventData({
diff --git a/src/queries/analytics/getRealtimeData.ts b/src/queries/analytics/getRealtimeData.ts
index b42fbc50..afc7ff8f 100644
--- a/src/queries/analytics/getRealtimeData.ts
+++ b/src/queries/analytics/getRealtimeData.ts
@@ -19,15 +19,15 @@ export async function getRealtimeData(
const { startDate, timezone } = criteria;
const filters = { startDate, endDate: new Date(), unit: 'minute', timezone };
const [events, sessions, pageviews, sessionviews] = await Promise.all([
- getEvents(websiteId, { startDate }),
- getSessions(websiteId, { startDate }),
+ getEvents(websiteId, { startDate }, { pageSize: 10000 }),
+ getSessions(websiteId, { startDate }, { pageSize: 10000 }),
getPageviewStats(websiteId, filters),
getSessionStats(websiteId, filters),
]);
const uniques = new Set();
- const sessionStats = sessions.reduce(
+ const sessionStats = sessions.data.reduce(
(obj: { visitors: any; countries: any }, session: { id: any; country: any }) => {
const { countries, visitors } = obj;
const { id, country } = session;
@@ -49,7 +49,7 @@ export async function getRealtimeData(
},
);
- const eventStats = events.reduce(
+ const eventStats = events.data.reduce(
(
obj: { urls: any; referrers: any; events: any },
event: { urlPath: any; referrerDomain: any },
@@ -81,9 +81,9 @@ export async function getRealtimeData(
visitors: sessionviews,
},
totals: {
- views: events.filter(e => !e.eventName).length,
+ views: events.data.filter(e => !e.eventName).length,
visitors: uniques.size,
- events: events.filter(e => e.eventName).length,
+ events: events.data.filter(e => e.eventName).length,
countries: Object.keys(sessionStats.countries).length,
},
timestamp: Date.now(),
diff --git a/src/queries/analytics/getValues.ts b/src/queries/analytics/getValues.ts
index 7cd34994..8b1afb3f 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, getSearchQuery } = prisma;
+ const { rawQuery, getSearchSQL } = prisma;
let searchQuery = '';
if (search) {
- searchQuery = getSearchQuery(column);
+ searchQuery = getSearchSQL(column);
}
return rawQuery(
diff --git a/src/queries/analytics/getWebsiteStats.ts b/src/queries/analytics/getWebsiteStats.ts
index 6257e166..84ceaf1c 100644
--- a/src/queries/analytics/getWebsiteStats.ts
+++ b/src/queries/analytics/getWebsiteStats.ts
@@ -21,7 +21,7 @@ async function relationalQuery(
): Promise<
{ pageviews: number; visitors: number; visits: number; bounces: number; totaltime: number }[]
> {
- const { getTimestampDiffQuery, parseFilters, rawQuery } = prisma;
+ const { getTimestampDiffSQL, parseFilters, rawQuery } = prisma;
const { filterQuery, joinSession, params } = await parseFilters(websiteId, {
...filters,
eventType: EVENT_TYPE.pageView,
@@ -34,7 +34,7 @@ async function relationalQuery(
count(distinct t.session_id) as "visitors",
count(distinct t.visit_id) as "visits",
sum(case when t.c = 1 then 1 else 0 end) as "bounces",
- sum(${getTimestampDiffQuery('t.min_time', 't.max_time')}) as "totaltime"
+ sum(${getTimestampDiffSQL('t.min_time', 't.max_time')}) as "totaltime"
from (
select
website_event.session_id,
@@ -71,8 +71,8 @@ async function clickhouseQuery(
`
select
sum(t.c) as "pageviews",
- count(distinct t.session_id) as "visitors",
- count(distinct t.visit_id) as "visits",
+ uniq(t.session_id) as "visitors",
+ uniq(t.visit_id) as "visits",
sum(if(t.c = 1, 1, 0)) as "bounces",
sum(max_time-min_time) as "totaltime"
from (
diff --git a/src/queries/analytics/pageviews/getPageviewMetrics.ts b/src/queries/analytics/pageviews/getPageviewMetrics.ts
index 67ccb04a..b3ae633a 100644
--- a/src/queries/analytics/pageviews/getPageviewMetrics.ts
+++ b/src/queries/analytics/pageviews/getPageviewMetrics.ts
@@ -42,15 +42,18 @@ async function relationalQuery(
const aggregrate = type === 'entry' ? 'min' : 'max';
entryExitQuery = `
- JOIN (select visit_id,
- ${aggregrate}(created_at) target_created_at
- from website_event
- where website_event.website_id = {{websiteId::uuid}}
- and website_event.created_at between {{startDate}} and {{endDate}}
- and event_type = {{eventType}}
- group by visit_id) x
- ON x.visit_id = website_event.visit_id
- and x.target_created_at = website_event.created_at`;
+ join (
+ select visit_id,
+ ${aggregrate}(created_at) target_created_at
+ from website_event
+ where website_event.website_id = {{websiteId::uuid}}
+ and website_event.created_at between {{startDate}} and {{endDate}}
+ and event_type = {{eventType}}
+ group by visit_id
+ ) x
+ on x.visit_id = website_event.visit_id
+ and x.target_created_at = website_event.created_at
+ `;
}
return rawQuery(
@@ -97,15 +100,18 @@ async function clickhouseQuery(
const aggregrate = type === 'entry' ? 'min' : 'max';
entryExitQuery = `
- JOIN (select visit_id,
- ${aggregrate}(created_at) target_created_at
- from website_event
- where website_id = {websiteId:UUID}
- and created_at between {startDate:DateTime64} and {endDate:DateTime64}
- and event_type = {eventType:UInt32}
- group by visit_id) x
- ON x.visit_id = website_event.visit_id
- and x.target_created_at = website_event.created_at`;
+ join (
+ select visit_id,
+ ${aggregrate}(created_at) target_created_at
+ from website_event
+ where website_id = {websiteId:UUID}
+ and created_at between {startDate:DateTime64} and {endDate:DateTime64}
+ and event_type = {eventType:UInt32}
+ group by visit_id
+ ) x
+ on x.visit_id = website_event.visit_id
+ and x.target_created_at = website_event.created_at
+ `;
}
return rawQuery(
diff --git a/src/queries/analytics/pageviews/getPageviewStats.ts b/src/queries/analytics/pageviews/getPageviewStats.ts
index a37a1566..65bc8625 100644
--- a/src/queries/analytics/pageviews/getPageviewStats.ts
+++ b/src/queries/analytics/pageviews/getPageviewStats.ts
@@ -13,7 +13,7 @@ export async function getPageviewStats(...args: [websiteId: string, filters: Que
async function relationalQuery(websiteId: string, filters: QueryFilters) {
const { timezone = 'utc', unit = 'day' } = filters;
- const { getDateQuery, parseFilters, rawQuery } = prisma;
+ const { getDateSQL, parseFilters, rawQuery } = prisma;
const { filterQuery, joinSession, params } = await parseFilters(websiteId, {
...filters,
eventType: EVENT_TYPE.pageView,
@@ -22,7 +22,7 @@ async function relationalQuery(websiteId: string, filters: QueryFilters) {
return rawQuery(
`
select
- ${getDateQuery('website_event.created_at', unit, timezone)} x,
+ ${getDateSQL('website_event.created_at', unit, timezone)} x,
count(*) y
from website_event
${joinSession}
@@ -41,7 +41,7 @@ async function clickhouseQuery(
filters: QueryFilters,
): Promise<{ x: string; y: number }[]> {
const { timezone = 'UTC', unit = 'day' } = filters;
- const { parseFilters, rawQuery, getDateStringQuery, getDateQuery } = clickhouse;
+ const { parseFilters, rawQuery, getDateStringSQL, getDateSQL } = clickhouse;
const { filterQuery, params } = await parseFilters(websiteId, {
...filters,
eventType: EVENT_TYPE.pageView,
@@ -50,11 +50,11 @@ async function clickhouseQuery(
return rawQuery(
`
select
- ${getDateStringQuery('g.t', unit)} as x,
+ ${getDateStringSQL('g.t', unit)} as x,
g.y as y
from (
select
- ${getDateQuery('created_at', unit, timezone)} as t,
+ ${getDateSQL('created_at', unit, timezone)} as t,
count(*) as y
from website_event
where website_id = {websiteId:UUID}
diff --git a/src/queries/analytics/reports/getInsights.ts b/src/queries/analytics/reports/getInsights.ts
index c1a4f1f1..8e6e3289 100644
--- a/src/queries/analytics/reports/getInsights.ts
+++ b/src/queries/analytics/reports/getInsights.ts
@@ -23,7 +23,7 @@ async function relationalQuery(
y: number;
}[]
> {
- const { getTimestampDiffQuery, parseFilters, rawQuery } = prisma;
+ const { getTimestampDiffSQL, parseFilters, rawQuery } = prisma;
const { filterQuery, joinSession, params } = await parseFilters(
websiteId,
{
@@ -42,7 +42,7 @@ async function relationalQuery(
count(distinct t.session_id) as "visitors",
count(distinct t.visit_id) as "visits",
sum(case when t.c = 1 then 1 else 0 end) as "bounces",
- sum(${getTimestampDiffQuery('t.min_time', 't.max_time')}) as "totaltime",
+ sum(${getTimestampDiffSQL('t.min_time', 't.max_time')}) as "totaltime",
${parseFieldsByName(fields)}
from (
select
diff --git a/src/queries/analytics/reports/getRetention.ts b/src/queries/analytics/reports/getRetention.ts
index de495cc4..24aa2e3a 100644
--- a/src/queries/analytics/reports/getRetention.ts
+++ b/src/queries/analytics/reports/getRetention.ts
@@ -35,14 +35,14 @@ async function relationalQuery(
}[]
> {
const { startDate, endDate, timezone = 'UTC' } = filters;
- const { getDateQuery, getDayDiffQuery, getCastColumnQuery, rawQuery } = prisma;
+ const { getDateSQL, getDayDiffQuery, getCastColumnQuery, rawQuery } = prisma;
const unit = 'day';
return rawQuery(
`
WITH cohort_items AS (
select session_id,
- ${getDateQuery('created_at', unit, timezone)} as cohort_date
+ ${getDateSQL('created_at', unit, timezone)} as cohort_date
from session
where website_id = {{websiteId::uuid}}
and created_at between {{startDate}} and {{endDate}}
@@ -50,10 +50,7 @@ async function relationalQuery(
user_activities AS (
select distinct
w.session_id,
- ${getDayDiffQuery(
- getDateQuery('created_at', unit, timezone),
- 'c.cohort_date',
- )} as day_number
+ ${getDayDiffQuery(getDateSQL('created_at', unit, timezone), 'c.cohort_date')} as day_number
from website_event w
join cohort_items c
on w.session_id = c.session_id
@@ -115,14 +112,14 @@ async function clickhouseQuery(
}[]
> {
const { startDate, endDate, timezone = 'UTC' } = filters;
- const { getDateQuery, getDateStringQuery, rawQuery } = clickhouse;
+ const { getDateSQL, getDateStringSQL, rawQuery } = clickhouse;
const unit = 'day';
return rawQuery(
`
WITH cohort_items AS (
select
- min(${getDateQuery('created_at', unit, timezone)}) as cohort_date,
+ min(${getDateSQL('created_at', unit, timezone)}) as cohort_date,
session_id
from website_event
where website_id = {websiteId:UUID}
@@ -132,7 +129,7 @@ async function clickhouseQuery(
user_activities AS (
select distinct
w.session_id,
- (${getDateQuery('created_at', unit, timezone)} - c.cohort_date) / 86400 as day_number
+ (${getDateSQL('created_at', unit, timezone)} - c.cohort_date) / 86400 as day_number
from website_event w
join cohort_items c
on w.session_id = c.session_id
@@ -157,7 +154,7 @@ async function clickhouseQuery(
group by 1, 2
)
select
- ${getDateStringQuery('c.cohort_date', unit)} as date,
+ ${getDateStringSQL('c.cohort_date', unit)} as date,
c.day_number as day,
s.visitors as visitors,
c.visitors returnVisitors,
diff --git a/src/queries/analytics/reports/getRevenue.ts b/src/queries/analytics/reports/getRevenue.ts
index 6b151bb7..e4857a43 100644
--- a/src/queries/analytics/reports/getRevenue.ts
+++ b/src/queries/analytics/reports/getRevenue.ts
@@ -46,12 +46,12 @@ async function relationalQuery(
timezone = 'UTC',
unit = 'day',
} = criteria;
- const { getDateQuery, rawQuery } = prisma;
+ const { getDateSQL, rawQuery } = prisma;
const chartRes = await rawQuery(
`
select
- ${getDateQuery('website_event.created_at', unit, timezone)} time,
+ ${getDateSQL('website_event.created_at', unit, timezone)} time,
sum(case when data_key = {{revenueProperty}} then number_value else 0 end) sum,
avg(case when data_key = {{revenueProperty}} then number_value else 0 end) avg,
count(case when data_key = {{revenueProperty}} then 1 else 0 end) count,
@@ -110,7 +110,7 @@ async function clickhouseQuery(
timezone = 'UTC',
unit = 'day',
} = criteria;
- const { getDateStringQuery, getDateQuery, rawQuery } = clickhouse;
+ const { getDateStringSQL, getDateSQL, rawQuery } = clickhouse;
const chartRes = await rawQuery<{
time: string;
@@ -121,14 +121,14 @@ async function clickhouseQuery(
}>(
`
select
- ${getDateStringQuery('g.time', unit)} as time,
+ ${getDateStringSQL('g.time', unit)} as time,
g.sum as sum,
g.avg as avg,
g.count as count,
g.uniqueCount as uniqueCount
from (
select
- ${getDateQuery('created_at', unit, timezone)} as time,
+ ${getDateSQL('created_at', unit, timezone)} as time,
sumIf(number_value, data_key = {revenueProperty:String}) as sum,
avgIf(number_value, data_key = {revenueProperty:String}) as avg,
countIf(data_key = {revenueProperty:String}) as count,
diff --git a/src/queries/analytics/sessions/getSessionMetrics.ts b/src/queries/analytics/sessions/getSessionMetrics.ts
index e28f1fb2..e522a7ef 100644
--- a/src/queries/analytics/sessions/getSessionMetrics.ts
+++ b/src/queries/analytics/sessions/getSessionMetrics.ts
@@ -75,7 +75,7 @@ async function clickhouseQuery(
`
select
${column} x,
- count(distinct session_id) y
+ uniq(session_id) y
${includeCountry ? ', country' : ''}
from website_event
where website_id = {websiteId:UUID}
diff --git a/src/queries/analytics/sessions/getSessionStats.ts b/src/queries/analytics/sessions/getSessionStats.ts
index e3af7ba6..54c46c35 100644
--- a/src/queries/analytics/sessions/getSessionStats.ts
+++ b/src/queries/analytics/sessions/getSessionStats.ts
@@ -13,7 +13,7 @@ export async function getSessionStats(...args: [websiteId: string, filters: Quer
async function relationalQuery(websiteId: string, filters: QueryFilters) {
const { timezone = 'utc', unit = 'day' } = filters;
- const { getDateQuery, parseFilters, rawQuery } = prisma;
+ const { getDateSQL, parseFilters, rawQuery } = prisma;
const { filterQuery, joinSession, params } = await parseFilters(websiteId, {
...filters,
eventType: EVENT_TYPE.pageView,
@@ -22,7 +22,7 @@ async function relationalQuery(websiteId: string, filters: QueryFilters) {
return rawQuery(
`
select
- ${getDateQuery('website_event.created_at', unit, timezone)} x,
+ ${getDateSQL('website_event.created_at', unit, timezone)} x,
count(distinct website_event.session_id) y
from website_event
${joinSession}
@@ -41,7 +41,7 @@ async function clickhouseQuery(
filters: QueryFilters,
): Promise<{ x: string; y: number }[]> {
const { timezone = 'UTC', unit = 'day' } = filters;
- const { parseFilters, rawQuery, getDateStringQuery, getDateQuery } = clickhouse;
+ const { parseFilters, rawQuery, getDateStringSQL, getDateSQL } = clickhouse;
const { filterQuery, params } = await parseFilters(websiteId, {
...filters,
eventType: EVENT_TYPE.pageView,
@@ -50,11 +50,11 @@ async function clickhouseQuery(
return rawQuery(
`
select
- ${getDateStringQuery('g.t', unit)} as x,
+ ${getDateStringSQL('g.t', unit)} as x,
g.y as y
from (
select
- ${getDateQuery('created_at', unit, timezone)} as t,
+ ${getDateSQL('created_at', unit, timezone)} as t,
count(distinct session_id) as y
from website_event
where website_id = {websiteId:UUID}
diff --git a/src/queries/analytics/sessions/getSessions.ts b/src/queries/analytics/sessions/getSessions.ts
index a11edd39..47471d98 100644
--- a/src/queries/analytics/sessions/getSessions.ts
+++ b/src/queries/analytics/sessions/getSessions.ts
@@ -1,45 +1,33 @@
import prisma from 'lib/prisma';
import clickhouse from 'lib/clickhouse';
import { runQuery, PRISMA, CLICKHOUSE } from 'lib/db';
-import { QueryFilters } from 'lib/types';
+import { PageParams, QueryFilters } from 'lib/types';
-export async function getSessions(...args: [websiteId: string, filters: QueryFilters]) {
+export async function getSessions(
+ ...args: [websiteId: string, filters?: QueryFilters, pageParams?: PageParams]
+) {
return runQuery({
[PRISMA]: () => relationalQuery(...args),
[CLICKHOUSE]: () => clickhouseQuery(...args),
});
}
-async function relationalQuery(websiteId: string, filters: QueryFilters) {
- const { startDate } = filters;
+async function relationalQuery(websiteId: string, filters: QueryFilters, pageParams: PageParams) {
+ const { pagedQuery } = prisma;
- return prisma.client.session
- .findMany({
- where: {
- websiteId,
- createdAt: {
- gte: startDate,
- },
- },
- orderBy: {
- createdAt: 'desc',
- },
- })
- .then(a => {
- return Object.values(a).map(a => {
- return {
- ...a,
- timestamp: new Date(a.createdAt).getTime() / 1000,
- };
- });
- });
+ const where = {
+ ...filters,
+ id: websiteId,
+ };
+
+ return pagedQuery('session', { where }, pageParams);
}
-async function clickhouseQuery(websiteId: string, filters: QueryFilters) {
- const { rawQuery } = clickhouse;
- const { startDate } = filters;
+async function clickhouseQuery(websiteId: string, filters: QueryFilters, pageParams?: PageParams) {
+ const { pagedQuery, parseFilters } = clickhouse;
+ const { params, dateQuery, filterQuery } = await parseFilters(websiteId, filters);
- return rawQuery(
+ return pagedQuery(
`
select
session_id as id,
@@ -58,12 +46,11 @@ async function clickhouseQuery(websiteId: string, filters: QueryFilters) {
city
from website_event
where website_id = {websiteId:UUID}
- and created_at >= {startDate:DateTime64}
+ ${dateQuery}
+ ${filterQuery}
order by created_at desc
`,
- {
- websiteId,
- startDate,
- },
+ params,
+ pageParams,
);
}
diff --git a/src/queries/analytics/sessions/saveSessionData.ts b/src/queries/analytics/sessions/saveSessionData.ts
index 429c6e28..1f5c1494 100644
--- a/src/queries/analytics/sessions/saveSessionData.ts
+++ b/src/queries/analytics/sessions/saveSessionData.ts
@@ -5,6 +5,7 @@ import prisma from 'lib/prisma';
import { DynamicData } from 'lib/types';
import { CLICKHOUSE, PRISMA, runQuery } from 'lib/db';
import kafka from 'lib/kafka';
+import clickhouse from 'lib/clickhouse';
export async function saveSessionData(data: {
websiteId: string;
@@ -81,6 +82,7 @@ async function clickhouseQuery(data: {
}) {
const { websiteId, sessionId, sessionData, createdAt } = data;
+ const { insert } = clickhouse;
const { getDateFormat, sendMessages } = kafka;
const jsonKeys = flattenJSON(sessionData);
@@ -98,7 +100,11 @@ async function clickhouseQuery(data: {
};
});
- await sendMessages(messages, 'session_data');
+ if (kafka.enabled) {
+ await sendMessages('session_data', messages);
+ } else {
+ await insert('session_data', messages);
+ }
return data;
}
diff --git a/src/queries/index.ts b/src/queries/index.ts
index 8cef080a..796adea6 100644
--- a/src/queries/index.ts
+++ b/src/queries/index.ts
@@ -1,8 +1,8 @@
-export * from './admin/report';
-export * from './admin/team';
-export * from './admin/teamUser';
-export * from './admin/user';
-export * from './admin/website';
+export * from 'queries/prisma/report';
+export * from 'queries/prisma/team';
+export * from 'queries/prisma/teamUser';
+export * from 'queries/prisma/user';
+export * from 'queries/prisma/website';
export * from './analytics/events/getEventMetrics';
export * from './analytics/events/getEventUsage';
export * from './analytics/events/getEvents';
diff --git a/src/queries/admin/report.ts b/src/queries/prisma/report.ts
similarity index 93%
rename from src/queries/admin/report.ts
rename to src/queries/prisma/report.ts
index dc05a1d5..a0e6364c 100644
--- a/src/queries/admin/report.ts
+++ b/src/queries/prisma/report.ts
@@ -17,9 +17,9 @@ export async function getReport(reportId: string): Promise {
export async function getReports(
criteria: ReportFindManyArgs,
- filters: PageParams = {},
+ pageParams: PageParams = {},
): Promise> {
- const { query } = filters;
+ const { query } = pageParams;
const where: Prisma.ReportWhereInput = {
...criteria.where,
@@ -45,7 +45,7 @@ export async function getReports(
]),
};
- return prisma.pagedQuery('report', { ...criteria, where }, filters);
+ return prisma.pagedQuery('report', { ...criteria, where }, pageParams);
}
export async function getUserReports(
diff --git a/src/queries/admin/team.ts b/src/queries/prisma/team.ts
similarity index 100%
rename from src/queries/admin/team.ts
rename to src/queries/prisma/team.ts
diff --git a/src/queries/admin/teamUser.ts b/src/queries/prisma/teamUser.ts
similarity index 100%
rename from src/queries/admin/teamUser.ts
rename to src/queries/prisma/teamUser.ts
diff --git a/src/queries/admin/user.ts b/src/queries/prisma/user.ts
similarity index 98%
rename from src/queries/admin/user.ts
rename to src/queries/prisma/user.ts
index 9e085112..9b471787 100644
--- a/src/queries/admin/user.ts
+++ b/src/queries/prisma/user.ts
@@ -49,9 +49,9 @@ export async function getUserByUsername(username: string, options: GetUserOption
export async function getUsers(
criteria: UserFindManyArgs,
- filters?: PageParams,
+ pageParams?: PageParams,
): Promise> {
- const { query } = filters;
+ const { query } = pageParams;
const where: Prisma.UserWhereInput = {
...criteria.where,
@@ -68,7 +68,7 @@ export async function getUsers(
{
orderBy: 'createdAt',
sortDescending: true,
- ...filters,
+ ...pageParams,
},
);
}
diff --git a/src/queries/admin/website.ts b/src/queries/prisma/website.ts
similarity index 97%
rename from src/queries/admin/website.ts
rename to src/queries/prisma/website.ts
index eb07f779..0814a137 100644
--- a/src/queries/admin/website.ts
+++ b/src/queries/prisma/website.ts
@@ -27,9 +27,9 @@ export async function getSharedWebsite(shareId: string) {
export async function getWebsites(
criteria: WebsiteFindManyArgs,
- filters: PageParams,
+ pageParams: PageParams,
): Promise> {
- const { query } = filters;
+ const { query } = pageParams;
const where: Prisma.WebsiteWhereInput = {
...criteria.where,
@@ -42,7 +42,7 @@ export async function getWebsites(
deletedAt: null,
};
- return prisma.pagedQuery('website', { ...criteria, where }, filters);
+ return prisma.pagedQuery('website', { ...criteria, where }, pageParams);
}
export async function getAllWebsites(userId: string) {
diff --git a/yarn.lock b/yarn.lock
index 9b29fa74..7944a0c6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1126,13 +1126,6 @@
dependencies:
regenerator-runtime "^0.14.0"
-"@babel/runtime@^7.23.2":
- 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"
-
"@babel/template@^7.22.15", "@babel/template@^7.22.5":
version "7.22.15"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38"
@@ -1206,17 +1199,17 @@
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
-"@clickhouse/client-common@1.0.2":
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/@clickhouse/client-common/-/client-common-1.0.2.tgz#0fe0a4b33101c08d85c1279e4d74b2a92d42d996"
- integrity sha512-5oI2URFsXlzoysv5lAxoTUAnAHjXnaJ+1Jz3HUARR06Hkbr1sN0pGxfGwgjEd8E/lI4+UNdNEZicG2rlFnWSaA==
+"@clickhouse/client-common@1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@clickhouse/client-common/-/client-common-1.2.0.tgz#8845d373a14c6076d59118a0cb58afad84687372"
+ integrity sha512-VfA/C/tVJ2eNe72CaQ7eXmai+yqFEvZjQZiNtvJoOMLP+Vtb6DzqH9nfkgsiHHMhUhhclvt2mFh6+euk1Ea5wA==
-"@clickhouse/client@^1.0.2":
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/@clickhouse/client/-/client-1.0.2.tgz#7d9675e697ce697f1e6777f4c66ca6d3384e7325"
- integrity sha512-PaK0GLjIrlCpXevrp9gliOrurna6MjMMFBgZhDh6Zup8IuJCjQru4LkNsWUl3hJ2nua6+Ygag14iB8ILbeaIjg==
+"@clickhouse/client@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@clickhouse/client/-/client-1.2.0.tgz#83aa3b69635e19c94a975ee7ec9a68843915b94b"
+ integrity sha512-zMp2EhMfp1IrFKr/NjDwNiLsf7nq68nW8lGKszwFe7Iglc6Z5PY9ZA9Hd0XqAk75Q1NmFrkGCP1r3JCM1Nm1Bw==
dependencies:
- "@clickhouse/client-common" "1.0.2"
+ "@clickhouse/client-common" "1.2.0"
"@colors/colors@1.5.0":
version "1.5.0"
@@ -1565,14 +1558,6 @@
"@formatjs/intl-localematcher" "0.2.25"
tslib "^2.1.0"
-"@formatjs/ecma402-abstract@1.18.2":
- version "1.18.2"
- resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.2.tgz#bf103712a406874eb1e387858d5be2371ab3aa14"
- integrity sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==
- dependencies:
- "@formatjs/intl-localematcher" "0.5.4"
- tslib "^2.4.0"
-
"@formatjs/ecma402-abstract@1.4.0":
version "1.4.0"
resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.4.0.tgz#ac6c17a8fffac43c6d68c849a7b732626d32654c"
@@ -1587,6 +1572,14 @@
dependencies:
tslib "^2.0.1"
+"@formatjs/ecma402-abstract@2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz#39197ab90b1c78b7342b129a56a7acdb8f512e17"
+ integrity sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==
+ dependencies:
+ "@formatjs/intl-localematcher" "0.5.4"
+ tslib "^2.4.0"
+
"@formatjs/fast-memoize@2.2.0":
version "2.2.0"
resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz#33bd616d2e486c3e8ef4e68c99648c196887802b"
@@ -1603,13 +1596,13 @@
"@formatjs/icu-skeleton-parser" "1.3.6"
tslib "^2.1.0"
-"@formatjs/icu-messageformat-parser@2.7.6":
- version "2.7.6"
- resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.6.tgz#3d69806de056d2919d53dad895a5ff4851e4e9ff"
- integrity sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==
+"@formatjs/icu-messageformat-parser@2.7.8":
+ version "2.7.8"
+ resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.8.tgz#f6d7643001e9bb5930d812f1f9a9856f30fa0343"
+ integrity sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==
dependencies:
- "@formatjs/ecma402-abstract" "1.18.2"
- "@formatjs/icu-skeleton-parser" "1.8.0"
+ "@formatjs/ecma402-abstract" "2.0.0"
+ "@formatjs/icu-skeleton-parser" "1.8.2"
tslib "^2.4.0"
"@formatjs/icu-skeleton-parser@1.3.6":
@@ -1620,29 +1613,29 @@
"@formatjs/ecma402-abstract" "1.11.4"
tslib "^2.1.0"
-"@formatjs/icu-skeleton-parser@1.8.0":
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.0.tgz#5f3d3a620c687d6f8c180d80d1241e8f213acf79"
- integrity sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==
+"@formatjs/icu-skeleton-parser@1.8.2":
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz#2252c949ae84ee66930e726130ea66731a123c9f"
+ integrity sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==
dependencies:
- "@formatjs/ecma402-abstract" "1.18.2"
+ "@formatjs/ecma402-abstract" "2.0.0"
tslib "^2.4.0"
-"@formatjs/intl-displaynames@6.6.6":
- version "6.6.6"
- resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-6.6.6.tgz#be9fea4d24f577bb1a9d0f3ef4f2dcdabb4fe42d"
- integrity sha512-Dg5URSjx0uzF8VZXtHb6KYZ6LFEEhCbAbKoYChYHEOnMFTw/ZU3jIo/NrujzQD2EfKPgQzIq73LOUvW6Z/LpFA==
+"@formatjs/intl-displaynames@6.6.8":
+ version "6.6.8"
+ resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-6.6.8.tgz#2f5afac8df83167f5a6ef8543600eaf1ef99c885"
+ integrity sha512-Lgx6n5KxN16B3Pb05z3NLEBQkGoXnGjkTBNCZI+Cn17YjHJ3fhCeEJJUqRlIZmJdmaXQhjcQVDp6WIiNeRYT5g==
dependencies:
- "@formatjs/ecma402-abstract" "1.18.2"
+ "@formatjs/ecma402-abstract" "2.0.0"
"@formatjs/intl-localematcher" "0.5.4"
tslib "^2.4.0"
-"@formatjs/intl-listformat@7.5.5":
- version "7.5.5"
- resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-7.5.5.tgz#e4c7d741f2201c65e7da71326726e61332c7161e"
- integrity sha512-XoI52qrU6aBGJC9KJddqnacuBbPlb/bXFN+lIFVFhQ1RnFHpzuFrlFdjD9am2O7ZSYsyqzYRpkVcXeT1GHkwDQ==
+"@formatjs/intl-listformat@7.5.7":
+ version "7.5.7"
+ resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-7.5.7.tgz#125e05105fabd1ae5f11881d6ab74484f2098ee4"
+ integrity sha512-MG2TSChQJQT9f7Rlv+eXwUFiG24mKSzmF144PLb8m8OixyXqn4+YWU+5wZracZGCgVTVmx8viCf7IH3QXoiB2g==
dependencies:
- "@formatjs/ecma402-abstract" "1.18.2"
+ "@formatjs/ecma402-abstract" "2.0.0"
"@formatjs/intl-localematcher" "0.5.4"
tslib "^2.4.0"
@@ -1668,17 +1661,17 @@
"@formatjs/ecma402-abstract" "1.4.0"
tslib "^2.0.1"
-"@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==
+"@formatjs/intl@2.10.4":
+ version "2.10.4"
+ resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-2.10.4.tgz#e1819e0858fb05ca65923a020f346bc74e894e92"
+ integrity sha512-56483O+HVcL0c7VucAS2tyH020mt9XTozZO67cwtGg0a7KWDukS/FzW3OnvaHmTHDuYsoPIzO+ZHVfU6fT/bJw==
dependencies:
- "@formatjs/ecma402-abstract" "1.18.2"
+ "@formatjs/ecma402-abstract" "2.0.0"
"@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.12"
+ "@formatjs/icu-messageformat-parser" "2.7.8"
+ "@formatjs/intl-displaynames" "6.6.8"
+ "@formatjs/intl-listformat" "7.5.7"
+ intl-messageformat "10.5.14"
tslib "^2.4.0"
"@formatjs/ts-transformer@3.9.4":
@@ -2002,66 +1995,66 @@
integrity sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==
"@netlify/plugin-nextjs@^5.1.0":
- 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==
+ version "5.3.3"
+ resolved "https://registry.yarnpkg.com/@netlify/plugin-nextjs/-/plugin-nextjs-5.3.3.tgz#414cb0f4c21e6b80d6127b824efb00ae2f732a89"
+ integrity sha512-QhvZLOHhPuTnh6TZ5G0/jtjAJ1Y52A67b39eygKv6znQUPti8p+8y2WulcntpCRzVp2stzEULMNPlnptna1ikg==
-"@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/env@14.2.4":
+ version "14.2.4"
+ resolved "https://registry.yarnpkg.com/@next/env/-/env-14.2.4.tgz#5546813dc4f809884a37d257b254a5ce1b0248d7"
+ integrity sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==
-"@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==
+"@next/eslint-plugin-next@14.2.4":
+ version "14.2.4"
+ resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.4.tgz#c7f965cb76f0b454e726ef0f69157c4fb4e28f53"
+ integrity sha512-svSFxW9f3xDaZA3idQmlFw7SusOuWTpDTAeBlO3AEPDltrraV+lqs7mAc6A27YdnpQVVIA3sODqUAAHdWhVWsA==
dependencies:
glob "10.3.10"
-"@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-arm64@14.2.4":
+ version "14.2.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.4.tgz#da9f04c34a3d5f0b8401ed745768420e4a604036"
+ integrity sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==
-"@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-darwin-x64@14.2.4":
+ version "14.2.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.4.tgz#46dedb29ec5503bf171a72a3ecb8aac6e738e9d6"
+ integrity sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==
-"@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-gnu@14.2.4":
+ version "14.2.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.4.tgz#c9697ab9eb422bd1d7ffd0eb0779cc2aefa9d4a1"
+ integrity sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==
-"@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-arm64-musl@14.2.4":
+ version "14.2.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.4.tgz#cbbceb2008571c743b5a310a488d2e166d200a75"
+ integrity sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==
-"@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-gnu@14.2.4":
+ version "14.2.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.4.tgz#d79184223f857bacffb92f643cb2943a43632568"
+ integrity sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==
-"@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-linux-x64-musl@14.2.4":
+ version "14.2.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.4.tgz#6b6c3e5ac02ca5e63394d280ec8ee607491902df"
+ integrity sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==
-"@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-arm64-msvc@14.2.4":
+ version "14.2.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.4.tgz#dbad3906e870dba84c5883d9d4c4838472e0697f"
+ integrity sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==
-"@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-ia32-msvc@14.2.4":
+ version "14.2.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.4.tgz#6074529b91ba49132922ce89a2e16d25d2ec235d"
+ integrity sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==
-"@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==
+"@next/swc-win32-x64-msvc@14.2.4":
+ version "14.2.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.4.tgz#e65a1c6539a671f97bb86d5183d6e3a1733c29c7"
+ integrity sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
@@ -2089,51 +2082,51 @@
resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
-"@prisma/client@5.14.0":
- version "5.14.0"
- resolved "https://registry.yarnpkg.com/@prisma/client/-/client-5.14.0.tgz#dadca5bb1137ddcebb454bbdaf89423823d3363f"
- integrity sha512-akMSuyvLKeoU4LeyBAUdThP/uhVP3GuLygFE3MlYzaCb3/J8SfsYBE5PkaFuLuVpLyA6sFoW+16z/aPhNAESqg==
+"@prisma/client@5.16.1":
+ version "5.16.1"
+ resolved "https://registry.yarnpkg.com/@prisma/client/-/client-5.16.1.tgz#65c5649b4701c097e7fa943c91a3140ce8bf053d"
+ integrity sha512-wM9SKQjF0qLxdnOZIVAIMKiz6Hu7vDt4FFAih85K1dk/Rr2mdahy6d3QP41K62N9O0DJJA//gUDA3Mp49xsKIg==
-"@prisma/debug@5.14.0":
- version "5.14.0"
- resolved "https://registry.yarnpkg.com/@prisma/debug/-/debug-5.14.0.tgz#1227c705893c38284f7c63d72441480ebaa12605"
- integrity sha512-iq56qBZuFfX3fCxoxT8gBX33lQzomBU0qIUaEj1RebsKVz1ob/BVH1XSBwwwvRVtZEV1b7Fxx2eVu34Ge/mg3w==
+"@prisma/debug@5.16.1":
+ version "5.16.1"
+ resolved "https://registry.yarnpkg.com/@prisma/debug/-/debug-5.16.1.tgz#4887a57a0973fb732a60c30dc48de97bf1eefd7e"
+ integrity sha512-JsNgZAg6BD9RInLSrg7ZYzo11N7cVvYArq3fHGSD89HSgtN0VDdjV6bib7YddbcO6snzjchTiLfjeTqBjtArVQ==
-"@prisma/engines-version@5.14.0-25.e9771e62de70f79a5e1c604a2d7c8e2a0a874b48":
- version "5.14.0-25.e9771e62de70f79a5e1c604a2d7c8e2a0a874b48"
- resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-5.14.0-25.e9771e62de70f79a5e1c604a2d7c8e2a0a874b48.tgz#019c3c75a5c3276e580685fe48cdbfd181176858"
- integrity sha512-ip6pNkRo1UxWv+6toxNcYvItNYaqQjXdFNGJ+Nuk2eYtRoEdoF13wxo7/jsClJFFenMPVNVqXQDV0oveXnR1cA==
+"@prisma/engines-version@5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303":
+ version "5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303"
+ resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303.tgz#63ceebefb7daa1eb17f250cad75d35999a50ee1b"
+ integrity sha512-HkT2WbfmFZ9WUPyuJHhkiADxazHg8Y4gByrTSVeb3OikP6tjQ7txtSUGu9OBOBH0C13dPKN2qqH12xKtHu/Hiw==
-"@prisma/engines@5.14.0":
- version "5.14.0"
- resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-5.14.0.tgz#2ee91dd2220a726c27c906fbea788bbb3efdac6e"
- integrity sha512-lgxkKZ6IEygVcw6IZZUlPIfLQ9hjSYAtHjZ5r64sCLDgVzsPFCi2XBBJgzPMkOQ5RHzUD4E/dVdpn9+ez8tk1A==
+"@prisma/engines@5.16.1":
+ version "5.16.1"
+ resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-5.16.1.tgz#a14e5d08d34241ed1f1bb7d11ed44eacb37b6fc6"
+ integrity sha512-KkyF3eIUtBIyp5A/rJHCtwQO18OjpGgx18PzjyGcJDY/+vNgaVyuVd+TgwBgeq6NLdd1XMwRCI+58vinHsAdfA==
dependencies:
- "@prisma/debug" "5.14.0"
- "@prisma/engines-version" "5.14.0-25.e9771e62de70f79a5e1c604a2d7c8e2a0a874b48"
- "@prisma/fetch-engine" "5.14.0"
- "@prisma/get-platform" "5.14.0"
+ "@prisma/debug" "5.16.1"
+ "@prisma/engines-version" "5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303"
+ "@prisma/fetch-engine" "5.16.1"
+ "@prisma/get-platform" "5.16.1"
"@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.14.0":
- version "5.14.0"
- resolved "https://registry.yarnpkg.com/@prisma/fetch-engine/-/fetch-engine-5.14.0.tgz#45297c118d4ec3fea55129886edd5a429da1f6da"
- integrity sha512-VrheA9y9DMURK5vu8OJoOgQpxOhas3qF0IBHJ8G/0X44k82kc8E0w98HCn2nhnbOOMwbWsJWXfLC2/F8n5u0gQ==
+"@prisma/fetch-engine@5.16.1":
+ version "5.16.1"
+ resolved "https://registry.yarnpkg.com/@prisma/fetch-engine/-/fetch-engine-5.16.1.tgz#506a034eb23222af27ba635eb48c63df0ba7fc14"
+ integrity sha512-oOkjaPU1lhcA/Rvr4GVfd1NLJBwExgNBE36Ueq7dr71kTMwy++a3U3oLd2ZwrV9dj9xoP6LjCcky799D9nEt4w==
dependencies:
- "@prisma/debug" "5.14.0"
- "@prisma/engines-version" "5.14.0-25.e9771e62de70f79a5e1c604a2d7c8e2a0a874b48"
- "@prisma/get-platform" "5.14.0"
+ "@prisma/debug" "5.16.1"
+ "@prisma/engines-version" "5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303"
+ "@prisma/get-platform" "5.16.1"
-"@prisma/get-platform@5.14.0":
- version "5.14.0"
- resolved "https://registry.yarnpkg.com/@prisma/get-platform/-/get-platform-5.14.0.tgz#69112d3dde61905f59a65ed818f153e153ca40f0"
- integrity sha512-/yAyBvcEjRv41ynZrhdrPtHgk47xLRRq/o5eWGcUpBJ1YrUZTYB8EoPiopnP7iQrMATK8stXQdPOoVlrzuTQZw==
+"@prisma/get-platform@5.16.1":
+ version "5.16.1"
+ resolved "https://registry.yarnpkg.com/@prisma/get-platform/-/get-platform-5.16.1.tgz#613197c58acaafd5142d48a11f4df45a8f26a9e9"
+ integrity sha512-R4IKnWnMkR2nUAbU5gjrPehdQYUUd7RENFD2/D+xXTNhcqczp0N+WEGQ3ViyI3+6mtVcjjNIMdnUTNyu3GxIgA==
dependencies:
- "@prisma/debug" "5.14.0"
+ "@prisma/debug" "5.16.1"
"@react-spring/animated@~9.7.3":
version "9.7.3"
@@ -2216,9 +2209,9 @@
slash "^4.0.0"
"@rollup/plugin-commonjs@^25.0.4":
- version "25.0.7"
- resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz#145cec7589ad952171aeb6a585bbeabd0fd3b4cf"
- integrity sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==
+ version "25.0.8"
+ resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.8.tgz#c77e608ab112a666b7f2a6bea625c73224f7dd34"
+ integrity sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==
dependencies:
"@rollup/pluginutils" "^5.0.1"
commondir "^1.0.1"
@@ -2247,9 +2240,9 @@
resolve "^1.22.1"
"@rollup/plugin-replace@^5.0.2":
- version "5.0.5"
- resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.5.tgz#33d5653dce6d03cb24ef98bef7f6d25b57faefdf"
- integrity sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==
+ version "5.0.7"
+ resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.7.tgz#150c9ee9db8031d9e4580a61a0edeaaed3d37687"
+ integrity sha512-PqxSfuorkHz/SPpyngLyg5GCEkOcee9M1bkxiVDr41Pd61mqP1PLOoDPbpl44SB2mQGKwV/In74gqQmGITOhEQ==
dependencies:
"@rollup/pluginutils" "^5.0.1"
magic-string "^0.30.3"
@@ -2273,9 +2266,9 @@
picomatch "^2.3.1"
"@rushstack/eslint-patch@^1.3.3":
- version "1.10.2"
- resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.2.tgz#053f1540703faa81dea2966b768ee5581c66aeda"
- integrity sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw==
+ version "1.10.3"
+ resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz#391d528054f758f81e53210f1a1eebcf1a8b1d20"
+ integrity sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==
"@sinclair/typebox@^0.27.8":
version "0.27.8"
@@ -2430,17 +2423,17 @@
"@swc/counter" "^0.1.3"
tslib "^2.4.0"
-"@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/query-core@5.48.0":
+ version "5.48.0"
+ resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.48.0.tgz#a3308ec925d8c16d64c789899d6c084c2fe30cbc"
+ integrity sha512-lZAfPPeVIqXCswE9SSbG33B6/91XOWt/Iq41bFeWb/mnHwQSIfFRbkS4bfs+WhIk9abRArF9Id2fp0Mgo+hq6Q==
"@tanstack/react-query@^5.28.6":
- version "5.35.5"
- resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.35.5.tgz#d41a087d58f42418824fa04aaca00ba93c99075c"
- integrity sha512-sppX7L+PVn5GBV3In6zzj0zcKfnZRKhXbX1MfIfKo1OjIq2GMaopvAFOP0x1bRYTUk2ikrdYcQYOozX7PWkb8A==
+ version "5.48.0"
+ resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.48.0.tgz#7890620272b48aeb278498dfe082f27518f3ac6d"
+ integrity sha512-GDExbjYWzvDokyRqMSWXdrPiYpp95Aig0oeMIrxTaruOJJgWiWfUP//OAaowm2RrRkGVsavSZdko/XmIrrV2Nw==
dependencies:
- "@tanstack/query-core" "5.35.5"
+ "@tanstack/query-core" "5.48.0"
"@trysound/sax@0.2.0":
version "0.2.0"
@@ -2525,21 +2518,16 @@
dependencies:
cypress "*"
-"@types/estree@*":
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.3.tgz#2be19e759a3dd18c79f9f436bd7363556c1a73dd"
- integrity sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==
+"@types/estree@*", "@types/estree@^1.0.0":
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
+ integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
"@types/estree@^0.0.50":
version "0.0.50"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83"
integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==
-"@types/estree@^1.0.0":
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
- integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
-
"@types/fs-extra@^8.0.1":
version "8.1.4"
resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.1.4.tgz#8171df1d16a80d69fc9c3aab07d7961349a5cb8b"
@@ -2653,9 +2641,9 @@
integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==
"@types/node@*", "@types/node@^20.9.0":
- version "20.12.11"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.11.tgz#c4ef00d3507000d17690643278a60dc55a9dc9be"
- integrity sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==
+ version "20.14.9"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.9.tgz#12e8e765ab27f8c421a1820c99f5f313a933b420"
+ integrity sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==
dependencies:
undici-types "~5.26.4"
@@ -2704,9 +2692,9 @@
"@types/react" "*"
"@types/react@*", "@types/react@16 || 17 || 18", "@types/react@^18.2.41":
- 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==
+ version "18.3.3"
+ resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.3.tgz#9679020895318b0915d7a3ab004d92d33375c45f"
+ integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==
dependencies:
"@types/prop-types" "*"
csstype "^3.0.2"
@@ -3209,14 +3197,14 @@ argparse@^2.0.1:
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
-aria-query@^5.3.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e"
- integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==
+aria-query@~5.1.3:
+ version "5.1.3"
+ resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e"
+ integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==
dependencies:
- dequal "^2.0.3"
+ deep-equal "^2.0.5"
-array-buffer-byte-length@^1.0.1:
+array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f"
integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==
@@ -3229,7 +3217,7 @@ array-find-index@^1.0.1:
resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
integrity sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==
-array-includes@^3.1.6, array-includes@^3.1.7:
+array-includes@^3.1.6, array-includes@^3.1.7, array-includes@^3.1.8:
version "3.1.8"
resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d"
integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==
@@ -3246,7 +3234,7 @@ array-union@^2.1.0:
resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
-array.prototype.findlast@^1.2.4:
+array.prototype.findlast@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904"
integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==
@@ -3300,15 +3288,15 @@ array.prototype.toreversed@^1.1.2:
es-abstract "^1.22.1"
es-shim-unscopables "^1.0.0"
-array.prototype.tosorted@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz#c8c89348337e51b8a3c48a9227f9ce93ceedcba8"
- integrity sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==
+array.prototype.tosorted@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz#fe954678ff53034e717ea3352a03f0b0b86f7ffc"
+ integrity sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==
dependencies:
- call-bind "^1.0.5"
+ call-bind "^1.0.7"
define-properties "^1.2.1"
- es-abstract "^1.22.3"
- es-errors "^1.1.0"
+ es-abstract "^1.23.3"
+ es-errors "^1.3.0"
es-shim-unscopables "^1.0.2"
arraybuffer.prototype.slice@^1.0.3:
@@ -3392,21 +3380,21 @@ aws-sign2@~0.7.0:
integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==
aws4@^1.8.0:
- version "1.12.0"
- resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3"
- integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.13.0.tgz#d9b802e9bb9c248d7be5f7f5ef178dc3684e9dcc"
+ integrity sha512-3AungXC4I8kKsS9PuS4JH2nc+0bVY/mjgrephHTIi8fpEeGsTHBUJeosp0Wc1myYMElmD0B3Oc4XL/HVJ4PV2g==
-axe-core@=4.7.0:
- version "4.7.0"
- resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf"
- integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==
+axe-core@^4.9.1:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.9.1.tgz#fcd0f4496dad09e0c899b44f6c4bb7848da912ae"
+ integrity sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==
-axobject-query@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a"
- integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==
+axobject-query@~3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1"
+ integrity sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==
dependencies:
- dequal "^2.0.3"
+ deep-equal "^2.0.5"
babel-jest@^29.7.0:
version "29.7.0"
@@ -3565,7 +3553,7 @@ brace-expansion@^2.0.1:
dependencies:
balanced-match "^1.0.0"
-braces@^3.0.2:
+braces@^3.0.2, braces@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
@@ -3754,9 +3742,9 @@ charenc@0.0.2:
integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==
chart.js@^4.4.2:
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-4.4.2.tgz#95962fa6430828ed325a480cc2d5f2b4e385ac31"
- integrity sha512-6GD7iKwFpP5kbSD4MeRRRlTnQvxfQREy36uEtm1hzHzcOqwWx0YEHuspuoNlslu+nciLIB7fjjsHkUv/FzFcOg==
+ version "4.4.3"
+ resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-4.4.3.tgz#3b2e11e7010fefa99b07d0349236f5098e5226ad"
+ integrity sha512-qK1gkGSRYcJzqrrzdR6a+I0vQ4/R+SoODXyAjscQ/4mzuNzySaMCd+hyVxitSY1+L2fjPD1Gbn+ibNqRmwQeLw==
dependencies:
"@kurkle/color" "^0.3.0"
@@ -3810,9 +3798,9 @@ cli-cursor@^4.0.0:
restore-cursor "^4.0.0"
cli-table3@~0.6.1:
- version "0.6.4"
- resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.4.tgz#d1c536b8a3f2e7bec58f67ac9e5769b1b30088b0"
- integrity sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw==
+ version "0.6.5"
+ resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.5.tgz#013b91351762739c16a9567c21a04632e449bf2f"
+ integrity sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==
dependencies:
string-width "^4.2.0"
optionalDependencies:
@@ -4267,9 +4255,9 @@ cypress@*:
yauzl "^2.10.0"
cypress@^13.6.6:
- version "13.9.0"
- resolved "https://registry.yarnpkg.com/cypress/-/cypress-13.9.0.tgz#b529cfa8f8c39ba163ed0501a25bb5b09c143652"
- integrity sha512-atNjmYfHsvTuCaxTxLZr9xGoHz53LLui3266WWxXJHY7+N6OdwJdg/feEa3T+buez9dmUXHT1izCOklqG82uCQ==
+ version "13.12.0"
+ resolved "https://registry.yarnpkg.com/cypress/-/cypress-13.12.0.tgz#1a4ea89b7fa6855e32bc02eaf5e25fc45b9e273f"
+ integrity sha512-udzS2JilmI9ApO/UuqurEwOvThclin5ntz7K0BtnHBs+tg2Bl9QShLISXpSEMDv/u8b6mqdoAdyKeZiSqKWL8g==
dependencies:
"@cypress/request" "^3.0.0"
"@cypress/xvfb" "^1.2.4"
@@ -4461,7 +4449,7 @@ debounce@^1.2.1:
resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5"
integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==
-debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
+debug@4.3.4, debug@^4.1.0, debug@^4.3.1, debug@^4.3.2:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
@@ -4475,6 +4463,13 @@ debug@^3.1.0, debug@^3.2.7:
dependencies:
ms "^2.1.1"
+debug@^4.1.1, debug@^4.3.4:
+ version "4.3.5"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e"
+ integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==
+ dependencies:
+ ms "2.1.2"
+
decamelize-keys@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8"
@@ -4498,6 +4493,30 @@ dedent@^1.0.0:
resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff"
integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==
+deep-equal@^2.0.5:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1"
+ integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==
+ dependencies:
+ array-buffer-byte-length "^1.0.0"
+ call-bind "^1.0.5"
+ es-get-iterator "^1.1.3"
+ get-intrinsic "^1.2.2"
+ is-arguments "^1.1.1"
+ is-array-buffer "^3.0.2"
+ is-date-object "^1.0.5"
+ is-regex "^1.1.4"
+ is-shared-array-buffer "^1.0.2"
+ isarray "^2.0.5"
+ object-is "^1.1.5"
+ object-keys "^1.1.1"
+ object.assign "^4.1.4"
+ regexp.prototype.flags "^1.5.1"
+ side-channel "^1.0.4"
+ which-boxed-primitive "^1.0.2"
+ which-collection "^1.0.1"
+ which-typed-array "^1.1.13"
+
deep-is@^0.1.3:
version "0.1.4"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
@@ -4517,7 +4536,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.2.0, define-properties@^1.2.1:
+define-properties@^1.1.3, 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==
@@ -4559,11 +4578,6 @@ delayed-stream@~1.0.0:
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
-dequal@^2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
- integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
-
detect-browser@^5.2.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.3.0.tgz#9705ef2bddf46072d0f7265a1fe300e36fe7ceca"
@@ -4731,9 +4745,9 @@ end-of-stream@^1.1.0:
once "^1.4.0"
enhanced-resolve@^5.12.0:
- version "5.16.1"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz#e8bc63d51b826d6f1cbc0a150ecb5a8b0c62e567"
- integrity sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==
+ version "5.17.0"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz#d037603789dd9555b89aaec7eb78845c49089bc5"
+ integrity sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==
dependencies:
graceful-fs "^4.2.4"
tapable "^2.2.0"
@@ -4763,7 +4777,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.23.3:
+es-abstract@^1.17.5, 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==
@@ -4822,12 +4836,27 @@ es-define-property@^1.0.0:
dependencies:
get-intrinsic "^1.2.4"
-es-errors@^1.1.0, es-errors@^1.2.1, es-errors@^1.3.0:
+es-errors@^1.2.1, es-errors@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
-es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.17:
+es-get-iterator@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6"
+ integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.1.3"
+ has-symbols "^1.0.3"
+ is-arguments "^1.1.1"
+ is-map "^2.0.2"
+ is-set "^2.0.2"
+ is-string "^1.0.7"
+ isarray "^2.0.5"
+ stop-iteration-iterator "^1.0.0"
+
+es-iterator-helpers@^1.0.19:
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==
@@ -4933,11 +4962,11 @@ escape-string-regexp@^4.0.0:
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
eslint-config-next@^14.0.4:
- version "14.2.3"
- resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.2.3.tgz#2fb0f7c4eccda530a4b5054438162b2303786d4f"
- integrity sha512-ZkNztm3Q7hjqvB1rRlOX8P9E/cXRL9ajRcs8jufEtwMfTVYRqnmtnaSu57QqHyBlovMuiB8LEzfLBkh5RYV6Fg==
+ version "14.2.4"
+ resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.2.4.tgz#eb0bedfe4a894bc2aea918214bb5243ee4fa7d4b"
+ integrity sha512-Qr0wMgG9m6m4uYy2jrYJmyuNlYZzPRQq5Kvb9IDlYwn+7yq6W6sfMNFgb+9guM1KYwuIo6TIaiFhZJ6SnQ/Efw==
dependencies:
- "@next/eslint-plugin-next" "14.2.3"
+ "@next/eslint-plugin-next" "14.2.4"
"@rushstack/eslint-patch" "^1.3.3"
"@typescript-eslint/parser" "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0"
eslint-import-resolver-node "^0.3.6"
@@ -5032,26 +5061,26 @@ eslint-plugin-jest@^27.9.0:
"@typescript-eslint/utils" "^5.10.0"
eslint-plugin-jsx-a11y@^6.7.1:
- version "6.8.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2"
- integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==
+ version "6.9.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz#67ab8ff460d4d3d6a0b4a570e9c1670a0a8245c8"
+ integrity sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==
dependencies:
- "@babel/runtime" "^7.23.2"
- aria-query "^5.3.0"
- array-includes "^3.1.7"
+ aria-query "~5.1.3"
+ array-includes "^3.1.8"
array.prototype.flatmap "^1.3.2"
ast-types-flow "^0.0.8"
- axe-core "=4.7.0"
- axobject-query "^3.2.1"
+ axe-core "^4.9.1"
+ axobject-query "~3.1.1"
damerau-levenshtein "^1.0.8"
emoji-regex "^9.2.2"
- es-iterator-helpers "^1.0.15"
- hasown "^2.0.0"
+ es-iterator-helpers "^1.0.19"
+ hasown "^2.0.2"
jsx-ast-utils "^3.3.5"
language-tags "^1.0.9"
minimatch "^3.1.2"
- object.entries "^1.1.7"
- object.fromentries "^2.0.7"
+ object.fromentries "^2.0.8"
+ safe-regex-test "^1.0.3"
+ string.prototype.includes "^2.0.0"
eslint-plugin-prettier@^4.0.0:
version "4.2.1"
@@ -5061,9 +5090,9 @@ eslint-plugin-prettier@^4.0.0:
prettier-linter-helpers "^1.0.0"
eslint-plugin-promise@^6.1.1:
- version "6.1.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz#269a3e2772f62875661220631bd4dafcb4083816"
- integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.2.0.tgz#e24ab0e3c0a25fa227d98d9ff612156b5af15945"
+ integrity sha512-QmAqwizauvnKOlifxyDj2ObfULpHQawlg/zQdgEixur9vl0CvZGv/LCJV2rtj3210QCoeGBzVMfMXqGAOr/4fA==
"eslint-plugin-react-hooks@^4.5.0 || 5.0.0-canary-7118f5dd7-20230705":
version "4.6.2"
@@ -5071,28 +5100,28 @@ eslint-plugin-promise@^6.1.1:
integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==
eslint-plugin-react@^7.33.2:
- version "7.34.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz#6806b70c97796f5bbfb235a5d3379ece5f4da997"
- integrity sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==
+ version "7.34.3"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.3.tgz#9965f27bd1250a787b5d4cfcc765e5a5d58dcb7b"
+ integrity sha512-aoW4MV891jkUulwDApQbPYTVZmeuSyFrudpbTAQuj5Fv8VL+o6df2xIGpw8B0hPjAaih1/Fb0om9grCdyFYemA==
dependencies:
- array-includes "^3.1.7"
- array.prototype.findlast "^1.2.4"
+ array-includes "^3.1.8"
+ array.prototype.findlast "^1.2.5"
array.prototype.flatmap "^1.3.2"
array.prototype.toreversed "^1.1.2"
- array.prototype.tosorted "^1.1.3"
+ array.prototype.tosorted "^1.1.4"
doctrine "^2.1.0"
- es-iterator-helpers "^1.0.17"
+ es-iterator-helpers "^1.0.19"
estraverse "^5.3.0"
jsx-ast-utils "^2.4.1 || ^3.0.0"
minimatch "^3.1.2"
- object.entries "^1.1.7"
- object.fromentries "^2.0.7"
- object.hasown "^1.1.3"
- object.values "^1.1.7"
+ object.entries "^1.1.8"
+ object.fromentries "^2.0.8"
+ object.hasown "^1.1.4"
+ object.values "^1.2.0"
prop-types "^15.8.1"
resolve "^2.0.0-next.5"
semver "^6.3.1"
- string.prototype.matchall "^4.0.10"
+ string.prototype.matchall "^4.0.11"
eslint-scope@^5.1.1:
version "5.1.1"
@@ -5489,9 +5518,9 @@ for-each@^0.3.3:
is-callable "^1.1.3"
foreground-child@^3.1.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d"
- integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.2.1.tgz#767004ccf3a5b30df39bed90718bab43fe0a59f7"
+ integrity sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==
dependencies:
cross-spawn "^7.0.0"
signal-exit "^4.0.1"
@@ -5609,7 +5638,7 @@ get-caller-file@^2.0.5:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
-get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4:
+get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
@@ -6039,7 +6068,7 @@ ini@^1.3.5:
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
-internal-slot@^1.0.7:
+internal-slot@^1.0.4, internal-slot@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802"
integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==
@@ -6068,14 +6097,14 @@ intl-messageformat-parser@^5.3.7:
dependencies:
"@formatjs/intl-numberformat" "^5.5.2"
-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==
+intl-messageformat@10.5.14:
+ version "10.5.14"
+ resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.5.14.tgz#e5bb373f8a37b88fbe647d7b941f3ab2a37ed00a"
+ integrity sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==
dependencies:
- "@formatjs/ecma402-abstract" "1.18.2"
+ "@formatjs/ecma402-abstract" "2.0.0"
"@formatjs/fast-memoize" "2.2.0"
- "@formatjs/icu-messageformat-parser" "2.7.6"
+ "@formatjs/icu-messageformat-parser" "2.7.8"
tslib "^2.4.0"
ipaddr.js@^2.0.1:
@@ -6083,7 +6112,15 @@ ipaddr.js@^2.0.1:
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:
+is-arguments@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b"
+ integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-array-buffer@^3.0.2, 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"
integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==
@@ -6142,7 +6179,14 @@ is-ci@^3.0.1:
dependencies:
ci-info "^3.2.0"
-is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.13.1, is-core-module@^2.5.0:
+is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.13.1:
+ version "2.14.0"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.14.0.tgz#43b8ef9f46a6a08888db67b1ffd4ec9e3dfd59d1"
+ integrity sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==
+ dependencies:
+ hasown "^2.0.2"
+
+is-core-module@^2.5.0:
version "2.13.1"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384"
integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==
@@ -6222,7 +6266,7 @@ is-localhost-ip@^1.4.0:
resolved "https://registry.yarnpkg.com/is-localhost-ip/-/is-localhost-ip-1.4.0.tgz#dd66aaabcbb5dbbc943e00adad5f715d2c3b3a1d"
integrity sha512-cN7SzlY7BVxSeoJu5equjsZaKSgD4HCfXrTwu0Jgbq5BbT1BU+D7Lyi/l1KO8H0un0JTlxcQaT/GWVapu+DIDg==
-is-map@^2.0.3:
+is-map@^2.0.2, is-map@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e"
integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==
@@ -6294,7 +6338,7 @@ is-regex@^1.1.4:
call-bind "^1.0.2"
has-tostringtag "^1.0.0"
-is-set@^2.0.3:
+is-set@^2.0.2, is-set@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d"
integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==
@@ -6373,9 +6417,9 @@ isarray@^2.0.5:
integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
isbot@^5.1.1:
- version "5.1.6"
- resolved "https://registry.yarnpkg.com/isbot/-/isbot-5.1.6.tgz#579a48515e92a3e064da63a41709815d8e641a30"
- integrity sha512-Phksj1A0dBP/M/5xeOx0zWemKlZRQvrbNzI19/HWso0uodiOcR8YYCXN60IdzwbKsGj5LnxPkMy6FuBtgckMNw==
+ version "5.1.11"
+ resolved "https://registry.yarnpkg.com/isbot/-/isbot-5.1.11.tgz#55e91e887c806a5f07d18ce04c2efe194215ba36"
+ integrity sha512-Asuou7OsKVbATgXlrlqdeSRw4fYnD6CNcc0IXy1f5m1AImL2S6IP0xRcRRzjGjoARbegvnBnju9kk5z/Itf70Q==
isexe@^2.0.0:
version "2.0.0"
@@ -7033,9 +7077,9 @@ known-css-properties@^0.29.0:
integrity sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==
language-subtag-registry@^0.3.20:
- version "0.3.22"
- resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d"
- integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==
+ version "0.3.23"
+ resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#23529e04d9e3b74679d70142df3fd2eb6ec572e7"
+ integrity sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==
language-tags@^1.0.9:
version "1.0.9"
@@ -7290,9 +7334,9 @@ lower-case@^2.0.2:
tslib "^2.0.3"
lru-cache@^10.2.0:
- version "10.2.2"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878"
- integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.3.0.tgz#4a4aaf10c84658ab70f79a85a9a3f1e1fb11196b"
+ integrity sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==
lru-cache@^5.1.1:
version "5.1.1"
@@ -7308,13 +7352,20 @@ lru-cache@^6.0.0:
dependencies:
yallist "^4.0.0"
-magic-string@^0.30.0, magic-string@^0.30.2, magic-string@^0.30.3:
+magic-string@^0.30.0, magic-string@^0.30.2:
version "0.30.5"
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9"
integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==
dependencies:
"@jridgewell/sourcemap-codec" "^1.4.15"
+magic-string@^0.30.3:
+ version "0.30.10"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.10.tgz#123d9c41a0cb5640c892b041d4cfb3bd0aa4b39e"
+ integrity sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==
+ dependencies:
+ "@jridgewell/sourcemap-codec" "^1.4.15"
+
make-dir@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
@@ -7357,11 +7408,11 @@ mathml-tag-names@^2.1.3:
integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==
maxmind@^4.3.6:
- 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==
+ version "4.3.20"
+ resolved "https://registry.yarnpkg.com/maxmind/-/maxmind-4.3.20.tgz#1b85c4b0d9a8df072c5cbe50dc5c54c130a02889"
+ integrity sha512-xwnLGghs96DyNK3ANs1jzW8+JwS6pBQ3eTh3kNsi23n5wySZb9FgqCghmde5JZFOv23bxGehcyh6lT522llNKw==
dependencies:
- mmdb-lib "2.1.0"
+ mmdb-lib "2.1.1"
tiny-lru "11.2.6"
md5@^2.3.0:
@@ -7443,7 +7494,7 @@ 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==
-micromatch@4.0.5, micromatch@^4.0.4, micromatch@^4.0.5:
+micromatch@4.0.5, micromatch@^4.0.5:
version "4.0.5"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
@@ -7451,6 +7502,14 @@ micromatch@4.0.5, micromatch@^4.0.4, micromatch@^4.0.5:
braces "^3.0.2"
picomatch "^2.3.1"
+micromatch@^4.0.4:
+ version "4.0.7"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5"
+ integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==
+ dependencies:
+ braces "^3.0.3"
+ picomatch "^2.3.1"
+
mime-db@1.52.0:
version "1.52.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
@@ -7500,9 +7559,9 @@ minimatch@^5.0.1:
brace-expansion "^2.0.1"
minimatch@^9.0.1:
- version "9.0.4"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51"
- integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==
+ version "9.0.5"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
+ integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
dependencies:
brace-expansion "^2.0.1"
@@ -7533,9 +7592,9 @@ minipass@^5.0.0:
integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
"minipass@^5.0.0 || ^6.0.2 || ^7.0.0":
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.1.tgz#f7f85aff59aa22f110b20e27692465cf3bf89481"
- integrity sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
+ integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
minizlib@^2.1.1:
version "2.1.2"
@@ -7550,10 +7609,10 @@ mkdirp@^1.0.3:
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
-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==
+mmdb-lib@2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/mmdb-lib/-/mmdb-lib-2.1.1.tgz#c0d0bd35dc1fca41f0ebd043e43227ab04eb1792"
+ integrity sha512-yx8H/1H5AfnufiLnzzPqPf4yr/dKU9IFT1rPVwSkrKWHsQEeVVd6+X+L0nUbXhlEFTu3y/7hu38CFmEVgzvyeg==
moment-timezone@^0.5.35:
version "0.5.45"
@@ -7601,12 +7660,12 @@ next-basics@^0.39.0:
jsonwebtoken "^9.0.0"
pure-rand "^6.0.2"
-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==
+next@14.2.4:
+ version "14.2.4"
+ resolved "https://registry.yarnpkg.com/next/-/next-14.2.4.tgz#ef66c39c71e2d8ad0a3caa0383c8933f4663e4d1"
+ integrity sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==
dependencies:
- "@next/env" "14.2.3"
+ "@next/env" "14.2.4"
"@swc/helpers" "0.5.5"
busboy "1.6.0"
caniuse-lite "^1.0.30001579"
@@ -7614,15 +7673,15 @@ next@14.2.3:
postcss "8.4.31"
styled-jsx "5.1.1"
optionalDependencies:
- "@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"
+ "@next/swc-darwin-arm64" "14.2.4"
+ "@next/swc-darwin-x64" "14.2.4"
+ "@next/swc-linux-arm64-gnu" "14.2.4"
+ "@next/swc-linux-arm64-musl" "14.2.4"
+ "@next/swc-linux-x64-gnu" "14.2.4"
+ "@next/swc-linux-x64-musl" "14.2.4"
+ "@next/swc-win32-arm64-msvc" "14.2.4"
+ "@next/swc-win32-ia32-msvc" "14.2.4"
+ "@next/swc-win32-x64-msvc" "14.2.4"
nice-try@^1.0.4:
version "1.0.5"
@@ -7743,9 +7802,17 @@ object-assign@^4, object-assign@^4.1.1:
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
object-inspect@^1.13.1:
- version "1.13.1"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2"
- integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==
+ version "1.13.2"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff"
+ integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==
+
+object-is@^1.1.5:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07"
+ integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
object-keys@^1.1.1:
version "1.1.1"
@@ -7762,7 +7829,7 @@ object.assign@^4.1.4, object.assign@^4.1.5:
has-symbols "^1.0.3"
object-keys "^1.1.1"
-object.entries@^1.1.7:
+object.entries@^1.1.8:
version "1.1.8"
resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41"
integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==
@@ -7771,7 +7838,7 @@ object.entries@^1.1.7:
define-properties "^1.2.1"
es-object-atoms "^1.0.0"
-object.fromentries@^2.0.7:
+object.fromentries@^2.0.7, object.fromentries@^2.0.8:
version "2.0.8"
resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65"
integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==
@@ -7790,7 +7857,7 @@ object.groupby@^1.0.1:
define-properties "^1.2.1"
es-abstract "^1.23.2"
-object.hasown@^1.1.3:
+object.hasown@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.4.tgz#e270ae377e4c120cdcb7656ce66884a6218283dc"
integrity sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==
@@ -7799,7 +7866,7 @@ object.hasown@^1.1.3:
es-abstract "^1.23.2"
es-object-atoms "^1.0.0"
-object.values@^1.1.6, object.values@^1.1.7:
+object.values@^1.1.6, object.values@^1.1.7, object.values@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b"
integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==
@@ -7969,9 +8036,9 @@ path-parse@^1.0.7:
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
path-scurry@^1.10.1:
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.0.tgz#332d64e9726bf667fb348e5a1c71005c09ad741a"
- integrity sha512-LNHTaVkzaYaLGlO+0u3rQTz7QrHTFOuKyba9JMTQutkmtNew8dw8wOD7mTU/5fCPZzCWpfW0XnQKzY61P0aTaw==
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2"
+ integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==
dependencies:
lru-cache "^10.2.0"
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
@@ -8659,12 +8726,12 @@ pretty-format@^29.0.0, pretty-format@^29.7.0:
ansi-styles "^5.0.0"
react-is "^18.0.0"
-prisma@5.14.0:
- version "5.14.0"
- resolved "https://registry.yarnpkg.com/prisma/-/prisma-5.14.0.tgz#ffc4696a43b044b636c3303b7aa98c13c2ade4dd"
- integrity sha512-gCNZco7y5XtjrnQYeDJTiVZmT/ncqCr5RY1/Cf8X2wgLRmyh9ayPAGBNziI4qEE4S6SxCH5omQLVo9lmURaJ/Q==
+prisma@5.16.1:
+ version "5.16.1"
+ resolved "https://registry.yarnpkg.com/prisma/-/prisma-5.16.1.tgz#6dfd1e27e6534741326f4a231f04c16b3fbb7ba9"
+ integrity sha512-Z1Uqodk44diztImxALgJJfNl2Uisl9xDRvqybMKEBYJLNKNhDfAHf+ZIJbZyYiBhLMbKU9cYGdDVG5IIXEnL2Q==
dependencies:
- "@prisma/engines" "5.14.0"
+ "@prisma/engines" "5.16.1"
process@^0.11.10:
version "0.11.10"
@@ -8810,19 +8877,19 @@ react-hook-form@^7.34.2:
integrity sha512-F/TroLjTICipmHeFlMrLtNLceO2xr1jU3CyiNla5zdwsGUGu2UOxxR4UyJgLlhMwLW/Wzp4cpJ7CPfgJIeKdSg==
react-intl@^6.5.5:
- version "6.6.6"
- resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-6.6.6.tgz#67979f790263c5ebd95b6ea581110eea3e7b550f"
- integrity sha512-dKXQNUrhZTlCp8uelYW8PHiM4saNKyLmHCfsJYWK0N/kZ/Ien35wjPHB8x9yQcTJbeN/hBOmb4x16iKUrdL9MA==
+ version "6.6.8"
+ resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-6.6.8.tgz#cb60c90502d0025caf9f86ec298cdc4348da17c2"
+ integrity sha512-M0pkhzcgV31h++2901BiRXWl69hp2zPyLxRrSwRjd1ErXbNoubz/f4M6DrRTd4OiSUrT4ajRQzrmtS5plG4FtA==
dependencies:
- "@formatjs/ecma402-abstract" "1.18.2"
- "@formatjs/icu-messageformat-parser" "2.7.6"
- "@formatjs/intl" "2.10.2"
- "@formatjs/intl-displaynames" "6.6.6"
- "@formatjs/intl-listformat" "7.5.5"
+ "@formatjs/ecma402-abstract" "2.0.0"
+ "@formatjs/icu-messageformat-parser" "2.7.8"
+ "@formatjs/intl" "2.10.4"
+ "@formatjs/intl-displaynames" "6.6.8"
+ "@formatjs/intl-listformat" "7.5.7"
"@types/hoist-non-react-statics" "^3.3.1"
"@types/react" "16 || 17 || 18"
hoist-non-react-statics "^3.3.2"
- intl-messageformat "10.5.12"
+ intl-messageformat "10.5.14"
tslib "^2.4.0"
react-is@^16.13.1, react-is@^16.7.0:
@@ -9018,7 +9085,7 @@ regenerator-transform@^0.15.2:
dependencies:
"@babel/runtime" "^7.8.4"
-regexp.prototype.flags@^1.5.2:
+regexp.prototype.flags@^1.5.1, 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"
integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==
@@ -9141,9 +9208,9 @@ reusify@^1.0.4:
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
rfdc@^1.3.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f"
- integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca"
+ integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==
rimraf@^3.0.0, rimraf@^3.0.2:
version "3.0.2"
@@ -9567,6 +9634,13 @@ stack-utils@^2.0.3:
dependencies:
escape-string-regexp "^2.0.0"
+stop-iteration-iterator@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4"
+ integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==
+ dependencies:
+ internal-slot "^1.0.4"
+
streamsearch@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764"
@@ -9617,7 +9691,15 @@ string-width@^5.0.0, string-width@^5.0.1, string-width@^5.1.2:
emoji-regex "^9.2.2"
strip-ansi "^7.0.1"
-string.prototype.matchall@^4.0.10:
+string.prototype.includes@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz#8986d57aee66d5460c144620a6d873778ad7289f"
+ integrity sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.5"
+
+string.prototype.matchall@^4.0.11:
version "4.0.11"
resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a"
integrity sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==
@@ -9770,9 +9852,9 @@ stylelint-config-prettier@^9.0.3:
integrity sha512-U44lELgLZhbAD/xy/vncZ2Pq8sh2TnpiPvo38Ifg9+zeioR+LAkHu0i6YORIOxFafZoVg0xqQwex6e6F25S5XA==
stylelint-config-recommended@^14.0.0:
- version "14.0.0"
- resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-14.0.0.tgz#b395c7014838d2aaca1755eebd914d0bb5274994"
- integrity sha512-jSkx290CglS8StmrLp2TxAppIajzIBZKYm3IxT89Kg6fGlxbPiTiyH9PS5YUuVAFwaJLl1ikiXX0QWjI0jmgZQ==
+ version "14.0.1"
+ resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz#d25e86409aaf79ee6c6085c2c14b33c7e23c90c6"
+ integrity sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==
stylelint-scss@^6.0.0:
version "6.1.0"
@@ -10037,9 +10119,9 @@ ts-api-utils@^1.0.1:
integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==
ts-jest@^29.1.2:
- version "29.1.2"
- resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.2.tgz#7613d8c81c43c8cb312c6904027257e814c40e09"
- integrity sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==
+ version "29.1.5"
+ resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.5.tgz#d6c0471cc78bffa2cb4664a0a6741ef36cfe8f69"
+ integrity sha512-UuClSYxM7byvvYfyWdFI+/2UxMmwNyJb0NPkZPQE2hew3RurV7l7zURgOHAd/1I1ZdPpe3GUsXNXAcN8TFKSIg==
dependencies:
bs-logger "0.x"
fast-json-stable-stringify "2.x"
@@ -10084,11 +10166,16 @@ tslib@^1.8.1:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0:
+tslib@^2.0.1, tslib@^2.0.3:
version "2.6.2"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
+tslib@^2.1.0, tslib@^2.4.0:
+ version "2.6.3"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0"
+ integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==
+
tsutils@^3.21.0:
version "3.21.0"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
@@ -10206,10 +10293,10 @@ typescript@^4.0, typescript@^4.5:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
-typescript@^5.4.3:
- version "5.4.5"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611"
- integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==
+typescript@^5.5.3:
+ version "5.5.3"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.3.tgz#e1b0a3c394190838a0b168e771b0ad56a0af0faa"
+ integrity sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==
unbox-primitive@^1.0.2:
version "1.0.2"
@@ -10415,7 +10502,7 @@ which-collection@^1.0.1:
is-weakmap "^2.0.2"
is-weakset "^2.0.3"
-which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9:
+which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9:
version "1.1.15"
resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d"
integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==
@@ -10607,8 +10694,8 @@ yup@^0.32.11:
toposort "^2.0.2"
zustand@^4.3.8:
- version "4.5.2"
- resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.5.2.tgz#fddbe7cac1e71d45413b3682cdb47b48034c3848"
- integrity sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g==
+ version "4.5.4"
+ resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.5.4.tgz#63abdd81edfb190bc61e0bbae045cc4d52158a05"
+ integrity sha512-/BPMyLKJPtFEvVL0E9E9BTUM63MNyhPGlvxk1XjrfWTUlV+BR8jufjsovHzrtR6YNcBEcL7cMHovL1n9xHawEg==
dependencies:
use-sync-external-store "1.2.0"