diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 850c04098..6c6eacd42 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -7,20 +7,15 @@ Please make sure that the pull request is limited to one type (docs, feature, et Closes # -### Description - + + +### What's changed + -### Checks - -- [ ] My pull request adheres to the code style of this project -- [ ] My code requires changes to the documentation -- [ ] I have updated the documentation as required -- [ ] All the tests have passed - -### Additional Information - +### Notes to reviewers + diff --git a/CODEOWNERS b/CODEOWNERS index e7400a2b6..5c837665d 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,30 +1,21 @@ # CODEOWNERS is prioritized from bottom to top -# If none of the below matched -* @AndrewBastin @liyasthomas - # Packages /packages/codemirror-lang-graphql/ @AndrewBastin -/packages/hoppscotch-cli/ @AndrewBastin -/packages/hoppscotch-common/ @amk-dev @AndrewBastin +/packages/hoppscotch-cli/ @jamesgeorge007 /packages/hoppscotch-data/ @AndrewBastin -/packages/hoppscotch-js-sandbox/ @AndrewBastin -/packages/hoppscotch-ui/ @anwarulislam -/packages/hoppscotch-web/ @amk-dev -/packages/hoppscotch-selfhost-web/ @amk-dev +/packages/hoppscotch-js-sandbox/ @jamesgeorge007 +/packages/hoppscotch-selfhost-web/ @jamesgeorge007 +/packages/hoppscotch-selfhost-desktop/ @AndrewBastin /packages/hoppscotch-sh-admin/ @JoelJacobStephen -/packages/hoppscotch-backend/ @ankitsridhar16 @balub +/packages/hoppscotch-backend/ @balub -# Sections within Hoppscotch Common -/packages/hoppscotch-common/src/components @anwarulislam -/packages/hoppscotch-common/src/components/collections @nivedin @amk-dev -/packages/hoppscotch-common/src/components/environments @nivedin @amk-dev -/packages/hoppscotch-common/src/composables @amk-dev -/packages/hoppscotch-common/src/modules @AndrewBastin @amk-dev -/packages/hoppscotch-common/src/pages @AndrewBastin @amk-dev -/packages/hoppscotch-common/src/newstore @AndrewBastin @amk-dev +# READMEs and other documentation files +*.md @liyasthomas -README.md @liyasthomas - -# The lockfile has no owner -pnpm-lock.yaml +# Self Host deployment related files +*.Dockerfile @balub +docker-compose.yml @balub +docker-compose.deploy.yml @balub +*.Caddyfile @balub +.dockerignore @balub diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8b5d00dc8..ce37ce4b7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,7 +11,4 @@ Please note we have a code of conduct, please follow it in all your interactions build. 2. Update the README.md with details of changes to the interface, this includes new environment variables, exposed ports, useful file locations and container parameters. -3. Increase the version numbers in any examples files and the README.md to the new version that this - Pull Request would represent. The versioning scheme we use is [SemVer](https://semver.org). -4. You may merge the Pull Request once you have the sign-off of two other developers, or if you - do not have permission to do that, you may request the second reviewer merge it for you. +3. Make sure you do not expose environment variables or other sensitive information in your PR. diff --git a/SECURITY.md b/SECURITY.md index f7ab50cdf..8930b000d 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -4,19 +4,36 @@ This document outlines security procedures and general policies for the Hoppscot - [Security Policy](#security-policy) - [Reporting a security vulnerability](#reporting-a-security-vulnerability) + - [What is not a valid vulnerability](#what-is-not-a-valid-vulnerability) - [Incident response process](#incident-response-process) ## Reporting a security vulnerability -Report security vulnerabilities by emailing the Hoppscotch Support team at support@hoppscotch.io. +We use [Github Security Advisories](https://github.com/hoppscotch/hoppscotch/security/advisories) to manage vulnerability reports and collaboration. +Someone from the Hoppscotch team shall report to you within 48 hours of the disclosure of the vulnerability in GHSA. If no response was received, please reach out to +Hoppscotch Support at support@hoppscotch.io along with the GHSA advisory link. -The primary security point of contact from Hoppscotch Support team will acknowledge your email within 48 hours, and will send a more detailed response within 48 hours indicating the next steps in handling your report. After the initial reply to your report, the security team will endeavor to keep you informed of the progress towards a fix and full announcement, and may ask for additional information or guidance. +> NOTE: Since we have multiple open source components, Advisories may move into the relevant repo (for example, an XSS in a UI component might be part of [`@hoppscotch/ui`](https://github.com/hoppscotch/ui)). +> If in doubt, open your report in `hoppscotch/hoppscotch` GHSA. -**Do not create a GitHub issue ticket to report a security vulnerability.** +**Do not create a GitHub issue ticket to report a security vulnerability!** -The Hoppscotch team and community take all security vulnerability reports in Hoppscotch seriously. Thank you for improving the security of Hoppscotch. We appreciate your efforts and responsible disclosure and will make every effort to acknowledge your contributions. +The Hoppscotch team takes all security vulnerability reports in Hoppscotch seriously. We appreciate your efforts and responsible disclosure and will make every effort to acknowledge your contributions. -Report security bugs in third-party modules to the person or team maintaining the module. +## What is not a valid vulnerability +We receive many reports about different sections of the Hoppscotch platform. Hence, we have a fine line we have drawn defining what is considered valid vulnerability. +Please refrain from opening an advisory if it describes the following: + +- A vulnerability in a dependency of Hoppscotch (unless you have practical attack with it on the Hoppscotch codebase) +- Reports of vulnerabilities related to old runtimes (like NodeJS) or container images used by the codebase +- Vulnerabilities present when using Hoppscotch in anything other than the defined minimum requirements that Hoppscotch supports. + +Hoppscotch Team ensures security support for: +- Modern Browsers (Chrome/Firefox/Safari/Edge) with versions up to 1 year old. +- Windows versions on or above Windows 10 on Intel and ARM. +- macOS versions dating back up to 2 years on Intel and Apple Silicon. +- Popular Linux distributions with up-to-date packages with preference to x86/64 CPUs. +- Docker/OCI Runtimes (preference to Docker and Podman) dating back up to 1 year. ## Incident response process diff --git a/packages/hoppscotch-backend/package.json b/packages/hoppscotch-backend/package.json index 60732bd5e..b188a8281 100644 --- a/packages/hoppscotch-backend/package.json +++ b/packages/hoppscotch-backend/package.json @@ -1,6 +1,6 @@ { "name": "hoppscotch-backend", - "version": "2024.3.3", + "version": "2024.3.4", "description": "", "author": "", "private": true, diff --git a/packages/hoppscotch-backend/src/admin/admin.service.spec.ts b/packages/hoppscotch-backend/src/admin/admin.service.spec.ts index 335348ab4..1f51ba246 100644 --- a/packages/hoppscotch-backend/src/admin/admin.service.spec.ts +++ b/packages/hoppscotch-backend/src/admin/admin.service.spec.ts @@ -112,6 +112,7 @@ describe('AdminService', () => { NOT: { inviteeEmail: { in: [dbAdminUsers[0].email], + mode: 'insensitive', }, }, }, @@ -220,7 +221,10 @@ describe('AdminService', () => { expect(mockPrisma.invitedUsers.deleteMany).toHaveBeenCalledWith({ where: { - inviteeEmail: { in: [invitedUsers[0].inviteeEmail] }, + inviteeEmail: { + in: [invitedUsers[0].inviteeEmail], + mode: 'insensitive', + }, }, }); expect(result).toEqualRight(true); diff --git a/packages/hoppscotch-backend/src/admin/admin.service.ts b/packages/hoppscotch-backend/src/admin/admin.service.ts index 0bed66132..982b7c79a 100644 --- a/packages/hoppscotch-backend/src/admin/admin.service.ts +++ b/packages/hoppscotch-backend/src/admin/admin.service.ts @@ -89,12 +89,17 @@ export class AdminService { adminEmail: string, inviteeEmail: string, ) { - if (inviteeEmail == adminEmail) return E.left(DUPLICATE_EMAIL); + if (inviteeEmail.toLowerCase() == adminEmail.toLowerCase()) { + return E.left(DUPLICATE_EMAIL); + } if (!validateEmail(inviteeEmail)) return E.left(INVALID_EMAIL); const alreadyInvitedUser = await this.prisma.invitedUsers.findFirst({ where: { - inviteeEmail: inviteeEmail, + inviteeEmail: { + equals: inviteeEmail, + mode: 'insensitive', + }, }, }); if (alreadyInvitedUser != null) return E.left(USER_ALREADY_INVITED); @@ -159,7 +164,7 @@ export class AdminService { try { await this.prisma.invitedUsers.deleteMany({ where: { - inviteeEmail: { in: inviteeEmails }, + inviteeEmail: { in: inviteeEmails, mode: 'insensitive' }, }, }); return E.right(true); @@ -189,6 +194,7 @@ export class AdminService { NOT: { inviteeEmail: { in: userEmailObjs.map((user) => user.email), + mode: 'insensitive', }, }, }, diff --git a/packages/hoppscotch-backend/src/shortcode/shortcode.service.ts b/packages/hoppscotch-backend/src/shortcode/shortcode.service.ts index e6a02fdb1..e86423053 100644 --- a/packages/hoppscotch-backend/src/shortcode/shortcode.service.ts +++ b/packages/hoppscotch-backend/src/shortcode/shortcode.service.ts @@ -299,7 +299,10 @@ export class ShortcodeService implements UserDataHandler, OnModuleInit { where: userEmail ? { User: { - email: userEmail, + email: { + equals: userEmail, + mode: 'insensitive', + }, }, } : undefined, diff --git a/packages/hoppscotch-backend/src/team-invitation/team-invitation.service.ts b/packages/hoppscotch-backend/src/team-invitation/team-invitation.service.ts index f7749070f..db2927499 100644 --- a/packages/hoppscotch-backend/src/team-invitation/team-invitation.service.ts +++ b/packages/hoppscotch-backend/src/team-invitation/team-invitation.service.ts @@ -75,12 +75,13 @@ export class TeamInvitationService { if (!isEmailValid) return E.left(INVALID_EMAIL); try { - const teamInvite = await this.prisma.teamInvitation.findUniqueOrThrow({ + const teamInvite = await this.prisma.teamInvitation.findFirstOrThrow({ where: { - teamID_inviteeEmail: { - inviteeEmail: inviteeEmail, - teamID: teamID, + inviteeEmail: { + equals: inviteeEmail, + mode: 'insensitive', }, + teamID, }, }); diff --git a/packages/hoppscotch-backend/src/user/user.service.spec.ts b/packages/hoppscotch-backend/src/user/user.service.spec.ts index c27a3acac..327fdbc3d 100644 --- a/packages/hoppscotch-backend/src/user/user.service.spec.ts +++ b/packages/hoppscotch-backend/src/user/user.service.spec.ts @@ -157,7 +157,7 @@ beforeEach(() => { describe('UserService', () => { describe('findUserByEmail', () => { test('should successfully return a valid user given a valid email', async () => { - mockPrisma.user.findUniqueOrThrow.mockResolvedValueOnce(user); + mockPrisma.user.findFirst.mockResolvedValueOnce(user); const result = await userService.findUserByEmail( 'dwight@dundermifflin.com', @@ -166,7 +166,7 @@ describe('UserService', () => { }); test('should return a null user given a invalid email', async () => { - mockPrisma.user.findUniqueOrThrow.mockRejectedValueOnce('NotFoundError'); + mockPrisma.user.findFirst.mockResolvedValueOnce(null); const result = await userService.findUserByEmail('jim@dundermifflin.com'); expect(result).resolves.toBeNone; diff --git a/packages/hoppscotch-backend/src/user/user.service.ts b/packages/hoppscotch-backend/src/user/user.service.ts index 38664763b..ff2ab5980 100644 --- a/packages/hoppscotch-backend/src/user/user.service.ts +++ b/packages/hoppscotch-backend/src/user/user.service.ts @@ -62,16 +62,16 @@ export class UserService { * @returns Option of found User */ async findUserByEmail(email: string): Promise> { - try { - const user = await this.prisma.user.findUniqueOrThrow({ - where: { - email: email, + const user = await this.prisma.user.findFirst({ + where: { + email: { + equals: email, + mode: 'insensitive', }, - }); - return O.some(user); - } catch (error) { - return O.none; - } + }, + }); + if (!user) return O.none; + return O.some(user); } /** diff --git a/packages/hoppscotch-common/locales/tr.json b/packages/hoppscotch-common/locales/tr.json index e61da251b..3bfa3e926 100644 --- a/packages/hoppscotch-common/locales/tr.json +++ b/packages/hoppscotch-common/locales/tr.json @@ -17,15 +17,17 @@ "dismiss": "Boşver", "dont_save": "Don't save", "download_file": "Dosyayı Indir", - "drag_to_reorder": "Drag to reorder", + "drag_to_reorder": "Yeniden sıralamak için sürükleyin", "duplicate": "Klonla", "edit": "Düzenle", - "filter": "Filter", + "filter": "Filtre", "go_back": "Geri git", - "go_forward": "Go forward", + "go_forward": "İleri git", "group_by": "Group by", + "hide_secret": "Hide secret", "label": "Etiket", "learn_more": "Daha fazla bilgi edin", + "download_here": "Download here", "less": "Daha az", "more": "Daha fazla", "new": "Yeni", @@ -42,8 +44,9 @@ "scroll_to_top": "Scroll to top", "search": "Arama", "send": "Gönder", - "share": "Share", + "share": "Paylaş", "start": "Başla", + "show_secret": "Show secret", "starting": "Starting", "stop": "Dur", "to_close": "kapatmak için", @@ -101,16 +104,18 @@ "auth": { "account_exists": "Farklı kimlik bilgilerine sahip hesap var - Her iki hesabı birbirine bağlamak için giriş yapın", "all_sign_in_options": "Tüm oturum açma seçenekleri", + "continue_with_auth_provider": "{provider} ile devam et", "continue_with_email": "E-posta ile devam et", - "continue_with_github": "GitHub hesabı ile devam et", - "continue_with_google": "Google hesabı ile devam et", - "continue_with_microsoft": "Microsoft hesabı ile devam et", + "continue_with_github": "GitHub ile devam et", + "continue_with_github_enterprise": "GitHub Enterprise ile devam et", + "continue_with_google": "Google ile devam et", + "continue_with_microsoft": "Microsoft ile devam et", "email": "E-posta", "logged_out": "Çıkış yapıldı", - "login": "Giriş yap", + "login": "Giriş", "login_success": "Başarıyla giriş yapıldı", "login_to_hoppscotch": "Hoppscotch'a giriş yapın", - "logout": "Çıkış yap", + "logout": "Çıkış", "re_enter_email": "E-mail adresinizi yeniden girin", "send_magic_link": "Sihirli bir bağlantı gönder", "sync": "Senkronizasyon", @@ -135,20 +140,42 @@ "redirect_no_token_endpoint": "No Token Endpoint Defined", "something_went_wrong_on_oauth_redirect": "Something went wrong during OAuth Redirect", "something_went_wrong_on_token_generation": "Something went wrong on token generation", - "token_generation_oidc_discovery_failed": "Failure on token generation: OpenID Connect Discovery Failed" + "token_generation_oidc_discovery_failed": "Failure on token generation: OpenID Connect Discovery Failed", + "grant_type": "Grant Type", + "grant_type_auth_code": "Authorization Code", + "token_fetched_successfully": "Token fetched successfully", + "token_fetch_failed": "Failed to fetch token", + "validation_failed": "Validation Failed, please check the form fields", + "label_authorization_endpoint": "Authorization Endpoint", + "label_client_id": "Client ID", + "label_client_secret": "Client Secret", + "label_code_challenge": "Code Challenge", + "label_code_challenge_method": "Code Challenge Method", + "label_code_verifier": "Code Verifier", + "label_scopes": "Scopes", + "label_token_endpoint": "Token Endpoint", + "label_use_pkce": "Use PKCE", + "label_implicit": "Implicit", + "label_password": "Password", + "label_username": "Username", + "label_auth_code": "Authorization Code", + "label_client_credentials": "Client Credentials" }, "pass_key_by": "Şunla anahtar ekleyin", + "pass_by_query_params_label": "Query Parameters", + "pass_by_headers_label": "Headers", "password": "Parola", "save_to_inherit": "Please save this request in any collection to inherit the authorization", "token": "Jeton", - "type": "Yetki türü", + "type": "Yetki Türü", "username": "Kullanıcı adı" }, "collection": { "created": "Koleksiyon oluşturuldu", "different_parent": "Cannot reorder collection with different parent", "edit": "Koleksiyonu düzenle", - "import_or_create": "Import or create a collection", + "import_or_create": "Koleksiyon oluşturun veya içe aktarın", + "import_collection":"Koleksiyonu İçe Aktar", "invalid_name": "Lütfen koleksiyon için geçerli bir ad girin", "invalid_root_move": "Collection already in the root", "moved": "Başarıyla taşındı", @@ -158,15 +185,13 @@ "new": "Yeni koleksiyon", "order_changed": "Collection Order Updated", "properties": "Collection Properties", - "properties_updated": "Collection Properties Updated", + "properties_updated": "Koleksiyon Özellikleri Güncellendi", "renamed": "Koleksiyon yeniden adlandırıldı", "request_in_use": "Kullanımda istek", "save_as": "Farklı kaydet", "save_to_collection": "Save to Collection", "select": "Bir koleksiyon Seçin", - "select_location": "Konum seçin", - "select_team": "Bir takım seçin", - "team_collections": "Takım koleksiyonları" + "select_location": "Konum seçin" }, "confirm": { "close_unsaved_tab": "Are you sure you want to close this tab?", @@ -237,14 +262,15 @@ "pending_invites": "Bu takım için bekleyen bir istek yok", "profile": "Bu profili görüntülemek için giriş yapın", "protocols": "Protokoller boş", + "request_variables": "This request does not have any request variables", "schema": "Bir GraphQL uç noktasına bağlanma", + "secret_environments": "Secrets are not synced to Hoppscotch", "shared_requests": "Shared requests are empty", "shared_requests_logout": "Login to view your shared requests or create a new one", "subscription": "Subscriptions are empty", "team_name": "Takım adı boş", "teams": "Takımlar boş", - "tests": "Bu istek için test yok", - "shortcodes": "Shortcodes are empty" + "tests": "Bu istek için test yok" }, "environment": { "add_to_global": "Globale ekle", @@ -260,24 +286,27 @@ "import_or_create": "Import or create a environment", "invalid_name": "Lütfen ortam için geçerli bir ad girin", "list": "Environment variables", - "my_environments": "My Environments", + "my_environments": "Ortamlarım", "name": "Name", "nested_overflow": "İç içe ortam değişkenleri 10 düzeyle sınırlıdır", "new": "Yeni ortam", - "no_active_environment": "No active environment", + "no_active_environment": "Aktif ortam yok", "no_environment": "Ortam yok", "no_environment_description": "Hiçbir ortam seçilmedi. Aşağıdaki değişkenlerle ne yapacağınızı seçin.", "quick_peek": "Environment Quick Peek", "replace_with_variable": "Replace with variable", "scope": "Scope", + "secrets": "Secrets", + "secret_value": "Secret value", "select": "Ortam seçin", "set": "Set environment", "set_as_environment": "Set as environment", "team_environments": "Team Environments", "title": "Ortamlar", "updated": "Ortam güncellendi", - "value": "Value", - "variable": "Variable", + "value": "Değer", + "variable": "Değişken", + "variables": "Değişkenler", "variable_list": "Değişken listesi" }, "error": { @@ -289,6 +318,7 @@ "danger_zone": "Danger zone", "delete_account": "Your account is currently an owner in these teams:", "delete_account_description": "You must either remove yourself, transfer ownership, or delete these teams before you can delete your account.", + "empty_profile_name": "Profile name cannot be empty", "empty_req_name": "Boş İstek Adı", "f12_details": "(Ayrıntılar için F12)", "gql_prettify_invalid_query": "Geçersiz bir sorgu güzelleştirilemedi, sorgu sözdizimi hatalarını çözüp tekrar deneyin", @@ -296,7 +326,8 @@ "incorrect_email": "Geçersiz e-posta", "invalid_link": "Geçersiz bağlantı", "invalid_link_description": "Tıkladığınız linkin süresi geçmiş veya geçersiz", - "json_parsing_failed": "Invalid JSON", + "invalid_embed_link": "The embed does not exist or is invalid.", + "json_parsing_failed": "Geçersiz JSON", "json_prettify_invalid_body": "Geçersiz bir gövde güzelleştirilemedi, JSON sözdizimi hatalarını çözüp tekrar deneyin", "network_error": "Görünene göre bir ağ hatası var. Lütfen tekrar deneyin.", "network_fail": "İstek gönderilemedi", @@ -307,22 +338,26 @@ "page_not_found": "This page could not be found", "please_install_extension": "Please install the extension and add origin to the extension.", "proxy_error": "Proxy error", + "same_profile_name": "Updated profile name is same as the current profile name", "script_fail": "Ön istek komut dosyası çalıştırılamadı", "something_went_wrong": "Bir şeyler yanlış gitti", - "test_script_fail": "Could not execute post-request script" + "test_script_fail": "Could not execute post-request script", + "reading_files": "Error while reading one or more files." }, "export": { "as_json": "JSON olarak dışa aktar", "create_secret_gist": "Gizli Gist oluştur", + "create_secret_gist_tooltip_text": "Export as secret Gist", "failed": "Something went wrong while exporting", - "gist_created": "Gist oluşturuldu", "require_github": "Gizli Gist oluşturmak için GitHub ile giriş yapın", + "secret_gist_success": "Successfully exported as secret Gist", + "success": "Successfully exported", "title": "Dışarı Aktar" }, "filter": { - "all": "All", - "none": "None", - "starred": "Starred" + "all": "Tümü", + "none": "Hiçbiri", + "starred": "Yıldızlı" }, "folder": { "created": "Klasör oluşturuldu", @@ -339,7 +374,8 @@ "mutations": "Mutasyonlar", "schema": "Şema", "subscriptions": "Abonelikler", - "switch_connection": "Switch connection" + "switch_connection": "Switch connection", + "url_placeholder": "Enter a GraphQL endpoint URL" }, "graphql_collections": { "title": "GraphQL Collections" @@ -379,6 +415,8 @@ "environments_from_gist": "Import From Gist", "environments_from_gist_description": "Import Hoppscotch Environments From Gist", "failed": "İçe aktarılamadı", + "file_size_limit_exceeded_warning_multiple_files": "Chosen files exceed the recommended limit of 10MB. Only the first {files} selected will be imported", + "file_size_limit_exceeded_warning_single_file": "The currently chosen file exceeds the recommended limit of 10MB. Please select another file.", "from_file": "Import from File", "from_gist": "Gist'ten içe aktar", "from_gist_description": "Gist ile içe aktar", @@ -405,12 +443,15 @@ "json_description": "Import collections from a Hoppscotch Collections JSON file", "postman_environment": "Postman Environment", "postman_environment_description": "Import Postman Environment from a JSON file", + "success": "Successfully imported", "title": "İçe aktar" }, "inspections": { "description": "Inspect possible errors", "environment": { "add_environment": "Add to Environment", + "add_environment_value": "Add value", + "empty_value": "Environment value is empty for the variable '{variable}' ", "not_found": "Environment variable “{environment}” not found." }, "header": { @@ -546,6 +587,7 @@ "raw_body": "Ham istek gövdesi", "rename": "Rename Request", "renamed": "Yeniden adlandırılmış istek", + "request_variables": "Request variables", "run": "Çalıştır", "save": "Kaydet", "save_as": "Farklı kaydet", @@ -557,9 +599,9 @@ "title": "İstek", "type": "İstek türü", "url": "URL", + "url_placeholder": "Enter a URL or paste a cURL command", "variables": "Değişkenler", - "view_my_links": "View my links", - "copy_link": "Bağlantıyı kopyala" + "view_my_links": "View my links" }, "response": { "audio": "Audio", @@ -611,7 +653,7 @@ "profile_description": "Profil detaylarını güncelle", "profile_email": "E-posta adresi", "profile_name": "Profil ismi", - "proxy": "vekil", + "proxy": "Proxy", "proxy_url": "Proxy URL'si", "proxy_use_toggle": "İstek göndermek için proxy ara yazılımını kullanın", "read_the": "Oku", @@ -704,8 +746,7 @@ "send_request": "İstek gönder", "share_request": "Share Request", "show_code": "Generate code snippet", - "title": "İstek", - "copy_request_link": "İstek bağlantısını kopyala" + "title": "İstek" }, "response": { "copy": "Copy response to clipboard", @@ -726,6 +767,11 @@ "more": "Daha fazla göster", "sidebar": "Kenar çubuğunu göster" }, + "site_protection": { + "error_fetching_site_protection_status": "Something Went Wrong While Fetching Site Protection Status", + "login_to_continue": "Login to continue", + "login_to_continue_description": "You need to be logged in to access this Hoppscotch Enterprise Instance." + }, "socketio": { "communication": "İletişim", "connection_not_authorized": "This SocketIO connection does not use any authentication.", @@ -763,6 +809,13 @@ "invite": "Invite your friends to Hoppscotch", "title": "Miscellaneous" }, + "phrases": { + "create_environment": "Create environment", + "create_workspace": "Create workspace", + "import_collections": "Import collections", + "share_request": "Share request", + "try": "Try" + }, "request": { "save_as_new": "Save as new request", "select_method": "Select method", @@ -867,7 +920,6 @@ "forum": "Sorular sorun ve cevaplar alın", "github": "Bizi Github'da takip edin", "shortcuts": "Uygulamaya daha hızlı göz atın", - "team": "Takımla iletişim kurun", "title": "Destek", "twitter": "Bizi Twitter'da takip edin" }, @@ -888,6 +940,7 @@ "queries": "Sorgular", "query": "Sorgu", "schema": "Schema", + "share_tab_request": "Share tab request", "shared_requests": "Shared Requests", "socketio": "Socket.IO", "sse": "SSE", @@ -917,7 +970,6 @@ "invite_tooltip": "İnsanları bu çalışma alanına davet edin", "invited_to_team": "{owner} seni {team} takımına davet etti.", "join": "Davet kabul edildi", - "join_beta": "Takımlara erişmek için beta programına katılın.", "join_team": "{team}'e katıl", "joined_team": "{team} takımına katıldın", "joined_team_description": "Artık bu takımın bir üyesisin", @@ -946,6 +998,7 @@ "permissions": "İzinler", "same_target_destination": "Same target and destination", "saved": "Takım kaydedildi", + "search_title": "Team Requests", "select_a_team": "Takım seç", "success_invites": "Success invites", "title": "Başlık", @@ -976,6 +1029,7 @@ }, "workspace": { "change": "Change workspace", + "other_workspaces": "My Workspaces", "personal": "My Workspace", "team": "Team Workspace", "title": "Workspaces" diff --git a/packages/hoppscotch-common/package.json b/packages/hoppscotch-common/package.json index c1a2e8bb7..14b442142 100644 --- a/packages/hoppscotch-common/package.json +++ b/packages/hoppscotch-common/package.json @@ -1,7 +1,7 @@ { "name": "@hoppscotch/common", "private": true, - "version": "2024.3.3", + "version": "2024.3.4", "scripts": { "dev": "pnpm exec npm-run-all -p -l dev:*", "test": "vitest --run", diff --git a/packages/hoppscotch-common/src/components.d.ts b/packages/hoppscotch-common/src/components.d.ts index b1ab7c333..4ecf1d3b6 100644 --- a/packages/hoppscotch-common/src/components.d.ts +++ b/packages/hoppscotch-common/src/components.d.ts @@ -1,11 +1,11 @@ -/* eslint-disable */ -/* prettier-ignore */ -// @ts-nocheck -// Generated by unplugin-vue-components +// generated by unplugin-vue-components +// We suggest you to commit this file into source control // Read more: https://github.com/vuejs/core/pull/3399 +import '@vue/runtime-core' + export {} -declare module 'vue' { +declare module '@vue/runtime-core' { export interface GlobalComponents { AppActionHandler: typeof import('./components/app/ActionHandler.vue')['default'] AppBanner: typeof import('./components/app/Banner.vue')['default'] @@ -148,7 +148,6 @@ declare module 'vue' { IconLucideAlertTriangle: typeof import('~icons/lucide/alert-triangle')['default'] IconLucideArrowLeft: typeof import('~icons/lucide/arrow-left')['default'] IconLucideArrowUpRight: typeof import('~icons/lucide/arrow-up-right')['default'] - IconLucideBrush: (typeof import("~icons/lucide/brush"))["default"] IconLucideCheckCircle: typeof import('~icons/lucide/check-circle')['default'] IconLucideChevronRight: typeof import('~icons/lucide/chevron-right')['default'] IconLucideGlobe: typeof import('~icons/lucide/globe')['default'] @@ -158,7 +157,6 @@ declare module 'vue' { IconLucideLayers: typeof import('~icons/lucide/layers')['default'] IconLucideListEnd: typeof import('~icons/lucide/list-end')['default'] IconLucideMinus: typeof import('~icons/lucide/minus')['default'] - IconLucideRss: (typeof import("~icons/lucide/rss"))["default"] IconLucideSearch: typeof import('~icons/lucide/search')['default'] IconLucideUsers: typeof import('~icons/lucide/users')['default'] IconLucideX: typeof import('~icons/lucide/x')['default'] @@ -214,4 +212,5 @@ declare module 'vue' { WorkspaceCurrent: typeof import('./components/workspace/Current.vue')['default'] WorkspaceSelector: typeof import('./components/workspace/Selector.vue')['default'] } + } diff --git a/packages/hoppscotch-common/src/components/app/Interceptor.vue b/packages/hoppscotch-common/src/components/app/Interceptor.vue index 427770310..d66e14087 100644 --- a/packages/hoppscotch-common/src/components/app/Interceptor.vue +++ b/packages/hoppscotch-common/src/components/app/Interceptor.vue @@ -1,6 +1,6 @@