Merge branch 'umami-software:master' into master
This commit is contained in:
commit
68de243fd1
|
@ -123,7 +123,7 @@ const DaySelector = ({ date, minDate, maxDate, locale, onSelect }) => {
|
|||
}
|
||||
|
||||
const days = [];
|
||||
for (let i = 0; i < 35; i++) {
|
||||
for (let i = 0; i < 42; i++) {
|
||||
days.push(addDays(startDay, i));
|
||||
}
|
||||
|
||||
|
|
|
@ -30,21 +30,24 @@ export default function Header() {
|
|||
<Icon icon={<Logo />} size="large" className={styles.logo} />
|
||||
</Link>
|
||||
</div>
|
||||
<HamburgerButton />
|
||||
|
||||
{user && (
|
||||
<div className={styles.links}>
|
||||
<Link href="/dashboard">
|
||||
<FormattedMessage id="label.dashboard" defaultMessage="Dashboard" />
|
||||
</Link>
|
||||
<Link href="/realtime">
|
||||
<FormattedMessage id="label.realtime" defaultMessage="Realtime" />
|
||||
</Link>
|
||||
{!process.env.isCloudMode && (
|
||||
<Link href="/settings">
|
||||
<FormattedMessage id="label.settings" defaultMessage="Settings" />
|
||||
<>
|
||||
<HamburgerButton />
|
||||
<div className={styles.links}>
|
||||
<Link href="/dashboard">
|
||||
<FormattedMessage id="label.dashboard" defaultMessage="Dashboard" />
|
||||
</Link>
|
||||
)}
|
||||
</div>
|
||||
<Link href="/realtime">
|
||||
<FormattedMessage id="label.realtime" defaultMessage="Realtime" />
|
||||
</Link>
|
||||
{!process.env.isCloudMode && (
|
||||
<Link href="/settings">
|
||||
<FormattedMessage id="label.settings" defaultMessage="Settings" />
|
||||
</Link>
|
||||
)}
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
<div className={styles.buttons}>
|
||||
<ThemeButton />
|
||||
|
|
|
@ -68,7 +68,8 @@ CREATE PROCEDURE `UmamiRenameIndexIfExists`(
|
|||
INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE
|
||||
TABLE_NAME = @tableName
|
||||
AND INDEX_NAME = @currentIndexName;
|
||||
AND INDEX_NAME = @currentIndexName
|
||||
AND TABLE_SCHEMA = database();
|
||||
|
||||
SET @query = CONCAT(
|
||||
'ALTER TABLE `', @tableName, '` RENAME INDEX `', @currentIndexName, '` TO `', @newIndexName, '`;'
|
||||
|
|
|
@ -0,0 +1,120 @@
|
|||
{
|
||||
"label.accounts": "Accounts",
|
||||
"label.add-account": "Add account",
|
||||
"label.add-column": "Add column",
|
||||
"label.add-filter": "Add filter",
|
||||
"label.add-website": "Add website",
|
||||
"label.administrator": "Administrator",
|
||||
"label.all": "All",
|
||||
"label.all-time": "All time",
|
||||
"label.all-websites": "All websites",
|
||||
"label.back": "Back",
|
||||
"label.cancel": "Cancel",
|
||||
"label.change-password": "Change password",
|
||||
"label.confirm-password": "Confirm password",
|
||||
"label.copy-to-clipboard": "Copy to clipboard",
|
||||
"label.current-password": "Current password",
|
||||
"label.custom-range": "Custom range",
|
||||
"label.dashboard": "Dashboard",
|
||||
"label.date-range": "Date range",
|
||||
"label.default-date-range": "Default date range",
|
||||
"label.delete": "Delete",
|
||||
"label.delete-account": "Delete account",
|
||||
"label.delete-website": "Delete website",
|
||||
"label.dismiss": "Dismiss",
|
||||
"label.domain": "Domain",
|
||||
"label.edit": "Edit",
|
||||
"label.edit-account": "Edit account",
|
||||
"label.edit-website": "Edit website",
|
||||
"label.enable-share-url": "Enable share URL",
|
||||
"label.event-data": "Event Data",
|
||||
"label.field-name": "Field Name",
|
||||
"label.invalid": "Invalid",
|
||||
"label.invalid-domain": "Invalid domain",
|
||||
"label.language": "Language",
|
||||
"label.last-days": "Last {x} days",
|
||||
"label.last-hours": "Last {x} hours",
|
||||
"label.logged-in-as": "Logged in as {username}",
|
||||
"label.login": "Login",
|
||||
"label.logout": "Logout",
|
||||
"label.more": "More",
|
||||
"label.name": "Name",
|
||||
"label.new-password": "New password",
|
||||
"label.none": "None",
|
||||
"label.owner": "Owner",
|
||||
"label.password": "Password",
|
||||
"label.passwords-dont-match": "Passwords don't match",
|
||||
"label.profile": "Profile",
|
||||
"label.realtime": "Realtime",
|
||||
"label.realtime-logs": "Realtime logs",
|
||||
"label.refresh": "Refresh",
|
||||
"label.required": "Required",
|
||||
"label.reset": "Reset",
|
||||
"label.reset-website": "Reset statistics",
|
||||
"label.save": "Save",
|
||||
"label.search": "Search",
|
||||
"label.settings": "Settings",
|
||||
"label.share-url": "Share URL",
|
||||
"label.single-day": "Single day",
|
||||
"label.theme": "Theme",
|
||||
"label.this-month": "This month",
|
||||
"label.this-week": "This week",
|
||||
"label.this-year": "This year",
|
||||
"label.timezone": "Timezone",
|
||||
"label.today": "Today",
|
||||
"label.tracking-code": "Tracking code",
|
||||
"label.type": "Type",
|
||||
"label.unknown": "Unknown",
|
||||
"label.username": "Username",
|
||||
"label.value": "Value",
|
||||
"label.view-details": "View details",
|
||||
"label.websites": "Websites",
|
||||
"label.yesterday": "Yesterday",
|
||||
"message.active-users": "{x} current {x, plural, one {visitor} other {visitors}}",
|
||||
"message.confirm-delete": "Are you sure you want to delete {target}?",
|
||||
"message.confirm-reset": "Are you sure you want to reset {target}'s statistics?",
|
||||
"message.copied": "Copied!",
|
||||
"message.delete-warning": "All associated data will be deleted as well.",
|
||||
"message.edit-dashboard": "Edit dashboard",
|
||||
"message.failure": "Something went wrong.",
|
||||
"message.get-share-url": "Get share URL",
|
||||
"message.get-tracking-code": "Get tracking code",
|
||||
"message.go-to-settings": "Go to settings",
|
||||
"message.incorrect-username-password": "Incorrect username/password.",
|
||||
"message.log.visitor": "Visitor from {country} using {browser} on {os} {device}",
|
||||
"message.new-version-available": "A new version of umami {version} is available!",
|
||||
"message.no-data-available": "No data available.",
|
||||
"message.no-websites-configured": "You don't have any websites configured.",
|
||||
"message.page-not-found": "Page not found.",
|
||||
"message.powered-by": "Powered by {name}",
|
||||
"message.reset-warning": "All statistics for this website will be deleted, but your tracking code will remain intact.",
|
||||
"message.save-success": "Saved successfully.",
|
||||
"message.share-url": "This is the publicly shared URL for {target}.",
|
||||
"message.toggle-charts": "Toggle charts",
|
||||
"message.track-stats": "To track stats for {target}, place the following code in the {head} section of your website.",
|
||||
"message.type-delete": "Type {delete} in the box below to confirm.",
|
||||
"message.type-reset": "Type {reset} in the box below to confirm.",
|
||||
"metrics.actions": "Actions",
|
||||
"metrics.average-visit-time": "Average visit time",
|
||||
"metrics.bounce-rate": "Bounce rate",
|
||||
"metrics.browsers": "Browsers",
|
||||
"metrics.countries": "Countries",
|
||||
"metrics.device.desktop": "Desktop",
|
||||
"metrics.device.laptop": "Laptop",
|
||||
"metrics.device.mobile": "Mobile",
|
||||
"metrics.device.tablet": "Tablet",
|
||||
"metrics.devices": "Devices",
|
||||
"metrics.events": "Events",
|
||||
"metrics.filter.combined": "Combined",
|
||||
"metrics.filter.raw": "Raw",
|
||||
"metrics.languages": "Languages",
|
||||
"metrics.operating-systems": "Operating systems",
|
||||
"metrics.page-views": "Page views",
|
||||
"metrics.pages": "Pages",
|
||||
"metrics.query-parameters": "Query parameters",
|
||||
"metrics.referrers": "Referrers",
|
||||
"metrics.screens": "Screens",
|
||||
"metrics.unique-visitors": "Unique visitors",
|
||||
"metrics.views": "Views",
|
||||
"metrics.visitors": "Visitors"
|
||||
}
|
|
@ -6,9 +6,9 @@
|
|||
"label.add-website": "Dodaj web stranicu",
|
||||
"label.administrator": "Administrator",
|
||||
"label.all": "Sve",
|
||||
"label.all-time": "Svo vrijeme" ,
|
||||
"label.all-time": "Svo vrijeme",
|
||||
"label.all-websites": "Sve web stranice",
|
||||
"label.back": "Natrag ",
|
||||
"label.back": "Natrag ",
|
||||
"label.cancel": "Odustani",
|
||||
"label.change-password": "Promijeni lozinku",
|
||||
"label.confirm-password": "Potvrdi lozinku",
|
||||
|
@ -21,15 +21,15 @@
|
|||
"label.delete": "Obriši",
|
||||
"label.delete-account": "Obriši račun",
|
||||
"label.delete-website": "Obriši web stranicu",
|
||||
"label.dismiss": "Odbaci",
|
||||
"label.dismiss": "Odbaci",
|
||||
"label.domain": "Domena",
|
||||
"label.edit": "Uredi",
|
||||
"label.edit-account": "Uredi račun",
|
||||
"label.edit-website": "Uredi web stranicu",
|
||||
"label.enable-share-url": "Omogući dijeljenje URL-a",
|
||||
"label.enable-share-url": "Omogući dijeljenje poveznice",
|
||||
"label.event-data": "Podaci događaja",
|
||||
"label.field-name": "Naziv polja",
|
||||
"label.invalid": "Nesipravno",
|
||||
"label.invalid": "Neispravno",
|
||||
"label.invalid-domain": "Neispravna domena",
|
||||
"label.language": "Jezik",
|
||||
"label.last-days": "Zadnjih {x} dana",
|
||||
|
@ -40,21 +40,21 @@
|
|||
"label.more": "Više",
|
||||
"label.name": "Ime",
|
||||
"label.new-password": "Nova lozinka",
|
||||
"label.none": "Ništa",
|
||||
"label.none": "Ništa",
|
||||
"label.owner": "Vlasnik",
|
||||
"label.password": "Lozinka",
|
||||
"label.passwords-dont-match": "Lozinka nije točna",
|
||||
"label.passwords-dont-match": "Lozinke se ne podudaraju",
|
||||
"label.profile": "Profil",
|
||||
"label.realtime": "Stvarno vrijeme",
|
||||
"label.realtime-logs":"Trenutni zapisi",
|
||||
"label.realtime-logs": "Trenutni zapisi",
|
||||
"label.refresh": "Osvježi",
|
||||
"label.required": "Potrebna",
|
||||
"label.required": "Potrebna",
|
||||
"label.reset": "Resetirati",
|
||||
"label.reset-website": "Resetirati web stranicu",
|
||||
"label.reset-website": "Resetirati web stranicu",
|
||||
"label.save": "Spremi",
|
||||
"label.search": "Pretraži",
|
||||
"label.settings": "Postavke",
|
||||
"label.share-url": "Podijeli URL",
|
||||
"label.share-url": "Podijeli poveznicu",
|
||||
"label.single-day": "Jedan dan",
|
||||
"label.theme": "Tema",
|
||||
"label.this-month": "Ovaj mjesec",
|
||||
|
@ -70,15 +70,15 @@
|
|||
"label.view-details": "Pogledaj detalje",
|
||||
"label.websites": "Web stranice",
|
||||
"label.yesterday": "Jučer",
|
||||
"message.active-users": "{x} Trenutno {x, plural, one {visitor} other {visitors}}",
|
||||
"message.active-users": "{x} Trenutno {x, plural, one {posjetitelj} other {posjetitelja}}",
|
||||
"message.confirm-delete": "Jeste li sigurni da želite obrisati {target}?",
|
||||
"message.confirm-reset": "Jeste li sigurni da želite resetirati {target}'s statistiku?",
|
||||
"message.copied": "Kopirano!",
|
||||
"message.delete-warning": "Izbrisat će se svi povezani podaci.",
|
||||
"message.delete-warning": "Izbrisat će se svi povezani podaci.",
|
||||
"message.edit-dashboard": "Uredi nadzornu ploču",
|
||||
"message.failure": "Nešto je pošlo po zlu.",
|
||||
"message.get-share-url": "Dohvati URL za dijeljenje",
|
||||
"message.get-tracking-code": "Dohvati kod za praćenje",
|
||||
"message.get-share-url": "Dohvati poveznicu za dijeljenje",
|
||||
"message.get-tracking-code": "Dohvati kod za praćenje",
|
||||
"message.go-to-settings": "Idi u postavke",
|
||||
"message.incorrect-username-password": "Neispravno korisničke ime/lozinka.",
|
||||
"message.log.visitor": "Posjetitelj iz {country} koristi {browser} na {os} {device}",
|
||||
|
@ -86,33 +86,33 @@
|
|||
"message.no-data-available": "Nema dostupnih podataka.",
|
||||
"message.no-websites-configured": "Nemate konfiguriranu nijednu web stranicu.",
|
||||
"message.page-not-found": "Stranica nije pronađena.",
|
||||
"message.powered-by": "Powered by {name}",
|
||||
"message.powered-by": "Pokreće {name}",
|
||||
"message.reset-warning": "Sve statistike za ovu web stranicu bit će izbrisane, ali će vaš kod za praćenje ostati netaknut.",
|
||||
"message.save-success": "Uspješno spremljeno.",
|
||||
"message.share-url": "Ovo je javno dijeljeni URL za {target}.",
|
||||
"message.share-url": "Ovo je javno dijeljena poveznica za {target}.",
|
||||
"message.toggle-charts": "Uključi/isključi grafikone",
|
||||
"message.track-stats": "Da biste pratili statistiku za {target}, postavite sljedeći kod u odjeljak {head} svoje web stranice.",
|
||||
"message.type-delete": "Upišite {delete} u donji okvir za potvrdu.",
|
||||
"message.type-reset": " Upišite {reset} u donji okvir za potvrdu. ",
|
||||
"metrics.actions": "Akcije",
|
||||
"metrics.average-visit-time": "Prosječno vrijeme posjeta",
|
||||
"metrics.bounce-rate": "Stopa napuštanja stranice",
|
||||
"metrics.bounce-rate": "Stopa napuštanja stranice",
|
||||
"metrics.browsers": "Web preglednici",
|
||||
"metrics.countries": "Zemlje",
|
||||
"metrics.device.desktop": "Pc",
|
||||
"metrics.device.desktop": "Pc",
|
||||
"metrics.device.laptop": "Laptop",
|
||||
"metrics.device.mobile": "Mobitel",
|
||||
"metrics.device.tablet": "Tablet",
|
||||
"metrics.devices": "Uređaji",
|
||||
"metrics.events": "Događaji",
|
||||
"metrics.filter.combined": "Kombinirano",
|
||||
"metrics.filter.raw": "Neobrađeni podaci",
|
||||
"metrics.filter.raw": "Neobrađeni podaci",
|
||||
"metrics.languages": "Jezici",
|
||||
"metrics.operating-systems": "Operativni sustavi",
|
||||
"metrics.page-views": "Pregledi stranice",
|
||||
"metrics.pages": "Stranice",
|
||||
"metrics.query-parameters": "Parametri upita",
|
||||
"metrics.referrers": "Upučivaći",
|
||||
"metrics.referrers": "Upučivaći",
|
||||
"metrics.screens": "Zasloni",
|
||||
"metrics.unique-visitors": "Jedinstveni posjetitelji",
|
||||
"metrics.views": "Pregledi",
|
||||
|
|
|
@ -62,6 +62,7 @@
|
|||
"label.username": "Vartotojo vardas",
|
||||
"label.view-details": "Peržiūrėti detaliau",
|
||||
"label.websites": "Svetainės",
|
||||
"label.yesterday": "Vakar",
|
||||
"message.active-users": "{x, plural, =0 {# aktyvių vartotojų} zero {# aktyvių vartotojų} one {# aktyvus vartotojas} other {# aktyvūs vartotojai}}",
|
||||
"message.confirm-delete": "Ar esate tikri, jog norite ištrinti svetainę {target}?",
|
||||
"message.confirm-reset": "Are esate tikri, jog norite atstatyti svetainės {target} statistikos duomenis?",
|
||||
|
|
|
@ -0,0 +1,120 @@
|
|||
{
|
||||
"label.accounts": "ගිණුම්",
|
||||
"label.add-account": "ගිණුම එකතු කරන්න",
|
||||
"label.add-column": "තීරුව එක් කරන්න",
|
||||
"label.add-filter": "පෙරහන එකතු කරන්න",
|
||||
"label.add-website": "වෙබ් අඩවිය එක් කරන්න",
|
||||
"label.administrator": "පරිපාලක",
|
||||
"label.all": "සියල්ල",
|
||||
"label.all-time": "හැම වෙලාවෙම",
|
||||
"label.all-websites": "සියලුම වෙබ් අඩවි",
|
||||
"label.back": "ආපසු",
|
||||
"label.cancel": "අවලංගු කරන්න",
|
||||
"label.change-password": "මුරපදය වෙනස් කරන්න",
|
||||
"label.confirm-password": "මුරපදය සත්යාපනය කරන්න",
|
||||
"label.copy-to-clipboard": "පසුරු පුවරුවට පිටපත් කරන්න",
|
||||
"label.current-password": "වත්මන් මුරපදය",
|
||||
"label.custom-range": "අභිරුචි පරාසය",
|
||||
"label.dashboard": "උපකරණ පුවරුව",
|
||||
"label.date-range": "දින පරාසය",
|
||||
"label.default-date-range": "පෙරනිමි දින පරාසය",
|
||||
"label.delete": "මකන්න",
|
||||
"label.delete-account": "ගිණුම මකන්න",
|
||||
"label.delete-website": "වෙබ් අඩවිය මකන්න",
|
||||
"label.dismiss": "මගහරින්න",
|
||||
"label.domain": "වසම",
|
||||
"label.edit": "සංස්කරණය කරන්න",
|
||||
"label.edit-account": "ගිණුම සංස්කරණය කරන්න",
|
||||
"label.edit-website": "වෙබ් අඩවිය සංස්කරණය කරන්න",
|
||||
"label.enable-share-url": "බෙදාගැනීමේ URL සබල කරන්න",
|
||||
"label.event-data": "සිදුවීම් දත්ත",
|
||||
"label.field-name": "ක්ෂේත්ර නාම",
|
||||
"label.invalid": "වලංගු නැත",
|
||||
"label.invalid-domain": "වලංගු නොවන වසමක්",
|
||||
"label.language": "භාෂාව",
|
||||
"label.last-days": "අන්තිම {x} දින",
|
||||
"label.last-hours": "අන්තිම {x} පැය",
|
||||
"label.logged-in-as": "ලොග් වී ඇත්තේ {username}",
|
||||
"label.login": "ලොග් වෙන්න",
|
||||
"label.logout": "පිටවීම",
|
||||
"label.more": "තවත්",
|
||||
"label.name": "නම",
|
||||
"label.new-password": "අලුත් මුරපදය",
|
||||
"label.none": "කිසිවක් නැත",
|
||||
"label.owner": "හිමිකරු",
|
||||
"label.password": "මුරපදය",
|
||||
"label.passwords-dont-match": "මුරපද නොගැලපේ",
|
||||
"label.profile": "පැතිකඩ",
|
||||
"label.realtime": "තත්ය කාල",
|
||||
"label.realtime-logs": "තත්ය කාලීන ලොග්",
|
||||
"label.refresh": "නැවුම් කරන්න",
|
||||
"label.required": "අවශ්යයි",
|
||||
"label.reset": "යළි පිහිටුවන්න",
|
||||
"label.reset-website": "සංඛ්යා ලේඛන නැවත සකසන්න",
|
||||
"label.save": "සුරකින්න",
|
||||
"label.search": "සෙවීම",
|
||||
"label.settings": "සැකසුම්",
|
||||
"label.share-url": "බෙදාගැනීමේ URL",
|
||||
"label.single-day": "තනි දවස",
|
||||
"label.theme": "තේමාව",
|
||||
"label.this-month": "මෙ මාසය",
|
||||
"label.this-week": "මේ සතිය",
|
||||
"label.this-year": "මේ අවුරුද්ද",
|
||||
"label.timezone": "වේලා කලාපය",
|
||||
"label.today": "අද",
|
||||
"label.tracking-code": "ලුහුබැඳීමේ කේතය",
|
||||
"label.type": "වර්ගය",
|
||||
"label.unknown": "නොදනී",
|
||||
"label.username": "පරිශීලක නාමය",
|
||||
"label.value": "වටිනාකම",
|
||||
"label.view-details": "තොරතුරු පෙන්වන්න",
|
||||
"label.websites": "වෙබ් අඩවි",
|
||||
"label.yesterday": "ඊයේ",
|
||||
"message.active-users": "{x} දැන් {x, plural, one {අමුත්තා} other {අමුත්තන්}}",
|
||||
"message.confirm-delete": "{target} මකා දැමීම ගැන විශ්වාසද?",
|
||||
"message.confirm-reset": "{target} ට අදාල සංඛ්යාලේඛන නැවත පිහිටුවීමට අවශ්යද?",
|
||||
"message.copied": "පිටපත් කරගත්තා!",
|
||||
"message.delete-warning": "සියලුම ආශ්රිත දත්ත ද මකා දැමෙනු ඇත.",
|
||||
"message.edit-dashboard": "උපකරණ පුවරුව සංස්කරණය කරන්න",
|
||||
"message.failure": "යම් ගැටලුවක් මතු වී ඇත.",
|
||||
"message.get-share-url": "බෙදාගැනීමේ URL ලබා ගන්න",
|
||||
"message.get-tracking-code": "ලුහුබැඳීමේ කේතය ලබා ගන්න",
|
||||
"message.go-to-settings": "සැකසීම් වෙත යන්න",
|
||||
"message.incorrect-username-password": "වැරදි පරිශීලක නාමය/මුරපදය.",
|
||||
"message.log.visitor": "{country} වලින් පැමිණි අමුත්තකු {device} එකේ, මේ {os} එකේ, මේ {browser} එකෙන් ඉන්නවා",
|
||||
"message.new-version-available": "umami අලුත්ම {version} වන අනුවාදය නිකුත් උනා!",
|
||||
"message.no-data-available": "පෙන්වීමට දත්ත නොමැත.",
|
||||
"message.no-websites-configured": "ඔබට වින්යාස කර ඇති වෙබ් අඩවි කිසිවක් නොමැත.",
|
||||
"message.page-not-found": "පිටුව හමු නොවීය.",
|
||||
"message.powered-by": "බල ගැන්වුයේ {name}",
|
||||
"message.reset-warning": "සියලුම සංඛ්යාලේඛන මකා දමනු ඇත. නමුත් ඔබගේ නිරීක්ෂණ කේතය නොවෙනස්ව පවතිනු ඇත.",
|
||||
"message.save-success": "සාර්තකව සුරැකිණි.",
|
||||
"message.share-url": "මේ {target} සඳහා ප්රසිද්ධියේ බෙදාගත් URL එකයි.",
|
||||
"message.toggle-charts": "ප්රස්ථාර ටොගල් කරන්න",
|
||||
"message.track-stats": "{target} හි සංඛ්යාලේඛන බැලීම සදහා, පහත කේතය {head} කොටසට ඇතුලත් කරන්න.",
|
||||
"message.type-delete": "සත්යාපනය සදහා {delete} ලෙස පහල කොටුවේ ටයිප් කරන්න",
|
||||
"message.type-reset": "සත්යාපනය සදහා {reset} ලෙස පහල කොටුවේ ටයිප් කරන්න",
|
||||
"metrics.actions": "ක්රියාවන්",
|
||||
"metrics.average-visit-time": "සාමාන්ය සංචාර කාලය",
|
||||
"metrics.bounce-rate": "හැරී යන ප්රමාණය",
|
||||
"metrics.browsers": "බ්රව්සර්",
|
||||
"metrics.countries": "රටවල්",
|
||||
"metrics.device.desktop": "ඩෙස්ක්ටොප්",
|
||||
"metrics.device.laptop": "ලැප්ටොප්",
|
||||
"metrics.device.mobile": "ජංගම",
|
||||
"metrics.device.tablet": "ටැබ්ලට්",
|
||||
"metrics.devices": "උපකරණ",
|
||||
"metrics.events": "සිද්ධීන්",
|
||||
"metrics.filter.combined": "ඒකාබද්ධ",
|
||||
"metrics.filter.raw": "අමු",
|
||||
"metrics.languages": "භාෂා",
|
||||
"metrics.operating-systems": "මෙහෙයුම් පද්ධති",
|
||||
"metrics.page-views": "පිටු බැලීම්",
|
||||
"metrics.pages": "පිටු",
|
||||
"metrics.query-parameters": "විමසුම් පරාමිතීන්",
|
||||
"metrics.referrers": "යොමු කරන්නන්",
|
||||
"metrics.screens": "තිර",
|
||||
"metrics.unique-visitors": "අලුත්ම අමුත්තන්",
|
||||
"metrics.views": "බැලූ ගණන",
|
||||
"metrics.visitors": "අමුත්තන්"
|
||||
}
|
|
@ -1,6 +1,8 @@
|
|||
{
|
||||
"label.accounts": "บัญชี",
|
||||
"label.add-account": "เพิ่มบัญชี",
|
||||
"label.add-column": "สร้างคอลัมน์",
|
||||
"label.add-filter": "สร้างตัวกรอง",
|
||||
"label.add-website": "เพิ่มเว็บไซต์",
|
||||
"label.administrator": "ผู้ดูแลระบบ",
|
||||
"label.all": "ทั้งหมด",
|
||||
|
@ -44,10 +46,11 @@
|
|||
"label.realtime": "เรียลไทม์",
|
||||
"label.realtime-logs": "Log แบบเรียลไทม์",
|
||||
"label.refresh": "รีเฟรช",
|
||||
"label.required": "ต้องการ",
|
||||
"label.required": "จำเป็น",
|
||||
"label.reset": "รีเซต",
|
||||
"label.reset-website": "รีเซตข้อมูลสถิติ",
|
||||
"label.save": "บันทึก",
|
||||
"label.search": "ค้นหา",
|
||||
"label.settings": "ตั้งค่า",
|
||||
"label.share-url": "แชร์ลิงก์",
|
||||
"label.single-day": "วันที่",
|
||||
|
@ -62,12 +65,13 @@
|
|||
"label.username": "ชื่อผู้ใช้",
|
||||
"label.view-details": "แสดงรายละเอียด",
|
||||
"label.websites": "เว็บไซต์",
|
||||
"label.yesterday": "เมื่อวาน",
|
||||
"message.active-users": "มีผู้ใช้งาน {x} {x, plural, one {คนในขณะนี้} other {คนในขณะนี้}}",
|
||||
"message.confirm-delete": "คุณแน่ใจหรือไม่ว่าต้องการลบ {target} ?",
|
||||
"message.confirm-reset": "คุณแน่ใจหรือไม่ว่าต้องการรีเซตข้อมูลสถิติของ {target} ?",
|
||||
"message.confirm-reset": "คุณแน่ใจหรือไม่ว่าต้องการรีเซ็ตข้อมูลสถิติของ {target} ?",
|
||||
"message.copied": "คัดลอกแล้ว!",
|
||||
"message.delete-warning": "ข้อมูลที่เกี่ยวข้องทั้งหมดจะถูกลบ.",
|
||||
"message.edit-dashboard": "Edit dashboard",
|
||||
"message.edit-dashboard": "แก้ไขแดชบอร์ด",
|
||||
"message.failure": "เกิดข้อผิดพลาด.",
|
||||
"message.get-share-url": "รับลิงก์สำหรับแชร์",
|
||||
"message.get-tracking-code": "รับโค้ดสำหรับใช้ติดตาม",
|
||||
|
@ -103,7 +107,7 @@
|
|||
"metrics.operating-systems": "ระบบปฏิบัติการ",
|
||||
"metrics.page-views": "การเข้าชม",
|
||||
"metrics.pages": "หน้าเพจ",
|
||||
"metrics.query-parameters": "Query parameters",
|
||||
"metrics.query-parameters": "พารามิเตอร์ URL",
|
||||
"metrics.referrers": "แหล่งที่มา",
|
||||
"metrics.screens": "ขนาดหน้าจอ",
|
||||
"metrics.unique-visitors": "ผู้เข้าชม",
|
||||
|
|
|
@ -35,7 +35,7 @@ export function isValidToken(token, validation) {
|
|||
return false;
|
||||
}
|
||||
|
||||
export async function allowQuery(req, type) {
|
||||
export async function allowQuery(req, type, allowShareToken = true) {
|
||||
const { id } = req.query;
|
||||
|
||||
const { userId, isAdmin, shareToken } = req.auth ?? {};
|
||||
|
@ -44,7 +44,7 @@ export async function allowQuery(req, type) {
|
|||
return true;
|
||||
}
|
||||
|
||||
if (shareToken) {
|
||||
if (allowShareToken && shareToken) {
|
||||
return isValidToken(shareToken, { id });
|
||||
}
|
||||
|
||||
|
|
|
@ -40,6 +40,7 @@ import {
|
|||
ca,
|
||||
hu,
|
||||
vi,
|
||||
si,
|
||||
} from 'date-fns/locale';
|
||||
|
||||
export const languages = {
|
||||
|
@ -62,7 +63,7 @@ export const languages = {
|
|||
'he-IL': { label: 'עברית', dateLocale: he },
|
||||
'hi-IN': { label: 'हिन्दी', dateLocale: hi },
|
||||
'hu-HU': { label: 'Hungarian', dateLocale: hu },
|
||||
'hr-HR': { label: 'hrvatski', dateLocale: hr },
|
||||
'hr-HR': { label: 'Hrvatski', dateLocale: hr },
|
||||
'it-IT': { label: 'Italiano', dateLocale: it },
|
||||
'id-ID': { label: 'Bahasa Indonesia', dateLocale: id },
|
||||
'ja-JP': { label: '日本語', dateLocale: ja },
|
||||
|
@ -82,6 +83,7 @@ export const languages = {
|
|||
'fi-FI': { label: 'Suomi', dateLocale: fi },
|
||||
'sv-SE': { label: 'Svenska', dateLocale: sv },
|
||||
'ta-IN': { label: 'தமிழ்', dateLocale: ta },
|
||||
'si-LK': { label: 'සිංහල', dateLocale: si },
|
||||
'th-TH': { label: 'ภาษาไทย', dateLocale: th },
|
||||
'tr-TR': { label: 'Türkçe', dateLocale: tr },
|
||||
'uk-UA': { label: 'українська', dateLocale: uk },
|
||||
|
|
|
@ -3,7 +3,12 @@ import cors from 'cors';
|
|||
import { getSession } from './session';
|
||||
import { getAuthToken, getShareToken } from './auth';
|
||||
|
||||
export const useCors = createMiddleware(cors());
|
||||
export const useCors = createMiddleware(
|
||||
cors({
|
||||
// Cache CORS preflight request 24 hours by default
|
||||
maxAge: process.env.CORS_MAX_AGE || 86400,
|
||||
}),
|
||||
);
|
||||
|
||||
export const useSession = createMiddleware(async (req, res, next) => {
|
||||
let session;
|
||||
|
|
|
@ -36,6 +36,18 @@ function logQuery(e) {
|
|||
log(chalk.yellow(e.params), '->', e.query, chalk.greenBright(`${e.duration}ms`));
|
||||
}
|
||||
|
||||
function toUuid() {
|
||||
const db = getDatabaseType(process.env.DATABASE_URL);
|
||||
|
||||
if (db === POSTGRESQL) {
|
||||
return '::uuid';
|
||||
}
|
||||
|
||||
if (db === MYSQL) {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
function getClient(options) {
|
||||
const prisma = new PrismaClient(options);
|
||||
|
||||
|
@ -85,11 +97,23 @@ function getTimestampInterval(field) {
|
|||
}
|
||||
}
|
||||
|
||||
function getJsonField(column, property, isNumber) {
|
||||
function getSanitizedColumns(columns) {
|
||||
return Object.keys(columns).reduce((acc, keyName) => {
|
||||
const sanitizedProperty = keyName.replace(/[^\w\s_]/g, '');
|
||||
|
||||
acc[sanitizedProperty] = columns[keyName];
|
||||
|
||||
return acc;
|
||||
}, {});
|
||||
}
|
||||
|
||||
function getJsonField(column, property, isNumber, params) {
|
||||
const db = getDatabaseType(process.env.DATABASE_URL);
|
||||
|
||||
if (db === POSTGRESQL) {
|
||||
let accessor = `${column} ->> '${property}'`;
|
||||
params.push(property);
|
||||
|
||||
let accessor = `${column} ->> $${params.length}`;
|
||||
|
||||
if (isNumber) {
|
||||
accessor = `CAST(${accessor} AS DECIMAL)`;
|
||||
|
@ -99,21 +123,29 @@ function getJsonField(column, property, isNumber) {
|
|||
}
|
||||
|
||||
if (db === MYSQL) {
|
||||
return `${column} ->> "$.${property}"`;
|
||||
return `${column} ->> '$.${property}'`;
|
||||
}
|
||||
}
|
||||
|
||||
function getEventDataColumnsQuery(column, columns) {
|
||||
const query = Object.keys(columns).reduce((arr, key) => {
|
||||
function getEventDataColumnsQuery(column, columns, params) {
|
||||
const query = Object.keys(columns).reduce((arr, key, i) => {
|
||||
const filter = columns[key];
|
||||
|
||||
if (filter === undefined) {
|
||||
return arr;
|
||||
}
|
||||
|
||||
const isNumber = ['sum', 'avg', 'min', 'max'].some(a => a === filter);
|
||||
|
||||
arr.push(`${filter}(${getJsonField(column, key, isNumber)}) as "${filter}(${key})"`);
|
||||
switch (filter) {
|
||||
case 'sum':
|
||||
case 'avg':
|
||||
case 'min':
|
||||
case 'max':
|
||||
arr.push(`${filter}(${getJsonField(column, key, true, params)}) as "${i}"`);
|
||||
break;
|
||||
case 'count':
|
||||
arr.push(`${filter}(${getJsonField(column, key, false, params)}) as "${i}"`);
|
||||
break;
|
||||
}
|
||||
|
||||
return arr;
|
||||
}, []);
|
||||
|
@ -121,7 +153,7 @@ function getEventDataColumnsQuery(column, columns) {
|
|||
return query.join(',\n');
|
||||
}
|
||||
|
||||
function getEventDataFilterQuery(column, filters) {
|
||||
function getEventDataFilterQuery(column, filters, params) {
|
||||
const query = Object.keys(filters).reduce((arr, key) => {
|
||||
const filter = filters[key];
|
||||
|
||||
|
@ -131,11 +163,9 @@ function getEventDataFilterQuery(column, filters) {
|
|||
|
||||
const isNumber = filter && typeof filter === 'number';
|
||||
|
||||
arr.push(
|
||||
`${getJsonField(column, key, isNumber)} = ${
|
||||
typeof filter === 'string' ? `'${filter}'` : filter
|
||||
}`,
|
||||
);
|
||||
arr.push(`${getJsonField(column, key, isNumber, params)} = $${params.length + 1}`);
|
||||
|
||||
params.push(filter);
|
||||
|
||||
return arr;
|
||||
}, []);
|
||||
|
@ -248,11 +278,13 @@ const prisma = global[PRISMA] || getClient(PRISMA_OPTIONS);
|
|||
export default {
|
||||
client: prisma,
|
||||
log,
|
||||
toUuid,
|
||||
getDateQuery,
|
||||
getTimestampInterval,
|
||||
getFilterQuery,
|
||||
getEventDataColumnsQuery,
|
||||
getEventDataFilterQuery,
|
||||
getSanitizedColumns,
|
||||
parseFilters,
|
||||
rawQuery,
|
||||
transaction,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "umami",
|
||||
"version": "1.39.5",
|
||||
"version": "1.40.0",
|
||||
"description": "A simple, fast, privacy-focused alternative to Google Analytics.",
|
||||
"author": "Mike Cao <mike@mikecao.com>",
|
||||
"license": "MIT",
|
||||
|
@ -56,7 +56,7 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@fontsource/inter": "4.5.7",
|
||||
"@prisma/client": "4.5.0",
|
||||
"@prisma/client": "4.9.0",
|
||||
"chalk": "^4.1.1",
|
||||
"chart.js": "^2.9.4",
|
||||
"classnames": "^2.3.1",
|
||||
|
@ -126,7 +126,7 @@
|
|||
"postcss-preset-env": "7.4.3",
|
||||
"postcss-rtlcss": "^3.6.1",
|
||||
"prettier": "^2.6.2",
|
||||
"prisma": "4.5.0",
|
||||
"prisma": "4.9.0",
|
||||
"prompts": "2.4.2",
|
||||
"rollup": "^2.70.1",
|
||||
"rollup-plugin-terser": "^7.0.2",
|
||||
|
|
|
@ -17,7 +17,7 @@ export default async (req, res) => {
|
|||
const { current_password, new_password } = req.body;
|
||||
const { id: accountUuid } = req.query;
|
||||
|
||||
if (!(await allowQuery(req, TYPE_ACCOUNT))) {
|
||||
if (!(await allowQuery(req, TYPE_ACCOUNT, false))) {
|
||||
return unauthorized(res);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { subMinutes } from 'date-fns';
|
||||
import { ok, methodNotAllowed, createToken } from 'next-basics';
|
||||
import { ok, unauthorized, methodNotAllowed, createToken } from 'next-basics';
|
||||
import { useAuth } from 'lib/middleware';
|
||||
import { getUserWebsites, getRealtimeData } from 'queries';
|
||||
import { secret } from 'lib/crypto';
|
||||
|
@ -10,6 +10,10 @@ export default async (req, res) => {
|
|||
if (req.method === 'GET') {
|
||||
const { userId } = req.auth;
|
||||
|
||||
if (!userId) {
|
||||
return unauthorized(res);
|
||||
}
|
||||
|
||||
const websites = await getUserWebsites({ userId });
|
||||
const ids = websites.map(({ websiteUuid }) => websiteUuid);
|
||||
const token = createToken({ websites: ids }, secret());
|
||||
|
|
|
@ -10,17 +10,21 @@ export default async (req, res) => {
|
|||
|
||||
const { id: websiteUuid } = req.query;
|
||||
|
||||
if (!(await allowQuery(req, TYPE_WEBSITE))) {
|
||||
return unauthorized(res);
|
||||
}
|
||||
|
||||
if (req.method === 'GET') {
|
||||
if (!(await allowQuery(req, TYPE_WEBSITE))) {
|
||||
return unauthorized(res);
|
||||
}
|
||||
|
||||
const website = await getWebsite({ websiteUuid });
|
||||
|
||||
return ok(res, website);
|
||||
}
|
||||
|
||||
if (req.method === 'POST') {
|
||||
if (!(await allowQuery(req, TYPE_WEBSITE, false))) {
|
||||
return unauthorized(res);
|
||||
}
|
||||
|
||||
const { name, domain, owner, enableShareUrl, shareId } = req.body;
|
||||
const { accountUuid } = req.auth;
|
||||
|
||||
|
@ -43,7 +47,7 @@ export default async (req, res) => {
|
|||
{
|
||||
name,
|
||||
domain,
|
||||
shareId: shareId ? shareId : newShareId,
|
||||
shareId: shareId && enableShareUrl === undefined ? shareId : newShareId,
|
||||
userId: +owner || account.id,
|
||||
},
|
||||
{ websiteUuid },
|
||||
|
@ -58,7 +62,7 @@ export default async (req, res) => {
|
|||
}
|
||||
|
||||
if (req.method === 'DELETE') {
|
||||
if (!(await allowQuery(req, TYPE_WEBSITE))) {
|
||||
if (!(await allowQuery(req, TYPE_WEBSITE, false))) {
|
||||
return unauthorized(res);
|
||||
}
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ export default async (req, res) => {
|
|||
const { id: websiteId } = req.query;
|
||||
|
||||
if (req.method === 'POST') {
|
||||
if (!(await allowQuery(req, TYPE_WEBSITE))) {
|
||||
if (!(await allowQuery(req, TYPE_WEBSITE, false))) {
|
||||
return unauthorized(res);
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ export default async (req, res) => {
|
|||
await useAuth(req, res);
|
||||
|
||||
const { user_id, include_all } = req.query;
|
||||
|
||||
const { userId: currentUserId, isAdmin } = req.auth;
|
||||
const accountUuid = user_id || req.auth.accountUuid;
|
||||
let account;
|
||||
|
@ -18,7 +19,7 @@ export default async (req, res) => {
|
|||
const userId = account ? account.id : user_id;
|
||||
|
||||
if (req.method === 'GET') {
|
||||
if (userId && userId !== currentUserId && !isAdmin) {
|
||||
if (!userId || (userId !== currentUserId && !isAdmin)) {
|
||||
return unauthorized(res);
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,854 @@
|
|||
{
|
||||
"label.accounts": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Accounts"
|
||||
}
|
||||
],
|
||||
"label.add-account": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Add account"
|
||||
}
|
||||
],
|
||||
"label.add-column": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Add column"
|
||||
}
|
||||
],
|
||||
"label.add-filter": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Add filter"
|
||||
}
|
||||
],
|
||||
"label.add-website": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Add website"
|
||||
}
|
||||
],
|
||||
"label.administrator": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Administrator"
|
||||
}
|
||||
],
|
||||
"label.all": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "All"
|
||||
}
|
||||
],
|
||||
"label.all-time": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "All time"
|
||||
}
|
||||
],
|
||||
"label.all-websites": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "All websites"
|
||||
}
|
||||
],
|
||||
"label.back": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Back"
|
||||
}
|
||||
],
|
||||
"label.cancel": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Cancel"
|
||||
}
|
||||
],
|
||||
"label.change-password": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Change password"
|
||||
}
|
||||
],
|
||||
"label.confirm-password": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Confirm password"
|
||||
}
|
||||
],
|
||||
"label.copy-to-clipboard": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Copy to clipboard"
|
||||
}
|
||||
],
|
||||
"label.current-password": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Current password"
|
||||
}
|
||||
],
|
||||
"label.custom-range": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Custom range"
|
||||
}
|
||||
],
|
||||
"label.dashboard": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Dashboard"
|
||||
}
|
||||
],
|
||||
"label.date-range": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Date range"
|
||||
}
|
||||
],
|
||||
"label.default-date-range": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Default date range"
|
||||
}
|
||||
],
|
||||
"label.delete": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Delete"
|
||||
}
|
||||
],
|
||||
"label.delete-account": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Delete account"
|
||||
}
|
||||
],
|
||||
"label.delete-website": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Delete website"
|
||||
}
|
||||
],
|
||||
"label.dismiss": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Dismiss"
|
||||
}
|
||||
],
|
||||
"label.domain": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Domain"
|
||||
}
|
||||
],
|
||||
"label.edit": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Edit"
|
||||
}
|
||||
],
|
||||
"label.edit-account": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Edit account"
|
||||
}
|
||||
],
|
||||
"label.edit-website": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Edit website"
|
||||
}
|
||||
],
|
||||
"label.enable-share-url": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Enable share URL"
|
||||
}
|
||||
],
|
||||
"label.event-data": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Event Data"
|
||||
}
|
||||
],
|
||||
"label.field-name": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Field Name"
|
||||
}
|
||||
],
|
||||
"label.invalid": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Invalid"
|
||||
}
|
||||
],
|
||||
"label.invalid-domain": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Invalid domain"
|
||||
}
|
||||
],
|
||||
"label.language": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Language"
|
||||
}
|
||||
],
|
||||
"label.last-days": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Last "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "x"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " days"
|
||||
}
|
||||
],
|
||||
"label.last-hours": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Last "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "x"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " hours"
|
||||
}
|
||||
],
|
||||
"label.logged-in-as": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Logged in as "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "username"
|
||||
}
|
||||
],
|
||||
"label.login": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Login"
|
||||
}
|
||||
],
|
||||
"label.logout": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Logout"
|
||||
}
|
||||
],
|
||||
"label.more": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "More"
|
||||
}
|
||||
],
|
||||
"label.name": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Name"
|
||||
}
|
||||
],
|
||||
"label.new-password": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "New password"
|
||||
}
|
||||
],
|
||||
"label.none": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "None"
|
||||
}
|
||||
],
|
||||
"label.owner": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Owner"
|
||||
}
|
||||
],
|
||||
"label.password": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Password"
|
||||
}
|
||||
],
|
||||
"label.passwords-dont-match": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Passwords don't match"
|
||||
}
|
||||
],
|
||||
"label.profile": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Profile"
|
||||
}
|
||||
],
|
||||
"label.realtime": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Realtime"
|
||||
}
|
||||
],
|
||||
"label.realtime-logs": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Realtime logs"
|
||||
}
|
||||
],
|
||||
"label.refresh": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Refresh"
|
||||
}
|
||||
],
|
||||
"label.required": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Required"
|
||||
}
|
||||
],
|
||||
"label.reset": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Reset"
|
||||
}
|
||||
],
|
||||
"label.reset-website": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Reset statistics"
|
||||
}
|
||||
],
|
||||
"label.save": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Save"
|
||||
}
|
||||
],
|
||||
"label.search": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Search"
|
||||
}
|
||||
],
|
||||
"label.settings": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Settings"
|
||||
}
|
||||
],
|
||||
"label.share-url": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Share URL"
|
||||
}
|
||||
],
|
||||
"label.single-day": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Single day"
|
||||
}
|
||||
],
|
||||
"label.theme": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Theme"
|
||||
}
|
||||
],
|
||||
"label.this-month": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "This month"
|
||||
}
|
||||
],
|
||||
"label.this-week": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "This week"
|
||||
}
|
||||
],
|
||||
"label.this-year": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "This year"
|
||||
}
|
||||
],
|
||||
"label.timezone": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Timezone"
|
||||
}
|
||||
],
|
||||
"label.today": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Today"
|
||||
}
|
||||
],
|
||||
"label.tracking-code": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Tracking code"
|
||||
}
|
||||
],
|
||||
"label.type": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Type"
|
||||
}
|
||||
],
|
||||
"label.unknown": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Unknown"
|
||||
}
|
||||
],
|
||||
"label.username": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Username"
|
||||
}
|
||||
],
|
||||
"label.value": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Value"
|
||||
}
|
||||
],
|
||||
"label.view-details": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "View details"
|
||||
}
|
||||
],
|
||||
"label.websites": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Websites"
|
||||
}
|
||||
],
|
||||
"label.yesterday": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Yesterday"
|
||||
}
|
||||
],
|
||||
"message.active-users": [
|
||||
{
|
||||
"type": 1,
|
||||
"value": "x"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " current "
|
||||
},
|
||||
{
|
||||
"offset": 0,
|
||||
"options": {
|
||||
"one": {
|
||||
"value": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "visitor"
|
||||
}
|
||||
]
|
||||
},
|
||||
"other": {
|
||||
"value": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "visitors"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"pluralType": "cardinal",
|
||||
"type": 6,
|
||||
"value": "x"
|
||||
}
|
||||
],
|
||||
"message.confirm-delete": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Are you sure you want to delete "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "target"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": "?"
|
||||
}
|
||||
],
|
||||
"message.confirm-reset": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Are you sure you want to reset "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "target"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": "'s statistics?"
|
||||
}
|
||||
],
|
||||
"message.copied": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Copied!"
|
||||
}
|
||||
],
|
||||
"message.delete-warning": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "All associated data will be deleted as well."
|
||||
}
|
||||
],
|
||||
"message.edit-dashboard": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Edit dashboard"
|
||||
}
|
||||
],
|
||||
"message.failure": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Something went wrong."
|
||||
}
|
||||
],
|
||||
"message.get-share-url": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Get share URL"
|
||||
}
|
||||
],
|
||||
"message.get-tracking-code": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Get tracking code"
|
||||
}
|
||||
],
|
||||
"message.go-to-settings": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Go to settings"
|
||||
}
|
||||
],
|
||||
"message.incorrect-username-password": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Incorrect username/password."
|
||||
}
|
||||
],
|
||||
"message.log.visitor": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Visitor from "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "country"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " using "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "browser"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " on "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "os"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "device"
|
||||
}
|
||||
],
|
||||
"message.new-version-available": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "A new version of umami "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "version"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " is available!"
|
||||
}
|
||||
],
|
||||
"message.no-data-available": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "No data available."
|
||||
}
|
||||
],
|
||||
"message.no-websites-configured": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "You don't have any websites configured."
|
||||
}
|
||||
],
|
||||
"message.page-not-found": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Page not found."
|
||||
}
|
||||
],
|
||||
"message.powered-by": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Powered by "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "name"
|
||||
}
|
||||
],
|
||||
"message.reset-warning": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "All statistics for this website will be deleted, but your tracking code will remain intact."
|
||||
}
|
||||
],
|
||||
"message.save-success": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Saved successfully."
|
||||
}
|
||||
],
|
||||
"message.share-url": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "This is the publicly shared URL for "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "target"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": "."
|
||||
}
|
||||
],
|
||||
"message.toggle-charts": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Toggle charts"
|
||||
}
|
||||
],
|
||||
"message.track-stats": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "To track stats for "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "target"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": ", place the following code in the "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "head"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " section of your website."
|
||||
}
|
||||
],
|
||||
"message.type-delete": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Type "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "delete"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " in the box below to confirm."
|
||||
}
|
||||
],
|
||||
"message.type-reset": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Type "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "reset"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " in the box below to confirm."
|
||||
}
|
||||
],
|
||||
"metrics.actions": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Actions"
|
||||
}
|
||||
],
|
||||
"metrics.average-visit-time": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Average visit time"
|
||||
}
|
||||
],
|
||||
"metrics.bounce-rate": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Bounce rate"
|
||||
}
|
||||
],
|
||||
"metrics.browsers": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Browsers"
|
||||
}
|
||||
],
|
||||
"metrics.countries": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Countries"
|
||||
}
|
||||
],
|
||||
"metrics.device.desktop": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Desktop"
|
||||
}
|
||||
],
|
||||
"metrics.device.laptop": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Laptop"
|
||||
}
|
||||
],
|
||||
"metrics.device.mobile": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Mobile"
|
||||
}
|
||||
],
|
||||
"metrics.device.tablet": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Tablet"
|
||||
}
|
||||
],
|
||||
"metrics.devices": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Devices"
|
||||
}
|
||||
],
|
||||
"metrics.events": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Events"
|
||||
}
|
||||
],
|
||||
"metrics.filter.combined": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Combined"
|
||||
}
|
||||
],
|
||||
"metrics.filter.raw": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Raw"
|
||||
}
|
||||
],
|
||||
"metrics.languages": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Languages"
|
||||
}
|
||||
],
|
||||
"metrics.operating-systems": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Operating systems"
|
||||
}
|
||||
],
|
||||
"metrics.page-views": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Page views"
|
||||
}
|
||||
],
|
||||
"metrics.pages": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Pages"
|
||||
}
|
||||
],
|
||||
"metrics.query-parameters": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Query parameters"
|
||||
}
|
||||
],
|
||||
"metrics.referrers": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Referrers"
|
||||
}
|
||||
],
|
||||
"metrics.screens": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Screens"
|
||||
}
|
||||
],
|
||||
"metrics.unique-visitors": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Unique visitors"
|
||||
}
|
||||
],
|
||||
"metrics.views": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Views"
|
||||
}
|
||||
],
|
||||
"metrics.visitors": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Visitors"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -164,7 +164,7 @@
|
|||
"label.enable-share-url": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Omogući dijeljenje URL-a"
|
||||
"value": "Omogući dijeljenje poveznice"
|
||||
}
|
||||
],
|
||||
"label.event-data": [
|
||||
|
@ -182,7 +182,7 @@
|
|||
"label.invalid": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Nesipravno"
|
||||
"value": "Neispravno"
|
||||
}
|
||||
],
|
||||
"label.invalid-domain": [
|
||||
|
@ -286,7 +286,7 @@
|
|||
"label.passwords-dont-match": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Lozinka nije točna"
|
||||
"value": "Lozinke se ne podudaraju"
|
||||
}
|
||||
],
|
||||
"label.profile": [
|
||||
|
@ -352,7 +352,7 @@
|
|||
"label.share-url": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Podijeli URL"
|
||||
"value": "Podijeli poveznicu"
|
||||
}
|
||||
],
|
||||
"label.single-day": [
|
||||
|
@ -461,7 +461,7 @@
|
|||
"value": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "visitor"
|
||||
"value": "posjetitelj"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -469,7 +469,7 @@
|
|||
"value": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "visitors"
|
||||
"value": "posjetitelja"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -516,7 +516,7 @@
|
|||
"message.delete-warning": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Izbrisat će se svi povezani podaci."
|
||||
"value": "Izbrisat će se svi povezani podaci."
|
||||
}
|
||||
],
|
||||
"message.edit-dashboard": [
|
||||
|
@ -534,7 +534,7 @@
|
|||
"message.get-share-url": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Dohvati URL za dijeljenje"
|
||||
"value": "Dohvati poveznicu za dijeljenje"
|
||||
}
|
||||
],
|
||||
"message.get-tracking-code": [
|
||||
|
@ -624,7 +624,7 @@
|
|||
"message.powered-by": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Powered by "
|
||||
"value": "Pokreće "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
|
@ -646,7 +646,7 @@
|
|||
"message.share-url": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Ovo je javno dijeljeni URL za "
|
||||
"value": "Ovo je javno dijeljena poveznica za "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
|
|
|
@ -502,6 +502,12 @@
|
|||
"value": "Svetainės"
|
||||
}
|
||||
],
|
||||
"label.yesterday": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Vakar"
|
||||
}
|
||||
],
|
||||
"message.active-users": [
|
||||
{
|
||||
"offset": 0,
|
||||
|
|
|
@ -0,0 +1,842 @@
|
|||
{
|
||||
"label.accounts": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ගිණුම්"
|
||||
}
|
||||
],
|
||||
"label.add-account": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ගිණුම එකතු කරන්න"
|
||||
}
|
||||
],
|
||||
"label.add-column": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "තීරුව එක් කරන්න"
|
||||
}
|
||||
],
|
||||
"label.add-filter": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "පෙරහන එකතු කරන්න"
|
||||
}
|
||||
],
|
||||
"label.add-website": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "වෙබ් අඩවිය එක් කරන්න"
|
||||
}
|
||||
],
|
||||
"label.administrator": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "පරිපාලක"
|
||||
}
|
||||
],
|
||||
"label.all": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "සියල්ල"
|
||||
}
|
||||
],
|
||||
"label.all-time": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "හැම වෙලාවෙම"
|
||||
}
|
||||
],
|
||||
"label.all-websites": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "සියලුම වෙබ් අඩවි"
|
||||
}
|
||||
],
|
||||
"label.back": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ආපසු"
|
||||
}
|
||||
],
|
||||
"label.cancel": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "අවලංගු කරන්න"
|
||||
}
|
||||
],
|
||||
"label.change-password": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "මුරපදය වෙනස් කරන්න"
|
||||
}
|
||||
],
|
||||
"label.confirm-password": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "මුරපදය සත්යාපනය කරන්න"
|
||||
}
|
||||
],
|
||||
"label.copy-to-clipboard": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "පසුරු පුවරුවට පිටපත් කරන්න"
|
||||
}
|
||||
],
|
||||
"label.current-password": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "වත්මන් මුරපදය"
|
||||
}
|
||||
],
|
||||
"label.custom-range": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "අභිරුචි පරාසය"
|
||||
}
|
||||
],
|
||||
"label.dashboard": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "උපකරණ පුවරුව"
|
||||
}
|
||||
],
|
||||
"label.date-range": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "දින පරාසය"
|
||||
}
|
||||
],
|
||||
"label.default-date-range": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "පෙරනිමි දින පරාසය"
|
||||
}
|
||||
],
|
||||
"label.delete": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "මකන්න"
|
||||
}
|
||||
],
|
||||
"label.delete-account": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ගිණුම මකන්න"
|
||||
}
|
||||
],
|
||||
"label.delete-website": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "වෙබ් අඩවිය මකන්න"
|
||||
}
|
||||
],
|
||||
"label.dismiss": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "මගහරින්න"
|
||||
}
|
||||
],
|
||||
"label.domain": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "වසම"
|
||||
}
|
||||
],
|
||||
"label.edit": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "සංස්කරණය කරන්න"
|
||||
}
|
||||
],
|
||||
"label.edit-account": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ගිණුම සංස්කරණය කරන්න"
|
||||
}
|
||||
],
|
||||
"label.edit-website": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "වෙබ් අඩවිය සංස්කරණය කරන්න"
|
||||
}
|
||||
],
|
||||
"label.enable-share-url": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "බෙදාගැනීමේ URL සබල කරන්න"
|
||||
}
|
||||
],
|
||||
"label.event-data": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "සිදුවීම් දත්ත"
|
||||
}
|
||||
],
|
||||
"label.field-name": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ක්ෂේත්ර නාම"
|
||||
}
|
||||
],
|
||||
"label.invalid": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "වලංගු නැත"
|
||||
}
|
||||
],
|
||||
"label.invalid-domain": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "වලංගු නොවන වසමක්"
|
||||
}
|
||||
],
|
||||
"label.language": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "භාෂාව"
|
||||
}
|
||||
],
|
||||
"label.last-days": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "අන්තිම "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "x"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " දින"
|
||||
}
|
||||
],
|
||||
"label.last-hours": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "අන්තිම "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "x"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " පැය"
|
||||
}
|
||||
],
|
||||
"label.logged-in-as": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ලොග් වී ඇත්තේ "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "username"
|
||||
}
|
||||
],
|
||||
"label.login": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ලොග් වෙන්න"
|
||||
}
|
||||
],
|
||||
"label.logout": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "පිටවීම"
|
||||
}
|
||||
],
|
||||
"label.more": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "තවත්"
|
||||
}
|
||||
],
|
||||
"label.name": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "නම"
|
||||
}
|
||||
],
|
||||
"label.new-password": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "අලුත් මුරපදය"
|
||||
}
|
||||
],
|
||||
"label.none": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "කිසිවක් නැත"
|
||||
}
|
||||
],
|
||||
"label.owner": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "හිමිකරු"
|
||||
}
|
||||
],
|
||||
"label.password": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "මුරපදය"
|
||||
}
|
||||
],
|
||||
"label.passwords-dont-match": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "මුරපද නොගැලපේ"
|
||||
}
|
||||
],
|
||||
"label.profile": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "පැතිකඩ"
|
||||
}
|
||||
],
|
||||
"label.realtime": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "තත්ය කාල"
|
||||
}
|
||||
],
|
||||
"label.realtime-logs": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "තත්ය කාලීන ලොග්"
|
||||
}
|
||||
],
|
||||
"label.refresh": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "නැවුම් කරන්න"
|
||||
}
|
||||
],
|
||||
"label.required": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "අවශ්යයි"
|
||||
}
|
||||
],
|
||||
"label.reset": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "යළි පිහිටුවන්න"
|
||||
}
|
||||
],
|
||||
"label.reset-website": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "සංඛ්යා ලේඛන නැවත සකසන්න"
|
||||
}
|
||||
],
|
||||
"label.save": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "සුරකින්න"
|
||||
}
|
||||
],
|
||||
"label.search": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "සෙවීම"
|
||||
}
|
||||
],
|
||||
"label.settings": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "සැකසුම්"
|
||||
}
|
||||
],
|
||||
"label.share-url": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "බෙදාගැනීමේ URL"
|
||||
}
|
||||
],
|
||||
"label.single-day": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "තනි දවස"
|
||||
}
|
||||
],
|
||||
"label.theme": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "තේමාව"
|
||||
}
|
||||
],
|
||||
"label.this-month": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "මෙ මාසය"
|
||||
}
|
||||
],
|
||||
"label.this-week": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "මේ සතිය"
|
||||
}
|
||||
],
|
||||
"label.this-year": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "මේ අවුරුද්ද"
|
||||
}
|
||||
],
|
||||
"label.timezone": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "වේලා කලාපය"
|
||||
}
|
||||
],
|
||||
"label.today": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "අද"
|
||||
}
|
||||
],
|
||||
"label.tracking-code": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ලුහුබැඳීමේ කේතය"
|
||||
}
|
||||
],
|
||||
"label.type": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "වර්ගය"
|
||||
}
|
||||
],
|
||||
"label.unknown": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "නොදනී"
|
||||
}
|
||||
],
|
||||
"label.username": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "පරිශීලක නාමය"
|
||||
}
|
||||
],
|
||||
"label.value": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "වටිනාකම"
|
||||
}
|
||||
],
|
||||
"label.view-details": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "තොරතුරු පෙන්වන්න"
|
||||
}
|
||||
],
|
||||
"label.websites": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "වෙබ් අඩවි"
|
||||
}
|
||||
],
|
||||
"label.yesterday": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ඊයේ"
|
||||
}
|
||||
],
|
||||
"message.active-users": [
|
||||
{
|
||||
"type": 1,
|
||||
"value": "x"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " දැන් "
|
||||
},
|
||||
{
|
||||
"offset": 0,
|
||||
"options": {
|
||||
"one": {
|
||||
"value": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "අමුත්තා"
|
||||
}
|
||||
]
|
||||
},
|
||||
"other": {
|
||||
"value": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "අමුත්තන්"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"pluralType": "cardinal",
|
||||
"type": 6,
|
||||
"value": "x"
|
||||
}
|
||||
],
|
||||
"message.confirm-delete": [
|
||||
{
|
||||
"type": 1,
|
||||
"value": "target"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " මකා දැමීම ගැන විශ්වාසද?"
|
||||
}
|
||||
],
|
||||
"message.confirm-reset": [
|
||||
{
|
||||
"type": 1,
|
||||
"value": "target"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " ට අදාල සංඛ්යාලේඛන නැවත පිහිටුවීමට අවශ්යද?"
|
||||
}
|
||||
],
|
||||
"message.copied": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "පිටපත් කරගත්තා!"
|
||||
}
|
||||
],
|
||||
"message.delete-warning": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "සියලුම ආශ්රිත දත්ත ද මකා දැමෙනු ඇත."
|
||||
}
|
||||
],
|
||||
"message.edit-dashboard": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "උපකරණ පුවරුව සංස්කරණය කරන්න"
|
||||
}
|
||||
],
|
||||
"message.failure": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "යම් ගැටලුවක් මතු වී ඇත."
|
||||
}
|
||||
],
|
||||
"message.get-share-url": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "බෙදාගැනීමේ URL ලබා ගන්න"
|
||||
}
|
||||
],
|
||||
"message.get-tracking-code": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ලුහුබැඳීමේ කේතය ලබා ගන්න"
|
||||
}
|
||||
],
|
||||
"message.go-to-settings": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "සැකසීම් වෙත යන්න"
|
||||
}
|
||||
],
|
||||
"message.incorrect-username-password": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "වැරදි පරිශීලක නාමය/මුරපදය."
|
||||
}
|
||||
],
|
||||
"message.log.visitor": [
|
||||
{
|
||||
"type": 1,
|
||||
"value": "country"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " වලින් පැමිණි අමුත්තකු "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "device"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " එකේ, මේ "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "os"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " එකේ, මේ "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "browser"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " එකෙන් ඉන්නවා"
|
||||
}
|
||||
],
|
||||
"message.new-version-available": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "umami අලුත්ම "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "version"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " වන අනුවාදය නිකුත් උනා!"
|
||||
}
|
||||
],
|
||||
"message.no-data-available": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "පෙන්වීමට දත්ත නොමැත."
|
||||
}
|
||||
],
|
||||
"message.no-websites-configured": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ඔබට වින්යාස කර ඇති වෙබ් අඩවි කිසිවක් නොමැත."
|
||||
}
|
||||
],
|
||||
"message.page-not-found": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "පිටුව හමු නොවීය."
|
||||
}
|
||||
],
|
||||
"message.powered-by": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "බල ගැන්වුයේ "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "name"
|
||||
}
|
||||
],
|
||||
"message.reset-warning": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "සියලුම සංඛ්යාලේඛන මකා දමනු ඇත. නමුත් ඔබගේ නිරීක්ෂණ කේතය නොවෙනස්ව පවතිනු ඇත."
|
||||
}
|
||||
],
|
||||
"message.save-success": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "සාර්තකව සුරැකිණි."
|
||||
}
|
||||
],
|
||||
"message.share-url": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "මේ "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "target"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " සඳහා ප්රසිද්ධියේ බෙදාගත් URL එකයි."
|
||||
}
|
||||
],
|
||||
"message.toggle-charts": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ප්රස්ථාර ටොගල් කරන්න"
|
||||
}
|
||||
],
|
||||
"message.track-stats": [
|
||||
{
|
||||
"type": 1,
|
||||
"value": "target"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " හි සංඛ්යාලේඛන බැලීම සදහා, පහත කේතය "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "head"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " කොටසට ඇතුලත් කරන්න."
|
||||
}
|
||||
],
|
||||
"message.type-delete": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "සත්යාපනය සදහා "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "delete"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " ලෙස පහල කොටුවේ ටයිප් කරන්න"
|
||||
}
|
||||
],
|
||||
"message.type-reset": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "සත්යාපනය සදහා "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "reset"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " ලෙස පහල කොටුවේ ටයිප් කරන්න"
|
||||
}
|
||||
],
|
||||
"metrics.actions": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ක්රියාවන්"
|
||||
}
|
||||
],
|
||||
"metrics.average-visit-time": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "සාමාන්ය සංචාර කාලය"
|
||||
}
|
||||
],
|
||||
"metrics.bounce-rate": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "හැරී යන ප්රමාණය"
|
||||
}
|
||||
],
|
||||
"metrics.browsers": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "බ්රව්සර්"
|
||||
}
|
||||
],
|
||||
"metrics.countries": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "රටවල්"
|
||||
}
|
||||
],
|
||||
"metrics.device.desktop": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ඩෙස්ක්ටොප්"
|
||||
}
|
||||
],
|
||||
"metrics.device.laptop": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ලැප්ටොප්"
|
||||
}
|
||||
],
|
||||
"metrics.device.mobile": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ජංගම"
|
||||
}
|
||||
],
|
||||
"metrics.device.tablet": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ටැබ්ලට්"
|
||||
}
|
||||
],
|
||||
"metrics.devices": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "උපකරණ"
|
||||
}
|
||||
],
|
||||
"metrics.events": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "සිද්ධීන්"
|
||||
}
|
||||
],
|
||||
"metrics.filter.combined": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ඒකාබද්ධ"
|
||||
}
|
||||
],
|
||||
"metrics.filter.raw": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "අමු"
|
||||
}
|
||||
],
|
||||
"metrics.languages": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "භාෂා"
|
||||
}
|
||||
],
|
||||
"metrics.operating-systems": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "මෙහෙයුම් පද්ධති"
|
||||
}
|
||||
],
|
||||
"metrics.page-views": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "පිටු බැලීම්"
|
||||
}
|
||||
],
|
||||
"metrics.pages": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "පිටු"
|
||||
}
|
||||
],
|
||||
"metrics.query-parameters": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "විමසුම් පරාමිතීන්"
|
||||
}
|
||||
],
|
||||
"metrics.referrers": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "යොමු කරන්නන්"
|
||||
}
|
||||
],
|
||||
"metrics.screens": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "තිර"
|
||||
}
|
||||
],
|
||||
"metrics.unique-visitors": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "අලුත්ම අමුත්තන්"
|
||||
}
|
||||
],
|
||||
"metrics.views": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "බැලූ ගණන"
|
||||
}
|
||||
],
|
||||
"metrics.visitors": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "අමුත්තන්"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -11,6 +11,18 @@
|
|||
"value": "เพิ่มบัญชี"
|
||||
}
|
||||
],
|
||||
"label.add-column": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "สร้างคอลัมน์"
|
||||
}
|
||||
],
|
||||
"label.add-filter": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "สร้างตัวกรอง"
|
||||
}
|
||||
],
|
||||
"label.add-website": [
|
||||
{
|
||||
"type": 0,
|
||||
|
@ -284,7 +296,7 @@
|
|||
"label.required": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ต้องการ"
|
||||
"value": "จำเป็น"
|
||||
}
|
||||
],
|
||||
"label.reset": [
|
||||
|
@ -305,6 +317,12 @@
|
|||
"value": "บันทึก"
|
||||
}
|
||||
],
|
||||
"label.search": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ค้นหา"
|
||||
}
|
||||
],
|
||||
"label.settings": [
|
||||
{
|
||||
"type": 0,
|
||||
|
@ -389,6 +407,12 @@
|
|||
"value": "เว็บไซต์"
|
||||
}
|
||||
],
|
||||
"label.yesterday": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "เมื่อวาน"
|
||||
}
|
||||
],
|
||||
"message.active-users": [
|
||||
{
|
||||
"type": 0,
|
||||
|
@ -444,7 +468,7 @@
|
|||
"message.confirm-reset": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "คุณแน่ใจหรือไม่ว่าต้องการรีเซตข้อมูลสถิติของ "
|
||||
"value": "คุณแน่ใจหรือไม่ว่าต้องการรีเซ็ตข้อมูลสถิติของ "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
|
@ -470,7 +494,7 @@
|
|||
"message.edit-dashboard": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Edit dashboard"
|
||||
"value": "แก้ไขแดชบอร์ด"
|
||||
}
|
||||
],
|
||||
"message.failure": [
|
||||
|
@ -766,7 +790,7 @@
|
|||
"metrics.query-parameters": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Query parameters"
|
||||
"value": "พารามิเตอร์ URL"
|
||||
}
|
||||
],
|
||||
"metrics.referrers": [
|
||||
|
|
|
@ -10,29 +10,44 @@ export async function getEventData(...args) {
|
|||
}
|
||||
|
||||
async function relationalQuery(websiteId, { startDate, endDate, event_name, columns, filters }) {
|
||||
const { rawQuery, getEventDataColumnsQuery, getEventDataFilterQuery } = prisma;
|
||||
const params = [startDate, endDate];
|
||||
const {
|
||||
rawQuery,
|
||||
getEventDataColumnsQuery,
|
||||
getEventDataFilterQuery,
|
||||
toUuid,
|
||||
getSanitizedColumns,
|
||||
} = prisma;
|
||||
const sanitizedColumns = getSanitizedColumns(columns);
|
||||
const params = [websiteId, startDate, endDate];
|
||||
|
||||
if (event_name) {
|
||||
params.push(event_name);
|
||||
}
|
||||
|
||||
const columnQuery = getEventDataColumnsQuery('event_data.event_data', sanitizedColumns, params);
|
||||
const filterQuery =
|
||||
Object.keys(filters).length > 0
|
||||
? `and ${getEventDataFilterQuery('event_data.event_data', filters, params)}`
|
||||
: '';
|
||||
|
||||
return rawQuery(
|
||||
`select
|
||||
${getEventDataColumnsQuery('event_data.event_data', columns)}
|
||||
${columnQuery}
|
||||
from event
|
||||
join website
|
||||
on event.website_id = website.website_id
|
||||
join event_data
|
||||
on event.event_id = event_data.event_id
|
||||
where website_uuid='${websiteId}'
|
||||
and event.created_at between $1 and $2
|
||||
${event_name ? `and event_name = ${event_name}` : ''}
|
||||
${
|
||||
Object.keys(filters).length > 0
|
||||
? `and ${getEventDataFilterQuery('event_data.event_data', filters)}`
|
||||
: ''
|
||||
}`,
|
||||
where website_uuid = $1${toUuid()}
|
||||
and event.created_at between $2 and $3
|
||||
${event_name ? `and event_name = $4` : ''}
|
||||
${filterQuery}`,
|
||||
params,
|
||||
).then(results => {
|
||||
return Object.keys(results[0]).map(a => {
|
||||
return { x: a, y: results[0][`${a}`] };
|
||||
const fields = Object.keys(sanitizedColumns);
|
||||
|
||||
return Object.keys(results[0]).map((a, i) => {
|
||||
return { x: `${sanitizedColumns[fields[i]]}(${fields[i]})`, y: results[0][i] };
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
|
@ -17,8 +17,8 @@ async function relationalQuery(
|
|||
unit = 'day',
|
||||
filters = {},
|
||||
) {
|
||||
const { rawQuery, getDateQuery, getFilterQuery } = prisma;
|
||||
const params = [start_at, end_at];
|
||||
const { rawQuery, getDateQuery, getFilterQuery, toUuid } = prisma;
|
||||
const params = [websiteId, start_at, end_at];
|
||||
|
||||
return rawQuery(
|
||||
`select
|
||||
|
@ -28,8 +28,8 @@ async function relationalQuery(
|
|||
from event
|
||||
join website
|
||||
on event.website_id = website.website_id
|
||||
where website_uuid='${websiteId}'
|
||||
and event.created_at between $1 and $2
|
||||
where website_uuid = $1${toUuid()}
|
||||
and event.created_at between $2 and $3
|
||||
${getFilterQuery('event', filters, params)}
|
||||
group by 1, 2
|
||||
order by 2`,
|
||||
|
|
|
@ -10,8 +10,8 @@ export async function getPageviewMetrics(...args) {
|
|||
}
|
||||
|
||||
async function relationalQuery(websiteId, { startDate, endDate, column, table, filters = {} }) {
|
||||
const { rawQuery, parseFilters } = prisma;
|
||||
const params = [startDate, endDate];
|
||||
const { rawQuery, parseFilters, toUuid } = prisma;
|
||||
const params = [websiteId, startDate, endDate];
|
||||
const { pageviewQuery, sessionQuery, eventQuery, joinSession } = parseFilters(
|
||||
table,
|
||||
column,
|
||||
|
@ -24,8 +24,8 @@ async function relationalQuery(websiteId, { startDate, endDate, column, table, f
|
|||
from ${table}
|
||||
${` join website on ${table}.website_id = website.website_id`}
|
||||
${joinSession}
|
||||
where website.website_uuid='${websiteId}'
|
||||
and ${table}.created_at between $1 and $2
|
||||
where website.website_uuid = $1${toUuid()}
|
||||
and ${table}.created_at between $2 and $3
|
||||
${pageviewQuery}
|
||||
${joinSession && sessionQuery}
|
||||
${eventQuery}
|
||||
|
|
|
@ -9,8 +9,8 @@ export async function getPageviewParams(...args) {
|
|||
}
|
||||
|
||||
async function relationalQuery(websiteId, start_at, end_at, column, table, filters = {}) {
|
||||
const { parseFilters, rawQuery } = prisma;
|
||||
const params = [start_at, end_at];
|
||||
const { parseFilters, rawQuery, toUuid } = prisma;
|
||||
const params = [websiteId, start_at, end_at];
|
||||
const { pageviewQuery, sessionQuery, eventQuery, joinSession } = parseFilters(
|
||||
table,
|
||||
column,
|
||||
|
@ -24,8 +24,8 @@ async function relationalQuery(websiteId, start_at, end_at, column, table, filte
|
|||
from ${table}
|
||||
${` join website on ${table}.website_id = website.website_id`}
|
||||
${joinSession}
|
||||
where website.website_uuid='${websiteId}'
|
||||
and ${table}.created_at between $1 and $2
|
||||
where website.website_uuid = $1${toUuid()}
|
||||
and ${table}.created_at between $2 and $3
|
||||
and ${table}.url like '%?%'
|
||||
${pageviewQuery}
|
||||
${joinSession && sessionQuery}
|
||||
|
|
|
@ -21,8 +21,8 @@ async function relationalQuery(
|
|||
sessionKey = 'session_id',
|
||||
},
|
||||
) {
|
||||
const { getDateQuery, parseFilters, rawQuery } = prisma;
|
||||
const params = [start_at, end_at];
|
||||
const { getDateQuery, parseFilters, rawQuery, toUuid } = prisma;
|
||||
const params = [websiteId, start_at, end_at];
|
||||
const { pageviewQuery, sessionQuery, joinSession } = parseFilters(
|
||||
'pageview',
|
||||
null,
|
||||
|
@ -37,8 +37,8 @@ async function relationalQuery(
|
|||
join website
|
||||
on pageview.website_id = website.website_id
|
||||
${joinSession}
|
||||
where website.website_uuid='${websiteId}'
|
||||
and pageview.created_at between $1 and $2
|
||||
where website.website_uuid = $1${toUuid()}
|
||||
and pageview.created_at between $2 and $3
|
||||
${pageviewQuery}
|
||||
${sessionQuery}
|
||||
group by 1`,
|
||||
|
|
|
@ -10,8 +10,8 @@ export async function getSessionMetrics(...args) {
|
|||
}
|
||||
|
||||
async function relationalQuery(websiteId, { startDate, endDate, field, filters = {} }) {
|
||||
const { parseFilters, rawQuery } = prisma;
|
||||
const params = [startDate, endDate];
|
||||
const { parseFilters, rawQuery, toUuid } = prisma;
|
||||
const params = [websiteId, startDate, endDate];
|
||||
const { pageviewQuery, sessionQuery, joinSession } = parseFilters(null, filters, params);
|
||||
|
||||
return rawQuery(
|
||||
|
@ -23,8 +23,8 @@ async function relationalQuery(websiteId, { startDate, endDate, field, filters =
|
|||
join website
|
||||
on pageview.website_id = website.website_id
|
||||
${joinSession}
|
||||
where website.website_uuid='${websiteId}'
|
||||
and pageview.created_at between $1 and $2
|
||||
where website.website_uuid = $1${toUuid()}
|
||||
and pageview.created_at between $2 and $3
|
||||
${pageviewQuery}
|
||||
${sessionQuery}
|
||||
)
|
||||
|
|
|
@ -11,16 +11,17 @@ export async function getActiveVisitors(...args) {
|
|||
}
|
||||
|
||||
async function relationalQuery(websiteId) {
|
||||
const { rawQuery, toUuid } = prisma;
|
||||
const date = subMinutes(new Date(), 5);
|
||||
const params = [date];
|
||||
const params = [websiteId, date];
|
||||
|
||||
return prisma.rawQuery(
|
||||
return rawQuery(
|
||||
`select count(distinct session_id) x
|
||||
from pageview
|
||||
join website
|
||||
on pageview.website_id = website.website_id
|
||||
where website.website_uuid = '${websiteId}'
|
||||
and pageview.created_at >= $1`,
|
||||
where website.website_uuid = $1${toUuid()}
|
||||
and pageview.created_at >= $2`,
|
||||
params,
|
||||
);
|
||||
}
|
||||
|
|
|
@ -10,8 +10,8 @@ export async function getWebsiteStats(...args) {
|
|||
}
|
||||
|
||||
async function relationalQuery(websiteId, { start_at, end_at, filters = {} }) {
|
||||
const { getDateQuery, getTimestampInterval, parseFilters, rawQuery } = prisma;
|
||||
const params = [start_at, end_at];
|
||||
const { getDateQuery, getTimestampInterval, parseFilters, rawQuery, toUuid } = prisma;
|
||||
const params = [websiteId, start_at, end_at];
|
||||
const { pageviewQuery, sessionQuery, joinSession } = parseFilters(
|
||||
'pageview',
|
||||
null,
|
||||
|
@ -33,8 +33,8 @@ async function relationalQuery(websiteId, { start_at, end_at, filters = {} }) {
|
|||
join website
|
||||
on pageview.website_id = website.website_id
|
||||
${joinSession}
|
||||
where website.website_uuid='${websiteId}'
|
||||
and pageview.created_at between $1 and $2
|
||||
where website.website_uuid = $1${toUuid()}
|
||||
and pageview.created_at between $2 and $3
|
||||
${pageviewQuery}
|
||||
${sessionQuery}
|
||||
group by 1, 2
|
||||
|
|
|
@ -47,6 +47,10 @@ body {
|
|||
'Times New Roman', serif !important;
|
||||
}
|
||||
|
||||
.si-LK {
|
||||
font-family: 'Noto Sans Sinhala', Roboto, Noto, 'Times New Roman', sans-serif !important;
|
||||
}
|
||||
|
||||
.he-IL {
|
||||
font-family: 'New Peninim MT', 'Arial Hebrew', Gisha, 'Times New Roman', Roboto, Noto,
|
||||
'Noto Sans Hebrew', sans-serif !important;
|
||||
|
|
272
yarn.lock
272
yarn.lock
|
@ -1555,37 +1555,37 @@
|
|||
"@netlify/esbuild-windows-64" "0.14.39"
|
||||
"@netlify/esbuild-windows-arm64" "0.14.39"
|
||||
|
||||
"@netlify/functions@^1.3.0":
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@netlify/functions/-/functions-1.3.0.tgz#4305a3fb6b49caf56cd2be88d4b8534b1d5aff4f"
|
||||
integrity sha512-hN/Fgpz8XIOBfsBPLYUMxVKBlCopgeqGB0popayicnmkFLnvKByTTMYgF01wcF9DBtBQdV0H2h1kPFpMl34I8w==
|
||||
"@netlify/functions@^1.4.0":
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/@netlify/functions/-/functions-1.4.0.tgz#027a2e5d54df5519ccbd14cf450231e97bbbf93a"
|
||||
integrity sha512-gy7ULTIRroc2/jyFVGx1djCmmBMVisIwrvkqggq5B6iDcInRSy2Tpkm+V5C63hKJVkNRskKWtLQKm9ecCaQTjA==
|
||||
dependencies:
|
||||
is-promise "^4.0.0"
|
||||
|
||||
"@netlify/ipx@^1.3.1":
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@netlify/ipx/-/ipx-1.3.1.tgz#0330e1e5025ea1a12c3e6fba6a3e0f0d0df741f3"
|
||||
integrity sha512-kjw26KYM1jLe+bGRnhqxWs0ACG8eg6kN6wV7uqUu1J8dE6QC73ksyVtCA6IAHl3/5qf5RyMUzquNCp0N0+lXEw==
|
||||
"@netlify/ipx@^1.3.3":
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/@netlify/ipx/-/ipx-1.3.3.tgz#db28352ee1ed86d0b991cb8236f64a4dfbe70b8c"
|
||||
integrity sha512-2rDdCGPDPW7cyJr57rwfvpouOJx34CLDgfa2yfqTKvPzqCMOqkCi1PN/rHGuvJ/k5trZ8rxmWnnZyEbeQaZcqA==
|
||||
dependencies:
|
||||
"@netlify/functions" "^1.3.0"
|
||||
"@netlify/functions" "^1.4.0"
|
||||
etag "^1.8.1"
|
||||
fs-extra "^10.0.0"
|
||||
fs-extra "^11.0.0"
|
||||
ipx "^0.9.11"
|
||||
micromatch "^4.0.5"
|
||||
mkdirp "^1.0.4"
|
||||
murmurhash "^2.0.0"
|
||||
node-fetch "^2.0.0"
|
||||
ufo "^0.8.0"
|
||||
unstorage "^0.6.0"
|
||||
ufo "^1.0.0"
|
||||
unstorage "^1.0.0"
|
||||
|
||||
"@netlify/plugin-nextjs@^4.27.3":
|
||||
version "4.28.3"
|
||||
resolved "https://registry.yarnpkg.com/@netlify/plugin-nextjs/-/plugin-nextjs-4.28.3.tgz#e1d3d413a75605efcedc2f3fc27501f9bc8a49e6"
|
||||
integrity sha512-fA+gOkIowfQVaL1YDF3t+3uCsZ7OEkandLpFIv0D1faA/6Fy7VxCWhAxowRQ6oV3SjYxsV259aRMT0LaRejLMw==
|
||||
version "4.30.2"
|
||||
resolved "https://registry.yarnpkg.com/@netlify/plugin-nextjs/-/plugin-nextjs-4.30.2.tgz#c783ecb0eb080a1f124fc331360c6403378fca68"
|
||||
integrity sha512-hqvdHlQEMfpTXh+fM0jwvtKla/gUS4gVKEZeQEkJlCzAJO+8XT2bTFAGrusNHLQ53L081nLXVXx1c+HUo0LFfQ==
|
||||
dependencies:
|
||||
"@netlify/esbuild" "0.14.39"
|
||||
"@netlify/functions" "^1.3.0"
|
||||
"@netlify/ipx" "^1.3.1"
|
||||
"@netlify/functions" "^1.4.0"
|
||||
"@netlify/ipx" "^1.3.3"
|
||||
"@vercel/node-bridge" "^2.1.0"
|
||||
chalk "^4.1.2"
|
||||
destr "^1.1.1"
|
||||
|
@ -1704,22 +1704,22 @@
|
|||
"@nodelib/fs.scandir" "2.1.5"
|
||||
fastq "^1.6.0"
|
||||
|
||||
"@prisma/client@4.5.0":
|
||||
version "4.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@prisma/client/-/client-4.5.0.tgz#f708549bee3da396d5741d846b4e4306b120210c"
|
||||
integrity sha512-B2cV0OPI1smhdYUxsJoLYQLoMlLH06MUxgFUWQnHodGMX98VRVXKmQE/9OcrTNkqtke5RC+YU24Szxd04tZA2g==
|
||||
"@prisma/client@4.9.0":
|
||||
version "4.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@prisma/client/-/client-4.9.0.tgz#4a4068f3540732ea5723c008d49ed684d20f9340"
|
||||
integrity sha512-bz6QARw54sWcbyR1lLnF2QHvRW5R/Jxnbbmwh3u+969vUKXtBkXgSgjDA85nji31ZBlf7+FrHDy5x+5ydGyQDg==
|
||||
dependencies:
|
||||
"@prisma/engines-version" "4.5.0-43.0362da9eebca54d94c8ef5edd3b2e90af99ba452"
|
||||
"@prisma/engines-version" "4.9.0-42.ceb5c99003b99c9ee2c1d2e618e359c14aef2ea5"
|
||||
|
||||
"@prisma/engines-version@4.5.0-43.0362da9eebca54d94c8ef5edd3b2e90af99ba452":
|
||||
version "4.5.0-43.0362da9eebca54d94c8ef5edd3b2e90af99ba452"
|
||||
resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-4.5.0-43.0362da9eebca54d94c8ef5edd3b2e90af99ba452.tgz#5b7fae294ee9bd9790d0e7b7a0b0912e4222ac08"
|
||||
integrity sha512-o7LyVx8PPJBLrEzLl6lpxxk2D5VnlM4Fwmrbq0NoT6pr5aa1OuHD9ZG+WJY6TlR/iD9bhmo2LNcxddCMr5Rv2A==
|
||||
"@prisma/engines-version@4.9.0-42.ceb5c99003b99c9ee2c1d2e618e359c14aef2ea5":
|
||||
version "4.9.0-42.ceb5c99003b99c9ee2c1d2e618e359c14aef2ea5"
|
||||
resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-4.9.0-42.ceb5c99003b99c9ee2c1d2e618e359c14aef2ea5.tgz#9d817a5779fc05b107eb02f63d197ad296d60b3c"
|
||||
integrity sha512-M16aibbxi/FhW7z1sJCX8u+0DriyQYY5AyeTH7plQm9MLnURoiyn3CZBqAyIoQ+Z1pS77usCIibYJWSgleBMBA==
|
||||
|
||||
"@prisma/engines@4.5.0":
|
||||
version "4.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-4.5.0.tgz#82df347a893a5ae2a67707d44772ba181f4b9328"
|
||||
integrity sha512-4t9ir2SbQQr/wMCNU4YpHWp5hU14J2m3wHUZnGJPpmBF8YtkisxyVyQsKd1e6FyLTaGq8LOLhm6VLYHKqKNm+g==
|
||||
"@prisma/engines@4.9.0":
|
||||
version "4.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-4.9.0.tgz#05a1411964e047c1bc43f777c7a1c69f86a2a26c"
|
||||
integrity sha512-t1pt0Gsp+HcgPJrHFc+d/ZSAaKKWar2G/iakrE07yeKPNavDP3iVKPpfXP22OTCHZUWf7OelwKJxQgKAm5hkgw==
|
||||
|
||||
"@react-spring/animated@~9.5.2":
|
||||
version "9.5.2"
|
||||
|
@ -2358,9 +2358,9 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0:
|
|||
color-convert "^2.0.1"
|
||||
|
||||
anymatch@^3.1.2, anymatch@~3.1.2:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
|
||||
integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
|
||||
integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
|
||||
dependencies:
|
||||
normalize-path "^3.0.0"
|
||||
picomatch "^2.0.4"
|
||||
|
@ -3272,10 +3272,10 @@ define-properties@^1.1.3, define-properties@^1.1.4:
|
|||
has-property-descriptors "^1.0.0"
|
||||
object-keys "^1.1.1"
|
||||
|
||||
defu@^6.0.0, defu@^6.1.0:
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.0.tgz#7a5411655da73335c7d933256911f17c74443e2d"
|
||||
integrity sha512-pOFYRTIhoKujrmbTRhcW5lYQLBXw/dlTwfI8IguF1QCDJOcJzNH1w+YFjxqy6BAuJrClTy6MUE8q+oKJ2FLsIw==
|
||||
defu@^6.0.0, defu@^6.1.0, defu@^6.1.2:
|
||||
version "6.1.2"
|
||||
resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.2.tgz#1217cba167410a1765ba93893c6dbac9ed9d9e5c"
|
||||
integrity sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==
|
||||
|
||||
del@^6.0.0:
|
||||
version "6.1.1"
|
||||
|
@ -3296,15 +3296,15 @@ delayed-stream@~1.0.0:
|
|||
resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
|
||||
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
|
||||
|
||||
denque@^2.0.1:
|
||||
denque@^2.0.1, denque@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz"
|
||||
integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==
|
||||
|
||||
destr@^1.1.1, destr@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/destr/-/destr-1.2.0.tgz#8adb17fa3861b8032ea1bba92f60ba989a9ff119"
|
||||
integrity sha512-JG+cG4ZPB1L27sl2C2URg8MIOmIUtTbE5wEx02BpmrTCqg/hXxFKXsYsnODl5PdpqNRaS1KQGUQ56V8jk8XpYQ==
|
||||
destr@^1.1.1, destr@^1.2.0, destr@^1.2.1, destr@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/destr/-/destr-1.2.2.tgz#7ba9befcafb645a50e76b260449c63927b51e22f"
|
||||
integrity sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA==
|
||||
|
||||
detect-browser@^5.2.0:
|
||||
version "5.3.0"
|
||||
|
@ -3863,9 +3863,9 @@ fastest-levenshtein@^1.0.16:
|
|||
integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==
|
||||
|
||||
fastq@^1.6.0:
|
||||
version "1.13.0"
|
||||
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c"
|
||||
integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==
|
||||
version "1.15.0"
|
||||
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a"
|
||||
integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==
|
||||
dependencies:
|
||||
reusify "^1.0.4"
|
||||
|
||||
|
@ -3983,6 +3983,15 @@ fs-extra@10, fs-extra@^10.0.0, fs-extra@^10.0.1:
|
|||
jsonfile "^6.0.1"
|
||||
universalify "^2.0.0"
|
||||
|
||||
fs-extra@^11.0.0:
|
||||
version "11.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.0.tgz#5784b102104433bb0e090f48bfc4a30742c357ed"
|
||||
integrity sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==
|
||||
dependencies:
|
||||
graceful-fs "^4.2.0"
|
||||
jsonfile "^6.0.1"
|
||||
universalify "^2.0.0"
|
||||
|
||||
fs-extra@^9.0.0:
|
||||
version "9.1.0"
|
||||
resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz"
|
||||
|
@ -4066,6 +4075,11 @@ get-port-please@^2.6.1:
|
|||
dependencies:
|
||||
fs-memo "^1.2.0"
|
||||
|
||||
get-port-please@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/get-port-please/-/get-port-please-3.0.1.tgz#a24953a41dc249f76869ac25e81d6623e61ab010"
|
||||
integrity sha512-R5pcVO8Z1+pVDu8Ml3xaJCEkBiiy1VQN9za0YqH8GIi1nIqD4IzQhzY6dDzMRtdS1lyiGlucRzm8IN8wtLIXng==
|
||||
|
||||
get-stream@^6.0.0:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
|
||||
|
@ -4187,15 +4201,15 @@ graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4:
|
|||
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz"
|
||||
integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
|
||||
|
||||
h3@^0.8.1:
|
||||
version "0.8.6"
|
||||
resolved "https://registry.yarnpkg.com/h3/-/h3-0.8.6.tgz#8095ef998fe14769b87170b7c8b68ba9c54973d5"
|
||||
integrity sha512-CSWNOKa3QGo67rFU2PhbFTp0uPJtilNji2Z0pMiSRQt3+OkIW0u3E1WMJqIycLqaTgb9JyFqH/S4mcTyyGtvyQ==
|
||||
h3@^1.0.1:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/h3/-/h3-1.1.0.tgz#ff10d590005711dfb41034b9b1496d165507b1ea"
|
||||
integrity sha512-kx3u+RMzY963fU8NNT2ePWgsryAn9DNztPqbHia/M7HgA+rtXKjHjED9/uidcYPmImNwAfJsCachCzh2T3QH2A==
|
||||
dependencies:
|
||||
cookie-es "^0.5.0"
|
||||
destr "^1.2.0"
|
||||
radix3 "^0.2.1"
|
||||
ufo "^0.8.6"
|
||||
destr "^1.2.2"
|
||||
radix3 "^1.0.0"
|
||||
ufo "^1.0.1"
|
||||
|
||||
har-schema@^2.0.0:
|
||||
version "2.0.0"
|
||||
|
@ -4315,9 +4329,9 @@ ignore@^4.0.6:
|
|||
integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
|
||||
|
||||
ignore@^5.2.0:
|
||||
version "5.2.0"
|
||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
|
||||
integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
|
||||
version "5.2.4"
|
||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
|
||||
integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
|
||||
|
||||
image-meta@^0.1.1:
|
||||
version "0.1.1"
|
||||
|
@ -4424,6 +4438,21 @@ ioredis@^5.2.3:
|
|||
redis-parser "^3.0.0"
|
||||
standard-as-callback "^2.1.0"
|
||||
|
||||
ioredis@^5.2.4:
|
||||
version "5.3.0"
|
||||
resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.3.0.tgz#b5469f0fd374648ef074840c00c1d8eed42fca3f"
|
||||
integrity sha512-Id9jKHhsILuIZpHc61QkagfVdUj2Rag5GzG1TGEvRNeM7dtTOjICgjC+tvqYxi//PuX2wjQ+Xjva2ONBuf92Pw==
|
||||
dependencies:
|
||||
"@ioredis/commands" "^1.1.1"
|
||||
cluster-key-slot "^1.1.0"
|
||||
debug "^4.3.4"
|
||||
denque "^2.1.0"
|
||||
lodash.defaults "^4.2.0"
|
||||
lodash.isarguments "^3.1.0"
|
||||
redis-errors "^1.2.0"
|
||||
redis-parser "^3.0.0"
|
||||
standard-as-callback "^2.1.0"
|
||||
|
||||
ip-regex@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-5.0.0.tgz#cd313b2ae9c80c07bd3851e12bf4fa4dc5480632"
|
||||
|
@ -4912,19 +4941,19 @@ listhen@^0.2.15:
|
|||
selfsigned "^2.0.1"
|
||||
ufo "^0.8.5"
|
||||
|
||||
listhen@^0.3.4:
|
||||
version "0.3.4"
|
||||
resolved "https://registry.yarnpkg.com/listhen/-/listhen-0.3.4.tgz#5bb0db65dae5f2204ffa7ee46b40f2330854cf7f"
|
||||
integrity sha512-cuzWWoIWF8JvsPLmIurTkUXi27owH4RRKnBsbPswRJvB82uTv15W01yOOLaPvjxY5mMlftmW2p1XnxB835AdRA==
|
||||
listhen@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/listhen/-/listhen-1.0.2.tgz#3332af0cf77dd914e12d125c70a9c6aed9537033"
|
||||
integrity sha512-yXz0NIYfVJDBQK2vlCpD/OjSzYkur2mR44boUtlg0eES4holn7oYZf439y5JxP55EOzFtClZ8eZlMJ8a++FwlQ==
|
||||
dependencies:
|
||||
clipboardy "^3.0.0"
|
||||
colorette "^2.0.19"
|
||||
defu "^6.1.0"
|
||||
get-port-please "^2.6.1"
|
||||
defu "^6.1.2"
|
||||
get-port-please "^3.0.1"
|
||||
http-shutdown "^1.2.2"
|
||||
ip-regex "^5.0.0"
|
||||
node-forge "^1.3.1"
|
||||
ufo "^0.8.5"
|
||||
ufo "^1.0.1"
|
||||
|
||||
listr2@^3.12.2:
|
||||
version "3.14.0"
|
||||
|
@ -5184,9 +5213,9 @@ merge2@^1.3.0, merge2@^1.4.1:
|
|||
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
|
||||
|
||||
micro-memoize@^4.0.11:
|
||||
version "4.0.11"
|
||||
resolved "https://registry.yarnpkg.com/micro-memoize/-/micro-memoize-4.0.11.tgz#f664afc8bd8c11cb2838716a7306d6e1ec205d3a"
|
||||
integrity sha512-CjxsaYe4j43df32DtzzNCwanPqZjZDwuQAZilsCYpa2ZVtSPDjHXbTlR4gsEZRyO9/twHs0b7HLjvy/sowl7sA==
|
||||
version "4.0.14"
|
||||
resolved "https://registry.yarnpkg.com/micro-memoize/-/micro-memoize-4.0.14.tgz#d1239ce2e5831125ac518509f5a23b54e7ca3e17"
|
||||
integrity sha512-2tzWP1w2Hh+r7kCYa4f//jpBEA6dAueiuLco38NxfjF9Py3KCCI7wVOTdCvOhmTC043t+ulclVBdl3v+s+UJIQ==
|
||||
|
||||
micromatch@^4.0.4, micromatch@^4.0.5:
|
||||
version "4.0.5"
|
||||
|
@ -5280,9 +5309,9 @@ mmdb-lib@2.0.2:
|
|||
integrity sha512-shi1I+fCPQonhTi7qyb6hr7hi87R7YS69FlfJiMFuJ12+grx0JyL56gLNzGTYXPU7EhAPkMLliGeyHer0K+AVA==
|
||||
|
||||
moize@^6.1.0:
|
||||
version "6.1.3"
|
||||
resolved "https://registry.yarnpkg.com/moize/-/moize-6.1.3.tgz#2e188a5ee02e4e3c06beaab39a4a3c92f92dd9aa"
|
||||
integrity sha512-Cn+1T5Ypieeo46fn8X98V2gHj2VSRohVPjvT8BRvNANJJC3UOeege/G84xA/3S9c5qA4p9jOdSB1jfhumwe8qw==
|
||||
version "6.1.5"
|
||||
resolved "https://registry.yarnpkg.com/moize/-/moize-6.1.5.tgz#e9a589685a3de4266eeb5f2bbfdfe1a173265f1a"
|
||||
integrity sha512-Fu46qKV9F8DOi2vXimR3yRw/JAJfFRQEFZeclvOFnG92AEFERqwFtu4PIxETYFtCghHGlU1itKcvvNioKgWGIw==
|
||||
dependencies:
|
||||
fast-equals "^3.0.1"
|
||||
micro-memoize "^4.0.11"
|
||||
|
@ -5380,16 +5409,16 @@ nice-try@^1.0.4:
|
|||
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
|
||||
|
||||
node-abi@^3.3.0:
|
||||
version "3.28.0"
|
||||
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.28.0.tgz#b0df8b317e1c4f2f323756c5fc8ffccc5bca4718"
|
||||
integrity sha512-fRlDb4I0eLcQeUvGq7IY3xHrSb0c9ummdvDSYWfT9+LKP+3jCKw/tKoqaM7r1BAoiAC6GtwyjaGnOz6B3OtF+A==
|
||||
version "3.31.0"
|
||||
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.31.0.tgz#dfb2ea3d01188eb80859f69bb4a4354090c1b355"
|
||||
integrity sha512-eSKV6s+APenqVh8ubJyiu/YhZgxQpGP66ntzUb3lY1xB9ukSRaGnx0AIxI+IM+1+IVYC1oWobgG5L3Lt9ARykQ==
|
||||
dependencies:
|
||||
semver "^7.3.5"
|
||||
|
||||
node-addon-api@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.0.0.tgz#7d7e6f9ef89043befdb20c1989c905ebde18c501"
|
||||
integrity sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762"
|
||||
integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==
|
||||
|
||||
node-domexception@^1.0.0:
|
||||
version "1.0.0"
|
||||
|
@ -5401,10 +5430,15 @@ node-fetch-native@^0.1.8:
|
|||
resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-0.1.8.tgz#19e2eaf6d86ac14e711ebd2612f40517c3468f2a"
|
||||
integrity sha512-ZNaury9r0NxaT2oL65GvdGDy+5PlSaHTovT6JV5tOW07k1TQmgC0olZETa4C9KZg0+6zBr99ctTYa3Utqj9P/Q==
|
||||
|
||||
node-fetch-native@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.0.1.tgz#1dfe78f57545d07e07016b7df4c0cb9d2ff416c7"
|
||||
integrity sha512-VzW+TAk2wE4X9maiKMlT+GsPU4OMmR1U9CrHSmd3DFLn2IcZ9VJ6M6BBugGfYUnPCLSYxXdZy17M0BEJyhUTwg==
|
||||
|
||||
node-fetch@^2.0.0, node-fetch@^2.6.6:
|
||||
version "2.6.7"
|
||||
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
|
||||
integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
|
||||
version "2.6.8"
|
||||
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.8.tgz#a68d30b162bc1d8fd71a367e81b997e1f4d4937e"
|
||||
integrity sha512-RZ6dBYuj8dRSfxpUSu+NsdF1dpPpluJxwOp+6IoDp/sH2QNDSvurYsAa+F1WxY2RjA1iP93xhcsUoYbF2XBqVg==
|
||||
dependencies:
|
||||
whatwg-url "^5.0.0"
|
||||
|
||||
|
@ -5556,15 +5590,24 @@ object.values@^1.1.5:
|
|||
define-properties "^1.1.3"
|
||||
es-abstract "^1.19.1"
|
||||
|
||||
ohmyfetch@^0.4.18, ohmyfetch@^0.4.19:
|
||||
version "0.4.20"
|
||||
resolved "https://registry.yarnpkg.com/ohmyfetch/-/ohmyfetch-0.4.20.tgz#735895d396c6d2fbf5705625db1196bd3f29be16"
|
||||
integrity sha512-+c3/l+X91owrT1reTos1R13rb2j8NGZpKi0bRWwrnxIHlr1FZ8NzghIsNBKpUvk9nsnFoNK4phw+nTnXrcALzA==
|
||||
ofetch@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ofetch/-/ofetch-1.0.0.tgz#5a2604cdcb33349900e4f73ffe44de449a61101a"
|
||||
integrity sha512-d40aof8czZFSQKJa4+F7Ch3UC5D631cK1TTUoK+iNEut9NoiCL+u0vykl/puYVUS2df4tIQl5upQcolIcEzQjQ==
|
||||
dependencies:
|
||||
destr "^1.1.1"
|
||||
destr "^1.2.1"
|
||||
node-fetch-native "^1.0.1"
|
||||
ufo "^1.0.0"
|
||||
|
||||
ohmyfetch@^0.4.18:
|
||||
version "0.4.21"
|
||||
resolved "https://registry.yarnpkg.com/ohmyfetch/-/ohmyfetch-0.4.21.tgz#6850db751fc7bbf08153aa8b11ff1ef45fcfd963"
|
||||
integrity sha512-VG7f/JRvqvBOYvL0tHyEIEG7XHWm7OqIfAs6/HqwWwDfjiJ1g0huIpe5sFEmyb+7hpFa1EGNH2aERWR72tlClw==
|
||||
dependencies:
|
||||
destr "^1.2.0"
|
||||
node-fetch-native "^0.1.8"
|
||||
ufo "^0.8.6"
|
||||
undici "^5.11.0"
|
||||
undici "^5.12.0"
|
||||
|
||||
once@^1.3.0, once@^1.3.1, once@^1.4.0:
|
||||
version "1.4.0"
|
||||
|
@ -6095,12 +6138,12 @@ pretty-bytes@^5.6.0:
|
|||
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"
|
||||
integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==
|
||||
|
||||
prisma@4.5.0:
|
||||
version "4.5.0"
|
||||
resolved "https://registry.yarnpkg.com/prisma/-/prisma-4.5.0.tgz#361ae3f4476d0821b97645e5da42975a7c2943bb"
|
||||
integrity sha512-9Aeg4qiKlv9Wsjz4NO8k2CzRzlvS3A4FYVJ5+28sBBZ0eEwbiVOE/Jj7v6rZC1tFW2s4GSICQOAyuOjc6WsNew==
|
||||
prisma@4.9.0:
|
||||
version "4.9.0"
|
||||
resolved "https://registry.yarnpkg.com/prisma/-/prisma-4.9.0.tgz#295954b2a89cd35a0e6bcf66b2b036dbf80c75ee"
|
||||
integrity sha512-bS96oZ5oDFXYgoF2l7PJ3Mp1wWWfLOo8B/jAfbA2Pn0Wm5Z/owBHzaMQKS3i1CzVBDWWPVnOohmbJmjvkcHS5w==
|
||||
dependencies:
|
||||
"@prisma/engines" "4.5.0"
|
||||
"@prisma/engines" "4.9.0"
|
||||
|
||||
progress@^2.0.0:
|
||||
version "2.0.3"
|
||||
|
@ -6167,10 +6210,10 @@ quick-lru@^4.0.1:
|
|||
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f"
|
||||
integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==
|
||||
|
||||
radix3@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/radix3/-/radix3-0.2.1.tgz#77e66a41c7ba5600a8bc137fd259ef661d314418"
|
||||
integrity sha512-FnhArTl5Tq7dodiLeSPKrDUyCQuJqEncP8cKdyy399g8F/cz7GH6FmzA3Rkosu2IZMkpswFFwXfb2ERSiL06pg==
|
||||
radix3@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/radix3/-/radix3-1.0.0.tgz#d1c760b850206a6bd5dfd26820c25903cb20eccc"
|
||||
integrity sha512-6n3AEXth91ASapMVKiEh2wrbFJmI+NBilrWE0AbiGgfm0xet0QXC8+a3K19r1UVYjUjctUgB053c3V/J6V0kCQ==
|
||||
|
||||
raf-schd@^4.0.2:
|
||||
version "4.0.3"
|
||||
|
@ -7421,11 +7464,16 @@ typescript@^4.5:
|
|||
resolved "https://registry.npmjs.org/typescript/-/typescript-4.7.2.tgz"
|
||||
integrity sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==
|
||||
|
||||
ufo@^0.8.0, ufo@^0.8.5, ufo@^0.8.6:
|
||||
ufo@^0.8.5, ufo@^0.8.6:
|
||||
version "0.8.6"
|
||||
resolved "https://registry.yarnpkg.com/ufo/-/ufo-0.8.6.tgz#c0ec89bc0e0c9fa59a683680feb0f28b55ec323b"
|
||||
integrity sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==
|
||||
|
||||
ufo@^1.0.0, ufo@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.0.1.tgz#64ed43b530706bda2e4892f911f568cf4cf67d29"
|
||||
integrity sha512-boAm74ubXHY7KJQZLlXrtMz52qFvpsbOxDcZOnw/Wf+LS4Mmyu7JxmzD4tDLtUQtmZECypJ0FrCz4QIe6dvKRA==
|
||||
|
||||
unbox-primitive@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e"
|
||||
|
@ -7436,10 +7484,10 @@ unbox-primitive@^1.0.2:
|
|||
has-symbols "^1.0.3"
|
||||
which-boxed-primitive "^1.0.2"
|
||||
|
||||
undici@^5.11.0:
|
||||
version "5.12.0"
|
||||
resolved "https://registry.yarnpkg.com/undici/-/undici-5.12.0.tgz#c758ffa704fbcd40d506e4948860ccaf4099f531"
|
||||
integrity sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg==
|
||||
undici@^5.12.0:
|
||||
version "5.16.0"
|
||||
resolved "https://registry.yarnpkg.com/undici/-/undici-5.16.0.tgz#6b64f9b890de85489ac6332bd45ca67e4f7d9943"
|
||||
integrity sha512-KWBOXNv6VX+oJQhchXieUznEmnJMqgXMbs0xxH2t8q/FUAWSJvOSr/rMaZKnX5RIVq7JDn0JbP4BOnKG2SGXLQ==
|
||||
dependencies:
|
||||
busboy "^1.6.0"
|
||||
|
||||
|
@ -7494,22 +7542,22 @@ universalify@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
|
||||
integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
|
||||
|
||||
unstorage@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/unstorage/-/unstorage-0.6.0.tgz#9a70d770d08ed8dbb87f4aa5fbf7700baf4a641d"
|
||||
integrity sha512-X05PIq28pVNA1BypX6Y00YNqAsHM25MGemvpjHeYvwJ8/wg936GoO1YD+VdWlqm3LmVX4fNJ5tlC7uhXsMPgeg==
|
||||
unstorage@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/unstorage/-/unstorage-1.0.1.tgz#8cac09e435e727f68ac8ffdac10caa1a5b35883d"
|
||||
integrity sha512-J1c4b8K2KeihHrQtdgl/ybIapArUbPaPb+TyJy/nGSauDwDYqciZsEKdkee568P3c8SSH4TIgnGRHDWMPGw+Lg==
|
||||
dependencies:
|
||||
anymatch "^3.1.2"
|
||||
chokidar "^3.5.3"
|
||||
destr "^1.1.1"
|
||||
h3 "^0.8.1"
|
||||
ioredis "^5.2.3"
|
||||
listhen "^0.3.4"
|
||||
destr "^1.2.1"
|
||||
h3 "^1.0.1"
|
||||
ioredis "^5.2.4"
|
||||
listhen "^1.0.0"
|
||||
mkdir "^0.0.2"
|
||||
mri "^1.2.0"
|
||||
ohmyfetch "^0.4.19"
|
||||
ufo "^0.8.6"
|
||||
ws "^8.9.0"
|
||||
ofetch "^1.0.0"
|
||||
ufo "^1.0.0"
|
||||
ws "^8.11.0"
|
||||
|
||||
update-browserslist-db@^1.0.9:
|
||||
version "1.0.10"
|
||||
|
@ -7695,10 +7743,10 @@ write-json-file@^4.3.0:
|
|||
sort-keys "^4.0.0"
|
||||
write-file-atomic "^3.0.0"
|
||||
|
||||
ws@^8.9.0:
|
||||
version "8.10.0"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-8.10.0.tgz#00a28c09dfb76eae4eb45c3b565f771d6951aa51"
|
||||
integrity sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw==
|
||||
ws@^8.11.0:
|
||||
version "8.12.0"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.0.tgz#485074cc392689da78e1828a9ff23585e06cddd8"
|
||||
integrity sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==
|
||||
|
||||
xss@^1.0.14:
|
||||
version "1.0.14"
|
||||
|
|
Loading…
Reference in New Issue