From 786bce17b49e0b64b6a9f02493083fbc2814d023 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 7 Feb 2024 02:25:47 +0000 Subject: [PATCH] [pre-commit.ci] auto fixes from pre-commit.com hooks [CI SKIP] for more information, see https://pre-commit.ci --- .devcontainer/devcontainer.json | 2 +- .devcontainer/postCreateCommand.sh | 2 +- .dockerignore | 2 +- .gitattributes | 2 +- .github/dependabot.yml | 2 +- .gitignore | 2 +- .woodpecker/.web.yml | 2 +- LICENSE | 2 +- Makefile | 4 +- README.md | 2 +- agent/.env.example | 2 +- docker/.htaccess | 2 +- docker/Dockerfile.agent | 4 +- docker/Dockerfile.server.arm64 | 2 +- docker/my-httpd.conf | 34 ++++++------- docs/docs/30-env-vars.md | 2 +- nfpm/agent.yaml | 2 +- server/.dockerignore | 2 +- server/.gitattributes | 2 +- server/.gitignore | 2 +- shared/trsa/testData/data.txt | 2 +- shared/trsa/testData/data.txt.signature | 2 +- shared/trsa/testData/privateKey | 2 +- shared/trsa/testData/publicKey | 2 +- shared/trsa/trsa_test.go | 24 +++++----- web/.prettierignore | 2 +- web/.prettierrc.json | 2 +- web/index.html | 2 +- web/jsconfig.json | 2 +- web/src/@core/scss/_vertical-nav.scss | 2 +- web/src/@core/scss/base/_utilities.scss | 2 +- web/src/@core/scss/base/_vertical-nav.scss | 2 +- .../@core/scss/libs/vuetify/_variables.scss | 2 +- web/src/@core/scss/template/_components.scss | 48 +++++++++---------- web/src/@core/scss/template/_variables.scss | 8 ++-- .../@core/scss/template/_vertical-nav.scss | 2 +- .../template/libs/vuetify/_overrides.scss | 2 +- .../template/libs/vuetify/_variables.scss | 16 +++---- web/src/@core/scss/template/pages/misc.scss | 4 +- web/src/@core/utils/formatters.js | 8 ++-- web/src/@core/utils/helpers.js | 4 +- .../@layouts/components/VerticalNavLayout.vue | 2 +- web/src/@layouts/utils.js | 2 +- web/src/App.vue | 8 ++-- web/src/assets/images/svg/paypal.svg | 2 +- .../DefaultLayoutWithVerticalNav.vue | 6 +-- web/src/layouts/components/UserProfile.vue | 2 +- web/src/pages/login.vue | 4 +- web/src/pages/my-account.vue | 2 +- web/src/pages/register.vue | 2 +- web/src/plugins/router/index.js | 4 +- web/src/plugins/vuetify/icons.js | 2 +- .../views/dashboard/AnalyticsBarCharts.vue | 2 +- .../AnalyticsTotalProfitLineCharts.vue | 2 +- .../views/dashboard/AnalyticsUserTable.vue | 4 +- .../dashboard/AnalyticsWeeklyOverview.vue | 2 +- .../my-account/AccountSettingsAccount.vue | 4 +- 57 files changed, 133 insertions(+), 133 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 3f5e9bb..fef71a6 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -18,4 +18,4 @@ ], "remoteUser": "root", "postCreateCommand": "bash .devcontainer/postCreateCommand.sh" -} \ No newline at end of file +} diff --git a/.devcontainer/postCreateCommand.sh b/.devcontainer/postCreateCommand.sh index 780226e..82469e3 100644 --- a/.devcontainer/postCreateCommand.sh +++ b/.devcontainer/postCreateCommand.sh @@ -18,4 +18,4 @@ npm install cd .. -echo 'Container ready!' \ No newline at end of file +echo 'Container ready!' diff --git a/.dockerignore b/.dockerignore index 998fad1..b9ecc0e 100644 --- a/.dockerignore +++ b/.dockerignore @@ -6,4 +6,4 @@ npm-debug.log .coverage.* .env .aws -vendor \ No newline at end of file +vendor diff --git a/.gitattributes b/.gitattributes index 4922abf..a88a4bc 100644 --- a/.gitattributes +++ b/.gitattributes @@ -18,4 +18,4 @@ *.sh text eol=lf *.txt text eol=lf *.xml text eol=lf -*.vue text eol=lf \ No newline at end of file +*.vue text eol=lf diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 3702b19..e51446f 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -49,4 +49,4 @@ updates: commit-message: prefix: fix prefix-development: chore - include: scope \ No newline at end of file + include: scope diff --git a/.gitignore b/.gitignore index 52ead70..b0fcb14 100644 --- a/.gitignore +++ b/.gitignore @@ -141,4 +141,4 @@ dist *.so *.dylib vendor/ -__debug_bin \ No newline at end of file +__debug_bin diff --git a/.woodpecker/.web.yml b/.woodpecker/.web.yml index 225d346..1f70711 100644 --- a/.woodpecker/.web.yml +++ b/.woodpecker/.web.yml @@ -30,4 +30,4 @@ steps: directory: web/ commands: - npm run lint - when: *when \ No newline at end of file + when: *when diff --git a/LICENSE b/LICENSE index 5929ae2..a449c41 100644 --- a/LICENSE +++ b/LICENSE @@ -200,4 +200,4 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file + limitations under the License. diff --git a/Makefile b/Makefile index bf1bb6a..825eace 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ # * # * Portions of this file were derived from Woodpecker CI # * https://github.com/woodpecker-ci/woodpecker/blob/main/Makefile -# * +# * # * Woodpecker CI's licensed under the Apache License 2.0. # * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 # * @@ -188,4 +188,4 @@ bundle-agent: bundle-prepare ## Create bundles for agent VERSION_NUMBER=$(VERSION_NUMBER) nfpm package --config ./nfpm/agent.yaml --target ./dist --packager rpm .PHONY: bundle -bundle: bundle-agent ## Create all bundles \ No newline at end of file +bundle: bundle-agent ## Create all bundles diff --git a/README.md b/README.md index f72e4aa..9e2681e 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ ContainerEchoes is an open-source tool designed for efficient real-time Docker l - **Web Interface and API**: Manage, query, and display logs through a user-friendly web interface and a robust API. - **Flexible Log Retention**: Automatic log deletion after 48 hours, with options for longer retention. - **Secure and Scalable**: Implements TLS/SSL for secure data transfer and is designed for scalability. - + ## Docker Image Support ContainerEchoes provides Docker images for both its agent and server components, ensuring wide compatibility across different systems: diff --git a/agent/.env.example b/agent/.env.example index 3bb4130..5aa9743 100644 --- a/agent/.env.example +++ b/agent/.env.example @@ -1,2 +1,2 @@ ECHOES_SERVER=localhost:5000 -ECHOES_AGENT_SECRET= \ No newline at end of file +ECHOES_AGENT_SECRET= diff --git a/docker/.htaccess b/docker/.htaccess index 3201b3f..adc80b1 100644 --- a/docker/.htaccess +++ b/docker/.htaccess @@ -6,4 +6,4 @@ RewriteRule ^api/(.*) http://localhost:5000/$1 [P,L] # If the request is not for a real file or directory, serve index.html RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d -RewriteRule ^ index.html [L] \ No newline at end of file +RewriteRule ^ index.html [L] diff --git a/docker/Dockerfile.agent b/docker/Dockerfile.agent index 7c016b9..8153c72 100644 --- a/docker/Dockerfile.agent +++ b/docker/Dockerfile.agent @@ -4,7 +4,7 @@ # * # * Portions of this file were derived from Woodpecker CI # * https://github.com/woodpecker-ci/woodpecker -# * +# * # * Woodpecker CI's licensed under the Apache License 2.0. # * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 # * @@ -31,4 +31,4 @@ EXPOSE 3000 COPY --from=build /src/dist/echoes-agent /bin/ COPY --from=build /etc/echoes/agent /etc -ENTRYPOINT ["/bin/echoes-agent"] \ No newline at end of file +ENTRYPOINT ["/bin/echoes-agent"] diff --git a/docker/Dockerfile.server.arm64 b/docker/Dockerfile.server.arm64 index 5609264..ac4ff38 100644 --- a/docker/Dockerfile.server.arm64 +++ b/docker/Dockerfile.server.arm64 @@ -62,4 +62,4 @@ RUN chmod +x /etc/services.d/apache/run /etc/services.d/nodejs/run EXPOSE 80 # Use s6-overlay as the entrypoint -ENTRYPOINT ["/init"] \ No newline at end of file +ENTRYPOINT ["/init"] diff --git a/docker/my-httpd.conf b/docker/my-httpd.conf index 9e92c4b..fdcdc84 100644 --- a/docker/my-httpd.conf +++ b/docker/my-httpd.conf @@ -2,20 +2,20 @@ # This is the main Apache HTTP server configuration file. It contains the # configuration directives that give the server its instructions. # See for detailed information. -# In particular, see +# In particular, see # # for a discussion of each configuration directive. # # Do NOT simply read the instructions in here without understanding # what they do. They're here only as hints or reminders. If you are unsure -# consult the online docs. You have been warned. +# consult the online docs. You have been warned. # # Configuration and logfile names: If the filenames you specify for many # of the server's control files begin with "/" (or "drive:/" for Win32), the # server will use that explicit path. If the filenames do *not* begin # with "/", the value of ServerRoot is prepended -- so "logs/access_log" # with ServerRoot set to "/usr/local/apache2" will be interpreted by the -# server as "/usr/local/apache2/logs/access_log", whereas "/logs/access_log" +# server as "/usr/local/apache2/logs/access_log", whereas "/logs/access_log" # will be interpreted as '/logs/access_log'. # @@ -45,7 +45,7 @@ ServerRoot "/usr/local/apache2" # ports, instead of the default. See also the # directive. # -# Change this to Listen on specific IP addresses as shown below to +# Change this to Listen on specific IP addresses as shown below to # prevent Apache from glomming onto all bound IP addresses. # #Listen 12.34.56.78:80 @@ -201,7 +201,7 @@ LoadModule rewrite_module modules/mod_rewrite.so # # If you wish httpd to run as a different user or group, you must run -# httpd as root initially and it will switch. +# httpd as root initially and it will switch. # # User/Group: The name (or #number) of the user/group to run httpd as. # It is usually good practice to create a dedicated user and group for @@ -242,7 +242,7 @@ ServerName 0.0.0.0:80 # # Deny access to the entirety of your server's filesystem. You must -# explicitly permit access to web content directories in other +# explicitly permit access to web content directories in other # blocks below. # @@ -300,8 +300,8 @@ DocumentRoot "/usr/local/apache2/htdocs" # -# The following lines prevent .htaccess and .htpasswd files from being -# viewed by Web clients. +# The following lines prevent .htaccess and .htpasswd files from being +# viewed by Web clients. # Require all denied @@ -354,8 +354,8 @@ LogLevel warn # - # Redirect: Allows you to tell clients about documents that used to - # exist in your server's namespace, but do not anymore. The client + # Redirect: Allows you to tell clients about documents that used to + # exist in your server's namespace, but do not anymore. The client # will make a new request for the document at its new location. # Example: # Redirect permanent /foo http://www.example.com/bar @@ -372,7 +372,7 @@ LogLevel warn # the filesystem path. # - # ScriptAlias: This controls which directories contain server scripts. + # ScriptAlias: This controls which directories contain server scripts. # ScriptAliases are essentially the same as Aliases, except that # documents in the target directory are treated as applications and # run by the server when requested rather than as documents sent to the @@ -484,10 +484,10 @@ LogLevel warn #MaxRanges unlimited # -# EnableMMAP and EnableSendfile: On systems that support it, +# EnableMMAP and EnableSendfile: On systems that support it, # memory-mapping or the sendfile syscall may be used to deliver # files. This usually improves server performance, but must -# be turned off when serving from networked-mounted +# be turned off when serving from networked-mounted # filesystems or if support for these functions is otherwise # broken on your system. # Defaults: EnableMMAP On, EnableSendfile Off @@ -497,9 +497,9 @@ LogLevel warn # Supplemental configuration # -# The configuration files in the conf/extra/ directory can be -# included to add extra features or to modify the default configuration of -# the server, or you may simply copy their contents here and change as +# The configuration files in the conf/extra/ directory can be +# included to add extra features or to modify the default configuration of +# the server, or you may simply copy their contents here and change as # necessary. # Server-pool management (MPM specific) @@ -547,4 +547,4 @@ Include conf/extra/proxy-html.conf SSLRandomSeed startup builtin SSLRandomSeed connect builtin - \ No newline at end of file + diff --git a/docs/docs/30-env-vars.md b/docs/docs/30-env-vars.md index b2571a4..b07c5f9 100644 --- a/docs/docs/30-env-vars.md +++ b/docs/docs/30-env-vars.md @@ -75,4 +75,4 @@ Remember to replace `localhost` with your actual database host. ## Next Steps -With your environment variables configured, you can proceed to [Configuring the Container Echoes Agent](agent-configuration). \ No newline at end of file +With your environment variables configured, you can proceed to [Configuring the Container Echoes Agent](agent-configuration). diff --git a/nfpm/agent.yaml b/nfpm/agent.yaml index c0e1394..52b86b2 100644 --- a/nfpm/agent.yaml +++ b/nfpm/agent.yaml @@ -4,7 +4,7 @@ # * # * Portions of this file were derived from Woodpecker CI # * https://github.com/woodpecker-ci/woodpecker -# * +# * # * Woodpecker CI's licensed under the Apache License 2.0. # * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 # * diff --git a/server/.dockerignore b/server/.dockerignore index 654eeeb..f789b5a 100644 --- a/server/.dockerignore +++ b/server/.dockerignore @@ -8,4 +8,4 @@ .env # Ignore build output for vue -web/dist \ No newline at end of file +web/dist diff --git a/server/.gitattributes b/server/.gitattributes index 4922abf..a88a4bc 100644 --- a/server/.gitattributes +++ b/server/.gitattributes @@ -18,4 +18,4 @@ *.sh text eol=lf *.txt text eol=lf *.xml text eol=lf -*.vue text eol=lf \ No newline at end of file +*.vue text eol=lf diff --git a/server/.gitignore b/server/.gitignore index baf9d29..c668632 100644 --- a/server/.gitignore +++ b/server/.gitignore @@ -134,4 +134,4 @@ version # Ignore IDE files .idea -.vscode \ No newline at end of file +.vscode diff --git a/shared/trsa/testData/data.txt b/shared/trsa/testData/data.txt index 46d4eac..4c0e5db 100644 --- a/shared/trsa/testData/data.txt +++ b/shared/trsa/testData/data.txt @@ -6,4 +6,4 @@ Also, it is transporting information on plain http. that is an advantage for the A great use case can specially found, as the keys can be perfectly used for authentication. If you can share keys face to face, there will be nothing to break into your communications. This technology, can be perfect, for plain message exchange like chat, or more integrated transactions, up to the use in distributed applications and blockchain. -The usage is documented in the modules README on npm. It is really easy, try it out. \ No newline at end of file +The usage is documented in the modules README on npm. It is really easy, try it out. diff --git a/shared/trsa/testData/data.txt.signature b/shared/trsa/testData/data.txt.signature index eced33f..677adcb 100644 --- a/shared/trsa/testData/data.txt.signature +++ b/shared/trsa/testData/data.txt.signature @@ -1 +1 @@ -a152828c8864ac9cc59ddb34ad8f46a9134cb2b2fd3d53419a8be0db5fc410748e146192dc4fe3d6012dc3c36ab4ff669b123106d177e7444dede42cf3ce5d72bd464d78c4a9cf151fcc63431c3fcea08ac4424c97af7ad97e1ee01992685f972c724aa0e18af9cb57965d7b7fec95a782ebd4fa62a802082a5336d5e34d75302ffe85d74d57c5739f65760c4b2168b030ced77a856f9e34ffbc7d694a6dc0fbc739a9f7708e0c993a47cb97362672006e6758d904c4486026a0840d52bc17eeb9cb48edd77c8197df2225bb9e42a3ff39df21dfb6fed8ef9c171f9b0314e469344c235474aaa5685f39f72b579efae2efbb122c2495394444df7ad7f3fe1467 \ No newline at end of file +a152828c8864ac9cc59ddb34ad8f46a9134cb2b2fd3d53419a8be0db5fc410748e146192dc4fe3d6012dc3c36ab4ff669b123106d177e7444dede42cf3ce5d72bd464d78c4a9cf151fcc63431c3fcea08ac4424c97af7ad97e1ee01992685f972c724aa0e18af9cb57965d7b7fec95a782ebd4fa62a802082a5336d5e34d75302ffe85d74d57c5739f65760c4b2168b030ced77a856f9e34ffbc7d694a6dc0fbc739a9f7708e0c993a47cb97362672006e6758d904c4486026a0840d52bc17eeb9cb48edd77c8197df2225bb9e42a3ff39df21dfb6fed8ef9c171f9b0314e469344c235474aaa5685f39f72b579efae2efbb122c2495394444df7ad7f3fe1467 diff --git a/shared/trsa/testData/privateKey b/shared/trsa/testData/privateKey index dc6e44f..a217ee1 100644 --- a/shared/trsa/testData/privateKey +++ b/shared/trsa/testData/privateKey @@ -24,4 +24,4 @@ VtM/j6qz5L3YVvZ8L95W5tD3cWTYgtI3JlETGPkjchmPGushXzxIX7HpIgxoMY9K yelLAQKBgQDEua1+xkuvUMZFlIvP+bsqFrxRrjfMUlXE3/EdwHCQWMh481ttmJqi Ugs5rTJUBJK6aHeDB9Jush9FPW69/N3oECsSs9OQfs7p9EZGb5TXv72mRufpHOX+ ccmA1wkkQZXHydN3PE9IxZTPYt+pJlhikNbAgHMTIE57DQz0/ac+yw== ------END RSA PRIVATE KEY----- \ No newline at end of file +-----END RSA PRIVATE KEY----- diff --git a/shared/trsa/testData/publicKey b/shared/trsa/testData/publicKey index e6af170..427b954 100644 --- a/shared/trsa/testData/publicKey +++ b/shared/trsa/testData/publicKey @@ -6,4 +6,4 @@ kJk1pMcVtnfZv+8z9qWyRVpzMccRPHrdnnIvkTYNKV9h4+e5F1161rgQnngyUBtH GHuI+lBS0bARj+C4O3M+OWYQKyHQzknq7yBXKHLlKbl5sGFbw5FiwRqWYboLOwfu q8QC6VmkXdLX6gKpKBWl4LzInW9V8fXPacvmZYZxGDmCWkkjUM0123CjwWggneTX AwIDAQAB ------END PUBLIC KEY----- \ No newline at end of file +-----END PUBLIC KEY----- diff --git a/shared/trsa/trsa_test.go b/shared/trsa/trsa_test.go index 25da13a..9a9aef4 100644 --- a/shared/trsa/trsa_test.go +++ b/shared/trsa/trsa_test.go @@ -47,12 +47,12 @@ func TestEncryptDecrypt(t *testing.T) { if err != nil { t.Fatal(err.Error()) } - data := []byte(`This weekend I made great progress for building secure independent apps. - With t-secure-express I provide a module, to have RSA encrypted communication between - a js web client and your express application. Both client and server are using my trsa - library, that is based on node-forge. So it is easy, for both sites to create their - crypto material. Also, the for the server side provided middleware can get applied to - any new or existing app. To enable secure RSA encrypted communication, without the need + data := []byte(`This weekend I made great progress for building secure independent apps. + With t-secure-express I provide a module, to have RSA encrypted communication between + a js web client and your express application. Both client and server are using my trsa + library, that is based on node-forge. So it is easy, for both sites to create their + crypto material. Also, the for the server side provided middleware can get applied to + any new or existing app. To enable secure RSA encrypted communication, without the need for bothersome and for some part expensive and deployment delaying https certificates. Using this tech, you can establish secure connections on your timeline. `) encrypted, err := keypair.Encrypt(data) @@ -75,12 +75,12 @@ func TestSignVerify(t *testing.T) { if err != nil { t.Fatal(err.Error()) } - data := []byte(`This weekend I made great progress for building secure independent apps. - With t-secure-express I provide a module, to have RSA encrypted communication between - a js web client and your express application. Both client and server are using my trsa - library, that is based on node-forge. So it is easy, for both sites to create their - crypto material. Also, the for the server side provided middleware can get applied to - any new or existing app. To enable secure RSA encrypted communication, without the need + data := []byte(`This weekend I made great progress for building secure independent apps. + With t-secure-express I provide a module, to have RSA encrypted communication between + a js web client and your express application. Both client and server are using my trsa + library, that is based on node-forge. So it is easy, for both sites to create their + crypto material. Also, the for the server side provided middleware can get applied to + any new or existing app. To enable secure RSA encrypted communication, without the need for bothersome and for some part expensive and deployment delaying https certificates. Using this tech, you can establish secure connections on your timeline. `) signature, err := keypair.Sign(data) diff --git a/web/.prettierignore b/web/.prettierignore index db4c6d9..de4d1f0 100644 --- a/web/.prettierignore +++ b/web/.prettierignore @@ -1,2 +1,2 @@ dist -node_modules \ No newline at end of file +node_modules diff --git a/web/.prettierrc.json b/web/.prettierrc.json index 9b8b61a..f430b9e 100644 --- a/web/.prettierrc.json +++ b/web/.prettierrc.json @@ -17,4 +17,4 @@ "vueIndentScriptAndStyle": false, "endOfLine": "lf", "singleAttributePerLine": true -} \ No newline at end of file +} diff --git a/web/index.html b/web/index.html index 8499d43..6788d22 100644 --- a/web/index.html +++ b/web/index.html @@ -88,4 +88,4 @@ - \ No newline at end of file + diff --git a/web/jsconfig.json b/web/jsconfig.json index 7c1fdbf..f5177f6 100644 --- a/web/jsconfig.json +++ b/web/jsconfig.json @@ -42,4 +42,4 @@ "vite-plugin-vue-layouts/client" ] } -} \ No newline at end of file +} diff --git a/web/src/@core/scss/_vertical-nav.scss b/web/src/@core/scss/_vertical-nav.scss index d264195..f05db94 100644 --- a/web/src/@core/scss/_vertical-nav.scss +++ b/web/src/@core/scss/_vertical-nav.scss @@ -101,7 +101,7 @@ > :first-child { @extend %vertical-nav-item; @extend %vertical-nav-item-interactive; - + // ℹī¸ Update the margin-inline-end when vertical nav is in mini state. We done same for section title. @at-root { .layout-nav-type-vertical.layout-vertical-nav-collapsed .layout-vertical-nav:not(.hovered) .nav-link > :first-child, .layout-nav-type-vertical .layout-vertical-nav .nav-group > :first-child { diff --git a/web/src/@core/scss/base/_utilities.scss b/web/src/@core/scss/base/_utilities.scss index 8f39ee5..2cc6599 100644 --- a/web/src/@core/scss/base/_utilities.scss +++ b/web/src/@core/scss/base/_utilities.scss @@ -169,7 +169,7 @@ $card-spacer-content: 16px; .timeline-chip{ border-radius: 6px; - background: rgba(var(--v-theme-on-surface), var(--v-hover-opacity)); + background: rgba(var(--v-theme-on-surface), var(--v-hover-opacity)); padding-block: 5px; padding-inline: 10px } diff --git a/web/src/@core/scss/base/_vertical-nav.scss b/web/src/@core/scss/base/_vertical-nav.scss index 0c9b149..5a862ff 100644 --- a/web/src/@core/scss/base/_vertical-nav.scss +++ b/web/src/@core/scss/base/_vertical-nav.scss @@ -187,7 +187,7 @@ // Nav group label > :first-child { // Adds before psudo element to style hover state - @include mixins.before-pseudo; + @include mixins.before-pseudo; } &:not(.active,.open) > :first-child { diff --git a/web/src/@core/scss/libs/vuetify/_variables.scss b/web/src/@core/scss/libs/vuetify/_variables.scss index 5f1878d..a523f1c 100644 --- a/web/src/@core/scss/libs/vuetify/_variables.scss +++ b/web/src/@core/scss/libs/vuetify/_variables.scss @@ -243,7 +243,7 @@ $card-transition-property-custom: box-shadow, opacity; // 👉 Tabs $tabs-height: 40px !default, - // 👉 Timeline + // 👉 Timeline $timeline-dot-size: 34px !default, $timeline-dot-divider-background: transparent !default, diff --git a/web/src/@core/scss/template/_components.scss b/web/src/@core/scss/template/_components.scss index cda2021..6a7eeb7 100644 --- a/web/src/@core/scss/template/_components.scss +++ b/web/src/@core/scss/template/_components.scss @@ -63,7 +63,7 @@ body { &.v-alert--variant-elevated { .v-alert__prepend { background-color: #fff; - + @include mixins.elevation(2); } } @@ -289,7 +289,7 @@ body { padding-block: 0; padding-inline: 10px; } - + &--size-small { --v-btn-height: 34px; --v-btn-size: 13px; @@ -306,11 +306,11 @@ body { --v-icon-size-multiplier: 0.718; } } - + &--size-large { --v-btn-height: 42px; --v-btn-size: 17px; - + &:not(.v-btn--icon){ border-radius: 0.5rem; } @@ -319,7 +319,7 @@ body { padding-block: 0; padding-inline: 22px; } - + &--size-x-large{ --v-btn-height: 48px; --v-btn-size: 19px; @@ -383,9 +383,9 @@ body { &.v-btn-group--density-comfortable{ block-size: 58px; } - + } - + } } @@ -438,7 +438,7 @@ body { &:not(.v-chip--variant-elevated){ color: rgba(var(--v-theme-on-surface), var(--v-high-emphasis-opacity)); } - + .v-chip__close{ margin-inline: 4px -8px !important; @@ -576,7 +576,7 @@ body { &.v-selection-control--dirty { .v-selection-control__input { .custom-radio-checked { - filter: drop-shadow(rgba(var(--v-shadow-key-umbra-color), 16%) 0 2px 4px); + filter: drop-shadow(rgba(var(--v-shadow-key-umbra-color), 16%) 0 2px 4px); } } } @@ -592,13 +592,13 @@ body { color: rgba(var(--v-theme-on-background), var(--v-high-emphasis-opacity)) } } - + &:not(.v-selection-control--dirty) { .v-selection-control__input > .v-icon { color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity)); opacity: 1; } - } + } } .v-radio-group.v-input > .v-input__control > .v-label { @@ -638,7 +638,7 @@ body { inline-size: 1.25rem; } } - + &:hover{ .v-expansion-panel-title__overlay{ opacity: 0 !important; @@ -695,19 +695,19 @@ body { } } - .v-field.v-field--focused .v-field__outline, + .v-field.v-field--focused .v-field__outline, .v-input.v-input--error .v-field__outline{ --v-field-border-opacity: 1 !important; } - // hover state outline color + // hover state outline color @media (hover: hover) { .v-field:not(.v-field--focused):hover .v-field__outline { --v-field-border-opacity: 0.6 !important; } } - .v-field__prepend-inner, + .v-field__prepend-inner, .v-field__append-inner, .v-field__clearable, .v-input__prepend, @@ -801,7 +801,7 @@ body { .v-selection-control__input { transform: translateX(5px); - + } } } @@ -879,7 +879,7 @@ body { &:hover{ .v-btn__content{ color: rgb(var(--v-theme-#{$color-name})); - } + } } } } @@ -910,7 +910,7 @@ body { .v-btn__underlay{ opacity: 0; } - + &:hover{ .v-btn__overlay{ --v-hover-opacity:0.24; @@ -941,12 +941,12 @@ body { .v-btn__overlay{ --v-hover-opacity:0.16; - + background: rgb(var(--v-theme-primary)); opacity: var(--v-hover-opacity); } - + } } } @@ -1004,7 +1004,7 @@ body { color: rgb(var(--v-theme-primary)); .v-btn__overlay{ - --v-hover-opacity: 0; + --v-hover-opacity: 0; } .v-btn__content{ @@ -1065,7 +1065,7 @@ body { .v-timeline-item{ .timeline-chip{ border-radius: 6px; - background: rgba(var(--v-theme-on-surface), var(--v-hover-opacity)); + background: rgba(var(--v-theme-on-surface), var(--v-hover-opacity)); padding-block: 5px; padding-inline: 10px } @@ -1097,7 +1097,7 @@ body { table{ tbody{ tr{ - &.v-data-table-group-header-row{ + &.v-data-table-group-header-row{ td { background:none; } @@ -1126,7 +1126,7 @@ body { text-transform: uppercase; } } - + } } } diff --git a/web/src/@core/scss/template/_variables.scss b/web/src/@core/scss/template/_variables.scss index d9b08f0..249cc35 100644 --- a/web/src/@core/scss/template/_variables.scss +++ b/web/src/@core/scss/template/_variables.scss @@ -21,7 +21,7 @@ $vertical-nav-items-icon-margin-inline-end: 0 !default; $vertical-nav-horizontal-padding: $vertical-nav-horizontal-padding-custom !default, // Vertical nav header padding $vertical-nav-header-padding: 1.25rem 0 1.25rem $vertical-nav-horizontal-padding-start !default, - + // Vertical nav icons $vertical-nav-items-icon-size: 1.375rem !default, $vertical-nav-items-nested-icon-size: 0.75rem !default, @@ -31,15 +31,15 @@ $vertical-nav-items-icon-margin-inline-end: 0 !default; $vertical-nav-section-title-mt: 1.25rem !default, $layout-vertical-nav-footer-height: 54px !default, - + // Horizontal nav icons $horizontal-nav-items-icon-size: 1.375rem !default, $horizontal-nav-items-icon-margin-inline-end: 0.5rem !default, - + // 👉 Horizontal nav $horizontal-nav-padding: 0.625rem !default, $horizontal-nav-third-level-icon-size: 0.75rem !default, - + // Gap between top level horizontal nav items $horizontal-nav-top-level-items-gap: 8px !default, diff --git a/web/src/@core/scss/template/_vertical-nav.scss b/web/src/@core/scss/template/_vertical-nav.scss index a126740..ad46ee1 100644 --- a/web/src/@core/scss/template/_vertical-nav.scss +++ b/web/src/@core/scss/template/_vertical-nav.scss @@ -45,7 +45,7 @@ } } -// 👉 Overlay +// 👉 Overlay .layout-overlay{ touch-action: none; } diff --git a/web/src/@core/scss/template/libs/vuetify/_overrides.scss b/web/src/@core/scss/template/libs/vuetify/_overrides.scss index 95581fc..de5aa7b 100644 --- a/web/src/@core/scss/template/libs/vuetify/_overrides.scss +++ b/web/src/@core/scss/template/libs/vuetify/_overrides.scss @@ -31,7 +31,7 @@ body { // 👉 Input placeholder alignment .v-input--density-compact{ - input::placeholder { + input::placeholder { position: relative; inset-block-start: 1px; } diff --git a/web/src/@core/scss/template/libs/vuetify/_variables.scss b/web/src/@core/scss/template/libs/vuetify/_variables.scss index 6a11108..ed1de3c 100644 --- a/web/src/@core/scss/template/libs/vuetify/_variables.scss +++ b/web/src/@core/scss/template/libs/vuetify/_variables.scss @@ -4,7 +4,7 @@ $font-family-custom: "Inter", sans-serif, -apple-system, blinkmacsystemfont, "Se @forward "../../../base/libs/vuetify/variables" with ( $body-font-family: $font-family-custom !default, $border-radius-root: 6px, - + $rounded: ( "sm": 4px, "shaped": 25px 0, @@ -36,7 +36,7 @@ $font-family-custom: "Inter", sans-serif, -apple-system, blinkmacsystemfont, "Se "weight": 500, "line-height": 2.375rem, "letter-spacing": normal, - ), + ), "h5": ( "size": 1.125rem, "weight": 500, @@ -183,7 +183,7 @@ $font-family-custom: "Inter", sans-serif, -apple-system, blinkmacsystemfont, "Se $autocomplete-content-elevation: 8 !default, $combobox-content-elevation: 8 !default, $select-content-elevation: 8 !default, - + // 👉 Badge $badge-height: 1.375rem !default, $badge-min-width: 1.375rem !default, @@ -202,7 +202,7 @@ $font-family-custom: "Inter", sans-serif, -apple-system, blinkmacsystemfont, "Se $button-line-height: 1.375rem !default, $button-margin-end: 0.375rem !default, $button-card-actions-padding: 0 18px !default, - + // 👉 Chip $chip-font-size: 13px !default, $chip-icon-font-size: 1.25rem !default, @@ -220,7 +220,7 @@ $font-family-custom: "Inter", sans-serif, -apple-system, blinkmacsystemfont, "Se $card-subtitle-font-weight: 400 !default, $card-subtitle-header-padding: 0 !default, - // 👉 Dialog + // 👉 Dialog $dialog-elevation: 10 !default, $dialog-card-header-padding: 20px !default, $dialog-card-text-padding: 0 20px 20px !default, @@ -241,7 +241,7 @@ $font-family-custom: "Inter", sans-serif, -apple-system, blinkmacsystemfont, "Se // 👉 Label $label-font-size: 0.9375rem !default, $label-letter-spacing: normal !default, - + // 👉 List $list-item-one-line-min-height: 38px !default, $list-subheader-min-height: 38px !default, @@ -256,7 +256,7 @@ $font-family-custom: "Inter", sans-serif, -apple-system, blinkmacsystemfont, "Se // 👉 label $field-label-floating-scale: 0.8125 !default, - + // 👉 Snackbar $snackbar-background: rgb(var(--v-tooltip-background)) !default, $snackbar-color: rgb(var(--v-theme-surface)) !default, @@ -277,7 +277,7 @@ $font-family-custom: "Inter", sans-serif, -apple-system, blinkmacsystemfont, "Se $tooltip-font-size: 0.8125rem !default, $tooltip-padding: 4px 12px !default, $tooltip-line-height: 1.25rem !default, - + // 👉 VPagination $pagination-item-margin: 0.1875rem !default, diff --git a/web/src/@core/scss/template/pages/misc.scss b/web/src/@core/scss/template/pages/misc.scss index 320e8b9..763753e 100644 --- a/web/src/@core/scss/template/pages/misc.scss +++ b/web/src/@core/scss/template/pages/misc.scss @@ -17,12 +17,12 @@ .misc-footer-tree, .misc-footer-tree-1 { position: absolute; } - + .misc-footer-tree { inset-block-end: 3.75rem; inset-inline-start: 3.75rem; } - + .misc-footer-tree-1 { inset-block-end: 5rem; inset-inline-end: 4.75rem; diff --git a/web/src/@core/utils/formatters.js b/web/src/@core/utils/formatters.js index 5d2923f..bbcb7c0 100644 --- a/web/src/@core/utils/formatters.js +++ b/web/src/@core/utils/formatters.js @@ -4,14 +4,14 @@ export const avatarText = value => { if (!value) return '' const nameArray = value.split(' ') - + return nameArray.map(word => word.charAt(0).toUpperCase()).join('') } // TODO: Try to implement this: https://twitter.com/fireship_dev/status/1565424801216311297 export const kFormatter = num => { const regex = /\B(?=(\d{3})+(?!\d))/g - + return Math.abs(num) > 9999 ? `${Math.sign(num) * +((Math.abs(num) / 1000).toFixed(1))}k` : Math.abs(num).toFixed(0).replace(regex, ',') } @@ -25,7 +25,7 @@ export const kFormatter = num => { export const formatDate = (value, formatting = { month: 'short', day: 'numeric', year: 'numeric' }) => { if (!value) return value - + return new Intl.DateTimeFormat('en-US', formatting).format(new Date(value)) } @@ -40,7 +40,7 @@ export const formatDateToMonthShort = (value, toTimeForCurrentDay = true) => { let formatting = { month: 'short', day: 'numeric' } if (toTimeForCurrentDay && isToday(date)) formatting = { hour: 'numeric', minute: 'numeric' } - + return new Intl.DateTimeFormat('en-US', formatting).format(new Date(value)) } export const prefixWithPlus = value => value > 0 ? `+${value}` : value diff --git a/web/src/@core/utils/helpers.js b/web/src/@core/utils/helpers.js index 1aa9509..f1aad19 100644 --- a/web/src/@core/utils/helpers.js +++ b/web/src/@core/utils/helpers.js @@ -2,7 +2,7 @@ export const isEmpty = value => { if (value === null || value === undefined || value === '') return true - + return !!(Array.isArray(value) && value.length === 0) } @@ -22,7 +22,7 @@ export const isObject = obj => obj !== null && !!obj && typeof obj === 'object' // 👉 IsToday export const isToday = date => { const today = new Date() - + return (date.getDate() === today.getDate() && date.getMonth() === today.getMonth() && date.getFullYear() === today.getFullYear()) diff --git a/web/src/@layouts/components/VerticalNavLayout.vue b/web/src/@layouts/components/VerticalNavLayout.vue index 7d92c10..cb1fb42 100644 --- a/web/src/@layouts/components/VerticalNavLayout.vue +++ b/web/src/@layouts/components/VerticalNavLayout.vue @@ -14,7 +14,7 @@ export default defineComponent({ // ℹī¸ This is alternative to below two commented watcher // We want to show overlay if overlay nav is visible and want to hide overlay if overlay is hidden and vice versa. syncRef(isOverlayNavActive, isLayoutOverlayVisible) - + return () => { // 👉 Vertical nav const verticalNav = h(VerticalNav, { isOverlayNavActive: isOverlayNavActive.value, toggleIsOverlayNavActive }, { diff --git a/web/src/@layouts/utils.js b/web/src/@layouts/utils.js index 1488905..89ec74e 100644 --- a/web/src/@layouts/utils.js +++ b/web/src/@layouts/utils.js @@ -11,6 +11,6 @@ export const hexToRgb = hex => { }) const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex) - + return result ? `${Number.parseInt(result[1], 16)},${Number.parseInt(result[2], 16)},${Number.parseInt(result[3], 16)}` : null } diff --git a/web/src/App.vue b/web/src/App.vue index 9495fdc..c3927a3 100644 --- a/web/src/App.vue +++ b/web/src/App.vue @@ -53,7 +53,7 @@ export default { if (useAppStore().publicRoutes.includes(redirect)) { console.log('Not redirecting to login page') this.isLoading = false - + return } @@ -66,7 +66,7 @@ export default { // Redirect to login page this.$router.push(redirect) - + return } let exp @@ -78,7 +78,7 @@ export default { console.log('Invalid token') this.isLoading = false this.logout() - + return } console.log('Your JWT is', exp - Date.now() / 1000, 'seconds to expiry') @@ -87,7 +87,7 @@ export default { clearTimeout(this.tokenRefreshTimer) this.isLoading = false this.logout() - + return } if (exp - Date.now() / 1000 < 600 && exp - Date.now() / 1000 > 0) { diff --git a/web/src/assets/images/svg/paypal.svg b/web/src/assets/images/svg/paypal.svg index 53f84df..d32e990 100644 --- a/web/src/assets/images/svg/paypal.svg +++ b/web/src/assets/images/svg/paypal.svg @@ -16,4 +16,4 @@ - \ No newline at end of file + diff --git a/web/src/layouts/components/DefaultLayoutWithVerticalNav.vue b/web/src/layouts/components/DefaultLayoutWithVerticalNav.vue index cac436e..131d09c 100644 --- a/web/src/layouts/components/DefaultLayoutWithVerticalNav.vue +++ b/web/src/layouts/components/DefaultLayoutWithVerticalNav.vue @@ -33,7 +33,7 @@ import UserProfile from '@/layouts/components/UserProfile.vue' Search ⌘K - + --> @@ -46,10 +46,10 @@ import UserProfile from '@/layouts/components/UserProfile.vue' > - diff --git a/web/src/layouts/components/UserProfile.vue b/web/src/layouts/components/UserProfile.vue index f217e1d..9458773 100644 --- a/web/src/layouts/components/UserProfile.vue +++ b/web/src/layouts/components/UserProfile.vue @@ -11,7 +11,7 @@ const user = userStore.user // Generate the gravatar URL from the user's email const gravatar = email => { const hash = md5(email.trim().toLowerCase()) - + return `https://www.gravatar.com/avatar/${hash}` } diff --git a/web/src/pages/login.vue b/web/src/pages/login.vue index 312d8df..cfe9e0f 100644 --- a/web/src/pages/login.vue +++ b/web/src/pages/login.vue @@ -54,7 +54,7 @@ export default { // Replace the encoded / with a slash readableRedirect = readableRedirect ? readableRedirect.replace(/%2F/g, '/') : null - + return sanitizedRedirect ? `You will be redirected to ${readableRedirect} upon successful login.` : '' @@ -206,7 +206,7 @@ export default { > Forgot Password? - + --> diff --git a/web/src/pages/my-account.vue b/web/src/pages/my-account.vue index d3c8be5..4a7b7da 100644 --- a/web/src/pages/my-account.vue +++ b/web/src/pages/my-account.vue @@ -68,7 +68,7 @@ const tabs = [ diff --git a/web/src/pages/register.vue b/web/src/pages/register.vue index d95bb7d..d057b3a 100644 --- a/web/src/pages/register.vue +++ b/web/src/pages/register.vue @@ -78,7 +78,7 @@ >privacy policy & terms - + --> diff --git a/web/src/plugins/router/index.js b/web/src/plugins/router/index.js index f7973b9..490e1a1 100644 --- a/web/src/plugins/router/index.js +++ b/web/src/plugins/router/index.js @@ -15,7 +15,7 @@ const handleAuthRedirection = (to, from, next) => { if (!isLoggedIn && !publicPaths.includes(to.path)) { console.log('Redirecting to login') - + return next({ path: '/login', query: { redirect: to.fullPath }, @@ -24,7 +24,7 @@ const handleAuthRedirection = (to, from, next) => { if (isLoggedIn && publicPaths.includes(to.path)) { console.log('Redirecting to home') - + return next({ path: '/' }) } diff --git a/web/src/plugins/vuetify/icons.js b/web/src/plugins/vuetify/icons.js index 58d839a..e2d51fd 100644 --- a/web/src/plugins/vuetify/icons.js +++ b/web/src/plugins/vuetify/icons.js @@ -57,7 +57,7 @@ export const iconify = { if (iconComponent) return h(iconComponent) } - + return h(props.tag, { ...props, diff --git a/web/src/views/dashboard/AnalyticsBarCharts.vue b/web/src/views/dashboard/AnalyticsBarCharts.vue index 3d5f898..5432c08 100644 --- a/web/src/views/dashboard/AnalyticsBarCharts.vue +++ b/web/src/views/dashboard/AnalyticsBarCharts.vue @@ -19,7 +19,7 @@ const series = [{ const chartOptions = computed(() => { const backgroundColor = currentTheme.value['track-bg'] - + return { chart: { type: 'bar', diff --git a/web/src/views/dashboard/AnalyticsTotalProfitLineCharts.vue b/web/src/views/dashboard/AnalyticsTotalProfitLineCharts.vue index 8bbdd1a..d3d3c20 100644 --- a/web/src/views/dashboard/AnalyticsTotalProfitLineCharts.vue +++ b/web/src/views/dashboard/AnalyticsTotalProfitLineCharts.vue @@ -20,7 +20,7 @@ const series = [{ const chartOptions = computed(() => { const currentTheme = vuetifyTheme.current.value.colors const variableTheme = vuetifyTheme.current.value.variables - + return { chart: { parentHeightOffset: 0, diff --git a/web/src/views/dashboard/AnalyticsUserTable.vue b/web/src/views/dashboard/AnalyticsUserTable.vue index 166575b..55a5322 100644 --- a/web/src/views/dashboard/AnalyticsUserTable.vue +++ b/web/src/views/dashboard/AnalyticsUserTable.vue @@ -161,7 +161,7 @@ const resolveUserRoleVariant = role => { color: 'primary', icon: 'ri-vip-crown-line', } - + return { color: 'success', icon: 'ri-user-line', @@ -176,7 +176,7 @@ const resolveUserStatusVariant = stat => { return 'success' if (statLowerCase === 'inactive') return 'secondary' - + return 'primary' } diff --git a/web/src/views/dashboard/AnalyticsWeeklyOverview.vue b/web/src/views/dashboard/AnalyticsWeeklyOverview.vue index b459ce5..ee43fc7 100644 --- a/web/src/views/dashboard/AnalyticsWeeklyOverview.vue +++ b/web/src/views/dashboard/AnalyticsWeeklyOverview.vue @@ -11,7 +11,7 @@ const options = computed(() => { const variableTheme = ref(vuetifyTheme.current.value.variables) const disabledColor = `rgba(${ hexToRgb(currentTheme.value['on-surface']) },${ variableTheme.value['disabled-opacity'] })` const borderColor = `rgba(${ hexToRgb(String(variableTheme.value['border-color'])) },${ variableTheme.value['border-opacity'] })` - + return { chart: { offsetY: -10, diff --git a/web/src/views/pages/my-account/AccountSettingsAccount.vue b/web/src/views/pages/my-account/AccountSettingsAccount.vue index f7da62c..eae910e 100644 --- a/web/src/views/pages/my-account/AccountSettingsAccount.vue +++ b/web/src/views/pages/my-account/AccountSettingsAccount.vue @@ -34,7 +34,7 @@ export default { }, gravatar(email) { const hash = md5(email.trim().toLowerCase()) - + return `https://www.gravatar.com/avatar/${hash}` }, async update() { @@ -185,7 +185,7 @@ export default { - + -->