From 8f49b974fd7da956219390ef0a5fd600cc82b094 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Apr 2022 07:41:53 +0000 Subject: [PATCH 01/19] build(deps): bump minimist from 1.2.5 to 1.2.6 Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6. - [Release notes](https://github.com/substack/minimist/releases) - [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6) --- updated-dependencies: - dependency-name: minimist dependency-type: indirect ... Signed-off-by: dependabot[bot] --- yarn.lock | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index aede6d16..0f358fb5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4248,12 +4248,7 @@ minimist-options@4.1.0, minimist-options@^4.0.2: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.1.3, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minimist@^1.2.0, minimist@^1.2.6: +minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== From f2128a701197d2feaf74453db2c56ca21cd2b101 Mon Sep 17 00:00:00 2001 From: RubenD Date: Tue, 12 Apr 2022 21:22:20 -0400 Subject: [PATCH 02/19] Translated missing string Theme, does not to be translated --- lang/de-DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lang/de-DE.json b/lang/de-DE.json index df95d686..1e232411 100644 --- a/lang/de-DE.json +++ b/lang/de-DE.json @@ -28,7 +28,7 @@ "label.enable-share-url": "Freigabe-URL aktivieren", "label.invalid": "Ungültig", "label.invalid-domain": "Ungültige Domain", - "label.language": "Language", + "label.language": "Sprache", "label.last-days": "Letzten {x} Tage", "label.last-hours": "Letzten {x} Stunden", "label.logged-in-as": "Angemeldet als {username}", From 4c01f2fa4933e71903e1c4935aebe957f1496101 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Tue, 12 Apr 2022 20:59:17 -0700 Subject: [PATCH 03/19] Updated hash method. --- lib/crypto.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/crypto.js b/lib/crypto.js index 4b56bbb2..c684f2d6 100644 --- a/lib/crypto.js +++ b/lib/crypto.js @@ -14,11 +14,11 @@ export function hash(...args) { } export function secret() { - return hash(process.env.HASH_SALT); + return hash(process.env.DATABASE_URL, process.env.HASH_SALT); } export function salt() { - return v5([secret(), ROTATING_SALT].join(''), v5.DNS); + return v5(hash(secret(), ROTATING_SALT), v5.DNS); } export function uuid(...args) { From ce54e3d5103614c7dc903c1bbec9e1e50e16ad6d Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Tue, 12 Apr 2022 21:49:17 -0700 Subject: [PATCH 04/19] Updated language bundles. --- lang-ignore.json | 1 + 1 file changed, 1 insertion(+) diff --git a/lang-ignore.json b/lang-ignore.json index 079d8b98..16a5b2f9 100644 --- a/lang-ignore.json +++ b/lang-ignore.json @@ -4,6 +4,7 @@ "label.administrator", "label.name", "label.domain", + "label.theme", "metrics.device.desktop", "metrics.device.laptop", "metrics.device.tablet", From 1cff704379ea1496f40a3e0265dc5ea558f9e376 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Tue, 12 Apr 2022 21:59:00 -0700 Subject: [PATCH 05/19] Updated de-DE. --- public/intl/messages/de-DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/intl/messages/de-DE.json b/public/intl/messages/de-DE.json index 351e795b..9d539209 100644 --- a/public/intl/messages/de-DE.json +++ b/public/intl/messages/de-DE.json @@ -176,7 +176,7 @@ "label.language": [ { "type": 0, - "value": "Language" + "value": "Sprache" } ], "label.last-days": [ From f69dbaeaf654a532dad25077ee9b09356095ae4d Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Wed, 13 Apr 2022 19:04:06 -0700 Subject: [PATCH 06/19] Allow filtering of events with url. --- lib/queries.js | 14 +++++++++----- pages/api/website/[id]/metrics.js | 3 ++- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/queries.js b/lib/queries.js index ffbb6655..bb6b9395 100644 --- a/lib/queries.js +++ b/lib/queries.js @@ -64,7 +64,7 @@ export function getFilterQuery(table, filters = {}, params = []) { switch (key) { case 'url': - if (table === 'session' || table === 'pageview') { + if (table === 'pageview' || table === 'event') { arr.push(`and ${table}.${key}=$${params.length + 1}`); params.push(decodeURIComponent(value)); } @@ -110,11 +110,11 @@ export function getFilterQuery(table, filters = {}, params = []) { } export function parseFilters(table, filters = {}, params = []) { - const { domain, url, referrer, os, browser, device, country, event_type } = filters; + const { domain, url, event_url, referrer, os, browser, device, country, event_type } = filters; const pageviewFilters = { domain, url, referrer }; const sessionFilters = { os, browser, device, country }; - const eventFilters = { event_type }; + const eventFilters = { url: event_url, event_type }; return { pageviewFilters, @@ -502,8 +502,11 @@ export function getSessionMetrics(website_id, start_at, end_at, field, filters = export function getPageviewMetrics(website_id, start_at, end_at, field, table, filters = {}) { const params = [website_id, start_at, end_at]; - console.log({ table, filters }); - const { pageviewQuery, sessionQuery, joinSession } = parseFilters(table, filters, params); + const { pageviewQuery, sessionQuery, eventQuery, joinSession } = parseFilters( + table, + filters, + params, + ); return rawQuery( ` @@ -514,6 +517,7 @@ export function getPageviewMetrics(website_id, start_at, end_at, field, table, f and ${table}.created_at between $2 and $3 ${pageviewQuery} ${joinSession && sessionQuery} + ${eventQuery} group by 1 order by 2 desc `, diff --git a/pages/api/website/[id]/metrics.js b/pages/api/website/[id]/metrics.js index 645a8707..54c5bf3e 100644 --- a/pages/api/website/[id]/metrics.js +++ b/pages/api/website/[id]/metrics.js @@ -83,12 +83,13 @@ export default async (req, res) => { const data = await getPageviewMetrics(websiteId, startDate, endDate, column, table, { domain, - url: type !== 'url' ? url : undefined, + url: type !== 'url' && table !== 'event' ? url : undefined, referrer: type !== 'referrer' ? referrer : undefined, os: type !== 'os' ? os : undefined, browser: type !== 'browser' ? browser : undefined, device: type !== 'device' ? device : undefined, country: type !== 'country' ? country : undefined, + event_url: type !== 'url' && table === 'event' ? url : undefined, }); return ok(res, data); From 9f20a62591087405e8938269322181efef9ea8c3 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Wed, 13 Apr 2022 19:06:45 -0700 Subject: [PATCH 07/19] Updated Next. --- package.json | 2 +- yarn.lock | 138 +++++++++++++++++++++++++-------------------------- 2 files changed, 70 insertions(+), 70 deletions(-) diff --git a/package.json b/package.json index 625fb0c2..65340614 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,7 @@ "jose": "2.0.5", "maxmind": "^4.3.6", "moment-timezone": "^0.5.33", - "next": "12.1.4", + "next": "12.1.5", "node-fetch": "^3.2.3", "npm-run-all": "^4.1.5", "prop-types": "^15.7.2", diff --git a/yarn.lock b/yarn.lock index aede6d16..fda829e1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1251,10 +1251,10 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@next/env@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.4.tgz#5af629b43075281ecd7f87938802b7cf5b67e94b" - integrity sha512-7gQwotJDKnfMxxXd8xJ2vsX5AzyDxO3zou0+QOXX8/unypA6icw5+wf6A62yKZ6qQ4UZHHxS68pb6UV+wNneXg== +"@next/env@12.1.5": + version "12.1.5" + resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.5.tgz#a21ba6708022d630402ca2b340316e69a0296dfc" + integrity sha512-+34yUJslfJi7Lyx6ELuN8nWcOzi27izfYnZIC1Dqv7kmmfiBVxgzR3BXhlvEMTKC2IRJhXVs2FkMY+buQe3k7Q== "@next/eslint-plugin-next@12.1.4": version "12.1.4" @@ -1263,65 +1263,65 @@ dependencies: glob "7.1.7" -"@next/swc-android-arm-eabi@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.4.tgz#c3dae178b7c15ad627d2e9b8dfb38caecb5c4ac7" - integrity sha512-FJg/6a3s2YrUaqZ+/DJZzeZqfxbbWrynQMT1C5wlIEq9aDLXCFpPM/PiOyJh0ahxc0XPmi6uo38Poq+GJTuKWw== +"@next/swc-android-arm-eabi@12.1.5": + version "12.1.5" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.5.tgz#36729ab3dfd7743e82cfe536b43254dcb146620c" + integrity sha512-SKnGTdYcoN04Y2DvE0/Y7/MjkA+ltsmbuH/y/hR7Ob7tsj+8ZdOYuk+YvW1B8dY20nDPHP58XgDTSm2nA8BzzA== -"@next/swc-android-arm64@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.4.tgz#f320d60639e19ecffa1f9034829f2d95502a9a51" - integrity sha512-LXraazvQQFBgxIg3Htny6G5V5he9EK7oS4jWtMdTGIikmD/OGByOv8ZjLuVLZLtVm3UIvaAiGtlQSLecxJoJDw== +"@next/swc-android-arm64@12.1.5": + version "12.1.5" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.5.tgz#52578f552305c92d0b9b81d603c9643fb71e0835" + integrity sha512-YXiqgQ/9Rxg1dXp6brXbeQM1JDx9SwUY/36JiE+36FXqYEmDYbxld9qkX6GEzkc5rbwJ+RCitargnzEtwGW0mw== -"@next/swc-darwin-arm64@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.4.tgz#fd578278312613eddcf3aee26910100509941b63" - integrity sha512-SSST/dBymecllZxcqTCcSTCu5o1NKk9I+xcvhn/O9nH6GWjgvGgGkNqLbCarCa0jJ1ukvlBA138FagyrmZ/4rQ== +"@next/swc-darwin-arm64@12.1.5": + version "12.1.5" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.5.tgz#3d5b53211484c72074f4975ba0ec2b1107db300e" + integrity sha512-y8mhldb/WFZ6lFeowkGfi0cO/lBdiBqDk4T4LZLvCpoQp4Or/NzUN6P5NzBQZ5/b4oUHM/wQICEM+1wKA4qIVw== -"@next/swc-darwin-x64@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.4.tgz#ace5f80d8c8348efe194f6d7074c6213c52b3944" - integrity sha512-p1lwdX0TVjaoDXQVuAkjtxVBbCL/urgxiMCBwuPDO7TikpXtSRivi+mIzBj5q7ypgICFmIAOW3TyupXeoPRAnA== +"@next/swc-darwin-x64@12.1.5": + version "12.1.5" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.5.tgz#adcabb732d226453777c0d37d58eaff9328b66fd" + integrity sha512-wqJ3X7WQdTwSGi0kIDEmzw34QHISRIQ5uvC+VXmsIlCPFcMA+zM5723uh8NfuKGquDMiEMS31a83QgkuHMYbwQ== -"@next/swc-linux-arm-gnueabihf@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.4.tgz#2bf2c83863635f19c71c226a2df936e001cce29c" - integrity sha512-67PZlgkCn3TDxacdVft0xqDCL7Io1/C4xbAs0+oSQ0xzp6OzN2RNpuKjHJrJgKd0DsE1XZ9sCP27Qv0591yfyg== +"@next/swc-linux-arm-gnueabihf@12.1.5": + version "12.1.5" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.5.tgz#82a7cde67482b756bc65fbebf1dfa8a782074e93" + integrity sha512-WnhdM5duONMvt2CncAl+9pim0wBxDS2lHoo7ub/o/i1bRbs11UTzosKzEXVaTDCUkCX2c32lIDi1WcN2ZPkcdw== -"@next/swc-linux-arm64-gnu@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.4.tgz#d577190f641c9b4b463719dd6b8953b6ba9be8d9" - integrity sha512-OnOWixhhw7aU22TQdQLYrgpgFq0oA1wGgnjAiHJ+St7MLj82KTDyM9UcymAMbGYy6nG/TFOOHdTmRMtCRNOw0g== +"@next/swc-linux-arm64-gnu@12.1.5": + version "12.1.5" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.5.tgz#f82ca014504950aab751e81f467492e9be0bad5d" + integrity sha512-Jq2H68yQ4bLUhR/XQnbw3LDW0GMQn355qx6rU36BthDLeGue7YV7MqNPa8GKvrpPocEMW77nWx/1yI6w6J07gw== -"@next/swc-linux-arm64-musl@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.4.tgz#e70ffe70393d8f9242deecdb282ce5a8fd588b14" - integrity sha512-UoRMzPZnsAavdWtVylYxH8DNC7Uy0i6RrvNwT4PyQVdfANBn2omsUkcH5lgS2O7oaz0nAYLk1vqyZDO7+tJotA== +"@next/swc-linux-arm64-musl@12.1.5": + version "12.1.5" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.5.tgz#f811ec9f4b12a978426c284c95ab2f515ddf7f9e" + integrity sha512-KgPjwdbhDqXI7ghNN8V/WAiLquc9Ebe8KBrNNEL0NQr+yd9CyKJ6KqjayVkmX+hbHzbyvbui/5wh/p3CZQ9xcQ== -"@next/swc-linux-x64-gnu@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.4.tgz#91498a130387fb1961902f2bee55863f8e910cff" - integrity sha512-nM+MA/frxlTLUKLJKorctdI20/ugfHRjVEEkcLp/58LGG7slNaP1E5d5dRA1yX6ISjPcQAkywas5VlGCg+uTvA== +"@next/swc-linux-x64-gnu@12.1.5": + version "12.1.5" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.5.tgz#d44857257e6d20dc841998951d584ab1f25772c3" + integrity sha512-O2ErUTvCJ6DkNTSr9pbu1n3tcqykqE/ebty1rwClzIYdOgpB3T2MfEPP+K7GhUR87wmN/hlihO9ch7qpVFDGKw== -"@next/swc-linux-x64-musl@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.4.tgz#78057b03c148c121553d41521ad38f6c732762ff" - integrity sha512-GoRHxkuW4u4yKw734B9SzxJwVdyEJosaZ62P7ifOwcujTxhgBt3y76V2nNUrsSuopcKI2ZTDjaa+2wd5zyeXbA== +"@next/swc-linux-x64-musl@12.1.5": + version "12.1.5" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.5.tgz#3cc523abadc9a2a6de680593aff06e71cc29ecef" + integrity sha512-1eIlZmlO/VRjxxzUBcVosf54AFU3ltAzHi+BJA+9U/lPxCYIsT+R4uO3QksRzRjKWhVQMRjEnlXyyq5SKJm7BA== -"@next/swc-win32-arm64-msvc@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.4.tgz#05bbaabacac23b8edf6caa99eb86b17550a09051" - integrity sha512-6TQkQze0ievXwHJcVUrIULwCYVe3ccX6T0JgZ1SiMeXpHxISN7VJF/O8uSCw1JvXZYZ6ud0CJ7nfC5HXivgfPg== +"@next/swc-win32-arm64-msvc@12.1.5": + version "12.1.5" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.5.tgz#c62232d869f1f9b22e8f24e4e7f05307c20f30ca" + integrity sha512-oromsfokbEuVb0CBLLE7R9qX3KGXucZpsojLpzUh1QJjuy1QkrPJncwr8xmWQnwgtQ6ecMWXgXPB+qtvizT9Tw== -"@next/swc-win32-ia32-msvc@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.4.tgz#8fd2fb48f04a2802e51fc320878bf6b411c1c866" - integrity sha512-CsbX/IXuZ5VSmWCpSetG2HD6VO5FTsO39WNp2IR2Ut/uom9XtLDJAZqjQEnbUTLGHuwDKFjrIO3LkhtROXLE/g== +"@next/swc-win32-ia32-msvc@12.1.5": + version "12.1.5" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.5.tgz#2bd9b28a9ba730d12a493e7d9d18e150fe89d496" + integrity sha512-a/51L5KzBpeZSW9LbekMo3I3Cwul+V+QKwbEIMA+Qwb2qrlcn1L9h3lt8cHqNTFt2y72ce6aTwDTw1lyi5oIRA== -"@next/swc-win32-x64-msvc@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.4.tgz#a72ed44c9b1f850986a30fe36c59e01f8a79b5f3" - integrity sha512-JtYuWzKXKLDMgE/xTcFtCm1MiCIRaAc5XYZfYX3n/ZWSI1SJS/GMm+Su0SAHJgRFavJh6U/p998YwO/iGTIgqQ== +"@next/swc-win32-x64-msvc@12.1.5": + version "12.1.5" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.5.tgz#02f377e4d41eaaacf265e34bab9bacd8efc4a351" + integrity sha512-/SoXW1Ntpmpw3AXAzfDRaQidnd8kbZ2oSni8u5z0yw6t4RwJvmdZy1eOaAADRThWKV+2oU90++LSnXJIwBRWYQ== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -4325,28 +4325,28 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -next@12.1.4: - version "12.1.4" - resolved "https://registry.yarnpkg.com/next/-/next-12.1.4.tgz#597a9bdec7aec778b442c4f6d41afd2c64a54b23" - integrity sha512-DA4g97BM4Z0nKtDvCTm58RxdvoQyYzeg0AeVbh0N4Y/D8ELrNu47lQeEgRGF8hV4eQ+Sal90zxrJQQG/mPQ8CQ== +next@12.1.5: + version "12.1.5" + resolved "https://registry.yarnpkg.com/next/-/next-12.1.5.tgz#7a07687579ddce61ee519493e1c178d83abac063" + integrity sha512-YGHDpyfgCfnT5GZObsKepmRnne7Kzp7nGrac07dikhutWQug7hHg85/+sPJ4ZW5Q2pDkb+n0FnmLkmd44htIJQ== dependencies: - "@next/env" "12.1.4" + "@next/env" "12.1.5" caniuse-lite "^1.0.30001283" postcss "8.4.5" styled-jsx "5.0.1" optionalDependencies: - "@next/swc-android-arm-eabi" "12.1.4" - "@next/swc-android-arm64" "12.1.4" - "@next/swc-darwin-arm64" "12.1.4" - "@next/swc-darwin-x64" "12.1.4" - "@next/swc-linux-arm-gnueabihf" "12.1.4" - "@next/swc-linux-arm64-gnu" "12.1.4" - "@next/swc-linux-arm64-musl" "12.1.4" - "@next/swc-linux-x64-gnu" "12.1.4" - "@next/swc-linux-x64-musl" "12.1.4" - "@next/swc-win32-arm64-msvc" "12.1.4" - "@next/swc-win32-ia32-msvc" "12.1.4" - "@next/swc-win32-x64-msvc" "12.1.4" + "@next/swc-android-arm-eabi" "12.1.5" + "@next/swc-android-arm64" "12.1.5" + "@next/swc-darwin-arm64" "12.1.5" + "@next/swc-darwin-x64" "12.1.5" + "@next/swc-linux-arm-gnueabihf" "12.1.5" + "@next/swc-linux-arm64-gnu" "12.1.5" + "@next/swc-linux-arm64-musl" "12.1.5" + "@next/swc-linux-x64-gnu" "12.1.5" + "@next/swc-linux-x64-musl" "12.1.5" + "@next/swc-win32-arm64-msvc" "12.1.5" + "@next/swc-win32-ia32-msvc" "12.1.5" + "@next/swc-win32-x64-msvc" "12.1.5" nice-try@^1.0.4: version "1.0.5" From d0f14871070b7571cf06126fb9fd496d1b6d4069 Mon Sep 17 00:00:00 2001 From: Brian Cao Date: Mon, 18 Apr 2022 10:23:13 -0700 Subject: [PATCH 08/19] fix filter link --- components/common/FilterLink.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/components/common/FilterLink.js b/components/common/FilterLink.js index 459a8ae1..8520b663 100644 --- a/components/common/FilterLink.js +++ b/components/common/FilterLink.js @@ -21,7 +21,9 @@ export default function FilterLink({ id, value, label, externalUrl }) { [styles.active]: active && selected, })} > - {safeDecodeURI(label || value)} + {(label && typeof label === 'string') ?? value + ? safeDecodeURI(label || value) + : label || value} {externalUrl && ( From b697b34cc7e4a68fc2173be91819cec35722676c Mon Sep 17 00:00:00 2001 From: Brian Cao Date: Mon, 18 Apr 2022 12:27:38 -0700 Subject: [PATCH 09/19] remove decodeURI --- components/common/FilterLink.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/components/common/FilterLink.js b/components/common/FilterLink.js index 8520b663..9401cb13 100644 --- a/components/common/FilterLink.js +++ b/components/common/FilterLink.js @@ -2,7 +2,6 @@ import React from 'react'; import Link from 'next/link'; import classNames from 'classnames'; import usePageQuery from 'hooks/usePageQuery'; -import { safeDecodeURI } from 'lib/url'; import Icon from './Icon'; import External from 'assets/arrow-up-right-from-square.svg'; import styles from './FilterLink.module.css'; @@ -21,9 +20,7 @@ export default function FilterLink({ id, value, label, externalUrl }) { [styles.active]: active && selected, })} > - {(label && typeof label === 'string') ?? value - ? safeDecodeURI(label || value) - : label || value} + {label || value} {externalUrl && ( From 625589b27424a0f39f7d78e3173c5385bbde102b Mon Sep 17 00:00:00 2001 From: Alessio Forti Date: Thu, 21 Apr 2022 22:05:18 +0200 Subject: [PATCH 10/19] Updated it-IT.json --- lang/it-IT.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lang/it-IT.json b/lang/it-IT.json index 986444cc..71c22142 100644 --- a/lang/it-IT.json +++ b/lang/it-IT.json @@ -12,7 +12,7 @@ "label.change-password": "Modifica password", "label.confirm-password": "Conferma password", "label.copy-to-clipboard": "Copia", - "label.current-password": "Password corrente", + "label.current-password": "Password attuale", "label.custom-range": "Personalizzato", "label.dashboard": "Pannello di Controllo", "label.date-range": "Periodo", @@ -28,7 +28,7 @@ "label.enable-share-url": "Abilita URL di condivisione", "label.invalid": "Non valido", "label.invalid-domain": "Dominio non valido", - "label.language": "Language", + "label.language": "Lingua", "label.last-days": "Ultimi {x} giorni", "label.last-hours": "Ultime {x} ore", "label.logged-in-as": "Ciao {username}", @@ -51,7 +51,7 @@ "label.settings": "Impostazioni", "label.share-url": "Condividi link", "label.single-day": "Singolo giorno", - "label.theme": "Theme", + "label.theme": "Tema", "label.this-month": "Questo mese", "label.this-week": "Questa settimana", "label.this-year": "Quest'anno", @@ -64,7 +64,7 @@ "label.websites": "Siti web", "message.active-users": "{x} {x, plural, one {visitatore} other {visitatori}} online", "message.confirm-delete": "Sei sicuro di voler eliminare {target}?", - "message.confirm-reset": "Are your sure you want to reset {target}'s statistics?", + "message.confirm-reset": "Sei sicuro di voler azzerare le statistiche di {target}?", "message.copied": "Copiato!", "message.delete-warning": "Saranno eliminati anche tutti i dati associati.", "message.failure": "Si è verificato un errore.", @@ -73,7 +73,7 @@ "message.go-to-settings": "Vai alle impostazioni", "message.incorrect-username-password": "Username o password non corretti.", "message.log.visitor": "Utenti da {country} tramite {browser} su {os} {device}", - "message.new-version-available": "Una nuova versione umami {version} è disponibile!", + "message.new-version-available": "Una nuova versione {version} di umami è disponibile!", "message.no-data-available": "Nessun dato disponibile.", "message.no-websites-configured": "Non hai ancora configurato alcun sito.", "message.page-not-found": "Pagina non trovata", @@ -103,7 +103,7 @@ "metrics.operating-systems": "Sistemi operativi", "metrics.page-views": "Visualizzazioni di pagina", "metrics.pages": "Pagine", - "metrics.referrers": "Referr", + "metrics.referrers": "Referrers", "metrics.unique-visitors": "Visitatori unici", "metrics.views": "Visualizzazioni", "metrics.visitors": "Visitatori" From 65bdfa6f0e32d7ddb9f5959f50e0c8e54e707101 Mon Sep 17 00:00:00 2001 From: ym-project Date: Fri, 22 Apr 2022 23:04:29 +0300 Subject: [PATCH 11/19] update ru-RU locale --- lang/ru-RU.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lang/ru-RU.json b/lang/ru-RU.json index 940136e3..be61788a 100644 --- a/lang/ru-RU.json +++ b/lang/ru-RU.json @@ -28,7 +28,7 @@ "label.enable-share-url": "Разрешить делиться ссылкой", "label.invalid": "Некорректный", "label.invalid-domain": "Некорректный домен", - "label.language": "Language", + "label.language": "Язык", "label.last-days": "Последние {x} дней", "label.last-hours": "Последние {x} часа", "label.logged-in-as": "Вы вошли как {username}", @@ -51,7 +51,7 @@ "label.settings": "Настройки", "label.share-url": "Поделиться ссылкой", "label.single-day": "Один день", - "label.theme": "Theme", + "label.theme": "Тема", "label.this-month": "Этот месяц", "label.this-week": "Эта неделя", "label.this-year": "Этот год", From 86966f46e5223b0ca24428ba3dad5e86e6a43aff Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Mon, 25 Apr 2022 18:31:13 -0700 Subject: [PATCH 12/19] Updated packages. Updated language bundles. --- package.json | 2 +- public/intl/messages/it-IT.json | 16 +- yarn.lock | 251 +++++++++++++++++++------------- 3 files changed, 156 insertions(+), 113 deletions(-) diff --git a/package.json b/package.json index 65340614..a7184f16 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "download-language-names": "node scripts/download-language-names.js", "change-password": "node scripts/change-password.js", "lint": "next lint --quiet", - "prepare": "husky install", + "prepare": "node -e \"if (process.env.NODE_ENV !== 'production'){process.exit(1)} \" || husky install", "postbuild": "node scripts/postbuild.js" }, "lint-staged": { diff --git a/public/intl/messages/it-IT.json b/public/intl/messages/it-IT.json index b0d0b0e3..fca4126e 100644 --- a/public/intl/messages/it-IT.json +++ b/public/intl/messages/it-IT.json @@ -80,7 +80,7 @@ "label.current-password": [ { "type": 0, - "value": "Password corrente" + "value": "Password attuale" } ], "label.custom-range": [ @@ -176,7 +176,7 @@ "label.language": [ { "type": 0, - "value": "Language" + "value": "Lingua" } ], "label.last-days": [ @@ -334,7 +334,7 @@ "label.theme": [ { "type": 0, - "value": "Theme" + "value": "Tema" } ], "label.this-month": [ @@ -452,7 +452,7 @@ "message.confirm-reset": [ { "type": 0, - "value": "Are your sure you want to reset " + "value": "Sei sicuro di voler azzerare le statistiche di " }, { "type": 1, @@ -460,7 +460,7 @@ }, { "type": 0, - "value": "'s statistics?" + "value": "?" } ], "message.copied": [ @@ -542,7 +542,7 @@ "message.new-version-available": [ { "type": 0, - "value": "Una nuova versione umami " + "value": "Una nuova versione " }, { "type": 1, @@ -550,7 +550,7 @@ }, { "type": 0, - "value": " è disponibile!" + "value": " di umami è disponibile!" } ], "message.no-data-available": [ @@ -774,7 +774,7 @@ "metrics.referrers": [ { "type": 0, - "value": "Referr" + "value": "Referrers" } ], "metrics.unique-visitors": [ diff --git a/yarn.lock b/yarn.lock index 782571a2..ac65f043 100644 --- a/yarn.lock +++ b/yarn.lock @@ -265,7 +265,7 @@ "@babel/traverse" "^7.17.0" "@babel/types" "^7.17.0" -"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.7": +"@babel/highlight@^7.10.4": version "7.16.10" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== @@ -274,6 +274,15 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.16.7": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" + integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3": version "7.17.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0" @@ -952,9 +961,9 @@ "@babel/plugin-transform-typescript" "^7.16.7" "@babel/runtime-corejs3@^7.10.2": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.8.tgz#d7dd49fb812f29c61c59126da3792d8740d4e284" - integrity sha512-ZbYSUvoSF6dXZmMl/CYTMOvzIFnbGfv4W3SEHYgMvNsFTeLaF2gkGAF4K2ddmtSK4Emej+0aYcnSC6N5dPCXUQ== + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz#3d02d0161f0fbf3ada8e88159375af97690f4055" + integrity sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw== dependencies: core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" @@ -967,9 +976,9 @@ regenerator-runtime "^0.13.4" "@babel/runtime@^7.10.2", "@babel/runtime@^7.16.3": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.8.tgz#3e56e4aff81befa55ac3ac6a0967349fd1c5bca2" - integrity sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA== + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" + integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== dependencies: regenerator-runtime "^0.13.4" @@ -1186,10 +1195,10 @@ "@formatjs/ecma402-abstract" "1.4.0" tslib "^2.0.1" -"@formatjs/intl@2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-2.1.1.tgz#288f130a15b85ec1f4d022a379a5c88b27767bcb" - integrity sha512-iUjBnV2XE+mS3run+Rj/96rfxvwSiCsqMrSbIWoU4dOjIYil7boZK2mCamxoz8CqiiL4VD4ym5EEDbYPWirlFA== +"@formatjs/intl@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-2.2.0.tgz#3714952ea33f5f23a416ed8d1ca369f3cb18dddd" + integrity sha512-2wLE64ns7QcQvqeNmwIFZBnDZ6XcL1QKx+x7A9J25XykCIgIMZNF5Dx7LAxJplCLRCqh2Eh0Q4ZVC1GLcZA4MQ== dependencies: "@formatjs/ecma402-abstract" "1.11.4" "@formatjs/fast-memoize" "1.2.1" @@ -1256,10 +1265,10 @@ resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.5.tgz#a21ba6708022d630402ca2b340316e69a0296dfc" integrity sha512-+34yUJslfJi7Lyx6ELuN8nWcOzi27izfYnZIC1Dqv7kmmfiBVxgzR3BXhlvEMTKC2IRJhXVs2FkMY+buQe3k7Q== -"@next/eslint-plugin-next@12.1.4": - version "12.1.4" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.1.4.tgz#9c52637af8eecab24dac3f2e5098376f6fc2dff4" - integrity sha512-BRy565KVK6Cdy8LHaHTiwctLqBu/RT84RLpESug70BDJzBlV8QBvODyx/j7wGhvYqp9kvstM05lyb6JaTkSCcQ== +"@next/eslint-plugin-next@12.1.5": + version "12.1.5" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.1.5.tgz#273885b35e6bbcd40ff1436d2a8d0ec03fb6f6ef" + integrity sha512-Cnb8ERC5bNKBFrnMH6203sp/b0Y78QRx1XsFu+86oBtDBmQmOFoHu7teQjHm69ER73XKK3aGaeoLiXacHoUFsg== dependencies: glob "7.1.7" @@ -1690,14 +1699,14 @@ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/prop-types@*": - version "15.7.4" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" - integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== -"@types/react@*", "@types/react@16 || 17": - version "17.0.43" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.43.tgz#4adc142887dd4a2601ce730bc56c3436fdb07a55" - integrity sha512-8Q+LNpdxf057brvPu1lMtC5Vn7J119xrP1aq4qiaefNioQUYANF/CYeK4NsKorSZyUGJ66g0IM+4bbjwx45o2A== +"@types/react@*", "@types/react@16 || 17 || 18": + version "18.0.5" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.5.tgz#1a4d4b705ae6af5aed369dec22800b20f89f5301" + integrity sha512-UPxNGInDCIKlfqBrm8LDXYWNfLHwIdisWcsH5GpMyGjhEDLFgTtlRBaoWuCua9HcyuE0rMkmAeZ3FXV1pYLIYQ== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -1999,22 +2008,24 @@ array-union@^2.1.0: integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== array.prototype.flat@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" - integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" + integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.19.0" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" array.prototype.flatmap@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz#908dc82d8a406930fdf38598d51e7411d18d4446" - integrity sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA== + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" + integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.19.0" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" arrify@^1.0.1: version "1.0.1" @@ -2384,9 +2395,9 @@ core-js-compat@^3.20.2, core-js-compat@^3.21.0: semver "7.0.0" core-js-pure@^3.20.2: - version "3.21.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51" - integrity sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ== + version "3.22.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.22.0.tgz#0eaa54b6d1f4ebb4d19976bb4916dfad149a3747" + integrity sha512-ylOC9nVy0ak1N+fPIZj00umoZHgUVqmucklP5RT5N+vJof38klKn8Ze6KGyvchdClvEBr6LcQqJpI216LUMqYA== cors@^2.8.5: version "2.8.5" @@ -2674,11 +2685,12 @@ deepmerge@^4.2.2: integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== dependencies: - object-keys "^1.0.12" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" del@^6.0.0: version "6.0.0" @@ -2819,10 +2831,10 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.19.0, es-abstract@^1.19.1: - version "1.19.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.2.tgz#8f7b696d8f15b167ae3640b4060670f3d054143f" - integrity sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w== +es-abstract@^1.19.1, es-abstract@^1.19.2: + version "1.19.5" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.5.tgz#a2cb01eb87f724e815b278b0dd0d00f36ca9a7f1" + integrity sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA== dependencies: call-bind "^1.0.2" es-to-primitive "^1.2.1" @@ -2835,7 +2847,7 @@ es-abstract@^1.19.0, es-abstract@^1.19.1: is-callable "^1.2.4" is-negative-zero "^2.0.2" is-regex "^1.1.4" - is-shared-array-buffer "^1.0.1" + is-shared-array-buffer "^1.0.2" is-string "^1.0.7" is-weakref "^1.0.2" object-inspect "^1.12.0" @@ -2845,6 +2857,13 @@ es-abstract@^1.19.0, es-abstract@^1.19.1: string.prototype.trimstart "^1.0.4" unbox-primitive "^1.0.1" +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -2870,11 +2889,11 @@ escape-string-regexp@^4.0.0: integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== eslint-config-next@^12.0.1: - version "12.1.4" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.1.4.tgz#939ea2ff33034763300bf1e62482cea91212d274" - integrity sha512-Uj0jrVjoQbg9qerxRjSHoOOv3PEzoZxpb8G9LYct25fsflP8xIiUq0l4WEu2KSB5owuLv5hie7wSMqPEsHj+bQ== + version "12.1.5" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.1.5.tgz#658cc61194a32dfd917a3db199351396ea5db1d1" + integrity sha512-P+DCt5ti63KhC0qNLzrAmPcwRGq8pYqgcf/NNr1E+WjCrMkWdCAXkIANTquo+kcO1adR2k1lTo5GCrNUtKy4hQ== dependencies: - "@next/eslint-plugin-next" "12.1.4" + "@next/eslint-plugin-next" "12.1.5" "@rushstack/eslint-patch" "1.0.8" "@typescript-eslint/parser" "5.10.1" eslint-import-resolver-node "0.3.4" @@ -3296,7 +3315,7 @@ fraction.js@^4.2.0: resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== -fs-extra@10, fs-extra@^10.0.1: +fs-extra@10: version "10.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.1.tgz#27de43b4320e833f6867cc044bfce29fdf0ef3b8" integrity sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag== @@ -3305,6 +3324,15 @@ fs-extra@10, fs-extra@^10.0.1: jsonfile "^6.0.1" universalify "^2.0.0" +fs-extra@^10.0.1: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + 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.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" @@ -3342,6 +3370,11 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +functions-have-names@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.2.tgz#98d93991c39da9361f8e50b337c4f6e41f120e21" + integrity sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA== + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -3455,11 +3488,16 @@ globjoin@^0.1.4: resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" integrity sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM= -graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: +graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.2.4: version "4.2.9" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== +graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + hard-rejection@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" @@ -3480,6 +3518,13 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" @@ -3518,10 +3563,10 @@ hosted-git-info@^4.0.1: dependencies: lru-cache "^6.0.0" -html-tags@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" - integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== +html-tags@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.2.0.tgz#dbb3518d20b726524e4dd43de397eb0a95726961" + integrity sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg== human-signals@^2.1.0: version "2.1.0" @@ -3712,9 +3757,9 @@ is-negative-zero@^2.0.2: integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== dependencies: has-tostringtag "^1.0.0" @@ -3771,10 +3816,12 @@ is-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-2.1.0.tgz#cd734a56864e23b956bf4e7c66c396a4c0b22c2d" integrity sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA== -is-shared-array-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" - integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" is-stream@^2.0.0: version "2.0.1" @@ -4112,11 +4159,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru-cache@^7.4.0: - version "7.8.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.8.0.tgz#649aaeb294a56297b5cbc5d70f198dcc5ebe5747" - integrity sha512-AmXqneQZL3KZMIgBpaPTeI6pfwh+xQ2vutMsyqOu1TBdEXFZgpG/80wuJ531w2ZN7TI0/oc8CPxzh/DKQudZqg== - magic-string@^0.25.0, magic-string@^0.25.7: version "0.25.9" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" @@ -4214,7 +4256,7 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -micromatch@^4.0.4: +micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -4311,9 +4353,9 @@ nanoid@^3.1.30: integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== nanoid@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.2.tgz#c89622fafb4381cd221421c69ec58547a1eec557" - integrity sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA== + version "3.3.3" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== natural-compare@^1.4.0: version "1.4.0" @@ -4441,7 +4483,7 @@ object-inspect@^1.12.0, object-inspect@^1.9.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== -object-keys@^1.0.12, object-keys@^1.1.1: +object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -4925,9 +4967,9 @@ postcss-resolve-nested-selector@^0.1.1: integrity sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4= postcss-rtlcss@^3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/postcss-rtlcss/-/postcss-rtlcss-3.6.1.tgz#e530e08bfe36b01a49167e015e5f047a632ca9b4" - integrity sha512-eliUNvupb9AYn3JpW+L3aaOWeAPh8n6NPVynAoju2mimhO1dz5PTPQAlnhnzYwpqSusTxgZxYjr+RviE5MmSLg== + version "3.6.3" + resolved "https://registry.yarnpkg.com/postcss-rtlcss/-/postcss-rtlcss-3.6.3.tgz#aabd1122a5b082157ea06d606c441002c1060030" + integrity sha512-jJlS7gM5JPH8n/hcHqqekK8wusdFEFYi79mBvAK2GWvl3aehOFgj9vEMwFzUTJrrErakYTgiQ+uuGAzdL98g0g== dependencies: rtlcss "^3.5.0" @@ -4943,18 +4985,18 @@ postcss-selector-not@^5.0.0: dependencies: balanced-match "^1.0.0" -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.9: - version "6.0.9" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" - integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.6, postcss-selector-parser@^6.0.9: + version "6.0.10" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" + integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-selector-parser@^6.0.6: - version "6.0.10" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" - integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: + version "6.0.9" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" + integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -5065,17 +5107,17 @@ react-fast-compare@^2.0.1: integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw== react-intl@^5.24.7: - version "5.24.8" - resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-5.24.8.tgz#8387205a8e125ce057fc260108b02ad00b22e9b6" - integrity sha512-uFBA7Fvh3XsHVn6b+jgVTk8hMBpQFvkterWwq4KHrjn8nMmLJf6lGqPawAcmhXes0q29JruCQyKX0vj+G7iokA== + version "5.25.0" + resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-5.25.0.tgz#8827e5fdb839055028b53005a221d1995c386591" + integrity sha512-jIgmCy9s2IVFdQHEe2LzW023wKDQwgKXPdxg6WwuUJxR9BHPBPGLj01rxc3gLZ3aKDuL91SsFPAlx+qEy7+k0w== dependencies: "@formatjs/ecma402-abstract" "1.11.4" "@formatjs/icu-messageformat-parser" "2.0.19" - "@formatjs/intl" "2.1.1" + "@formatjs/intl" "2.2.0" "@formatjs/intl-displaynames" "5.4.3" "@formatjs/intl-listformat" "6.5.3" "@types/hoist-non-react-statics" "^3.3.1" - "@types/react" "16 || 17" + "@types/react" "16 || 17 || 18" hoist-non-react-statics "^3.3.2" intl-messageformat "9.12.0" tslib "^2.1.0" @@ -5221,12 +5263,13 @@ regenerator-transform@^0.14.2: "@babel/runtime" "^7.8.4" regexp.prototype.flags@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" - integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" + functions-have-names "^1.2.2" regexpp@^3.1.0: version "3.2.0" @@ -5356,9 +5399,9 @@ rollup-plugin-terser@^7.0.2: terser "^5.0.0" rollup@^2.70.1: - version "2.70.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.70.1.tgz#824b1f1f879ea396db30b0fc3ae8d2fead93523e" - integrity sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA== + version "2.70.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.70.2.tgz#808d206a8851628a065097b7ba2053bd83ba0c0d" + integrity sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg== optionalDependencies: fsevents "~2.3.2" @@ -5443,19 +5486,19 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.2.1, semver@^7.3.4, semver@^7.3.5: +semver@^7.2.1: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: lru-cache "^6.0.0" -semver@^7.3.6: - version "7.3.6" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.6.tgz#5d73886fb9c0c6602e79440b97165c29581cbb2b" - integrity sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w== +semver@^7.3.4, semver@^7.3.5, semver@^7.3.6: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== dependencies: - lru-cache "^7.4.0" + lru-cache "^6.0.0" serialize-javascript@^4.0.0: version "4.0.0" @@ -5751,9 +5794,9 @@ stylelint-scss@^4.2.0: postcss-value-parser "^4.1.0" stylelint@^14.5.3: - version "14.6.1" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.6.1.tgz#aff137b0254515fc36b91921d88a3eb2edc194bf" - integrity sha512-FfNdvZUZdzh9KDQxDnO7Opp+prKh8OQVuSW8S13cBtxrooCbm6J6royhUeb++53WPMt04VB+ZbOz/QmzAijs6Q== + version "14.7.1" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.7.1.tgz#f1b3236cbf9e1b25a04d03f76250943a58d3f37f" + integrity sha512-rUOWm67hrzGXXyO/cInENEejF4urh1dLgOb9cr/3XLDb/t/A+rXQp3p6+no8o8QCKTgBUdhVUq/bXMgE988PJw== dependencies: balanced-match "^2.0.0" colord "^2.9.2" @@ -5768,7 +5811,7 @@ stylelint@^14.5.3: global-modules "^2.0.0" globby "^11.1.0" globjoin "^0.1.4" - html-tags "^3.1.0" + html-tags "^3.2.0" ignore "^5.2.0" import-lazy "^4.0.0" imurmurhash "^0.1.4" @@ -5776,7 +5819,7 @@ stylelint@^14.5.3: known-css-properties "^0.24.0" mathml-tag-names "^2.1.3" meow "^9.0.0" - micromatch "^4.0.4" + micromatch "^4.0.5" normalize-path "^3.0.0" normalize-selector "^0.2.0" picocolors "^1.0.0" @@ -5784,7 +5827,7 @@ stylelint@^14.5.3: postcss-media-query-parser "^0.2.3" postcss-resolve-nested-selector "^0.1.1" postcss-safe-parser "^6.0.0" - postcss-selector-parser "^6.0.9" + postcss-selector-parser "^6.0.10" postcss-value-parser "^4.2.0" resolve-from "^5.0.0" specificity "^0.4.1" From 1678d9e1aba736f7c9ef11d7b79817cafab43c1c Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Mon, 25 Apr 2022 19:11:54 -0700 Subject: [PATCH 13/19] Changed hash method again. --- lib/crypto.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/crypto.js b/lib/crypto.js index c684f2d6..e59b0193 100644 --- a/lib/crypto.js +++ b/lib/crypto.js @@ -14,7 +14,7 @@ export function hash(...args) { } export function secret() { - return hash(process.env.DATABASE_URL, process.env.HASH_SALT); + return hash(process.env.HASH_SALT || process.env.DATABASE_URL); } export function salt() { From 699740dc34cf6e1a312daa6f3eb6e9f04f1a5b4c Mon Sep 17 00:00:00 2001 From: "isNullOrEmpty()" Date: Wed, 27 Apr 2022 10:05:24 +0000 Subject: [PATCH 14/19] fix: cover edge case of script name --- pages/_middleware.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/_middleware.js b/pages/_middleware.js index 0c58633b..801fdd9c 100644 --- a/pages/_middleware.js +++ b/pages/_middleware.js @@ -6,7 +6,7 @@ function customScriptName(req) { if (scriptName) { const url = req.nextUrl.clone(); const { pathname } = url; - const names = scriptName.split(',').map(name => (name + '.js').trim()); + const names = scriptName.split(',').map(name => name.trim() + '.js'); if (names.find(name => pathname.endsWith(name))) { url.pathname = '/umami.js'; From f7c1d5b72646f578edc84e149d4b39118a054202 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Fri, 29 Apr 2022 20:50:54 -0700 Subject: [PATCH 15/19] Updated language bundle. --- public/intl/messages/ru-RU.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/intl/messages/ru-RU.json b/public/intl/messages/ru-RU.json index c0921c14..ea45447e 100644 --- a/public/intl/messages/ru-RU.json +++ b/public/intl/messages/ru-RU.json @@ -176,7 +176,7 @@ "label.language": [ { "type": 0, - "value": "Language" + "value": "Язык" } ], "label.last-days": [ @@ -334,7 +334,7 @@ "label.theme": [ { "type": 0, - "value": "Theme" + "value": "Тема" } ], "label.this-month": [ From b5de6b997ed2e3d169b491a51b98e885ff2e70d5 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Fri, 29 Apr 2022 20:53:00 -0700 Subject: [PATCH 16/19] Reverted Next to v12.1.0 due to Heroku issues. --- package.json | 2 +- yarn.lock | 152 ++++++++++++++++++++++++++------------------------- 2 files changed, 78 insertions(+), 76 deletions(-) diff --git a/package.json b/package.json index a7184f16..36672995 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,7 @@ "jose": "2.0.5", "maxmind": "^4.3.6", "moment-timezone": "^0.5.33", - "next": "12.1.5", + "next": "12.1.0", "node-fetch": "^3.2.3", "npm-run-all": "^4.1.5", "prop-types": "^15.7.2", diff --git a/yarn.lock b/yarn.lock index ac65f043..c8f6ee35 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1260,10 +1260,10 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@next/env@12.1.5": - version "12.1.5" - resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.5.tgz#a21ba6708022d630402ca2b340316e69a0296dfc" - integrity sha512-+34yUJslfJi7Lyx6ELuN8nWcOzi27izfYnZIC1Dqv7kmmfiBVxgzR3BXhlvEMTKC2IRJhXVs2FkMY+buQe3k7Q== +"@next/env@12.1.0": + version "12.1.0" + resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.0.tgz#73713399399b34aa5a01771fb73272b55b22c314" + integrity sha512-nrIgY6t17FQ9xxwH3jj0a6EOiQ/WDHUos35Hghtr+SWN/ntHIQ7UpuvSi0vaLzZVHQWaDupKI+liO5vANcDeTQ== "@next/eslint-plugin-next@12.1.5": version "12.1.5" @@ -1272,65 +1272,60 @@ dependencies: glob "7.1.7" -"@next/swc-android-arm-eabi@12.1.5": - version "12.1.5" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.5.tgz#36729ab3dfd7743e82cfe536b43254dcb146620c" - integrity sha512-SKnGTdYcoN04Y2DvE0/Y7/MjkA+ltsmbuH/y/hR7Ob7tsj+8ZdOYuk+YvW1B8dY20nDPHP58XgDTSm2nA8BzzA== +"@next/swc-android-arm64@12.1.0": + version "12.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.0.tgz#865ba3a9afc204ff2bdeea49dd64d58705007a39" + integrity sha512-/280MLdZe0W03stA69iL+v6I+J1ascrQ6FrXBlXGCsGzrfMaGr7fskMa0T5AhQIVQD4nA/46QQWxG//DYuFBcA== -"@next/swc-android-arm64@12.1.5": - version "12.1.5" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.5.tgz#52578f552305c92d0b9b81d603c9643fb71e0835" - integrity sha512-YXiqgQ/9Rxg1dXp6brXbeQM1JDx9SwUY/36JiE+36FXqYEmDYbxld9qkX6GEzkc5rbwJ+RCitargnzEtwGW0mw== +"@next/swc-darwin-arm64@12.1.0": + version "12.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.0.tgz#08e8b411b8accd095009ed12efbc2f1d4d547135" + integrity sha512-R8vcXE2/iONJ1Unf5Ptqjk6LRW3bggH+8drNkkzH4FLEQkHtELhvcmJwkXcuipyQCsIakldAXhRbZmm3YN1vXg== -"@next/swc-darwin-arm64@12.1.5": - version "12.1.5" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.5.tgz#3d5b53211484c72074f4975ba0ec2b1107db300e" - integrity sha512-y8mhldb/WFZ6lFeowkGfi0cO/lBdiBqDk4T4LZLvCpoQp4Or/NzUN6P5NzBQZ5/b4oUHM/wQICEM+1wKA4qIVw== +"@next/swc-darwin-x64@12.1.0": + version "12.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.0.tgz#fcd684497a76e8feaca88db3c394480ff0b007cd" + integrity sha512-ieAz0/J0PhmbZBB8+EA/JGdhRHBogF8BWaeqR7hwveb6SYEIJaDNQy0I+ZN8gF8hLj63bEDxJAs/cEhdnTq+ug== -"@next/swc-darwin-x64@12.1.5": - version "12.1.5" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.5.tgz#adcabb732d226453777c0d37d58eaff9328b66fd" - integrity sha512-wqJ3X7WQdTwSGi0kIDEmzw34QHISRIQ5uvC+VXmsIlCPFcMA+zM5723uh8NfuKGquDMiEMS31a83QgkuHMYbwQ== +"@next/swc-linux-arm-gnueabihf@12.1.0": + version "12.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.0.tgz#9ec6380a27938a5799aaa6035c205b3c478468a7" + integrity sha512-njUd9hpl6o6A5d08dC0cKAgXKCzm5fFtgGe6i0eko8IAdtAPbtHxtpre3VeSxdZvuGFh+hb0REySQP9T1ttkog== -"@next/swc-linux-arm-gnueabihf@12.1.5": - version "12.1.5" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.5.tgz#82a7cde67482b756bc65fbebf1dfa8a782074e93" - integrity sha512-WnhdM5duONMvt2CncAl+9pim0wBxDS2lHoo7ub/o/i1bRbs11UTzosKzEXVaTDCUkCX2c32lIDi1WcN2ZPkcdw== +"@next/swc-linux-arm64-gnu@12.1.0": + version "12.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.0.tgz#7f4196dff1049cea479607c75b81033ae2dbd093" + integrity sha512-OqangJLkRxVxMhDtcb7Qn1xjzFA3s50EIxY7mljbSCLybU+sByPaWAHY4px97ieOlr2y4S0xdPKkQ3BCAwyo6Q== -"@next/swc-linux-arm64-gnu@12.1.5": - version "12.1.5" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.5.tgz#f82ca014504950aab751e81f467492e9be0bad5d" - integrity sha512-Jq2H68yQ4bLUhR/XQnbw3LDW0GMQn355qx6rU36BthDLeGue7YV7MqNPa8GKvrpPocEMW77nWx/1yI6w6J07gw== +"@next/swc-linux-arm64-musl@12.1.0": + version "12.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.0.tgz#b445f767569cdc2dddee785ca495e1a88c025566" + integrity sha512-hB8cLSt4GdmOpcwRe2UzI5UWn6HHO/vLkr5OTuNvCJ5xGDwpPXelVkYW/0+C3g5axbDW2Tym4S+MQCkkH9QfWA== -"@next/swc-linux-arm64-musl@12.1.5": - version "12.1.5" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.5.tgz#f811ec9f4b12a978426c284c95ab2f515ddf7f9e" - integrity sha512-KgPjwdbhDqXI7ghNN8V/WAiLquc9Ebe8KBrNNEL0NQr+yd9CyKJ6KqjayVkmX+hbHzbyvbui/5wh/p3CZQ9xcQ== +"@next/swc-linux-x64-gnu@12.1.0": + version "12.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.0.tgz#67610e9be4fbc987de7535f1bcb17e45fe12f90e" + integrity sha512-OKO4R/digvrVuweSw/uBM4nSdyzsBV5EwkUeeG4KVpkIZEe64ZwRpnFB65bC6hGwxIBnTv5NMSnJ+0K/WmG78A== -"@next/swc-linux-x64-gnu@12.1.5": - version "12.1.5" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.5.tgz#d44857257e6d20dc841998951d584ab1f25772c3" - integrity sha512-O2ErUTvCJ6DkNTSr9pbu1n3tcqykqE/ebty1rwClzIYdOgpB3T2MfEPP+K7GhUR87wmN/hlihO9ch7qpVFDGKw== +"@next/swc-linux-x64-musl@12.1.0": + version "12.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.0.tgz#ea19a23db08a9f2e34ac30401f774cf7d1669d31" + integrity sha512-JohhgAHZvOD3rQY7tlp7NlmvtvYHBYgY0x5ZCecUT6eCCcl9lv6iV3nfu82ErkxNk1H893fqH0FUpznZ/H3pSw== -"@next/swc-linux-x64-musl@12.1.5": - version "12.1.5" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.5.tgz#3cc523abadc9a2a6de680593aff06e71cc29ecef" - integrity sha512-1eIlZmlO/VRjxxzUBcVosf54AFU3ltAzHi+BJA+9U/lPxCYIsT+R4uO3QksRzRjKWhVQMRjEnlXyyq5SKJm7BA== +"@next/swc-win32-arm64-msvc@12.1.0": + version "12.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.0.tgz#eadf054fc412085659b98e145435bbba200b5283" + integrity sha512-T/3gIE6QEfKIJ4dmJk75v9hhNiYZhQYAoYm4iVo1TgcsuaKLFa+zMPh4056AHiG6n9tn2UQ1CFE8EoybEsqsSw== -"@next/swc-win32-arm64-msvc@12.1.5": - version "12.1.5" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.5.tgz#c62232d869f1f9b22e8f24e4e7f05307c20f30ca" - integrity sha512-oromsfokbEuVb0CBLLE7R9qX3KGXucZpsojLpzUh1QJjuy1QkrPJncwr8xmWQnwgtQ6ecMWXgXPB+qtvizT9Tw== +"@next/swc-win32-ia32-msvc@12.1.0": + version "12.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.0.tgz#68faeae10c89f698bf9d28759172b74c9c21bda1" + integrity sha512-iwnKgHJdqhIW19H9PRPM9j55V6RdcOo6rX+5imx832BCWzkDbyomWnlzBfr6ByUYfhohb8QuH4hSGEikpPqI0Q== -"@next/swc-win32-ia32-msvc@12.1.5": - version "12.1.5" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.5.tgz#2bd9b28a9ba730d12a493e7d9d18e150fe89d496" - integrity sha512-a/51L5KzBpeZSW9LbekMo3I3Cwul+V+QKwbEIMA+Qwb2qrlcn1L9h3lt8cHqNTFt2y72ce6aTwDTw1lyi5oIRA== - -"@next/swc-win32-x64-msvc@12.1.5": - version "12.1.5" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.5.tgz#02f377e4d41eaaacf265e34bab9bacd8efc4a351" - integrity sha512-/SoXW1Ntpmpw3AXAzfDRaQidnd8kbZ2oSni8u5z0yw6t4RwJvmdZy1eOaAADRThWKV+2oU90++LSnXJIwBRWYQ== +"@next/swc-win32-x64-msvc@12.1.0": + version "12.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.0.tgz#d27e7e76c87a460a4da99c5bfdb1618dcd6cd064" + integrity sha512-aBvcbMwuanDH4EMrL2TthNJy+4nP59Bimn8egqv6GHMVj0a44cU6Au4PjOhLNqEh9l+IpRGBqMTzec94UdC5xg== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -4362,28 +4357,28 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -next@12.1.5: - version "12.1.5" - resolved "https://registry.yarnpkg.com/next/-/next-12.1.5.tgz#7a07687579ddce61ee519493e1c178d83abac063" - integrity sha512-YGHDpyfgCfnT5GZObsKepmRnne7Kzp7nGrac07dikhutWQug7hHg85/+sPJ4ZW5Q2pDkb+n0FnmLkmd44htIJQ== +next@12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/next/-/next-12.1.0.tgz#c33d753b644be92fc58e06e5a214f143da61dd5d" + integrity sha512-s885kWvnIlxsUFHq9UGyIyLiuD0G3BUC/xrH0CEnH5lHEWkwQcHOORgbDF0hbrW9vr/7am4ETfX4A7M6DjrE7Q== dependencies: - "@next/env" "12.1.5" + "@next/env" "12.1.0" caniuse-lite "^1.0.30001283" postcss "8.4.5" - styled-jsx "5.0.1" + styled-jsx "5.0.0" + use-subscription "1.5.1" optionalDependencies: - "@next/swc-android-arm-eabi" "12.1.5" - "@next/swc-android-arm64" "12.1.5" - "@next/swc-darwin-arm64" "12.1.5" - "@next/swc-darwin-x64" "12.1.5" - "@next/swc-linux-arm-gnueabihf" "12.1.5" - "@next/swc-linux-arm64-gnu" "12.1.5" - "@next/swc-linux-arm64-musl" "12.1.5" - "@next/swc-linux-x64-gnu" "12.1.5" - "@next/swc-linux-x64-musl" "12.1.5" - "@next/swc-win32-arm64-msvc" "12.1.5" - "@next/swc-win32-ia32-msvc" "12.1.5" - "@next/swc-win32-x64-msvc" "12.1.5" + "@next/swc-android-arm64" "12.1.0" + "@next/swc-darwin-arm64" "12.1.0" + "@next/swc-darwin-x64" "12.1.0" + "@next/swc-linux-arm-gnueabihf" "12.1.0" + "@next/swc-linux-arm64-gnu" "12.1.0" + "@next/swc-linux-arm64-musl" "12.1.0" + "@next/swc-linux-x64-gnu" "12.1.0" + "@next/swc-linux-x64-musl" "12.1.0" + "@next/swc-win32-arm64-msvc" "12.1.0" + "@next/swc-win32-ia32-msvc" "12.1.0" + "@next/swc-win32-x64-msvc" "12.1.0" nice-try@^1.0.4: version "1.0.5" @@ -5760,10 +5755,10 @@ style-search@^0.1.0: resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902" integrity sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI= -styled-jsx@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.1.tgz#78fecbbad2bf95ce6cd981a08918ce4696f5fc80" - integrity sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw== +styled-jsx@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.0.tgz#816b4b92e07b1786c6b7111821750e0ba4d26e77" + integrity sha512-qUqsWoBquEdERe10EW8vLp3jT25s/ssG1/qX5gZ4wu15OZpmSMFI2v+fWlRhLfykA5rFtlJ1ME8A8pm/peV4WA== stylelint-config-css-modules@^4.1.0: version "4.1.0" @@ -6135,6 +6130,13 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +use-subscription@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.5.1.tgz#73501107f02fad84c6dd57965beb0b75c68c42d1" + integrity sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA== + dependencies: + object-assign "^4.1.1" + util-deprecate@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" From e735a1c50d2f4ba6cc2c70c653c78ad856f09669 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Thu, 5 May 2022 19:04:28 -0700 Subject: [PATCH 17/19] Updated share token logic. Closes #1113. --- components/metrics/ActiveUsers.js | 6 +---- components/metrics/EventsChart.js | 5 +--- components/metrics/MetricsBar.js | 4 --- components/metrics/MetricsTable.js | 5 +--- components/metrics/WebsiteChart.js | 4 --- components/pages/RealtimeDashboard.js | 4 +-- components/pages/WebsiteDetails.js | 8 ++---- hooks/useApi.js | 39 +++++++++++++++++++++------ hooks/useShareToken.js | 1 + lib/auth.js | 4 +-- lib/constants.js | 2 +- pages/api/realtime/update.js | 4 +-- 12 files changed, 44 insertions(+), 42 deletions(-) diff --git a/components/metrics/ActiveUsers.js b/components/metrics/ActiveUsers.js index 7718b587..653fc783 100644 --- a/components/metrics/ActiveUsers.js +++ b/components/metrics/ActiveUsers.js @@ -3,20 +3,16 @@ import { FormattedMessage } from 'react-intl'; import classNames from 'classnames'; import useFetch from 'hooks/useFetch'; import Dot from 'components/common/Dot'; -import { TOKEN_HEADER } from 'lib/constants'; -import useShareToken from 'hooks/useShareToken'; import styles from './ActiveUsers.module.css'; export default function ActiveUsers({ websiteId, className, value, interval = 60000 }) { - const shareToken = useShareToken(); const url = websiteId ? `/website/${websiteId}/active` : null; const { data } = useFetch(url, { interval, - headers: { [TOKEN_HEADER]: shareToken?.token }, }); const count = useMemo(() => { if (websiteId) { - return data?.[0]?.x || 0 + return data?.[0]?.x || 0; } return value !== undefined ? value : 0; diff --git a/components/metrics/EventsChart.js b/components/metrics/EventsChart.js index c5d6a898..ef9a142f 100644 --- a/components/metrics/EventsChart.js +++ b/components/metrics/EventsChart.js @@ -6,8 +6,7 @@ import useFetch from 'hooks/useFetch'; import useDateRange from 'hooks/useDateRange'; import useTimezone from 'hooks/useTimezone'; import usePageQuery from 'hooks/usePageQuery'; -import useShareToken from 'hooks/useShareToken'; -import { EVENT_COLORS, TOKEN_HEADER } from 'lib/constants'; +import { EVENT_COLORS } from 'lib/constants'; export default function EventsChart({ websiteId, className, token }) { const [{ startDate, endDate, unit, modified }] = useDateRange(websiteId); @@ -15,7 +14,6 @@ export default function EventsChart({ websiteId, className, token }) { const { query: { url, eventType }, } = usePageQuery(); - const shareToken = useShareToken(); const { data, loading } = useFetch( `/website/${websiteId}/events`, @@ -29,7 +27,6 @@ export default function EventsChart({ websiteId, className, token }) { event_type: eventType, token, }, - headers: { [TOKEN_HEADER]: shareToken?.token }, }, [modified, eventType], ); diff --git a/components/metrics/MetricsBar.js b/components/metrics/MetricsBar.js index 290cde81..21928b61 100644 --- a/components/metrics/MetricsBar.js +++ b/components/metrics/MetricsBar.js @@ -6,14 +6,11 @@ import ErrorMessage from 'components/common/ErrorMessage'; import useFetch from 'hooks/useFetch'; import useDateRange from 'hooks/useDateRange'; import usePageQuery from 'hooks/usePageQuery'; -import useShareToken from 'hooks/useShareToken'; import { formatShortTime, formatNumber, formatLongNumber } from 'lib/format'; -import { TOKEN_HEADER } from 'lib/constants'; import MetricCard from './MetricCard'; import styles from './MetricsBar.module.css'; export default function MetricsBar({ websiteId, className }) { - const shareToken = useShareToken(); const [dateRange] = useDateRange(websiteId); const { startDate, endDate, modified } = dateRange; const [format, setFormat] = useState(true); @@ -34,7 +31,6 @@ export default function MetricsBar({ websiteId, className }) { device, country, }, - headers: { [TOKEN_HEADER]: shareToken?.token }, }, [modified, url, referrer, os, browser, device, country], ); diff --git a/components/metrics/MetricsTable.js b/components/metrics/MetricsTable.js index 48e004cb..29121487 100644 --- a/components/metrics/MetricsTable.js +++ b/components/metrics/MetricsTable.js @@ -9,10 +9,9 @@ import Arrow from 'assets/arrow-right.svg'; import { percentFilter } from 'lib/filters'; import useDateRange from 'hooks/useDateRange'; import usePageQuery from 'hooks/usePageQuery'; -import useShareToken from 'hooks/useShareToken'; import ErrorMessage from 'components/common/ErrorMessage'; import DataTable from './DataTable'; -import { DEFAULT_ANIMATION_DURATION, TOKEN_HEADER } from 'lib/constants'; +import { DEFAULT_ANIMATION_DURATION } from 'lib/constants'; import styles from './MetricsTable.module.css'; export default function MetricsTable({ @@ -25,7 +24,6 @@ export default function MetricsTable({ onDataLoad, ...props }) { - const shareToken = useShareToken(); const [{ startDate, endDate, modified }] = useDateRange(websiteId); const { resolve, @@ -49,7 +47,6 @@ export default function MetricsTable({ }, onDataLoad, delay: DEFAULT_ANIMATION_DURATION, - headers: { [TOKEN_HEADER]: shareToken?.token }, }, [modified, url, referrer, os, browser, device, country], ); diff --git a/components/metrics/WebsiteChart.js b/components/metrics/WebsiteChart.js index 03cc7b58..fd74538f 100644 --- a/components/metrics/WebsiteChart.js +++ b/components/metrics/WebsiteChart.js @@ -12,9 +12,7 @@ import useDateRange from 'hooks/useDateRange'; import useTimezone from 'hooks/useTimezone'; import usePageQuery from 'hooks/usePageQuery'; import { getDateArray, getDateLength, getDateRangeValues } from 'lib/date'; -import useShareToken from 'hooks/useShareToken'; import useApi from 'hooks/useApi'; -import { TOKEN_HEADER } from 'lib/constants'; import styles from './WebsiteChart.module.css'; export default function WebsiteChart({ @@ -26,7 +24,6 @@ export default function WebsiteChart({ showChart = true, onDataLoad = () => {}, }) { - const shareToken = useShareToken(); const [dateRange, setDateRange] = useDateRange(websiteId); const { startDate, endDate, unit, value, modified } = dateRange; const [timezone] = useTimezone(); @@ -53,7 +50,6 @@ export default function WebsiteChart({ country, }, onDataLoad, - headers: { [TOKEN_HEADER]: shareToken?.token }, }, [modified, url, referrer, os, browser, device, country], ); diff --git a/components/pages/RealtimeDashboard.js b/components/pages/RealtimeDashboard.js index cd6d2a80..9091b6cd 100644 --- a/components/pages/RealtimeDashboard.js +++ b/components/pages/RealtimeDashboard.js @@ -14,7 +14,7 @@ import useFetch from 'hooks/useFetch'; import useLocale from 'hooks/useLocale'; import useCountryNames from 'hooks/useCountryNames'; import { percentFilter } from 'lib/filters'; -import { TOKEN_HEADER, REALTIME_RANGE, REALTIME_INTERVAL } from 'lib/constants'; +import { SHARE_TOKEN_HEADER, REALTIME_RANGE, REALTIME_INTERVAL } from 'lib/constants'; import styles from './RealtimeDashboard.module.css'; function mergeData(state, data, time) { @@ -38,7 +38,7 @@ export default function RealtimeDashboard() { params: { start_at: data?.timestamp }, disabled: !init?.websites?.length || !data, interval: REALTIME_INTERVAL, - headers: { [TOKEN_HEADER]: init?.token }, + headers: { [SHARE_TOKEN_HEADER]: init?.token }, }); const renderCountryName = useCallback( diff --git a/components/pages/WebsiteDetails.js b/components/pages/WebsiteDetails.js index 3b76cfcb..df31b4d9 100644 --- a/components/pages/WebsiteDetails.js +++ b/components/pages/WebsiteDetails.js @@ -20,8 +20,7 @@ import EventsTable from 'components/metrics/EventsTable'; import EventsChart from 'components/metrics/EventsChart'; import useFetch from 'hooks/useFetch'; import usePageQuery from 'hooks/usePageQuery'; -import useShareToken from 'hooks/useShareToken'; -import { DEFAULT_ANIMATION_DURATION, TOKEN_HEADER } from 'lib/constants'; +import { DEFAULT_ANIMATION_DURATION } from 'lib/constants'; import styles from './WebsiteDetails.module.css'; const views = { @@ -36,10 +35,7 @@ const views = { }; export default function WebsiteDetails({ websiteId }) { - const shareToken = useShareToken(); - const { data } = useFetch(`/website/${websiteId}`, { - headers: { [TOKEN_HEADER]: shareToken?.token }, - }); + const { data } = useFetch(`/website/${websiteId}`); const [chartLoaded, setChartLoaded] = useState(false); const [countryData, setCountryData] = useState(); const [eventsData, setEventsData] = useState(); diff --git a/hooks/useApi.js b/hooks/useApi.js index 35904d7e..b2e74998 100644 --- a/hooks/useApi.js +++ b/hooks/useApi.js @@ -1,13 +1,18 @@ import { useCallback } from 'react'; import { useRouter } from 'next/router'; import { get, post, put, del, getItem } from 'lib/web'; -import { AUTH_TOKEN } from 'lib/constants'; +import { AUTH_TOKEN, SHARE_TOKEN_HEADER } from 'lib/constants'; +import useStore from 'store/app'; -function includeAuthToken(headers = {}) { - const authToken = getItem(AUTH_TOKEN); +const selector = state => state.shareToken; +function parseHeaders(headers = {}, { authToken, shareToken }) { if (authToken) { - headers.Authorization = `Bearer ${authToken}`; + headers.authorization = `Bearer ${authToken}`; + } + + if (shareToken) { + headers[SHARE_TOKEN_HEADER] = shareToken.token; } return headers; @@ -15,32 +20,50 @@ function includeAuthToken(headers = {}) { export default function useApi() { const { basePath } = useRouter(); + const authToken = getItem(AUTH_TOKEN); + const shareToken = useStore(selector); return { get: useCallback( async (url, params, headers) => { - return get(`${basePath}/api${url}`, params, includeAuthToken(headers)); + return get( + `${basePath}/api${url}`, + params, + parseHeaders(headers, { authToken, shareToken }), + ); }, [get], ), post: useCallback( async (url, params, headers) => { - return post(`${basePath}/api${url}`, params, includeAuthToken(headers)); + return post( + `${basePath}/api${url}`, + params, + parseHeaders(headers, { authToken, shareToken }), + ); }, [post], ), put: useCallback( async (url, params, headers) => { - return put(`${basePath}/api${url}`, params, includeAuthToken(headers)); + return put( + `${basePath}/api${url}`, + params, + parseHeaders(headers, { authToken, shareToken }), + ); }, [put], ), del: useCallback( async (url, params, headers) => { - return del(`${basePath}/api${url}`, params, includeAuthToken(headers)); + return del( + `${basePath}/api${url}`, + params, + parseHeaders(headers, { authToken, shareToken }), + ); }, [del], ), diff --git a/hooks/useShareToken.js b/hooks/useShareToken.js index 4084cce2..87b27404 100644 --- a/hooks/useShareToken.js +++ b/hooks/useShareToken.js @@ -6,6 +6,7 @@ const selector = state => state.shareToken; export default function useShareToken(shareId) { const shareToken = useStore(selector); + console.log({ shareToken }); const { get } = useApi(); async function loadToken(id) { diff --git a/lib/auth.js b/lib/auth.js index 9c533e62..e22e5f2c 100644 --- a/lib/auth.js +++ b/lib/auth.js @@ -1,5 +1,5 @@ import { parseSecureToken, parseToken } from './crypto'; -import { TOKEN_HEADER } from './constants'; +import { SHARE_TOKEN_HEADER } from './constants'; import { getWebsiteById } from './queries'; export async function getAuthToken(req) { @@ -30,7 +30,7 @@ export async function isValidToken(token, validation) { export async function allowQuery(req, skipToken) { const { id } = req.query; - const token = req.headers[TOKEN_HEADER]; + const token = req.headers[SHARE_TOKEN_HEADER]; const websiteId = +id; const website = await getWebsiteById(websiteId); diff --git a/lib/constants.js b/lib/constants.js index cdeebf72..13af1f32 100644 --- a/lib/constants.js +++ b/lib/constants.js @@ -5,7 +5,7 @@ export const DATE_RANGE_CONFIG = 'umami.date-range'; export const THEME_CONFIG = 'umami.theme'; export const DASHBOARD_CONFIG = 'umami.dashboard'; export const VERSION_CHECK = 'umami.version-check'; -export const TOKEN_HEADER = 'x-umami-token'; +export const SHARE_TOKEN_HEADER = 'x-umami-share-token'; export const HOMEPAGE_URL = 'https://umami.is'; export const VERSION_URL = 'https://github.com/mikecao/umami/releases'; diff --git a/pages/api/realtime/update.js b/pages/api/realtime/update.js index 730219ae..a43d7b66 100644 --- a/pages/api/realtime/update.js +++ b/pages/api/realtime/update.js @@ -2,7 +2,7 @@ import { useAuth } from 'lib/middleware'; import { ok, methodNotAllowed, badRequest } from 'lib/response'; import { getRealtimeData } from 'lib/queries'; import { parseToken } from 'lib/crypto'; -import { TOKEN_HEADER } from 'lib/constants'; +import { SHARE_TOKEN_HEADER } from 'lib/constants'; export default async (req, res) => { await useAuth(req, res); @@ -10,7 +10,7 @@ export default async (req, res) => { if (req.method === 'GET') { const { start_at } = req.query; - const token = req.headers[TOKEN_HEADER]; + const token = req.headers[SHARE_TOKEN_HEADER]; if (!token) { return badRequest(res); From 5b2628172b7e6ac96340ef920c32b872815a7fd0 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Fri, 6 May 2022 21:57:25 -0700 Subject: [PATCH 18/19] Updated README. --- README.md | 6 ++++++ hooks/useShareToken.js | 1 - 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bb83c665..476319cc 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,12 @@ Umami is a simple, fast, privacy-focused alternative to Google Analytics. A detailed getting started guide can be found at [https://umami.is/docs/](https://umami.is/docs/) +A fast way to get up and running is to use Railway + +[![Deploy on Railway](https://railway.app/button.svg)](https://railway.app/new/template/umami) + +See [Running on Railway](https://umami.is/docs/running-on-railway) to get started. + ## Installing from source ### Requirements diff --git a/hooks/useShareToken.js b/hooks/useShareToken.js index 87b27404..4084cce2 100644 --- a/hooks/useShareToken.js +++ b/hooks/useShareToken.js @@ -6,7 +6,6 @@ const selector = state => state.shareToken; export default function useShareToken(shareId) { const shareToken = useStore(selector); - console.log({ shareToken }); const { get } = useApi(); async function loadToken(id) { From 52fe59f41b4bed9c7e24cc37a3e98b189e9cc048 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Fri, 6 May 2022 22:35:36 -0700 Subject: [PATCH 19/19] Bump version 1.31.0. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 36672995..c8a03ed3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "umami", - "version": "1.30.0", + "version": "1.31.0", "description": "A simple, fast, privacy-focused alternative to Google Analytics.", "author": "Mike Cao ", "license": "MIT",