Compare commits
13 Commits
release/20
...
fix/duplic
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
01200c9e5f | ||
|
|
75193a7aa8 | ||
|
|
b269c239d9 | ||
|
|
72b4a1fc4e | ||
|
|
d2d1674d31 | ||
|
|
a6b57777e3 | ||
|
|
65ef4db86f | ||
|
|
7201147b55 | ||
|
|
dd143c95a9 | ||
|
|
005581ee7d | ||
|
|
1431ecc6d7 | ||
|
|
f34d896095 | ||
|
|
e95ebb9226 |
16
.github/workflows/release-push-docker.yml
vendored
16
.github/workflows/release-push-docker.yml
vendored
@@ -29,8 +29,8 @@ jobs:
|
|||||||
target: backend
|
target: backend
|
||||||
push: true
|
push: true
|
||||||
tags: |
|
tags: |
|
||||||
${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_BACKEND_CONTAINER_NAME }}:latest
|
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_BACKEND_CONTAINER_NAME }}:latest
|
||||||
${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_BACKEND_CONTAINER_NAME }}:${{ github.ref }}
|
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_BACKEND_CONTAINER_NAME }}:${{ github.ref_name }}
|
||||||
|
|
||||||
- name: Build and push `${{ secrets.DOCKER_FRONTEND_CONTAINER_NAME }}`
|
- name: Build and push `${{ secrets.DOCKER_FRONTEND_CONTAINER_NAME }}`
|
||||||
uses: docker/build-push-action@v4
|
uses: docker/build-push-action@v4
|
||||||
@@ -40,8 +40,8 @@ jobs:
|
|||||||
target: app
|
target: app
|
||||||
push: true
|
push: true
|
||||||
tags: |
|
tags: |
|
||||||
${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_FRONTEND_CONTAINER_NAME }}:latest
|
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_FRONTEND_CONTAINER_NAME }}:latest
|
||||||
${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_FRONTEND_CONTAINER_NAME }}:${{ github.ref }}
|
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_FRONTEND_CONTAINER_NAME }}:${{ github.ref_name }}
|
||||||
|
|
||||||
- name: Build and push `${{ secrets.DOCKER_SH_ADMIN_CONTAINER_NAME }}`
|
- name: Build and push `${{ secrets.DOCKER_SH_ADMIN_CONTAINER_NAME }}`
|
||||||
uses: docker/build-push-action@v4
|
uses: docker/build-push-action@v4
|
||||||
@@ -51,8 +51,8 @@ jobs:
|
|||||||
target: sh_admin
|
target: sh_admin
|
||||||
push: true
|
push: true
|
||||||
tags: |
|
tags: |
|
||||||
${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_SH_ADMIN_CONTAINER_NAME }}:latest
|
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_SH_ADMIN_CONTAINER_NAME }}:latest
|
||||||
${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_SH_ADMIN_CONTAINER_NAME }}:${{ github.ref }}
|
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_SH_ADMIN_CONTAINER_NAME }}:${{ github.ref_name }}
|
||||||
|
|
||||||
- name: Build and push `${{ secrets.DOCKER_AIO_CONTAINER_NAME }}`
|
- name: Build and push `${{ secrets.DOCKER_AIO_CONTAINER_NAME }}`
|
||||||
uses: docker/build-push-action@v4
|
uses: docker/build-push-action@v4
|
||||||
@@ -62,5 +62,5 @@ jobs:
|
|||||||
target: aio
|
target: aio
|
||||||
push: true
|
push: true
|
||||||
tags: |
|
tags: |
|
||||||
${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_AIO_CONTAINER_NAME }}:latest
|
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_AIO_CONTAINER_NAME }}:latest
|
||||||
${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_AIO_CONTAINER_NAME }}:${{ github.ref }}
|
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_AIO_CONTAINER_NAME }}:${{ github.ref_name }}
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ We as members, contributors, and leaders pledge to make participation in our
|
|||||||
community a harassment-free experience for everyone, regardless of age, body
|
community a harassment-free experience for everyone, regardless of age, body
|
||||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||||
identity and expression, level of experience, education, socio-economic status,
|
identity and expression, level of experience, education, socio-economic status,
|
||||||
nationality, personal appearance, race, religion, or sexual identity
|
nationality, personal appearance, race, caste, color, religion, or sexual
|
||||||
and orientation.
|
identity and orientation.
|
||||||
|
|
||||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||||
diverse, inclusive, and healthy community.
|
diverse, inclusive, and healthy community.
|
||||||
@@ -22,17 +22,17 @@ community include:
|
|||||||
* Giving and gracefully accepting constructive feedback
|
* Giving and gracefully accepting constructive feedback
|
||||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||||
and learning from the experience
|
and learning from the experience
|
||||||
* Focusing on what is best not just for us as individuals, but for the
|
* Focusing on what is best not just for us as individuals, but for the overall
|
||||||
overall community
|
community
|
||||||
|
|
||||||
Examples of unacceptable behavior include:
|
Examples of unacceptable behavior include:
|
||||||
|
|
||||||
* The use of sexualized language or imagery, and sexual attention or
|
* The use of sexualized language or imagery, and sexual attention or advances of
|
||||||
advances of any kind
|
any kind
|
||||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||||
* Public or private harassment
|
* Public or private harassment
|
||||||
* Publishing others' private information, such as a physical or email
|
* Publishing others' private information, such as a physical or email address,
|
||||||
address, without their explicit permission
|
without their explicit permission
|
||||||
* Other conduct which could reasonably be considered inappropriate in a
|
* Other conduct which could reasonably be considered inappropriate in a
|
||||||
professional setting
|
professional setting
|
||||||
|
|
||||||
@@ -82,15 +82,15 @@ behavior was inappropriate. A public apology may be requested.
|
|||||||
|
|
||||||
### 2. Warning
|
### 2. Warning
|
||||||
|
|
||||||
**Community Impact**: A violation through a single incident or series
|
**Community Impact**: A violation through a single incident or series of
|
||||||
of actions.
|
actions.
|
||||||
|
|
||||||
**Consequence**: A warning with consequences for continued behavior. No
|
**Consequence**: A warning with consequences for continued behavior. No
|
||||||
interaction with the people involved, including unsolicited interaction with
|
interaction with the people involved, including unsolicited interaction with
|
||||||
those enforcing the Code of Conduct, for a specified period of time. This
|
those enforcing the Code of Conduct, for a specified period of time. This
|
||||||
includes avoiding interactions in community spaces as well as external channels
|
includes avoiding interactions in community spaces as well as external channels
|
||||||
like social media. Violating these terms may lead to a temporary or
|
like social media. Violating these terms may lead to a temporary or permanent
|
||||||
permanent ban.
|
ban.
|
||||||
|
|
||||||
### 3. Temporary Ban
|
### 3. Temporary Ban
|
||||||
|
|
||||||
@@ -106,23 +106,27 @@ Violating these terms may lead to a permanent ban.
|
|||||||
### 4. Permanent Ban
|
### 4. Permanent Ban
|
||||||
|
|
||||||
**Community Impact**: Demonstrating a pattern of violation of community
|
**Community Impact**: Demonstrating a pattern of violation of community
|
||||||
standards, including sustained inappropriate behavior, harassment of an
|
standards, including sustained inappropriate behavior, harassment of an
|
||||||
individual, or aggression toward or disparagement of classes of individuals.
|
individual, or aggression toward or disparagement of classes of individuals.
|
||||||
|
|
||||||
**Consequence**: A permanent ban from any sort of public interaction within
|
**Consequence**: A permanent ban from any sort of public interaction within the
|
||||||
the community.
|
community.
|
||||||
|
|
||||||
## Attribution
|
## Attribution
|
||||||
|
|
||||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||||
version 2.0, available at
|
version 2.1, available at
|
||||||
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
|
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
|
||||||
|
|
||||||
Community Impact Guidelines were inspired by [Mozilla's code of conduct
|
Community Impact Guidelines were inspired by
|
||||||
enforcement ladder](https://github.com/mozilla/diversity).
|
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
|
||||||
|
|
||||||
[homepage]: https://www.contributor-covenant.org
|
|
||||||
|
|
||||||
For answers to common questions about this code of conduct, see the FAQ at
|
For answers to common questions about this code of conduct, see the FAQ at
|
||||||
https://www.contributor-covenant.org/faq. Translations are available at
|
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
|
||||||
https://www.contributor-covenant.org/translations.
|
[https://www.contributor-covenant.org/translations][translations].
|
||||||
|
|
||||||
|
[homepage]: https://www.contributor-covenant.org
|
||||||
|
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
|
||||||
|
[Mozilla CoC]: https://github.com/mozilla/diversity
|
||||||
|
[FAQ]: https://www.contributor-covenant.org/faq
|
||||||
|
[translations]: https://www.contributor-covenant.org/translations
|
||||||
|
|||||||
190
README.md
190
README.md
@@ -2,23 +2,18 @@
|
|||||||
<a href="https://hoppscotch.io">
|
<a href="https://hoppscotch.io">
|
||||||
<img
|
<img
|
||||||
src="https://avatars.githubusercontent.com/u/56705483"
|
src="https://avatars.githubusercontent.com/u/56705483"
|
||||||
alt="Hoppscotch Logo"
|
alt="Hoppscotch"
|
||||||
height="64"
|
height="64"
|
||||||
/>
|
/>
|
||||||
</a>
|
</a>
|
||||||
<br />
|
<h3>
|
||||||
<p>
|
|
||||||
<h3>
|
|
||||||
<b>
|
|
||||||
Hoppscotch
|
|
||||||
</b>
|
|
||||||
</h3>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<b>
|
<b>
|
||||||
Open source API development ecosystem
|
Hoppscotch
|
||||||
</b>
|
</b>
|
||||||
</p>
|
</h3>
|
||||||
|
<b>
|
||||||
|
Open Source API Development Ecosystem
|
||||||
|
</b>
|
||||||
<p>
|
<p>
|
||||||
|
|
||||||
[](CODE_OF_CONDUCT.md) [](https://hoppscotch.io) [](https://github.com/hoppscotch/hoppscotch/actions) [](https://twitter.com/share?text=%F0%9F%91%BD%20Hoppscotch%20%E2%80%A2%20Open%20source%20API%20development%20ecosystem%20-%20Helps%20you%20create%20requests%20faster,%20saving%20precious%20time%20on%20development.&url=https://hoppscotch.io&hashtags=hoppscotch&via=hoppscotch_io)
|
[](CODE_OF_CONDUCT.md) [](https://hoppscotch.io) [](https://github.com/hoppscotch/hoppscotch/actions) [](https://twitter.com/share?text=%F0%9F%91%BD%20Hoppscotch%20%E2%80%A2%20Open%20source%20API%20development%20ecosystem%20-%20Helps%20you%20create%20requests%20faster,%20saving%20precious%20time%20on%20development.&url=https://hoppscotch.io&hashtags=hoppscotch&via=hoppscotch_io)
|
||||||
@@ -34,23 +29,18 @@
|
|||||||
</p>
|
</p>
|
||||||
<br />
|
<br />
|
||||||
<p>
|
<p>
|
||||||
<a href="https://hoppscotch.io/#gh-light-mode-only" target="_blank">
|
<a href="https://hoppscotch.io">
|
||||||
<img
|
<picture>
|
||||||
src="./packages/hoppscotch-common/public/images/banner-light.png"
|
<source media="(prefers-color-scheme: dark)" srcset="./packages/hoppscotch-common/public/images/banner-dark.png">
|
||||||
alt="Hoppscotch"
|
<source media="(prefers-color-scheme: light)" srcset="./packages/hoppscotch-common/public/images/banner-light.png">
|
||||||
width="100%"
|
<img alt="Hoppscotch" src="./packages/hoppscotch-common/public/images/banner-dark.png">
|
||||||
/>
|
</picture>
|
||||||
</a>
|
|
||||||
<a href="https://hoppscotch.io/#gh-dark-mode-only" target="_blank">
|
|
||||||
<img
|
|
||||||
src="./packages/hoppscotch-common/public/images/banner-dark.png"
|
|
||||||
alt="Hoppscotch"
|
|
||||||
width="100%"
|
|
||||||
/>
|
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
_We highly recommend you take a look at the [**Hoppscotch Documentation**](https://docs.hoppscotch.io) to learn more about the app._
|
||||||
|
|
||||||
#### **Support**
|
#### **Support**
|
||||||
|
|
||||||
[](https://hoppscotch.io/discord) [](https://hoppscotch.io/telegram) [](https://github.com/hoppscotch/hoppscotch/discussions)
|
[](https://hoppscotch.io/discord) [](https://hoppscotch.io/telegram) [](https://github.com/hoppscotch/hoppscotch/discussions)
|
||||||
@@ -59,9 +49,9 @@
|
|||||||
|
|
||||||
❤️ **Lightweight:** Crafted with minimalistic UI design.
|
❤️ **Lightweight:** Crafted with minimalistic UI design.
|
||||||
|
|
||||||
⚡️ **Fast:** Send requests and get/copy responses in real-time.
|
⚡️ **Fast:** Send requests and get responses in real time.
|
||||||
|
|
||||||
**HTTP Methods**
|
🗄️ **HTTP Methods:** Request methods define the type of action you are requesting to be performed.
|
||||||
|
|
||||||
- `GET` - Requests retrieve resource information
|
- `GET` - Requests retrieve resource information
|
||||||
- `POST` - The server creates a new entry in a database
|
- `POST` - The server creates a new entry in a database
|
||||||
@@ -74,17 +64,15 @@
|
|||||||
- `TRACE` - Performs a message loop-back test along the path to the target resource
|
- `TRACE` - Performs a message loop-back test along the path to the target resource
|
||||||
- `<custom>` - Some APIs use custom request methods such as `LIST`. Type in your custom methods.
|
- `<custom>` - Some APIs use custom request methods such as `LIST`. Type in your custom methods.
|
||||||
|
|
||||||
🌈 **Make it yours:** Customizable combinations for background, foreground, and accent colors — [customize now](https://hoppscotch.io/settings).
|
🌈 **Theming:** Customizable combinations for background, foreground, and accent colors — [customize now](https://hoppscotch.io/settings).
|
||||||
|
|
||||||
**Theming**
|
- Choose a theme: System preference, Light, Dark, and Black
|
||||||
|
- Choose accent colors: Green, Teal, Blue, Indigo, Purple, Yellow, Orange, Red, and Pink
|
||||||
- Choose a theme: System (default), Light, Dark, and Black
|
|
||||||
- Choose accent color: Green (default), Teal, Blue, Indigo, Purple, Yellow, Orange, Red, and Pink
|
|
||||||
- Distraction-free Zen mode
|
- Distraction-free Zen mode
|
||||||
|
|
||||||
_Customized themes are synced with cloud / local session_
|
_Customized themes are synced with your cloud/local session._
|
||||||
|
|
||||||
🔥 **PWA:** Install as a [PWA](https://web.dev/what-are-pwas/) on your device.
|
🔥 **PWA:** Install as a [Progressive Web App](https://web.dev/progressive-web-apps) on your device.
|
||||||
|
|
||||||
- Instant loading with Service Workers
|
- Instant loading with Service Workers
|
||||||
- Offline support
|
- Offline support
|
||||||
@@ -107,7 +95,7 @@ _Customized themes are synced with cloud / local session_
|
|||||||
|
|
||||||
📡 **Server-Sent Events:** Receive a stream of updates from a server over an HTTP connection without resorting to polling.
|
📡 **Server-Sent Events:** Receive a stream of updates from a server over an HTTP connection without resorting to polling.
|
||||||
|
|
||||||
🌩 **Socket.IO:** Send and Receive data with SocketIO server.
|
🌩 **Socket.IO:** Send and Receive data with the SocketIO server.
|
||||||
|
|
||||||
🦟 **MQTT:** Subscribe and Publish to topics of an MQTT Broker.
|
🦟 **MQTT:** Subscribe and Publish to topics of an MQTT Broker.
|
||||||
|
|
||||||
@@ -127,7 +115,7 @@ _Customized themes are synced with cloud / local session_
|
|||||||
- OAuth 2.0
|
- OAuth 2.0
|
||||||
- OIDC Access Token/PKCE
|
- OIDC Access Token/PKCE
|
||||||
|
|
||||||
📢 **Headers:** Describes the format the body of your request is being sent as.
|
📢 **Headers:** Describes the format the body of your request is being sent in.
|
||||||
|
|
||||||
📫 **Parameters:** Use request parameters to set varying parts in simulated requests.
|
📫 **Parameters:** Use request parameters to set varying parts in simulated requests.
|
||||||
|
|
||||||
@@ -137,14 +125,14 @@ _Customized themes are synced with cloud / local session_
|
|||||||
- FormData, JSON, and many more
|
- FormData, JSON, and many more
|
||||||
- Toggle between key-value and RAW input parameter list
|
- Toggle between key-value and RAW input parameter list
|
||||||
|
|
||||||
👋 **Response:** Contains the status line, headers, and the message/response body.
|
📮 **Response:** Contains the status line, headers, and the message/response body.
|
||||||
|
|
||||||
- Copy response to clipboard
|
- Copy the response to the clipboard
|
||||||
- Download response as a file
|
- Download the response as a file
|
||||||
- View response headers
|
- View response headers
|
||||||
- View raw and preview of HTML, image, JSON, XML responses
|
- View raw and preview HTML, image, JSON, and XML responses
|
||||||
|
|
||||||
⏰ **History:** Request entries are synced with cloud / local session storage to restore with a single click.
|
⏰ **History:** Request entries are synced with your cloud/local session storage.
|
||||||
|
|
||||||
📁 **Collections:** Keep your API requests organized with collections and folders. Reuse them with a single click.
|
📁 **Collections:** Keep your API requests organized with collections and folders. Reuse them with a single click.
|
||||||
|
|
||||||
@@ -152,7 +140,32 @@ _Customized themes are synced with cloud / local session_
|
|||||||
- Nested folders
|
- Nested folders
|
||||||
- Export and import as a file or GitHub gist
|
- Export and import as a file or GitHub gist
|
||||||
|
|
||||||
_Collections are synced with cloud / local session storage_
|
_Collections are synced with your cloud/local session storage._
|
||||||
|
|
||||||
|
📜 **Pre-Request Scripts:** Snippets of code associated with a request that is executed before the request is sent.
|
||||||
|
|
||||||
|
- Set environment variables
|
||||||
|
- Include timestamp in the request headers
|
||||||
|
- Send a random alphanumeric string in the URL parameters
|
||||||
|
- Any JavaScript functions
|
||||||
|
|
||||||
|
👨👩👧👦 **Teams:** Helps you collaborate across your teams to design, develop, and test APIs faster.
|
||||||
|
|
||||||
|
- Create unlimited teams
|
||||||
|
- Create unlimited shared collections
|
||||||
|
- Create unlimited team members
|
||||||
|
- Role-based access control
|
||||||
|
- Cloud sync
|
||||||
|
- Multiple devices
|
||||||
|
|
||||||
|
👥 **Workspaces:** Organize your personal and team collections environments into workspaces. Easily switch between workspaces to manage multiple projects.
|
||||||
|
|
||||||
|
- Create unlimited workspaces
|
||||||
|
- Switch between personal and team workspaces
|
||||||
|
|
||||||
|
⌨️ **Keyboard Shortcuts:** Optimized for efficiency.
|
||||||
|
|
||||||
|
> **[Read our documentation on Keyboard Shortcuts](https://docs.hoppscotch.io/documentation/features/shortcuts)**
|
||||||
|
|
||||||
🌐 **Proxy:** Enable Proxy Mode from Settings to access blocked APIs.
|
🌐 **Proxy:** Enable Proxy Mode from Settings to access blocked APIs.
|
||||||
|
|
||||||
@@ -161,60 +174,31 @@ _Collections are synced with cloud / local session storage_
|
|||||||
- Access APIs served in non-HTTPS (`http://`) endpoints
|
- Access APIs served in non-HTTPS (`http://`) endpoints
|
||||||
- Use your Proxy URL
|
- Use your Proxy URL
|
||||||
|
|
||||||
_Official proxy server is hosted by Hoppscotch - **[GitHub](https://github.com/hoppscotch/proxyscotch)** - **[Privacy Policy](https://docs.hoppscotch.io/support/privacy)**_
|
_Official proxy server is hosted by Hoppscotch - **[GitHub](https://github.com/hoppscotch/proxyscotch)** - **[Privacy Policy](https://docs.hoppscotch.io/support/privacy)**._
|
||||||
|
|
||||||
📜 **Pre-Request Scripts β:** Snippets of code associated with a request that is executed before the request is sent.
|
|
||||||
|
|
||||||
- Set environment variables
|
|
||||||
- Include timestamp in the request headers
|
|
||||||
- Send a random alphanumeric string in the URL parameters
|
|
||||||
- Any JavaScript functions
|
|
||||||
|
|
||||||
📄 **API Documentation:** Create and share dynamic API documentation easily, quickly.
|
|
||||||
|
|
||||||
1. Add your requests to Collections and Folders
|
|
||||||
2. Export Collections and easily share your APIs with the rest of your team
|
|
||||||
3. Import Collections and Generate Documentation on-the-go
|
|
||||||
|
|
||||||
⌨️ **Keyboard Shortcuts:** Optimized for efficiency.
|
|
||||||
|
|
||||||
> **[Read our documentation on Keyboard Shortcuts](https://docs.hoppscotch.io/documentation/features/shortcuts)**
|
|
||||||
|
|
||||||
🌎 **i18n:** Experience the app in your language.
|
🌎 **i18n:** Experience the app in your language.
|
||||||
|
|
||||||
Help us to translate Hoppscotch. Please read [`TRANSLATIONS`](TRANSLATIONS.md) for details on our [`CODE OF CONDUCT`](CODE_OF_CONDUCT.md), and the process for submitting pull requests to us.
|
Help us to translate Hoppscotch. Please read [`TRANSLATIONS`](TRANSLATIONS.md) for details on our [`CODE OF CONDUCT`](CODE_OF_CONDUCT.md) and the process for submitting pull requests to us.
|
||||||
|
|
||||||
📦 **Add-ons:** Official add-ons for hoppscotch.
|
☁️ **Auth + Sync:** Sign in and sync your data in real-time across all your devices.
|
||||||
|
|
||||||
- **[Proxy](https://github.com/hoppscotch/proxyscotch)** - A simple proxy server created for Hoppscotch
|
**Sign in with:**
|
||||||
- **[CLI β](https://github.com/hoppscotch/hopp-cli)** - A CLI solution for Hoppscotch
|
|
||||||
- **[Browser Extensions](https://github.com/hoppscotch/hoppscotch-extension)** - Browser extensions that simplifies access to Hoppscotch
|
|
||||||
|
|
||||||
[ **Firefox**](https://addons.mozilla.org/en-US/firefox/addon/hoppscotch) | [ **Chrome**](https://chrome.google.com/webstore/detail/hoppscotch-extension-for-c/amknoiejhlmhancpahfcfcfhllgkpbld)
|
|
||||||
|
|
||||||
> **Extensions fixes `CORS` issues.**
|
|
||||||
|
|
||||||
- **[Hopp-Doc-Gen](https://github.com/hoppscotch/hopp-doc-gen)** - An API doc generator CLI for Hoppscotch
|
|
||||||
|
|
||||||
_Add-ons are developed and maintained under **[Hoppscotch Organization](https://github.com/hoppscotch)**._
|
|
||||||
|
|
||||||
☁️ **Auth + Sync:** Sign in and sync your data in real-time.
|
|
||||||
|
|
||||||
**Sign in with**
|
|
||||||
|
|
||||||
- GitHub
|
- GitHub
|
||||||
- Google
|
- Google
|
||||||
- Microsoft
|
- Microsoft
|
||||||
- Email
|
- Email
|
||||||
|
- SSO (Single Sign-On)[^EE]
|
||||||
|
|
||||||
**Synchronize your data**
|
**🔄 Synchronize your data:** Handoff to continue tasks on your other devices.
|
||||||
|
|
||||||
|
- Workspaces
|
||||||
- History
|
- History
|
||||||
- Collections
|
- Collections
|
||||||
- Environments
|
- Environments
|
||||||
- Settings
|
- Settings
|
||||||
|
|
||||||
✅ **Post-Request Tests β:** Write tests associated with a request that is executed after the request's response.
|
✅ **Post-Request Tests:** Write tests associated with a request that is executed after the request's response.
|
||||||
|
|
||||||
- Check the status code as an integer
|
- Check the status code as an integer
|
||||||
- Filter response headers
|
- Filter response headers
|
||||||
@@ -222,7 +206,7 @@ _Add-ons are developed and maintained under **[Hoppscotch Organization](https://
|
|||||||
- Set environment variables
|
- Set environment variables
|
||||||
- Write JavaScript code
|
- Write JavaScript code
|
||||||
|
|
||||||
🌱 **Environments** : Environment variables allow you to store and reuse values in your requests and scripts.
|
🌱 **Environments:** Environment variables allow you to store and reuse values in your requests and scripts.
|
||||||
|
|
||||||
- Unlimited environments and variables
|
- Unlimited environments and variables
|
||||||
- Initialize through the pre-request script
|
- Initialize through the pre-request script
|
||||||
@@ -241,22 +225,31 @@ _Add-ons are developed and maintained under **[Hoppscotch Organization](https://
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
👨👩👧👦 **Teams β:** Helps you collaborate across your team to design, develop, and test APIs faster.
|
|
||||||
|
|
||||||
- Unlimited teams
|
|
||||||
- Unlimited shared collections
|
|
||||||
- Unlimited team members
|
|
||||||
- Role-based access control
|
|
||||||
- Cloud sync
|
|
||||||
- Multiple devices
|
|
||||||
|
|
||||||
🚚 **Bulk Edit:** Edit key-value pairs in bulk.
|
🚚 **Bulk Edit:** Edit key-value pairs in bulk.
|
||||||
|
|
||||||
- Entries are separated by newline
|
- Entries are separated by newline
|
||||||
- Keys and values are separated by `:`
|
- Keys and values are separated by `:`
|
||||||
- Prepend `#` to any row you want to add but keep disabled
|
- Prepend `#` to any row you want to add but keep disabled
|
||||||
|
|
||||||
**For more features, please read our [documentation](https://docs.hoppscotch.io).**
|
🎛️ **Admin dashboard:** Manage your team and invite members.
|
||||||
|
|
||||||
|
- Insights
|
||||||
|
- Manage users
|
||||||
|
- Manage teams
|
||||||
|
|
||||||
|
📦 **Add-ons:** Official add-ons for hoppscotch.
|
||||||
|
|
||||||
|
- **[Hoppscotch CLI](https://github.com/hoppscotch/hopp-cli)** - Command-line interface for Hoppscotch.
|
||||||
|
- **[Proxy](https://github.com/hoppscotch/proxyscotch)** - A simple proxy server created for Hoppscotch.
|
||||||
|
- **[Browser Extensions](https://github.com/hoppscotch/hoppscotch-extension)** - Browser extensions that enhance your Hoppscotch experience.
|
||||||
|
|
||||||
|
[ **Firefox**](https://addons.mozilla.org/en-US/firefox/addon/hoppscotch) | [ **Chrome**](https://chrome.google.com/webstore/detail/hoppscotch-extension-for-c/amknoiejhlmhancpahfcfcfhllgkpbld)
|
||||||
|
|
||||||
|
> **Extensions fix `CORS` issues.**
|
||||||
|
|
||||||
|
_Add-ons are developed and maintained under **[Hoppscotch Organization](https://github.com/hoppscotch)**._
|
||||||
|
|
||||||
|
**For a complete list of features, please read our [documentation](https://docs.hoppscotch.io).**
|
||||||
|
|
||||||
## **Demo**
|
## **Demo**
|
||||||
|
|
||||||
@@ -268,18 +261,9 @@ _Add-ons are developed and maintained under **[Hoppscotch Organization](https://
|
|||||||
2. Click "Send" to simulate the request
|
2. Click "Send" to simulate the request
|
||||||
3. View the response
|
3. View the response
|
||||||
|
|
||||||
## **Built with**
|
|
||||||
|
|
||||||
- [HTML](https://developer.mozilla.org/en-US/docs/Web/HTML)
|
|
||||||
- [CSS](https://developer.mozilla.org/en-US/docs/Web/CSS), [SCSS](https://sass-lang.com), [Windi CSS](https://windicss.org)
|
|
||||||
- [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript)
|
|
||||||
- [TypeScript](https://www.typescriptlang.org)
|
|
||||||
- [Vue](https://vuejs.org)
|
|
||||||
- [Vite](https://vitejs.dev)
|
|
||||||
|
|
||||||
## **Developing**
|
## **Developing**
|
||||||
|
|
||||||
Follow our [self-hosting guide](https://docs.hoppscotch.io/documentation/self-host/getting-started) to get started with the development environment.
|
Follow our [self-hosting documentation](https://docs.hoppscotch.io/documentation/self-host/getting-started) to get started with the development environment.
|
||||||
|
|
||||||
## **Contributing**
|
## **Contributing**
|
||||||
|
|
||||||
@@ -297,7 +281,7 @@ See the [`CHANGELOG`](CHANGELOG.md) file for details.
|
|||||||
|
|
||||||
## **Authors**
|
## **Authors**
|
||||||
|
|
||||||
This project exists thanks to all the people who contribute — [contribute](CONTRIBUTING.md).
|
This project owes its existence to the collective efforts of all those who contribute — [contribute now](CONTRIBUTING.md).
|
||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
<a href="https://github.com/hoppscotch/hoppscotch/graphs/contributors">
|
<a href="https://github.com/hoppscotch/hoppscotch/graphs/contributors">
|
||||||
@@ -309,4 +293,6 @@ This project exists thanks to all the people who contribute — [contribute](CON
|
|||||||
|
|
||||||
## **License**
|
## **License**
|
||||||
|
|
||||||
This project is licensed under the [MIT License](https://opensource.org/licenses/MIT) - see the [`LICENSE`](LICENSE) file for details.
|
This project is licensed under the [MIT License](https://opensource.org/licenses/MIT) — see the [`LICENSE`](LICENSE) file for details.
|
||||||
|
|
||||||
|
[^EE]: Enterprise edition feature. [Learn more](https://docs.hoppscotch.io/documentation/self-host/getting-started).
|
||||||
|
|||||||
@@ -2,8 +2,9 @@
|
|||||||
|
|
||||||
This document outlines security procedures and general policies for the Hoppscotch project.
|
This document outlines security procedures and general policies for the Hoppscotch project.
|
||||||
|
|
||||||
1. [Reporting a security vulnerability](#reporting-a-security-vulnerability)
|
- [Security Policy](#security-policy)
|
||||||
3. [Incident response process](#incident-response-process)
|
- [Reporting a security vulnerability](#reporting-a-security-vulnerability)
|
||||||
|
- [Incident response process](#incident-response-process)
|
||||||
|
|
||||||
## Reporting a security vulnerability
|
## Reporting a security vulnerability
|
||||||
|
|
||||||
|
|||||||
@@ -9,26 +9,24 @@ Before you start working on a new language, please look through the [open pull r
|
|||||||
if there is no existing translation, you can create a new one by following these steps:
|
if there is no existing translation, you can create a new one by following these steps:
|
||||||
|
|
||||||
1. **[Fork the repository](https://github.com/hoppscotch/hoppscotch/fork).**
|
1. **[Fork the repository](https://github.com/hoppscotch/hoppscotch/fork).**
|
||||||
2. **Checkout the `i18n` branch for latest translations.**
|
2. **Checkout the `main` branch for latest translations.**
|
||||||
3. **Create a new branch for your translation with base branch `i18n`.**
|
3. **Create a new branch for your translation with base branch `main`.**
|
||||||
4. **Create target language file in the [`/packages/hoppscotch-common/locales`](https://github.com/hoppscotch/hoppscotch/tree/main/packages/hoppscotch-common/locales) directory.**
|
4. **Create target language file in the [`/packages/hoppscotch-common/locales`](https://github.com/hoppscotch/hoppscotch/tree/main/packages/hoppscotch-common/locales) directory.**
|
||||||
5. **Copy the contents of the source file [`/packages/hoppscotch-common/locales/en.json`](https://github.com/hoppscotch/hoppscotch/blob/main/packages/hoppscotch-common/locales/en.json) to the target language file.**
|
5. **Copy the contents of the source file [`/packages/hoppscotch-common/locales/en.json`](https://github.com/hoppscotch/hoppscotch/blob/main/packages/hoppscotch-common/locales/en.json) to the target language file.**
|
||||||
6. **Translate the strings in the target language file.**
|
6. **Translate the strings in the target language file.**
|
||||||
7. **Add your language entry to [`/packages/hoppscotch-common/languages.json`](https://github.com/hoppscotch/hoppscotch/blob/main/packages/hoppscotch-common/languages.json).**
|
7. **Add your language entry to [`/packages/hoppscotch-common/languages.json`](https://github.com/hoppscotch/hoppscotch/blob/main/packages/hoppscotch-common/languages.json).**
|
||||||
8. **Save & commit changes.**
|
8. **Save and commit changes.**
|
||||||
9. **Send a pull request.**
|
9. **Send a pull request.**
|
||||||
|
|
||||||
_You may send a pull request before all steps above are complete: e.g., you may want to ask for help with translations, or getting tests to pass. However, your pull request will not be merged until all steps above are complete._
|
_You may send a pull request before all steps above are complete: e.g., you may want to ask for help with translations, or getting tests to pass. However, your pull request will not be merged until all steps above are complete._
|
||||||
|
|
||||||
`i18n` branch will be merged into `main` branch once every week.
|
|
||||||
|
|
||||||
Completing an initial translation of the whole site is a fairly large task. One way to break that task up is to work with other translators through pull requests on your fork. You can also [add collaborators to your fork](https://help.github.com/en/github/setting-up-and-managing-your-github-user-account/inviting-collaborators-to-a-personal-repository) if you'd like to invite other translators to commit directly to your fork and share responsibility for merging pull requests.
|
Completing an initial translation of the whole site is a fairly large task. One way to break that task up is to work with other translators through pull requests on your fork. You can also [add collaborators to your fork](https://help.github.com/en/github/setting-up-and-managing-your-github-user-account/inviting-collaborators-to-a-personal-repository) if you'd like to invite other translators to commit directly to your fork and share responsibility for merging pull requests.
|
||||||
|
|
||||||
## Updating a translation
|
## Updating a translation
|
||||||
|
|
||||||
### Corrections
|
### Corrections
|
||||||
|
|
||||||
If you notice spelling or grammar errors, typos, or opportunities for better phrasing, open a pull request with your suggested fix. If you see a problem that you aren't sure of or don't have time to fix, open an issue.
|
If you notice spelling or grammar errors, typos, or opportunities for better phrasing, open a pull request with your suggested fix. If you see a problem that you aren't sure of or don't have time to fix, [open an issue](https://github.com/hoppscotch/hoppscotch/issues/new/choose).
|
||||||
|
|
||||||
### Broken links
|
### Broken links
|
||||||
|
|
||||||
|
|||||||
@@ -1,128 +0,0 @@
|
|||||||
# Contributor Covenant Code of Conduct
|
|
||||||
|
|
||||||
## Our Pledge
|
|
||||||
|
|
||||||
We as members, contributors, and leaders pledge to make participation in our
|
|
||||||
community a harassment-free experience for everyone, regardless of age, body
|
|
||||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
|
||||||
identity and expression, level of experience, education, socio-economic status,
|
|
||||||
nationality, personal appearance, race, religion, or sexual identity
|
|
||||||
and orientation.
|
|
||||||
|
|
||||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
|
||||||
diverse, inclusive, and healthy community.
|
|
||||||
|
|
||||||
## Our Standards
|
|
||||||
|
|
||||||
Examples of behavior that contributes to a positive environment for our
|
|
||||||
community include:
|
|
||||||
|
|
||||||
- Demonstrating empathy and kindness toward other people
|
|
||||||
- Being respectful of differing opinions, viewpoints, and experiences
|
|
||||||
- Giving and gracefully accepting constructive feedback
|
|
||||||
- Accepting responsibility and apologizing to those affected by our mistakes,
|
|
||||||
and learning from the experience
|
|
||||||
- Focusing on what is best not just for us as individuals, but for the
|
|
||||||
overall community
|
|
||||||
|
|
||||||
Examples of unacceptable behavior include:
|
|
||||||
|
|
||||||
- The use of sexualized language or imagery, and sexual attention or
|
|
||||||
advances of any kind
|
|
||||||
- Trolling, insulting or derogatory comments, and personal or political attacks
|
|
||||||
- Public or private harassment
|
|
||||||
- Publishing others' private information, such as a physical or email
|
|
||||||
address, without their explicit permission
|
|
||||||
- Other conduct which could reasonably be considered inappropriate in a
|
|
||||||
professional setting
|
|
||||||
|
|
||||||
## Enforcement Responsibilities
|
|
||||||
|
|
||||||
Community leaders are responsible for clarifying and enforcing our standards of
|
|
||||||
acceptable behavior and will take appropriate and fair corrective action in
|
|
||||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
|
||||||
or harmful.
|
|
||||||
|
|
||||||
Community leaders have the right and responsibility to remove, edit, or reject
|
|
||||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
|
||||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
|
||||||
decisions when appropriate.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
This Code of Conduct applies within all community spaces, and also applies when
|
|
||||||
an individual is officially representing the community in public spaces.
|
|
||||||
Examples of representing our community include using an official e-mail address,
|
|
||||||
posting via an official social media account, or acting as an appointed
|
|
||||||
representative at an online or offline event.
|
|
||||||
|
|
||||||
## Enforcement
|
|
||||||
|
|
||||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
||||||
reported to the community leaders responsible for enforcement at
|
|
||||||
support@hoppscotch.io.
|
|
||||||
All complaints will be reviewed and investigated promptly and fairly.
|
|
||||||
|
|
||||||
All community leaders are obligated to respect the privacy and security of the
|
|
||||||
reporter of any incident.
|
|
||||||
|
|
||||||
## Enforcement Guidelines
|
|
||||||
|
|
||||||
Community leaders will follow these Community Impact Guidelines in determining
|
|
||||||
the consequences for any action they deem in violation of this Code of Conduct:
|
|
||||||
|
|
||||||
### 1. Correction
|
|
||||||
|
|
||||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
|
||||||
unprofessional or unwelcome in the community.
|
|
||||||
|
|
||||||
**Consequence**: A private, written warning from community leaders, providing
|
|
||||||
clarity around the nature of the violation and an explanation of why the
|
|
||||||
behavior was inappropriate. A public apology may be requested.
|
|
||||||
|
|
||||||
### 2. Warning
|
|
||||||
|
|
||||||
**Community Impact**: A violation through a single incident or series
|
|
||||||
of actions.
|
|
||||||
|
|
||||||
**Consequence**: A warning with consequences for continued behavior. No
|
|
||||||
interaction with the people involved, including unsolicited interaction with
|
|
||||||
those enforcing the Code of Conduct, for a specified period of time. This
|
|
||||||
includes avoiding interactions in community spaces as well as external channels
|
|
||||||
like social media. Violating these terms may lead to a temporary or
|
|
||||||
permanent ban.
|
|
||||||
|
|
||||||
### 3. Temporary Ban
|
|
||||||
|
|
||||||
**Community Impact**: A serious violation of community standards, including
|
|
||||||
sustained inappropriate behavior.
|
|
||||||
|
|
||||||
**Consequence**: A temporary ban from any sort of interaction or public
|
|
||||||
communication with the community for a specified period of time. No public or
|
|
||||||
private interaction with the people involved, including unsolicited interaction
|
|
||||||
with those enforcing the Code of Conduct, is allowed during this period.
|
|
||||||
Violating these terms may lead to a permanent ban.
|
|
||||||
|
|
||||||
### 4. Permanent Ban
|
|
||||||
|
|
||||||
**Community Impact**: Demonstrating a pattern of violation of community
|
|
||||||
standards, including sustained inappropriate behavior, harassment of an
|
|
||||||
individual, or aggression toward or disparagement of classes of individuals.
|
|
||||||
|
|
||||||
**Consequence**: A permanent ban from any sort of public interaction within
|
|
||||||
the community.
|
|
||||||
|
|
||||||
## Attribution
|
|
||||||
|
|
||||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
|
||||||
version 2.0, available at
|
|
||||||
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
|
|
||||||
|
|
||||||
Community Impact Guidelines were inspired by [Mozilla's code of conduct
|
|
||||||
enforcement ladder](https://github.com/mozilla/diversity).
|
|
||||||
|
|
||||||
[homepage]: https://www.contributor-covenant.org
|
|
||||||
|
|
||||||
For answers to common questions about this code of conduct, see the FAQ at
|
|
||||||
https://www.contributor-covenant.org/faq. Translations are available at
|
|
||||||
https://www.contributor-covenant.org/translations.
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2022
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
@@ -1,29 +1,19 @@
|
|||||||
<div align="center">
|
|
||||||
<a href="https://hoppscotch.io">
|
|
||||||
<img
|
|
||||||
src="https://avatars.githubusercontent.com/u/56705483"
|
|
||||||
alt="Hoppscotch Logo"
|
|
||||||
height="64"
|
|
||||||
/>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div align="center">
|
|
||||||
|
|
||||||
# Hoppscotch CLI <font size=2><sup>ALPHA</sup></font>
|
# Hoppscotch CLI <font size=2><sup>ALPHA</sup></font>
|
||||||
|
|
||||||
</div>
|
A CLI to run Hoppscotch Test Scripts in CI environments.
|
||||||
|
|
||||||
A CLI to run Hoppscotch test scripts in CI environments.
|
|
||||||
|
|
||||||
### **Commands:**
|
### **Commands:**
|
||||||
|
|
||||||
- `hopp test [options] [file]`: testing hoppscotch collection.json file
|
- `hopp test [options] [file]`: testing hoppscotch collection.json file
|
||||||
|
|
||||||
### **Usage:**
|
### **Usage:**
|
||||||
```
|
|
||||||
|
```bash
|
||||||
hopp [options or commands] arguments
|
hopp [options or commands] arguments
|
||||||
```
|
```
|
||||||
|
|
||||||
### **Options:**
|
### **Options:**
|
||||||
|
|
||||||
- `-v`, `--ver`: see the current version of the CLI
|
- `-v`, `--ver`: see the current version of the CLI
|
||||||
- `-h`, `--help`: display help for command
|
- `-h`, `--help`: display help for command
|
||||||
|
|
||||||
@@ -45,17 +35,21 @@ hopp [options or commands] arguments
|
|||||||
- Executes and outputs test-script response.
|
- Executes and outputs test-script response.
|
||||||
|
|
||||||
#### Options:
|
#### Options:
|
||||||
|
|
||||||
##### `-e <file_path>` / `--env <file_path>`
|
##### `-e <file_path>` / `--env <file_path>`
|
||||||
|
|
||||||
- Accepts path to env.json with contents in below format:
|
- Accepts path to env.json with contents in below format:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"ENV1":"value1",
|
"ENV1":"value1",
|
||||||
"ENV2":"value2"
|
"ENV2":"value2"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
- You can now access those variables using `pw.env.get('<var_name>')`
|
- You can now access those variables using `pw.env.get('<var_name>')`
|
||||||
|
|
||||||
Taking the above example, `pw.env.get("ENV1")` will return `"value1"`
|
Taking the above example, `pw.env.get("ENV1")` will return `"value1"`
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
@@ -75,4 +69,59 @@ npm i -g @hoppscotch/cli
|
|||||||
|
|
||||||
## **Contributing:**
|
## **Contributing:**
|
||||||
|
|
||||||
To get started contributing to the repository, please read **[CONTRIBUTING.md](./CONTRIBUTING.md)**
|
When contributing to this repository, please first discuss the change you wish to make via issue,
|
||||||
|
email, or any other method with the owners of this repository before making a change.
|
||||||
|
|
||||||
|
Please note we have a code of conduct, please follow it in all your interactions with the project.
|
||||||
|
|
||||||
|
## Pull Request Process
|
||||||
|
|
||||||
|
1. Ensure any install or build dependencies are removed before the end of the layer when doing a
|
||||||
|
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.
|
||||||
|
|
||||||
|
## Set Up The Development Environment
|
||||||
|
|
||||||
|
1. After cloning the repository, execute the following commands:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pnpm install
|
||||||
|
pnpm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
2. In order to test locally, you can use two types of package linking:
|
||||||
|
|
||||||
|
1. The 'pnpm exec' way (preferred since it does not hamper your original installation of the CLI):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pnpm link @hoppscotch/cli
|
||||||
|
|
||||||
|
// Then to use or test the CLI:
|
||||||
|
pnpm exec hopp
|
||||||
|
|
||||||
|
// After testing, to remove the package linking:
|
||||||
|
pnpm rm @hoppscotch/cli
|
||||||
|
```
|
||||||
|
|
||||||
|
2. The 'global' way (warning: this might override the globally installed CLI, if exists):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo pnpm link --global
|
||||||
|
|
||||||
|
// Then to use or test the CLI:
|
||||||
|
hopp
|
||||||
|
|
||||||
|
// After testing, to remove the package linking:
|
||||||
|
sudo pnpm rm --global @hoppscotch/cli
|
||||||
|
```
|
||||||
|
|
||||||
|
3. To use the Typescript watch scripts:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pnpm run dev
|
||||||
|
```
|
||||||
|
|||||||
@@ -2,7 +2,20 @@
|
|||||||
--font-sans: "Inter Variable", sans-serif;
|
--font-sans: "Inter Variable", sans-serif;
|
||||||
--font-icon: "Material Symbols Rounded Variable";
|
--font-icon: "Material Symbols Rounded Variable";
|
||||||
--font-mono: "Roboto Mono Variable", monospace;
|
--font-mono: "Roboto Mono Variable", monospace;
|
||||||
--font-size-tiny: calc(var(--font-size-body) - 0.062rem);
|
--font-size-body: 0.75rem;
|
||||||
|
--font-size-tiny: 0.688rem;
|
||||||
|
--line-height-body: 1rem;
|
||||||
|
--upper-primary-sticky-fold: 4.125rem;
|
||||||
|
--upper-secondary-sticky-fold: 6.188rem;
|
||||||
|
--upper-tertiary-sticky-fold: 8.25rem;
|
||||||
|
--upper-mobile-primary-sticky-fold: 6.625rem;
|
||||||
|
--upper-mobile-secondary-sticky-fold: 8.688rem;
|
||||||
|
--upper-mobile-sticky-fold: 10.75rem;
|
||||||
|
--upper-mobile-tertiary-sticky-fold: 8.25rem;
|
||||||
|
--lower-primary-sticky-fold: 3rem;
|
||||||
|
--lower-secondary-sticky-fold: 5.063rem;
|
||||||
|
--lower-tertiary-sticky-fold: 7.125rem;
|
||||||
|
--sidebar-primary-sticky-fold: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin dark-theme {
|
@mixin dark-theme {
|
||||||
@@ -200,8 +213,8 @@
|
|||||||
:root {
|
:root {
|
||||||
@include base-theme;
|
@include base-theme;
|
||||||
@include dark-theme;
|
@include dark-theme;
|
||||||
@include green-theme;
|
|
||||||
@include dark-editor-theme;
|
@include dark-editor-theme;
|
||||||
|
@include green-theme;
|
||||||
}
|
}
|
||||||
|
|
||||||
:root.light {
|
:root.light {
|
||||||
@@ -257,63 +270,3 @@
|
|||||||
:root[data-accent="yellow"] {
|
:root[data-accent="yellow"] {
|
||||||
@include yellow-theme;
|
@include yellow-theme;
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin font-small {
|
|
||||||
--font-size-body: 0.75rem;
|
|
||||||
--line-height-body: 1rem;
|
|
||||||
--upper-primary-sticky-fold: 4.125rem;
|
|
||||||
--upper-secondary-sticky-fold: 6.188rem;
|
|
||||||
--upper-tertiary-sticky-fold: 8.25rem;
|
|
||||||
--upper-mobile-primary-sticky-fold: 6.625rem;
|
|
||||||
--upper-mobile-secondary-sticky-fold: 8.688rem;
|
|
||||||
--upper-mobile-sticky-fold: 10.75rem;
|
|
||||||
--upper-mobile-tertiary-sticky-fold: 8.25rem;
|
|
||||||
--lower-primary-sticky-fold: 3rem;
|
|
||||||
--lower-secondary-sticky-fold: 5.063rem;
|
|
||||||
--lower-tertiary-sticky-fold: 7.125rem;
|
|
||||||
--sidebar-primary-sticky-fold: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin font-medium {
|
|
||||||
--font-size-body: 0.875rem;
|
|
||||||
--line-height-body: 1.25rem;
|
|
||||||
--upper-primary-sticky-fold: 4.375rem;
|
|
||||||
--upper-secondary-sticky-fold: 6.688rem;
|
|
||||||
--upper-tertiary-sticky-fold: 9rem;
|
|
||||||
--upper-mobile-primary-sticky-fold: 7.125rem;
|
|
||||||
--upper-mobile-secondary-sticky-fold: 9.438rem;
|
|
||||||
--upper-mobile-sticky-fold: 11.75rem;
|
|
||||||
--upper-mobile-tertiary-sticky-fold: 9rem;
|
|
||||||
--lower-primary-sticky-fold: 3.25rem;
|
|
||||||
--lower-secondary-sticky-fold: 5.563rem;
|
|
||||||
--lower-tertiary-sticky-fold: 7.875rem;
|
|
||||||
--sidebar-primary-sticky-fold: 2.25rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin font-large {
|
|
||||||
--font-size-body: 1rem;
|
|
||||||
--line-height-body: 1.5rem;
|
|
||||||
--upper-primary-sticky-fold: 4.625rem;
|
|
||||||
--upper-secondary-sticky-fold: 7.188rem;
|
|
||||||
--upper-tertiary-sticky-fold: 9.75rem;
|
|
||||||
--upper-mobile-primary-sticky-fold: 7.625rem;
|
|
||||||
--upper-mobile-secondary-sticky-fold: 10.188rem;
|
|
||||||
--upper-mobile-sticky-fold: 12.75rem;
|
|
||||||
--upper-mobile-tertiary-sticky-fold: 9.75rem;
|
|
||||||
--lower-primary-sticky-fold: 3.5rem;
|
|
||||||
--lower-secondary-sticky-fold: 6.063rem;
|
|
||||||
--lower-tertiary-sticky-fold: 8.625rem;
|
|
||||||
--sidebar-primary-sticky-fold: 2.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
:root[data-font-size="small"] {
|
|
||||||
@include font-small;
|
|
||||||
}
|
|
||||||
|
|
||||||
:root[data-font-size="medium"] {
|
|
||||||
@include font-medium;
|
|
||||||
}
|
|
||||||
|
|
||||||
:root[data-font-size="large"] {
|
|
||||||
@include font-large;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -118,22 +118,22 @@
|
|||||||
},
|
},
|
||||||
"collection": {
|
"collection": {
|
||||||
"created": "Koleksi dibuat",
|
"created": "Koleksi dibuat",
|
||||||
"different_parent": "Cannot reorder collection with different parent",
|
"different_parent": "Tidak dapat mengubah urutan koleksi dengan induk yang berbeda",
|
||||||
"edit": "Mengubah Koleksi",
|
"edit": "Mengubah Koleksi",
|
||||||
"invalid_name": "Berikan nama untuk Koleksi",
|
"invalid_name": "Berikan nama untuk Koleksi",
|
||||||
"invalid_root_move": "Collection already in the root",
|
"invalid_root_move": "Koleksi sudah berada di akar direktori",
|
||||||
"moved": "Moved Successfully",
|
"moved": "Berhasil Dipindahkan",
|
||||||
"my_collections": "Koleksi Saya",
|
"my_collections": "Koleksi Saya",
|
||||||
"name": "Koleksi Baru Saya",
|
"name": "Koleksi Baru Saya",
|
||||||
"name_length_insufficient": "Nama koleksi harus minimal 3 karakter",
|
"name_length_insufficient": "Nama koleksi harus minimal 3 karakter",
|
||||||
"new": "Koleksi baru",
|
"new": "Koleksi baru",
|
||||||
"order_changed": "Collection Order Updated",
|
"order_changed": "Pembaruan Urutan Koleksi",
|
||||||
"renamed": "Koleksi berganti nama",
|
"renamed": "Koleksi berganti nama",
|
||||||
"request_in_use": "Permintaan sedang digunakan",
|
"request_in_use": "Permintaan sedang digunakan",
|
||||||
"save_as": "Simpan Sebagai",
|
"save_as": "Simpan Sebagai",
|
||||||
"select": "Pilih Koleksi",
|
"select": "Pilih Koleksi",
|
||||||
"select_location": "Pilih lokasi",
|
"select_location": "Pilih lokasi",
|
||||||
"select_team": "Pilih team",
|
"select_team": "Pilih tim",
|
||||||
"team_collections": "Koleksi Tim"
|
"team_collections": "Koleksi Tim"
|
||||||
},
|
},
|
||||||
"confirm": {
|
"confirm": {
|
||||||
@@ -147,7 +147,7 @@
|
|||||||
"remove_team": "Apakah Anda yakin ingin menghapus tim ini?",
|
"remove_team": "Apakah Anda yakin ingin menghapus tim ini?",
|
||||||
"remove_telemetry": "Apakah Anda yakin ingin menyisih dari Telemetri?",
|
"remove_telemetry": "Apakah Anda yakin ingin menyisih dari Telemetri?",
|
||||||
"request_change": "Apakah Anda yakin ingin membuang permintaan saat ini, perubahan yang belum disimpan akan hilang.",
|
"request_change": "Apakah Anda yakin ingin membuang permintaan saat ini, perubahan yang belum disimpan akan hilang.",
|
||||||
"save_unsaved_tab": "Do you want to save changes made in this tab?",
|
"save_unsaved_tab": "Apakah Anda ingin menyimpan perubahan yang dibuat di tab ini?",
|
||||||
"sync": "Apakah Anda ingin memulihkan ruang kerja Anda dari cloud? Ini akan membuang kemajuan lokal Anda."
|
"sync": "Apakah Anda ingin memulihkan ruang kerja Anda dari cloud? Ini akan membuang kemajuan lokal Anda."
|
||||||
},
|
},
|
||||||
"count": {
|
"count": {
|
||||||
@@ -180,8 +180,8 @@
|
|||||||
"profile": "Masuk untuk melihat profil Anda",
|
"profile": "Masuk untuk melihat profil Anda",
|
||||||
"protocols": "Protokol kosong",
|
"protocols": "Protokol kosong",
|
||||||
"schema": "Hubungkan ke endpoint GraphQL untuk melihat skema",
|
"schema": "Hubungkan ke endpoint GraphQL untuk melihat skema",
|
||||||
"shortcodes": "Shortcodes are empty",
|
"shortcodes": "Shortcodes kosong",
|
||||||
"subscription": "Subscriptions are empty",
|
"subscription": "Langganan kosong",
|
||||||
"team_name": "Nama team kosong",
|
"team_name": "Nama team kosong",
|
||||||
"teams": "Kamu bukan di team manapun",
|
"teams": "Kamu bukan di team manapun",
|
||||||
"tests": "Tidak ada tes untuk permintaan ini"
|
"tests": "Tidak ada tes untuk permintaan ini"
|
||||||
@@ -189,19 +189,19 @@
|
|||||||
"environment": {
|
"environment": {
|
||||||
"add_to_global": "Tambahkan ke Global",
|
"add_to_global": "Tambahkan ke Global",
|
||||||
"added": "Tambahan Environment",
|
"added": "Tambahan Environment",
|
||||||
"create_new": "Membuat baru environment",
|
"create_new": "Membuat environment baru",
|
||||||
"created": "Environment dibuat",
|
"created": "Environment dibuat",
|
||||||
"deleted": "Environment dihapus",
|
"deleted": "Environment dihapus",
|
||||||
"edit": "Sunting Environment",
|
"edit": "Sunting Environment",
|
||||||
"invalid_name": "Tolong beri nama untuk environment",
|
"invalid_name": "Tolong beri nama untuk environment",
|
||||||
"my_environments": "My Environments",
|
"my_environments": "Environment Saya",
|
||||||
"nested_overflow": "variabel environment bersarang dibatasi hingga 10 level",
|
"nested_overflow": "Variabel environment bersarang dibatasi hingga 10 level",
|
||||||
"new": "Environment Baru",
|
"new": "Environment Baru",
|
||||||
"no_environment": "No environment",
|
"no_environment": "No environment",
|
||||||
"no_environment_description": "Tidak ada environment yang dipilih. Pilih apa yang harus dilakukan dengan variabel berikut.",
|
"no_environment_description": "Tidak ada environment yang dipilih. Pilih apa yang harus dilakukan dengan variabel berikut.",
|
||||||
"select": "Pilih environment",
|
"select": "Pilih environment",
|
||||||
"team_environments": "Team Environments",
|
"team_environments": "Environment Tim",
|
||||||
"title": "Environments",
|
"title": "Environment",
|
||||||
"updated": "Environment diperbarui",
|
"updated": "Environment diperbarui",
|
||||||
"variable_list": "Daftar Variable"
|
"variable_list": "Daftar Variable"
|
||||||
},
|
},
|
||||||
@@ -210,8 +210,8 @@
|
|||||||
"check_console_details": "Periksa console log untuk detailnya.",
|
"check_console_details": "Periksa console log untuk detailnya.",
|
||||||
"curl_invalid_format": "cURL tidak diformat dengan benar",
|
"curl_invalid_format": "cURL tidak diformat dengan benar",
|
||||||
"danger_zone": "Danger zone",
|
"danger_zone": "Danger zone",
|
||||||
"delete_account": "Your account is currently an owner in these teams:",
|
"delete_account": "Akun Anda saat ini merupakan pemilik dalam tim-tim ini:",
|
||||||
"delete_account_description": "You must either remove yourself, transfer ownership, or delete these teams before you can delete your account.",
|
"delete_account_description": "Anda harus menghapus diri Anda dari tim-tim ini, mentransfer kepemilikan, atau menghapus tim-tim ini sebelum Anda dapat menghapus akun Anda.",
|
||||||
"empty_req_name": "Nama Permintaan Kosong",
|
"empty_req_name": "Nama Permintaan Kosong",
|
||||||
"f12_details": "(F12 untuk detailnya)",
|
"f12_details": "(F12 untuk detailnya)",
|
||||||
"gql_prettify_invalid_query": "Tidak dapat prettify kueri yang tidak valid, menyelesaikan kesalahan sintaksis kueri, dan coba lagi",
|
"gql_prettify_invalid_query": "Tidak dapat prettify kueri yang tidak valid, menyelesaikan kesalahan sintaksis kueri, dan coba lagi",
|
||||||
@@ -294,7 +294,7 @@
|
|||||||
"from_json_description": "Impor dari Hoppscotch berkas koleksi",
|
"from_json_description": "Impor dari Hoppscotch berkas koleksi",
|
||||||
"from_my_collections": "Impor dari Koleksi Saya",
|
"from_my_collections": "Impor dari Koleksi Saya",
|
||||||
"from_my_collections_description": "Impor dari Berkas Koleksi Saya",
|
"from_my_collections_description": "Impor dari Berkas Koleksi Saya",
|
||||||
"from_openapi": "Import dari OpenAPI",
|
"from_openapi": "Impor dari OpenAPI",
|
||||||
"from_openapi_description": "Impor dari OpenAPI syarat berkas (YML/JSON)",
|
"from_openapi_description": "Impor dari OpenAPI syarat berkas (YML/JSON)",
|
||||||
"from_postman": "Impor dari Postman",
|
"from_postman": "Impor dari Postman",
|
||||||
"from_postman_description": "Impor dari Koleksi Postman",
|
"from_postman_description": "Impor dari Koleksi Postman",
|
||||||
@@ -316,23 +316,23 @@
|
|||||||
"zen_mode": "Zen mode"
|
"zen_mode": "Zen mode"
|
||||||
},
|
},
|
||||||
"modal": {
|
"modal": {
|
||||||
"close_unsaved_tab": "You have unsaved changes",
|
"close_unsaved_tab": "Anda memiliki perubahan yang belum disimpan",
|
||||||
"collections": "Koleksi",
|
"collections": "Koleksi",
|
||||||
"confirm": "Mengonfirmasi",
|
"confirm": "Mengonfirmasi",
|
||||||
"edit_request": "Edit Request",
|
"edit_request": "Edit Request",
|
||||||
"import_export": "Impor / Ekspor"
|
"import_export": "Impor / Ekspor"
|
||||||
},
|
},
|
||||||
"mqtt": {
|
"mqtt": {
|
||||||
"already_subscribed": "You are already subscribed to this topic.",
|
"already_subscribed": "Anda sudah berlangganan topik ini.",
|
||||||
"clean_session": "Clean Session",
|
"clean_session": "Sesi Bersih",
|
||||||
"clear_input": "Clear input",
|
"clear_input": "Hapus input",
|
||||||
"clear_input_on_send": "Clear input on send",
|
"clear_input_on_send": "Hapus input saat mengirim",
|
||||||
"client_id": "Client ID",
|
"client_id": "Client ID",
|
||||||
"color": "Pick a color",
|
"color": "Pilih warna",
|
||||||
"communication": "Komunikasi",
|
"communication": "Komunikasi",
|
||||||
"connection_config": "Connection Config",
|
"connection_config": "Konfigurasi Koneksi",
|
||||||
"connection_not_authorized": "This MQTT connection does not use any authentication.",
|
"connection_not_authorized": "Koneksi MQTT ini tidak menggunakan otentikasi",
|
||||||
"invalid_topic": "Please provide a topic for the subscription",
|
"invalid_topic": "Harap berikan topik untuk langganan",
|
||||||
"keep_alive": "Keep Alive",
|
"keep_alive": "Keep Alive",
|
||||||
"log": "Log",
|
"log": "Log",
|
||||||
"lw_message": "Last-Will Message",
|
"lw_message": "Last-Will Message",
|
||||||
@@ -340,8 +340,8 @@
|
|||||||
"lw_retain": "Last-Will Retain",
|
"lw_retain": "Last-Will Retain",
|
||||||
"lw_topic": "Last-Will Topic",
|
"lw_topic": "Last-Will Topic",
|
||||||
"message": "Pesan",
|
"message": "Pesan",
|
||||||
"new": "New Subscription",
|
"new": "Langganan Baru",
|
||||||
"not_connected": "Please start a MQTT connection first.",
|
"not_connected": "Mulai koneksi MQTT terlebih dahulu",
|
||||||
"publish": "Menerbitkan",
|
"publish": "Menerbitkan",
|
||||||
"qos": "QoS",
|
"qos": "QoS",
|
||||||
"ssl": "SSL",
|
"ssl": "SSL",
|
||||||
@@ -396,19 +396,19 @@
|
|||||||
"text": "Text"
|
"text": "Text"
|
||||||
},
|
},
|
||||||
"copy_link": "Salin tautan",
|
"copy_link": "Salin tautan",
|
||||||
"different_collection": "Cannot reorder requests from different collections",
|
"different_collection": "Tidak dapat mengubah urutan permintaan dari koleksi yang berbeda",
|
||||||
"duplicated": "Request duplicated",
|
"duplicated": "Request duplicated",
|
||||||
"duration": "Durasi",
|
"duration": "Durasi",
|
||||||
"enter_curl": "Masukkan cURL",
|
"enter_curl": "Masukkan cURL",
|
||||||
"generate_code": "Generate code",
|
"generate_code": "Hasilkan kode",
|
||||||
"generated_code": "Generated code",
|
"generated_code": "Hasilkan kode",
|
||||||
"header_list": "Daftar Header",
|
"header_list": "Daftar Header",
|
||||||
"invalid_name": "Harap berikan nama untuk request",
|
"invalid_name": "Harap berikan nama untuk request",
|
||||||
"method": "Method",
|
"method": "Method",
|
||||||
"moved": "Request moved",
|
"moved": "Request moved",
|
||||||
"name": "Request nama",
|
"name": "Request nama",
|
||||||
"new": "Request baru",
|
"new": "Request baru",
|
||||||
"order_changed": "Request Order Updated",
|
"order_changed": "Urutan Request Diperbarui",
|
||||||
"override": "Membatalkan",
|
"override": "Membatalkan",
|
||||||
"override_help": "Set <kbd>Content-Type</kbd> in Headers",
|
"override_help": "Set <kbd>Content-Type</kbd> in Headers",
|
||||||
"overriden": "Diganti",
|
"overriden": "Diganti",
|
||||||
@@ -453,7 +453,7 @@
|
|||||||
"settings": {
|
"settings": {
|
||||||
"accent_color": "Accent color",
|
"accent_color": "Accent color",
|
||||||
"account": "Akun",
|
"account": "Akun",
|
||||||
"account_deleted": "Your account has been deleted",
|
"account_deleted": "Akun Anda telah dihapus",
|
||||||
"account_description": "Sesuaikan pengaturan akun Anda.",
|
"account_description": "Sesuaikan pengaturan akun Anda.",
|
||||||
"account_email_description": "Alamat surel utama Anda.",
|
"account_email_description": "Alamat surel utama Anda.",
|
||||||
"account_name_description": "Ini adalah nama tampilan Anda.",
|
"account_name_description": "Ini adalah nama tampilan Anda.",
|
||||||
@@ -609,7 +609,7 @@
|
|||||||
"file_imported": "File diimpor",
|
"file_imported": "File diimpor",
|
||||||
"finished_in": "Selesai dalam {duration} ms",
|
"finished_in": "Selesai dalam {duration} ms",
|
||||||
"history_deleted": "Riwayat dihapus",
|
"history_deleted": "Riwayat dihapus",
|
||||||
"linewrap": "Wrap lines",
|
"linewrap": "Bungkus baris",
|
||||||
"loading": "Memuat...",
|
"loading": "Memuat...",
|
||||||
"message_received": "Pesan: {message} tiba di topik: {topic}",
|
"message_received": "Pesan: {message} tiba di topik: {topic}",
|
||||||
"mqtt_subscription_failed": "Terjadi masalah saat berlangganan topik: {topic}",
|
"mqtt_subscription_failed": "Terjadi masalah saat berlangganan topik: {topic}",
|
||||||
@@ -666,7 +666,7 @@
|
|||||||
"email_do_not_match": "Surel tidak cocok dengan detail akun Anda. Hubungi pemilik tim Anda.",
|
"email_do_not_match": "Surel tidak cocok dengan detail akun Anda. Hubungi pemilik tim Anda.",
|
||||||
"exit": "Keluar dari Tim",
|
"exit": "Keluar dari Tim",
|
||||||
"exit_disabled": "Hanya pemilik yang tidak dapat keluar dari tim",
|
"exit_disabled": "Hanya pemilik yang tidak dapat keluar dari tim",
|
||||||
"invalid_coll_id": "Invalid collection ID",
|
"invalid_coll_id": "ID koleksi tidak valid",
|
||||||
"invalid_email_format": "Format surel tidak valid",
|
"invalid_email_format": "Format surel tidak valid",
|
||||||
"invalid_id": "ID tim tidak valid. Hubungi pemilik tim Anda.",
|
"invalid_id": "ID tim tidak valid. Hubungi pemilik tim Anda.",
|
||||||
"invalid_invite_link": "Tautan undangan tidak valid",
|
"invalid_invite_link": "Tautan undangan tidak valid",
|
||||||
@@ -690,7 +690,7 @@
|
|||||||
"member_removed": "Pengguna dihapus",
|
"member_removed": "Pengguna dihapus",
|
||||||
"member_role_updated": "Peran pengguna diperbarui",
|
"member_role_updated": "Peran pengguna diperbarui",
|
||||||
"members": "Anggota",
|
"members": "Anggota",
|
||||||
"more_members": "+{count} more",
|
"more_members": "+{count} lebih",
|
||||||
"name_length_insufficient": "Nama tim harus setidaknya 6 karakter",
|
"name_length_insufficient": "Nama tim harus setidaknya 6 karakter",
|
||||||
"name_updated": "Nama tim diperbarui",
|
"name_updated": "Nama tim diperbarui",
|
||||||
"new": "Tim Baru",
|
"new": "Tim Baru",
|
||||||
@@ -698,13 +698,13 @@
|
|||||||
"new_name": "Tim baru saya",
|
"new_name": "Tim baru saya",
|
||||||
"no_access": "Anda tidak memiliki akses edit ke collections ini",
|
"no_access": "Anda tidak memiliki akses edit ke collections ini",
|
||||||
"no_invite_found": "Undangan tidak ditemukan. Hubungi pemilik tim Anda.",
|
"no_invite_found": "Undangan tidak ditemukan. Hubungi pemilik tim Anda.",
|
||||||
"no_request_found": "Request not found.",
|
"no_request_found": "Request tidak ditemukan.",
|
||||||
"not_found": "Tim tidak ditemukan. Hubungi pemilik tim Anda.",
|
"not_found": "Tim tidak ditemukan. Hubungi pemilik tim Anda.",
|
||||||
"not_valid_viewer": "Anda bukan penonton yang valid. Hubungi pemilik tim Anda.",
|
"not_valid_viewer": "Anda bukan penonton yang valid. Hubungi pemilik tim Anda.",
|
||||||
"parent_coll_move": "Cannot move collection to a child collection",
|
"parent_coll_move": "Tidak dapat memindahkan koleksi ke dalam koleksi anak",
|
||||||
"pending_invites": "Undangan tertunda",
|
"pending_invites": "Undangan tertunda",
|
||||||
"permissions": "Izin",
|
"permissions": "Izin",
|
||||||
"same_target_destination": "Same target and destination",
|
"same_target_destination": "Sama tujuan dan destinasi",
|
||||||
"saved": "Tim disimpan",
|
"saved": "Tim disimpan",
|
||||||
"select_a_team": "Pilih tim",
|
"select_a_team": "Pilih tim",
|
||||||
"title": "tim",
|
"title": "tim",
|
||||||
@@ -712,9 +712,9 @@
|
|||||||
"we_sent_invite_link_description": "Minta semua undangan untuk memeriksa kotak masuk mereka. Klik tautan untuk bergabung dengan tim."
|
"we_sent_invite_link_description": "Minta semua undangan untuk memeriksa kotak masuk mereka. Klik tautan untuk bergabung dengan tim."
|
||||||
},
|
},
|
||||||
"team_environment": {
|
"team_environment": {
|
||||||
"deleted": "Environment Deleted",
|
"deleted": "Environment dihapus",
|
||||||
"duplicate": "Environment Duplicated",
|
"duplicate": "Environment diduplikasi",
|
||||||
"not_found": "Environment not found."
|
"not_found": "Environment tidak ditemukan."
|
||||||
},
|
},
|
||||||
"test": {
|
"test": {
|
||||||
"failed": "Tes gagal",
|
"failed": "Tes gagal",
|
||||||
@@ -734,9 +734,9 @@
|
|||||||
"url": "URL"
|
"url": "URL"
|
||||||
},
|
},
|
||||||
"workspace": {
|
"workspace": {
|
||||||
"change": "Change workspace",
|
"change": "Beralih workspace",
|
||||||
"personal": "My Workspace",
|
"personal": "Workspace Saya",
|
||||||
"team": "Team Workspace",
|
"team": "Workspace Tim",
|
||||||
"title": "Workspaces"
|
"title": "Workspaces"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,48 +1,50 @@
|
|||||||
{
|
{
|
||||||
"action": {
|
"action": {
|
||||||
"autoscroll": "Autoscroll",
|
"autoscroll": "Автоскрол",
|
||||||
"cancel": "Отменить",
|
"cancel": "Отменить",
|
||||||
"choose_file": "Выберите файл",
|
"choose_file": "Выберите файл",
|
||||||
"clear": "Очистить",
|
"clear": "Очистить",
|
||||||
"clear_all": "Очистить все",
|
"clear_all": "Очистить все",
|
||||||
"close": "Close",
|
"clear_history": "Очистить всю историю",
|
||||||
|
"close": "Закрыть",
|
||||||
"connect": "Подключиться",
|
"connect": "Подключиться",
|
||||||
"connecting": "Connecting",
|
"connecting": "Соединение...",
|
||||||
"copy": "Скопировать",
|
"copy": "Скопировать",
|
||||||
"delete": "Удалить",
|
"delete": "Удалить",
|
||||||
"disconnect": "Отключиться",
|
"disconnect": "Отключиться",
|
||||||
"dismiss": "Скрыть",
|
"dismiss": "Скрыть",
|
||||||
"dont_save": "Don't save",
|
"dont_save": "Не сохранять",
|
||||||
"download_file": "Скачать файл",
|
"download_file": "Скачать файл",
|
||||||
"drag_to_reorder": "Drag to reorder",
|
"drag_to_reorder": "Перетягивайте для сортировки",
|
||||||
"duplicate": "Дублировать",
|
"duplicate": "Дублировать",
|
||||||
"edit": "Редактировать",
|
"edit": "Редактировать",
|
||||||
"filter": "Filter",
|
"filter": "Фильтр",
|
||||||
"go_back": "Вернуться",
|
"go_back": "Вернуться",
|
||||||
"go_forward": "Go forward",
|
"go_forward": "Вперёд",
|
||||||
"group_by": "Group by",
|
"group_by": "Сгруппировать по",
|
||||||
"label": "Название",
|
"label": "Название",
|
||||||
"learn_more": "Узнать больше",
|
"learn_more": "Узнать больше",
|
||||||
"less": "Less",
|
"less": "Меньше",
|
||||||
"more": "Больше",
|
"more": "Больше",
|
||||||
"new": "Создать новый",
|
"new": "Создать новый",
|
||||||
"no": "Нет",
|
"no": "Нет",
|
||||||
"open_workspace": "Open workspace",
|
"open_workspace": "Открыть пространство",
|
||||||
"paste": "Paste",
|
"paste": "Вставить",
|
||||||
"prettify": "Форматировать",
|
"prettify": "Форматировать",
|
||||||
|
"rename": "Переименовать",
|
||||||
"remove": "Удалить",
|
"remove": "Удалить",
|
||||||
"restore": "Восстановить",
|
"restore": "Восстановить",
|
||||||
"save": "Сохранить",
|
"save": "Сохранить",
|
||||||
"scroll_to_bottom": "Scroll to bottom",
|
"scroll_to_bottom": "Вниз",
|
||||||
"scroll_to_top": "Scroll to top",
|
"scroll_to_top": "Вверх",
|
||||||
"search": "Поиск",
|
"search": "Поиск",
|
||||||
"send": "Отправить",
|
"send": "Отправить",
|
||||||
"start": "Начать",
|
"start": "Начать",
|
||||||
"starting": "Starting",
|
"starting": "Запускаю",
|
||||||
"stop": "Стоп",
|
"stop": "Стоп",
|
||||||
"to_close": "to close",
|
"to_close": "что бы закрыть",
|
||||||
"to_navigate": "to navigate",
|
"to_navigate": "для навигации",
|
||||||
"to_select": "to select",
|
"to_select": "выборать",
|
||||||
"turn_off": "Выключить",
|
"turn_off": "Выключить",
|
||||||
"turn_on": "Включить",
|
"turn_on": "Включить",
|
||||||
"undo": "Отменить",
|
"undo": "Отменить",
|
||||||
@@ -56,9 +58,9 @@
|
|||||||
"chat_with_us": "Связаться с нами",
|
"chat_with_us": "Связаться с нами",
|
||||||
"contact_us": "Свяжитесь с нами",
|
"contact_us": "Свяжитесь с нами",
|
||||||
"copy": "Копировать",
|
"copy": "Копировать",
|
||||||
"copy_user_id": "Copy User Auth Token",
|
"copy_user_id": "Копировать токен пользователя",
|
||||||
"developer_option": "Developer options",
|
"developer_option": "Настройки разработчика",
|
||||||
"developer_option_description": "Developer tools which helps in development and maintenance of Hoppscotch.",
|
"developer_option_description": "Инструмент разработчика помогает обслуживить и развивить Hoppscotch",
|
||||||
"discord": "Discord",
|
"discord": "Discord",
|
||||||
"documentation": "Документация",
|
"documentation": "Документация",
|
||||||
"github": "GitHub",
|
"github": "GitHub",
|
||||||
@@ -67,11 +69,13 @@
|
|||||||
"invite": "Пригласить",
|
"invite": "Пригласить",
|
||||||
"invite_description": "В Hoppscotch мы разработали простой и интуитивно понятный интерфейс для создания и управления вашими API. Hoppscotch - это инструмент, который помогает создавать, тестировать, документировать и делиться своими API.",
|
"invite_description": "В Hoppscotch мы разработали простой и интуитивно понятный интерфейс для создания и управления вашими API. Hoppscotch - это инструмент, который помогает создавать, тестировать, документировать и делиться своими API.",
|
||||||
"invite_your_friends": "Пригласить своих друзей",
|
"invite_your_friends": "Пригласить своих друзей",
|
||||||
|
"social_links": "Социальные сети",
|
||||||
|
"social_description": "Подписывайся на наши соц. сети и оставайся всегда в курсе последних новостей, обновлений и релизов.",
|
||||||
"join_discord_community": "Присоединяйтесь к нашему сообществу Discord",
|
"join_discord_community": "Присоединяйтесь к нашему сообществу Discord",
|
||||||
"keyboard_shortcuts": "Горячие клавиши",
|
"keyboard_shortcuts": "Горячие клавиши",
|
||||||
"name": "Hoppscotch",
|
"name": "Hoppscotch",
|
||||||
"new_version_found": "Найдена новая версия. Перезагрузите для обновления.",
|
"new_version_found": "Найдена новая версия. Перезагрузите для обновления.",
|
||||||
"options": "Options",
|
"options": "Настройки",
|
||||||
"proxy_privacy_policy": "Политика конфиденциальности прокси",
|
"proxy_privacy_policy": "Политика конфиденциальности прокси",
|
||||||
"reload": "Перезагрузить",
|
"reload": "Перезагрузить",
|
||||||
"search": "Поиск",
|
"search": "Поиск",
|
||||||
@@ -79,7 +83,7 @@
|
|||||||
"shortcuts": "Ярлыки",
|
"shortcuts": "Ярлыки",
|
||||||
"spotlight": "Прожектор",
|
"spotlight": "Прожектор",
|
||||||
"status": "Статус",
|
"status": "Статус",
|
||||||
"status_description": "Check the status of the website",
|
"status_description": "Проверить состояние сайта",
|
||||||
"terms_and_privacy": "Условия и конфиденциальность",
|
"terms_and_privacy": "Условия и конфиденциальность",
|
||||||
"twitter": "Twitter",
|
"twitter": "Twitter",
|
||||||
"type_a_command_search": "Введите команду или выполните поиск…",
|
"type_a_command_search": "Введите команду или выполните поиск…",
|
||||||
@@ -93,7 +97,7 @@
|
|||||||
"continue_with_email": "Продолжить с электронной почтой",
|
"continue_with_email": "Продолжить с электронной почтой",
|
||||||
"continue_with_github": "Продолжить с GitHub",
|
"continue_with_github": "Продолжить с GitHub",
|
||||||
"continue_with_google": "Продолжить с Google",
|
"continue_with_google": "Продолжить с Google",
|
||||||
"continue_with_microsoft": "Continue with Microsoft",
|
"continue_with_microsoft": "Продолжить с Microsoft",
|
||||||
"email": "Электронное письмо",
|
"email": "Электронное письмо",
|
||||||
"logged_out": "Вышли из",
|
"logged_out": "Вышли из",
|
||||||
"login": "Авторизоваться",
|
"login": "Авторизоваться",
|
||||||
@@ -118,19 +122,20 @@
|
|||||||
},
|
},
|
||||||
"collection": {
|
"collection": {
|
||||||
"created": "Коллекция создана",
|
"created": "Коллекция создана",
|
||||||
"different_parent": "Cannot reorder collection with different parent",
|
"different_parent": "Нельзя сортировать коллекцию с разной родительской коллекцией",
|
||||||
"edit": "Редактировать коллекцию",
|
"edit": "Редактировать коллекцию",
|
||||||
"invalid_name": "Укажите допустимое название коллекции",
|
"invalid_name": "Укажите допустимое название коллекции",
|
||||||
"invalid_root_move": "Collection already in the root",
|
"invalid_root_move": "Коллекция уже в корне",
|
||||||
"moved": "Moved Successfully",
|
"moved": "Перемещено успешно",
|
||||||
"my_collections": "Мои коллекции",
|
"my_collections": "Мои коллекции",
|
||||||
"name": "Новая коллекция",
|
"name": "Новая коллекция",
|
||||||
"name_length_insufficient": "Collection name should be at least 3 characters long",
|
"name_length_insufficient": "Имя коллекции должно иметь 3 или более символов",
|
||||||
"new": "Создать коллекцию",
|
"new": "Создать коллекцию",
|
||||||
"order_changed": "Collection Order Updated",
|
"order_changed": "Порядок коллекции обновлён",
|
||||||
"renamed": "Коллекция переименована",
|
"renamed": "Коллекция переименована",
|
||||||
"request_in_use": "Запрос обрабатывается",
|
"request_in_use": "Запрос обрабатывается",
|
||||||
"save_as": "Сохранить как",
|
"save_as": "Сохранить как",
|
||||||
|
"save_to_collection": "Сохранить в коллекцию",
|
||||||
"select": "Выбрать коллекцию",
|
"select": "Выбрать коллекцию",
|
||||||
"select_location": "Выберите местоположение",
|
"select_location": "Выберите местоположение",
|
||||||
"select_team": "Выберите команду",
|
"select_team": "Выберите команду",
|
||||||
@@ -146,10 +151,17 @@
|
|||||||
"remove_request": "Вы уверены, что хотите навсегда удалить этот запрос?",
|
"remove_request": "Вы уверены, что хотите навсегда удалить этот запрос?",
|
||||||
"remove_team": "Вы уверены, что хотите удалить эту команду?",
|
"remove_team": "Вы уверены, что хотите удалить эту команду?",
|
||||||
"remove_telemetry": "Вы действительно хотите отказаться от телеметрии?",
|
"remove_telemetry": "Вы действительно хотите отказаться от телеметрии?",
|
||||||
"request_change": "Are you sure you want to discard current request, unsaved changes will be lost.",
|
"request_change": "Вы уверены что хотите сбросить текущий запрос, все не сохранённые данные будт утеряны?",
|
||||||
"save_unsaved_tab": "Do you want to save changes made in this tab?",
|
"save_unsaved_tab": "Вы хотите сохранить изменения в этой вкладке?",
|
||||||
|
"close_unsaved_tab": "Вы уверены что хотите закрыть эту вкладку?",
|
||||||
|
"close_unsaved_tabs": "ВЫ уверены что хотите закрыть все эти вкладки? Несохранённые данные {count} вкладок будут утеряны.",
|
||||||
"sync": "Вы уверены, что хотите синхронизировать это рабочее пространство?"
|
"sync": "Вы уверены, что хотите синхронизировать это рабочее пространство?"
|
||||||
},
|
},
|
||||||
|
"context_menu": {
|
||||||
|
"set_environment_variable": "Назначить как переменную",
|
||||||
|
"add_parameters": "Добавить в параметры",
|
||||||
|
"open_request_in_new_tab": "Открыть в новой вкладке"
|
||||||
|
},
|
||||||
"count": {
|
"count": {
|
||||||
"header": "Заголовок {count}",
|
"header": "Заголовок {count}",
|
||||||
"message": "Тело {count}",
|
"message": "Тело {count}",
|
||||||
@@ -180,83 +192,102 @@
|
|||||||
"profile": "Войдите, чтобы просмотреть свой профиль",
|
"profile": "Войдите, чтобы просмотреть свой профиль",
|
||||||
"protocols": "Протоколы пустые",
|
"protocols": "Протоколы пустые",
|
||||||
"schema": "Подключиться к конечной точке GraphQL",
|
"schema": "Подключиться к конечной точке GraphQL",
|
||||||
"shortcodes": "Shortcodes are empty",
|
"shortcodes": "Нет коротких ссылок",
|
||||||
"subscription": "Subscriptions are empty",
|
"subscription": "Нет подписок",
|
||||||
"team_name": "Название команды пусто",
|
"team_name": "Название команды пусто",
|
||||||
"teams": "Команды пустые",
|
"teams": "Команды пустые",
|
||||||
"tests": "Для этого запроса нет тестов"
|
"tests": "Для этого запроса нет тестов"
|
||||||
},
|
},
|
||||||
"environment": {
|
"environment": {
|
||||||
"add_to_global": "Add to Global",
|
"add_to_global": "Добавить в глобальное окружение",
|
||||||
"added": "Environment addition",
|
"added": "Окружение добавлено",
|
||||||
"create_new": "Создать новую среду",
|
"create_new": "Создать новое окружение",
|
||||||
"created": "Environment created",
|
"created": "Окружение создано",
|
||||||
"deleted": "Environment deletion",
|
"deleted": "Окружение удалено",
|
||||||
"edit": "Редактировать среду",
|
"duplicated": "Окружение скопировано",
|
||||||
"invalid_name": "Укажите допустимое имя для среды",
|
"global": "Глобальное окружение",
|
||||||
"my_environments": "My Environments",
|
"empty_variables": "Нет переменных",
|
||||||
"nested_overflow": "nested environment variables are limited to 10 levels",
|
"global_variables": "Глобальные переменные",
|
||||||
|
"edit": "Редактировать окружение",
|
||||||
|
"invalid_name": "Укажите допустимое имя для окружения",
|
||||||
|
"list": "Переменные окружения",
|
||||||
|
"my_environments": "Мои окружения",
|
||||||
|
"name": "Название",
|
||||||
|
"nested_overflow": "максимальный уровень вложения переменных окружения - 10",
|
||||||
"new": "Новая среда",
|
"new": "Новая среда",
|
||||||
"no_environment": "Нет окружающей среды",
|
"no_active_environment": "Нет активных окружений",
|
||||||
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
|
"no_environment": "Нет окружения",
|
||||||
|
"no_environment_description": "Не выбрано окружение, выберите что делать с переменными.",
|
||||||
|
"quick_peek": "Быстрый просмотр окружения",
|
||||||
|
"replace_with_variable": "Заменить переменной",
|
||||||
|
"scope": "Scope",
|
||||||
"select": "Выберите среду",
|
"select": "Выберите среду",
|
||||||
"team_environments": "Team Environments",
|
"set": "Выбрать окружение",
|
||||||
"title": "Среды",
|
"set_as_environment": "Установить как окружение",
|
||||||
"updated": "Environment updation",
|
"team_environments": "Окружения команды",
|
||||||
|
"title": "Окружения",
|
||||||
|
"updated": "Окружение обновлено",
|
||||||
|
"value": "Значение",
|
||||||
|
"variable": "Переменная",
|
||||||
"variable_list": "Список переменных"
|
"variable_list": "Список переменных"
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"browser_support_sse": "Похоже, в этом браузере нет поддержки событий, отправленных сервером.",
|
"browser_support_sse": "Похоже, в этом браузере нет поддержки событий, отправленных сервером.",
|
||||||
"check_console_details": "Подробности смотрите в журнале консоли.",
|
"check_console_details": "Подробности смотрите в журнале консоли.",
|
||||||
"curl_invalid_format": "cURL неправильно отформатирован",
|
"curl_invalid_format": "cURL неправильно отформатирован",
|
||||||
"danger_zone": "Danger zone",
|
"danger_zone": "Опасная зона",
|
||||||
"delete_account": "Your account is currently an owner in these teams:",
|
"delete_account": "Вы являетесь владельцем этой команды:",
|
||||||
"delete_account_description": "You must either remove yourself, transfer ownership, or delete these teams before you can delete your account.",
|
"delete_account_description": "Прежде чем удалить аккаунт вам необходимо либо назначить владельцом другого пользователя, либо удалить команды в которых вы являетесь владельцем.",
|
||||||
"empty_req_name": "Пустое имя запроса",
|
"empty_req_name": "Пустое имя запроса",
|
||||||
"f12_details": "(F12 для подробностей)",
|
"f12_details": "(F12 для подробностей)",
|
||||||
"gql_prettify_invalid_query": "Не удалось определить недопустимый запрос, устранить синтаксические ошибки запроса и повторить попытку.",
|
"gql_prettify_invalid_query": "Не удалось определить недопустимый запрос, устранить синтаксические ошибки запроса и повторить попытку.",
|
||||||
"incomplete_config_urls": "Incomplete configuration URLs",
|
"incomplete_config_urls": "Не заполнены URL конфигурации",
|
||||||
"incorrect_email": "Incorrect email",
|
"incorrect_email": "Не корректный Email",
|
||||||
"invalid_link": "Invalid link",
|
"invalid_link": "Не корректная ссылка",
|
||||||
"invalid_link_description": "Ссылка, по которой вы перешли, - недействительна, либо срок ее действия истек.",
|
"invalid_link_description": "Ссылка, по которой вы перешли, - недействительна, либо срок ее действия истек.",
|
||||||
"json_parsing_failed": "Invalid JSON",
|
"json_parsing_failed": "Не корректный JSON",
|
||||||
"json_prettify_invalid_body": "Не удалось определить недопустимое тело, устранить синтаксические ошибки json и повторить попытку.",
|
"json_prettify_invalid_body": "Не удалось определить недопустимое тело, устранить синтаксические ошибки json и повторить попытку.",
|
||||||
"network_error": "Похоже, возникла проблема с соединением. Попробуйте еще раз.",
|
"network_error": "Похоже, возникла проблема с соединением. Попробуйте еще раз.",
|
||||||
"network_fail": "Не удалось отправить запрос",
|
"network_fail": "Не удалось отправить запрос",
|
||||||
"no_duration": "Без продолжительности",
|
"no_duration": "Без продолжительности",
|
||||||
"no_results_found": "No matches found",
|
"no_results_found": "Совпадения не найдены",
|
||||||
"page_not_found": "This page could not be found",
|
"page_not_found": "Эта страница не найдена",
|
||||||
|
"proxy_error": "Ошибка прокси",
|
||||||
"script_fail": "Не удалось выполнить сценарий предварительного запроса",
|
"script_fail": "Не удалось выполнить сценарий предварительного запроса",
|
||||||
"something_went_wrong": "Что-то пошло не так",
|
"something_went_wrong": "Что-то пошло не так",
|
||||||
"test_script_fail": "Could not execute post-request script"
|
"test_script_fail": "Не удалось выполнить тестирование запроса"
|
||||||
},
|
},
|
||||||
"export": {
|
"export": {
|
||||||
"as_json": "Экспорт как JSON",
|
"as_json": "Экспорт как JSON",
|
||||||
"create_secret_gist": "Создать секретный Gist",
|
"create_secret_gist": "Создать секретный Gist",
|
||||||
"gist_created": "Gist создан",
|
"gist_created": "Gist создан",
|
||||||
"require_github": "Войдите через GitHub, чтобы создать секретную суть",
|
"require_github": "Войдите через GitHub, чтобы создать секретную суть",
|
||||||
"title": "Export"
|
"title": "Экспорт"
|
||||||
},
|
},
|
||||||
"filter": {
|
"filter": {
|
||||||
"all": "All",
|
"all": "Все",
|
||||||
"none": "None",
|
"none": "Не указано",
|
||||||
"starred": "Starred"
|
"starred": "Отмечено"
|
||||||
},
|
},
|
||||||
"folder": {
|
"folder": {
|
||||||
"created": "Папка создана",
|
"created": "Папка создана",
|
||||||
"edit": "Редактировать папку",
|
"edit": "Редактировать папку",
|
||||||
"invalid_name": "Укажите имя для папки",
|
"invalid_name": "Укажите имя для папки",
|
||||||
"name_length_insufficient": "Folder name should be at least 3 characters long",
|
"name_length_insufficient": "Имя папки должно содержать 3 или более символов",
|
||||||
"new": "Новая папка",
|
"new": "Новая папка",
|
||||||
"renamed": "Папка переименована"
|
"renamed": "Папка переименована"
|
||||||
},
|
},
|
||||||
"graphql": {
|
"graphql": {
|
||||||
"mutations": "Мутации",
|
"mutations": "Мутации",
|
||||||
"schema": "Схема",
|
"schema": "Схема",
|
||||||
"subscriptions": "Подписки"
|
"subscriptions": "Подписки",
|
||||||
|
"switch_connection": "Изменить соединение",
|
||||||
|
"connection_switch_url": "Вы присоединились к GraphQL, URL соединения",
|
||||||
|
"connection_switch_new_url": "Смена вкладки разорвёт текущее GraphQL соединение. Новый URL соединения будет",
|
||||||
|
"connection_switch_confirm": "Вы желаете соединиться с последним GraphQL сервером?"
|
||||||
},
|
},
|
||||||
"group": {
|
"group": {
|
||||||
"time": "Time",
|
"time": "Время",
|
||||||
"url": "URL"
|
"url": "URL"
|
||||||
},
|
},
|
||||||
"header": {
|
"header": {
|
||||||
@@ -273,11 +304,11 @@
|
|||||||
"post_request_tests": "Сценарии тестирования написаны на JavaScript и запускаются после получения ответа.",
|
"post_request_tests": "Сценарии тестирования написаны на JavaScript и запускаются после получения ответа.",
|
||||||
"pre_request_script": "Скрипты предварительного запроса написаны на JavaScript и запускаются перед отправкой запроса.",
|
"pre_request_script": "Скрипты предварительного запроса написаны на JavaScript и запускаются перед отправкой запроса.",
|
||||||
"script_fail": "Похоже, в скрипте предварительного запроса есть сбой. Проверьте ошибку ниже и исправьте скрипт соответствующим образом.",
|
"script_fail": "Похоже, в скрипте предварительного запроса есть сбой. Проверьте ошибку ниже и исправьте скрипт соответствующим образом.",
|
||||||
"test_script_fail": "There seems to be an error with test script. Please fix the errors and run tests again",
|
"test_script_fail": "Похоже, что скрипт тестирования содержит ошибку. Пожалуйста исправьте её и попробуйте снова",
|
||||||
"tests": "Напишите тестовый сценарий для автоматизации отладки."
|
"tests": "Напишите тестовый сценарий для автоматизации отладки."
|
||||||
},
|
},
|
||||||
"hide": {
|
"hide": {
|
||||||
"collection": "Collapse Collection Panel",
|
"collection": "Свернуть панель соединения",
|
||||||
"more": "Скрыть больше",
|
"more": "Скрыть больше",
|
||||||
"preview": "Скрыть предварительный просмотр",
|
"preview": "Скрыть предварительный просмотр",
|
||||||
"sidebar": "Скрыть боковую панель"
|
"sidebar": "Скрыть боковую панель"
|
||||||
@@ -287,61 +318,85 @@
|
|||||||
"curl": "Импортировать cURL",
|
"curl": "Импортировать cURL",
|
||||||
"failed": "Ошибка импорта",
|
"failed": "Ошибка импорта",
|
||||||
"from_gist": "Импорт из Gist",
|
"from_gist": "Импорт из Gist",
|
||||||
"from_gist_description": "Import from Gist URL",
|
"from_gist_description": "Импортировать через Gist URL",
|
||||||
"from_insomnia": "Import from Insomnia",
|
"from_insomnia": "Импортировать с Insomnia",
|
||||||
"from_insomnia_description": "Import from Insomnia collection",
|
"from_insomnia_description": "Импортировать из коллекции Insomnia",
|
||||||
"from_json": "Import from Hoppscotch",
|
"from_json": "Импортировать из Hoppscotch",
|
||||||
"from_json_description": "Import from Hoppscotch collection file",
|
"from_json_description": "Импортировать из файла коллекции Hoppscotch",
|
||||||
"from_my_collections": "Импортировать из моих коллекций",
|
"from_my_collections": "Импортировать из моих коллекций",
|
||||||
"from_my_collections_description": "Import from My Collections file",
|
"from_my_collections_description": "Импортировать коллекции из моего файла",
|
||||||
"from_openapi": "Import from OpenAPI",
|
"from_openapi": "Импортировать из OpenAPI",
|
||||||
"from_openapi_description": "Import from OpenAPI specification file (YML/JSON)",
|
"from_openapi_description": "Импортировать из OpenAPI файла описания API (YML/JSON)",
|
||||||
"from_postman": "Import from Postman",
|
"from_postman": "Импортировать из Postman",
|
||||||
"from_postman_description": "Import from Postman collection",
|
"from_postman_description": "Импортировать из коллекции Postman",
|
||||||
"from_url": "Import from URL",
|
"from_url": "Импортировать из URL",
|
||||||
"gist_url": "Введите URL-адрес Gist",
|
"gist_url": "Введите URL-адрес Gist",
|
||||||
"import_from_url_invalid_fetch": "Couldn't get data from the url",
|
"import_from_url_invalid_fetch": "Не удалить получить данные по этому URL",
|
||||||
"import_from_url_invalid_file_format": "Error while importing collections",
|
"import_from_url_invalid_file_format": "Ошибка при импорте коллекций",
|
||||||
"import_from_url_invalid_type": "Unsupported type. accepted values are 'hoppscotch', 'openapi', 'postman', 'insomnia'",
|
"import_from_url_invalid_type": "Неподдерживаемый тип. Поддерживаемые типы: 'hoppscotch', 'openapi', 'postman', 'insomnia'",
|
||||||
"import_from_url_success": "Collections Imported",
|
"import_from_url_success": "Коллекция импортирована",
|
||||||
"json_description": "Import collections from a Hoppscotch Collections JSON file",
|
"json_description": "Импортировать из коллекции Hoppscotch",
|
||||||
"title": "Импортировать"
|
"title": "Импортировать"
|
||||||
},
|
},
|
||||||
|
"inspections": {
|
||||||
|
"title": "Инспектор",
|
||||||
|
"description": "Помогает обноружить возможные проблемы",
|
||||||
|
"environment": {
|
||||||
|
"add_environment": "Добавить в окружение",
|
||||||
|
"not_found": "Переменная окружения “{environment}” не найдена."
|
||||||
|
},
|
||||||
|
"header": {
|
||||||
|
"cookie": "Браузерная версия Hoppscotch не может использовать Cookie Header. Пока мы работаем над созданием десктоп версии Hoppscotch, пожалуйста используйте Authorization Header."
|
||||||
|
},
|
||||||
|
"response": {
|
||||||
|
"401_error": "Пожалуйста проверьте ваши параметры авторизации",
|
||||||
|
"404_error": "Пожалуйста проверьте URL и Метод вашего запроса",
|
||||||
|
"network_error": "Пожалуйста проверьте соединение",
|
||||||
|
"cors_error": "Пожалуйста проверьте вашу Cross-Origin Resource Sharing настройку сервера.",
|
||||||
|
"default_error": "Проверьте ваш запрос."
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"extension_not_installed": "Расширение не установлено",
|
||||||
|
"extention_not_enabled": "Расширение не включено",
|
||||||
|
"extention_enable_action": "Включить расширение браузера",
|
||||||
|
"extension_unknown_origin": "Убедитесь что вы добавили адрес сервера в Hoppscotch расширение."
|
||||||
|
}
|
||||||
|
},
|
||||||
"layout": {
|
"layout": {
|
||||||
"collapse_collection": "Collapse or Expand Collections",
|
"collapse_collection": "Свернуть или развернуть коллекции",
|
||||||
"collapse_sidebar": "Collapse or Expand the sidebar",
|
"collapse_sidebar": "Свернуть или развернуть боковую панель",
|
||||||
"column": "Вертикальное оформление",
|
"column": "Вертикальная развёртка",
|
||||||
"name": "Layout",
|
"name": "Развёртка",
|
||||||
"row": "Горизонтальное оформление",
|
"row": "Горизонтальная развертка",
|
||||||
"zen_mode": "Спокойный режим"
|
"zen_mode": "Спокойный режим"
|
||||||
},
|
},
|
||||||
"modal": {
|
"modal": {
|
||||||
"close_unsaved_tab": "You have unsaved changes",
|
"close_unsaved_tab": "У вас есть не сохранённые изменения",
|
||||||
"collections": "Коллекции",
|
"collections": "Коллекции",
|
||||||
"confirm": "Подтверждать",
|
"confirm": "Подтверждать",
|
||||||
"edit_request": "Изменить запрос",
|
"edit_request": "Изменить запрос",
|
||||||
"import_export": "Импорт Экспорт"
|
"import_export": "Импорт Экспорт"
|
||||||
},
|
},
|
||||||
"mqtt": {
|
"mqtt": {
|
||||||
"already_subscribed": "You are already subscribed to this topic.",
|
"already_subscribed": "Вы уже подписаны на этот топик",
|
||||||
"clean_session": "Clean Session",
|
"clean_session": "Очистить сессию",
|
||||||
"clear_input": "Clear input",
|
"clear_input": "Очистить ввод",
|
||||||
"clear_input_on_send": "Clear input on send",
|
"clear_input_on_send": "Очистить ввод перед отправкой",
|
||||||
"client_id": "Client ID",
|
"client_id": "Client ID",
|
||||||
"color": "Pick a color",
|
"color": "Выбрать цвет",
|
||||||
"communication": "Коммуникация",
|
"communication": "Коммуникация",
|
||||||
"connection_config": "Connection Config",
|
"connection_config": "Конфигурация соединения",
|
||||||
"connection_not_authorized": "This MQTT connection does not use any authentication.",
|
"connection_not_authorized": "Это соединение MQTT не использует какую-либо авторизацию.",
|
||||||
"invalid_topic": "Please provide a topic for the subscription",
|
"invalid_topic": "Пожалуйста выберите topic для подписки",
|
||||||
"keep_alive": "Keep Alive",
|
"keep_alive": "Поддерживать соединение",
|
||||||
"log": "Лог",
|
"log": "Лог",
|
||||||
"lw_message": "Last-Will Message",
|
"lw_message": "Last-Will Message",
|
||||||
"lw_qos": "Last-Will QoS",
|
"lw_qos": "Last-Will QoS",
|
||||||
"lw_retain": "Last-Will Retain",
|
"lw_retain": "Last-Will Retain",
|
||||||
"lw_topic": "Last-Will Topic",
|
"lw_topic": "Last-Will Topic",
|
||||||
"message": "Сообщение",
|
"message": "Сообщение",
|
||||||
"new": "New Subscription",
|
"new": "Новая подписка",
|
||||||
"not_connected": "Please start a MQTT connection first.",
|
"not_connected": "Пожалуйста, сначала запустите MQTT соединение.",
|
||||||
"publish": "Публиковать",
|
"publish": "Публиковать",
|
||||||
"qos": "QoS",
|
"qos": "QoS",
|
||||||
"ssl": "SSL",
|
"ssl": "SSL",
|
||||||
@@ -355,7 +410,7 @@
|
|||||||
"navigation": {
|
"navigation": {
|
||||||
"doc": "Документы",
|
"doc": "Документы",
|
||||||
"graphql": "GraphQL",
|
"graphql": "GraphQL",
|
||||||
"profile": "Profile",
|
"profile": "Профиль",
|
||||||
"realtime": "В реальном времени",
|
"realtime": "В реальном времени",
|
||||||
"rest": "REST",
|
"rest": "REST",
|
||||||
"settings": "Настройки"
|
"settings": "Настройки"
|
||||||
@@ -363,12 +418,12 @@
|
|||||||
"preRequest": {
|
"preRequest": {
|
||||||
"javascript_code": "Код JavaScript",
|
"javascript_code": "Код JavaScript",
|
||||||
"learn": "Читать документацию",
|
"learn": "Читать документацию",
|
||||||
"script": "Сценарий предварительного запроса",
|
"script": "Предворительный скрипт запроса",
|
||||||
"snippets": "Фрагменты"
|
"snippets": "Готовый код"
|
||||||
},
|
},
|
||||||
"profile": {
|
"profile": {
|
||||||
"app_settings": "Настройки приложения",
|
"app_settings": "Настройки приложения",
|
||||||
"default_hopp_displayname": "Unnamed User",
|
"default_hopp_displayname": "Безымянный",
|
||||||
"editor": "Редактор",
|
"editor": "Редактор",
|
||||||
"editor_description": "Редакторы могут добавлять, редактировать, а так же удалять запросы.",
|
"editor_description": "Редакторы могут добавлять, редактировать, а так же удалять запросы.",
|
||||||
"email_verification_mail": "На вашу электронную почту отправлено письмо для подтверждения. Перейдите по ссылке из письма, чтобы подтвердить свой электронный адрес.",
|
"email_verification_mail": "На вашу электронную почту отправлено письмо для подтверждения. Перейдите по ссылке из письма, чтобы подтвердить свой электронный адрес.",
|
||||||
@@ -391,13 +446,13 @@
|
|||||||
"choose_language": "Выберите язык",
|
"choose_language": "Выберите язык",
|
||||||
"content_type": "Тип содержимого",
|
"content_type": "Тип содержимого",
|
||||||
"content_type_titles": {
|
"content_type_titles": {
|
||||||
"others": "Others",
|
"others": "Другие",
|
||||||
"structured": "Structured",
|
"structured": "Структурированный",
|
||||||
"text": "Text"
|
"text": "Текст"
|
||||||
},
|
},
|
||||||
"copy_link": "Копировать ссылку",
|
"copy_link": "Копировать ссылку",
|
||||||
"different_collection": "Cannot reorder requests from different collections",
|
"different_collection": "Нельзя изменять порядок запросов из разных коллекций",
|
||||||
"duplicated": "Request duplicated",
|
"duplicated": "Запрос скопирован",
|
||||||
"duration": "Продолжительность",
|
"duration": "Продолжительность",
|
||||||
"enter_curl": "Введите cURL",
|
"enter_curl": "Введите cURL",
|
||||||
"generate_code": "Сгенерировать код",
|
"generate_code": "Сгенерировать код",
|
||||||
@@ -405,13 +460,13 @@
|
|||||||
"header_list": "Список заголовков",
|
"header_list": "Список заголовков",
|
||||||
"invalid_name": "Укажите имя для запроса",
|
"invalid_name": "Укажите имя для запроса",
|
||||||
"method": "Методика",
|
"method": "Методика",
|
||||||
"moved": "Request moved",
|
"moved": "Запрос перемещён",
|
||||||
"name": "Имя запроса",
|
"name": "Имя запроса",
|
||||||
"new": "New Request",
|
"new": "Новый запрос",
|
||||||
"order_changed": "Request Order Updated",
|
"order_changed": "Порядок запроса изменён",
|
||||||
"override": "Override",
|
"override": "Переопределить",
|
||||||
"override_help": "Set <kbd>Content-Type</kbd> in Headers",
|
"override_help": "Установить <kbd>Content-Type</kbd> в Заголовках",
|
||||||
"overriden": "Overridden",
|
"overriden": "Переопределено",
|
||||||
"parameter_list": "Параметры запроса",
|
"parameter_list": "Параметры запроса",
|
||||||
"parameters": "Параметры",
|
"parameters": "Параметры",
|
||||||
"path": "Путь",
|
"path": "Путь",
|
||||||
@@ -424,17 +479,17 @@
|
|||||||
"save_as": "Сохранить как",
|
"save_as": "Сохранить как",
|
||||||
"saved": "Запрос сохранен",
|
"saved": "Запрос сохранен",
|
||||||
"share": "Делиться",
|
"share": "Делиться",
|
||||||
"share_description": "Share Hoppscotch with your friends",
|
"share_description": "Поделиться Hoppscotch с друзьями",
|
||||||
"title": "Запрос",
|
"title": "Запрос",
|
||||||
"type": "Тип запроса",
|
"type": "Тип запроса",
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"variables": "Переменные",
|
"variables": "Переменные",
|
||||||
"view_my_links": "View my links"
|
"view_my_links": "Посмотреть мои ссылки"
|
||||||
},
|
},
|
||||||
"response": {
|
"response": {
|
||||||
"audio": "Audio",
|
"audio": "Аудио",
|
||||||
"body": "Тело ответа",
|
"body": "Тело ответа",
|
||||||
"filter_response_body": "Filter JSON response body (uses JSONPath syntax)",
|
"filter_response_body": "Отфильтровать ответ в формате JSON (используется синтаксис JSONPath)",
|
||||||
"headers": "Заголовки",
|
"headers": "Заголовки",
|
||||||
"html": "HTML",
|
"html": "HTML",
|
||||||
"image": "Изображение",
|
"image": "Изображение",
|
||||||
@@ -446,14 +501,14 @@
|
|||||||
"status": "Статус",
|
"status": "Статус",
|
||||||
"time": "Время",
|
"time": "Время",
|
||||||
"title": "Ответ",
|
"title": "Ответ",
|
||||||
"video": "Video",
|
"video": "Видео",
|
||||||
"waiting_for_connection": "Ожидание соединения",
|
"waiting_for_connection": "Ожидание соединения",
|
||||||
"xml": "XML"
|
"xml": "XML"
|
||||||
},
|
},
|
||||||
"settings": {
|
"settings": {
|
||||||
"accent_color": "Основной цвет",
|
"accent_color": "Основной цвет",
|
||||||
"account": "Счет",
|
"account": "Счет",
|
||||||
"account_deleted": "Your account has been deleted",
|
"account_deleted": "Ваш аккаунт был удалён",
|
||||||
"account_description": "Настройте параметры своей учетной записи.",
|
"account_description": "Настройте параметры своей учетной записи.",
|
||||||
"account_email_description": "Ваш основной адрес электронной почты.",
|
"account_email_description": "Ваш основной адрес электронной почты.",
|
||||||
"account_name_description": "Это ваше отображаемое имя.",
|
"account_name_description": "Это ваше отображаемое имя.",
|
||||||
@@ -462,8 +517,8 @@
|
|||||||
"change_font_size": "Изменить размер шрифта",
|
"change_font_size": "Изменить размер шрифта",
|
||||||
"choose_language": "Выберите язык",
|
"choose_language": "Выберите язык",
|
||||||
"dark_mode": "Темный",
|
"dark_mode": "Темный",
|
||||||
"delete_account": "Delete account",
|
"delete_account": "Удалить аккаунт",
|
||||||
"delete_account_description": "Once you delete your account, all your data will be permanently deleted. This action cannot be undone.",
|
"delete_account_description": "Удаление аккаунта нельзя отменить",
|
||||||
"expand_navigation": "Раскрыть панель навигации",
|
"expand_navigation": "Раскрыть панель навигации",
|
||||||
"experiments": "Эксперименты",
|
"experiments": "Эксперименты",
|
||||||
"experiments_notice": "Это набор экспериментов, над которыми мы работаем, которые могут оказаться полезными, интересными, и тем, и другим, или ни тем, ни другим. Они не окончательные и могут быть нестабильными, поэтому, если произойдет что-то слишком странное, не паникуйте. Просто выключи эту чертову штуку. Шутки в сторону,",
|
"experiments_notice": "Это набор экспериментов, над которыми мы работаем, которые могут оказаться полезными, интересными, и тем, и другим, или ни тем, ни другим. Они не окончательные и могут быть нестабильными, поэтому, если произойдет что-то слишком странное, не паникуйте. Просто выключи эту чертову штуку. Шутки в сторону,",
|
||||||
@@ -490,8 +545,8 @@
|
|||||||
"proxy_use_toggle": "Используйте промежуточное ПО прокси для отправки запросов",
|
"proxy_use_toggle": "Используйте промежуточное ПО прокси для отправки запросов",
|
||||||
"read_the": "Прочтите",
|
"read_the": "Прочтите",
|
||||||
"reset_default": "Восстановление значений по умолчанию",
|
"reset_default": "Восстановление значений по умолчанию",
|
||||||
"short_codes": "Short codes",
|
"short_codes": "Короткие ссылки",
|
||||||
"short_codes_description": "Short codes which were created by you.",
|
"short_codes_description": "Короткие ссылки, созданные вами",
|
||||||
"sidebar_on_left": "Панель слева",
|
"sidebar_on_left": "Панель слева",
|
||||||
"sync": "Синхронизировать",
|
"sync": "Синхронизировать",
|
||||||
"sync_collections": "Коллекции",
|
"sync_collections": "Коллекции",
|
||||||
@@ -505,16 +560,16 @@
|
|||||||
"theme_description": "Настройте тему своего приложения.",
|
"theme_description": "Настройте тему своего приложения.",
|
||||||
"use_experimental_url_bar": "Использовать экспериментальную строку URL с выделением среды",
|
"use_experimental_url_bar": "Использовать экспериментальную строку URL с выделением среды",
|
||||||
"user": "Пользователь",
|
"user": "Пользователь",
|
||||||
"verified_email": "Verified email",
|
"verified_email": "Проверенный Email",
|
||||||
"verify_email": "Подтвердить почту"
|
"verify_email": "Подтвердить Email"
|
||||||
},
|
},
|
||||||
"shortcodes": {
|
"shortcodes": {
|
||||||
"actions": "Actions",
|
"actions": "Действия",
|
||||||
"created_on": "Created on",
|
"created_on": "Создано",
|
||||||
"deleted": "Shortcode deleted",
|
"deleted": "Удалёна",
|
||||||
"method": "Method",
|
"method": "Метод",
|
||||||
"not_found": "Shortcode not found",
|
"not_found": "Короткая ссылка не найдена",
|
||||||
"short_code": "Short code",
|
"short_code": "Короткая ссылка",
|
||||||
"url": "URL"
|
"url": "URL"
|
||||||
},
|
},
|
||||||
"shortcut": {
|
"shortcut": {
|
||||||
@@ -525,6 +580,10 @@
|
|||||||
"show_all": "Горячие клавиши",
|
"show_all": "Горячие клавиши",
|
||||||
"title": "Общий"
|
"title": "Общий"
|
||||||
},
|
},
|
||||||
|
"others": {
|
||||||
|
"title": "Другие",
|
||||||
|
"prettify": "Прекрасные редакторы"
|
||||||
|
},
|
||||||
"miscellaneous": {
|
"miscellaneous": {
|
||||||
"invite": "Пригласите людей в Hoppscotch",
|
"invite": "Пригласите людей в Hoppscotch",
|
||||||
"title": "Разное"
|
"title": "Разное"
|
||||||
@@ -545,6 +604,9 @@
|
|||||||
"delete_method": "Выберите метод DELETE",
|
"delete_method": "Выберите метод DELETE",
|
||||||
"get_method": "Выберите метод GET",
|
"get_method": "Выберите метод GET",
|
||||||
"head_method": "Выберите метод HEAD",
|
"head_method": "Выберите метод HEAD",
|
||||||
|
"rename": "Переименовать запрос",
|
||||||
|
"import_curl": "Импорт из cURL",
|
||||||
|
"show_code": "Сгенерировать готовый код",
|
||||||
"method": "Методика",
|
"method": "Методика",
|
||||||
"next_method": "Выберите следующий метод",
|
"next_method": "Выберите следующий метод",
|
||||||
"post_method": "Выберите метод POST",
|
"post_method": "Выберите метод POST",
|
||||||
@@ -553,35 +615,120 @@
|
|||||||
"reset_request": "Сбросить запрос",
|
"reset_request": "Сбросить запрос",
|
||||||
"save_to_collections": "Сохранить в коллекции",
|
"save_to_collections": "Сохранить в коллекции",
|
||||||
"send_request": "Послать запрос",
|
"send_request": "Послать запрос",
|
||||||
|
"save_request": "Сохарнить запрос",
|
||||||
"title": "Запрос"
|
"title": "Запрос"
|
||||||
},
|
},
|
||||||
"response": {
|
"response": {
|
||||||
"copy": "Copy response to clipboard",
|
"copy": "Копировать запрос в буфер обмена",
|
||||||
"download": "Download response as file",
|
"download": "Скачать запрос как файл",
|
||||||
"title": "Response"
|
"title": "Запрос"
|
||||||
},
|
},
|
||||||
"theme": {
|
"theme": {
|
||||||
"black": "Switch theme to black mode",
|
"black": "Черный режим",
|
||||||
"dark": "Switch theme to dark mode",
|
"dark": "Тёмный режим",
|
||||||
"light": "Switch theme to light mode",
|
"light": "Светлый режим",
|
||||||
"system": "Switch theme to system mode",
|
"system": "Определяется системой",
|
||||||
"title": "Theme"
|
"title": "Тема"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"show": {
|
"show": {
|
||||||
"code": "Показать код",
|
"code": "Показать код",
|
||||||
"collection": "Expand Collection Panel",
|
"collection": "Развернуть панель коллекций",
|
||||||
"more": "Показать больше",
|
"more": "Показать больше",
|
||||||
"sidebar": "Показать боковую панель"
|
"sidebar": "Показать боковую панель"
|
||||||
},
|
},
|
||||||
"socketio": {
|
"socketio": {
|
||||||
"communication": "Коммуникация",
|
"communication": "Коммуникация",
|
||||||
"connection_not_authorized": "This SocketIO connection does not use any authentication.",
|
"connection_not_authorized": "Это SocketIO соединение не использует какую-либо авторизацию.",
|
||||||
"event_name": "Название события",
|
"event_name": "Название события",
|
||||||
"events": "События",
|
"events": "События",
|
||||||
"log": "Лог",
|
"log": "Лог",
|
||||||
"url": "URL"
|
"url": "URL"
|
||||||
},
|
},
|
||||||
|
"spotlight": {
|
||||||
|
"general": {
|
||||||
|
"help_menu": "Помощь и поддержка",
|
||||||
|
"chat": "Чат с поддержкой",
|
||||||
|
"open_docs": "Прочитать документацию",
|
||||||
|
"open_keybindings": "Горячие клавиши",
|
||||||
|
"open_github": "Открыть GitHub репозиторий",
|
||||||
|
"social": "Соц. сети",
|
||||||
|
"title": "Основное"
|
||||||
|
},
|
||||||
|
"miscellaneous": {
|
||||||
|
"invite": "Пригласите друзей в Hoppscotch",
|
||||||
|
"title": "Разное"
|
||||||
|
},
|
||||||
|
"request": {
|
||||||
|
"switch_to": "Перейти к",
|
||||||
|
"select_method": "Выбрать метод",
|
||||||
|
"save_as_new": "Сохранить как новый запрос",
|
||||||
|
"tab_parameters": "Параметры",
|
||||||
|
"tab_body": "Тело",
|
||||||
|
"tab_headers": "Заголовки",
|
||||||
|
"tab_authorization": "Авторизация",
|
||||||
|
"tab_pre_request_script": "Пред-скрипт",
|
||||||
|
"tab_tests": "Тесты",
|
||||||
|
"tab_query": "Запрос",
|
||||||
|
"tab_variables": "Переменные"
|
||||||
|
},
|
||||||
|
"graphql": {
|
||||||
|
"connect": "Соединиться",
|
||||||
|
"disconnect": "Разъединить"
|
||||||
|
},
|
||||||
|
"response": {
|
||||||
|
"copy": "Копировать ответ",
|
||||||
|
"download": "Скачать ответ",
|
||||||
|
"title": "Ответ"
|
||||||
|
},
|
||||||
|
"environments": {
|
||||||
|
"new": "Создать новое окружение",
|
||||||
|
"new_variable": "Создать новую переменную в окружении",
|
||||||
|
"edit": "Изменить текущее окружение",
|
||||||
|
"delete": "Удалить текущее окружение",
|
||||||
|
"duplicate": "Скопировать текущее окружение",
|
||||||
|
"edit_global": "Изменить глобальное окружение",
|
||||||
|
"duplicate_global": "Скопировать глобальное окружение",
|
||||||
|
"title": "Окружения"
|
||||||
|
},
|
||||||
|
"workspace": {
|
||||||
|
"new": "Создать новую команду",
|
||||||
|
"edit": "Изменить текущую команду",
|
||||||
|
"delete": "Удалить текущую команду",
|
||||||
|
"invite": "Пригласить людей в команду",
|
||||||
|
"switch_to_personal": "Переключиться на личное пространство",
|
||||||
|
"title": "Команды"
|
||||||
|
},
|
||||||
|
"tab": {
|
||||||
|
"duplicate": "Скопировать вкладку",
|
||||||
|
"close_current": "Закрыть вкладку",
|
||||||
|
"close_others": "Закрыть все кроме этой",
|
||||||
|
"new_tab": "Открыть в новой вкладке",
|
||||||
|
"title": "Вкладки"
|
||||||
|
},
|
||||||
|
"section": {
|
||||||
|
"user": "Пользователь",
|
||||||
|
"theme": "Тема",
|
||||||
|
"interface": "Интерфейс",
|
||||||
|
"interceptor": "Перехватчик"
|
||||||
|
},
|
||||||
|
"change_language": "Изменить язык",
|
||||||
|
"settings": {
|
||||||
|
"theme": {
|
||||||
|
"black": "Чёрная",
|
||||||
|
"dark": "Тёмная",
|
||||||
|
"light": "Светлая",
|
||||||
|
"system": "Определяется системой"
|
||||||
|
},
|
||||||
|
"font": {
|
||||||
|
"size_sm": "Маленький",
|
||||||
|
"size_md": "Средний",
|
||||||
|
"size_lg": "Большой"
|
||||||
|
},
|
||||||
|
"change_interceptor": "Изменить перехватчик",
|
||||||
|
"change_language": "Изменить язык"
|
||||||
|
}
|
||||||
|
},
|
||||||
"sse": {
|
"sse": {
|
||||||
"event_type": "Тип события",
|
"event_type": "Тип события",
|
||||||
"log": "Лог",
|
"log": "Лог",
|
||||||
@@ -589,14 +736,14 @@
|
|||||||
},
|
},
|
||||||
"state": {
|
"state": {
|
||||||
"bulk_mode": "Множественное редактирование",
|
"bulk_mode": "Множественное редактирование",
|
||||||
"bulk_mode_placeholder": "Entries are separated by newline\nKeys and values are separated by :\nPrepend # to any row you want to add but keep disabled",
|
"bulk_mode_placeholder": "Каждый параметр должен начинаться с новой строки\nКлючи и значения разедляются двоеточием\nИспользуйте # для комментария",
|
||||||
"cleared": "Очищено",
|
"cleared": "Очищено",
|
||||||
"connected": "Связаны",
|
"connected": "Связаны",
|
||||||
"connected_to": "Подключено к {name}",
|
"connected_to": "Подключено к {name}",
|
||||||
"connecting_to": "Подключение к {name} ...",
|
"connecting_to": "Подключение к {name} ...",
|
||||||
"connection_error": "Failed to connect",
|
"connection_error": "Ошибка подключения",
|
||||||
"connection_failed": "Connection failed",
|
"connection_failed": "Не удалось установить соединение",
|
||||||
"connection_lost": "Connection lost",
|
"connection_lost": "Соединение утеряно",
|
||||||
"copied_to_clipboard": "Скопировано в буфер обмена",
|
"copied_to_clipboard": "Скопировано в буфер обмена",
|
||||||
"deleted": "Удалено",
|
"deleted": "Удалено",
|
||||||
"deprecated": "УСТАРЕЛО",
|
"deprecated": "УСТАРЕЛО",
|
||||||
@@ -611,17 +758,17 @@
|
|||||||
"history_deleted": "История удалена",
|
"history_deleted": "История удалена",
|
||||||
"linewrap": "Обернуть линии",
|
"linewrap": "Обернуть линии",
|
||||||
"loading": "Загрузка...",
|
"loading": "Загрузка...",
|
||||||
"message_received": "Message: {message} arrived on topic: {topic}",
|
"message_received": "Сообщение: {message} получено по топику: {topic}",
|
||||||
"mqtt_subscription_failed": "Something went wrong while subscribing to topic: {topic}",
|
"mqtt_subscription_failed": "Что-то пошло не так, при попытке подписаться на топик: {topic}",
|
||||||
"none": "Никто",
|
"none": "Никто",
|
||||||
"nothing_found": "Ничего не найдено для",
|
"nothing_found": "Ничего не найдено для",
|
||||||
"published_error": "Something went wrong while publishing msg: {topic} to topic: {message}",
|
"published_error": "Что-то пошло не так при попытке опубликовать сообщение в топик {topic}: {message}",
|
||||||
"published_message": "Published message: {message} to topic: {topic}",
|
"published_message": "Опубликовано сообщение: {message} в топик: {topic}",
|
||||||
"reconnection_error": "Failed to reconnect",
|
"reconnection_error": "Не удалось переподключиться",
|
||||||
"subscribed_failed": "Failed to subscribe to topic: {topic}",
|
"subscribed_failed": "Не удалось подписаться на топик: {topic}",
|
||||||
"subscribed_success": "Successfully subscribed to topic: {topic}",
|
"subscribed_success": "Успешно подписался на топик: {topic}",
|
||||||
"unsubscribed_failed": "Failed to unsubscribe from topic: {topic}",
|
"unsubscribed_failed": "Не удалось отписаться от топика: {topic}",
|
||||||
"unsubscribed_success": "Successfully unsubscribed from topic: {topic}",
|
"unsubscribed_success": "Успешно отписался от топика: {topic}",
|
||||||
"waiting_send_request": "Ожидание отправки запроса"
|
"waiting_send_request": "Ожидание отправки запроса"
|
||||||
},
|
},
|
||||||
"support": {
|
"support": {
|
||||||
@@ -630,7 +777,7 @@
|
|||||||
"community": "Задавайте вопросы и помогайте другим",
|
"community": "Задавайте вопросы и помогайте другим",
|
||||||
"documentation": "Узнать больше о Hoppscotch",
|
"documentation": "Узнать больше о Hoppscotch",
|
||||||
"forum": "Задавайте вопросы и получайте ответы",
|
"forum": "Задавайте вопросы и получайте ответы",
|
||||||
"github": "Follow us on Github",
|
"github": "Подпишитесь на нас на Github",
|
||||||
"shortcuts": "Просматривайте приложение быстрее",
|
"shortcuts": "Просматривайте приложение быстрее",
|
||||||
"team": "Свяжитесь с командой",
|
"team": "Свяжитесь с командой",
|
||||||
"title": "Служба поддержки",
|
"title": "Служба поддержки",
|
||||||
@@ -641,15 +788,15 @@
|
|||||||
"body": "Тело",
|
"body": "Тело",
|
||||||
"collections": "Коллекции",
|
"collections": "Коллекции",
|
||||||
"documentation": "Документация",
|
"documentation": "Документация",
|
||||||
"environments": "Environments",
|
"environments": "Окружения",
|
||||||
"headers": "Заголовки",
|
"headers": "Заголовки",
|
||||||
"history": "История",
|
"history": "История",
|
||||||
"mqtt": "MQTT",
|
"mqtt": "MQTT",
|
||||||
"parameters": "Параметры",
|
"parameters": "Параметры",
|
||||||
"pre_request_script": "Скрипт предварительного запроса",
|
"pre_request_script": "Пред-скрипт",
|
||||||
"queries": "Запросы",
|
"queries": "Запросы",
|
||||||
"query": "Запрос",
|
"query": "Запрос",
|
||||||
"schema": "Schema",
|
"schema": "Схема",
|
||||||
"socketio": "Socket.IO",
|
"socketio": "Socket.IO",
|
||||||
"sse": "SSE",
|
"sse": "SSE",
|
||||||
"tests": "Тесты",
|
"tests": "Тесты",
|
||||||
@@ -666,7 +813,7 @@
|
|||||||
"email_do_not_match": "Электронная почта, которой Вы воспользовались не соответсвует указанной в данных Вашей учетной записи.",
|
"email_do_not_match": "Электронная почта, которой Вы воспользовались не соответсвует указанной в данных Вашей учетной записи.",
|
||||||
"exit": "Выйти из команды",
|
"exit": "Выйти из команды",
|
||||||
"exit_disabled": "Только владелец не может выйти из команды",
|
"exit_disabled": "Только владелец не может выйти из команды",
|
||||||
"invalid_coll_id": "Invalid collection ID",
|
"invalid_coll_id": "Не верный идентификатор коллекции",
|
||||||
"invalid_email_format": "Формат электронной почты недействителен",
|
"invalid_email_format": "Формат электронной почты недействителен",
|
||||||
"invalid_id": "Некорректный ID команды. Свяжитесь с руководителем команды.",
|
"invalid_id": "Некорректный ID команды. Свяжитесь с руководителем команды.",
|
||||||
"invalid_invite_link": "Ссылка недействительна",
|
"invalid_invite_link": "Ссылка недействительна",
|
||||||
@@ -690,7 +837,7 @@
|
|||||||
"member_removed": "Пользователь удален",
|
"member_removed": "Пользователь удален",
|
||||||
"member_role_updated": "Роли пользователей обновлены",
|
"member_role_updated": "Роли пользователей обновлены",
|
||||||
"members": "Участники",
|
"members": "Участники",
|
||||||
"more_members": "+{count} more",
|
"more_members": "+{count}",
|
||||||
"name_length_insufficient": "Название команды должно быть не менее 6 символов.",
|
"name_length_insufficient": "Название команды должно быть не менее 6 символов.",
|
||||||
"name_updated": "Название команды обновлено",
|
"name_updated": "Название команды обновлено",
|
||||||
"new": "Новая команда",
|
"new": "Новая команда",
|
||||||
@@ -698,13 +845,13 @@
|
|||||||
"new_name": "Моя новая команда",
|
"new_name": "Моя новая команда",
|
||||||
"no_access": "У вас нет прав на редактирование этих коллекций",
|
"no_access": "У вас нет прав на редактирование этих коллекций",
|
||||||
"no_invite_found": "Такое приглашение мы не смогли найти. Свяжитесь с руководителем команды.",
|
"no_invite_found": "Такое приглашение мы не смогли найти. Свяжитесь с руководителем команды.",
|
||||||
"no_request_found": "Request not found.",
|
"no_request_found": "Запрос не найден",
|
||||||
"not_found": "Team not found. Contact your team owner.",
|
"not_found": "Команда не найдена, свяжитесь с владельцем команды",
|
||||||
"not_valid_viewer": "У Вас нет прав просматривать это. Свяжитесь с руководителем команды.",
|
"not_valid_viewer": "У Вас нет прав просматривать это. Свяжитесь с руководителем команды.",
|
||||||
"parent_coll_move": "Cannot move collection to a child collection",
|
"parent_coll_move": "Не удалось переместить коллекцию в дочернюю",
|
||||||
"pending_invites": "Ожидающие приглашения",
|
"pending_invites": "Ожидающие приглашения",
|
||||||
"permissions": "Разрешения",
|
"permissions": "Разрешения",
|
||||||
"same_target_destination": "Same target and destination",
|
"same_target_destination": "Таже цель и конечная точка",
|
||||||
"saved": "Команда сохранена",
|
"saved": "Команда сохранена",
|
||||||
"select_a_team": "Выбрать команду",
|
"select_a_team": "Выбрать команду",
|
||||||
"title": "Команды",
|
"title": "Команды",
|
||||||
@@ -712,9 +859,9 @@
|
|||||||
"we_sent_invite_link_description": "Попросите тех, кого Вы пригласили, проверить их почтовые ящики. Им нужно перейди по ссылке, чтобы подтвердить вступление в эту команду."
|
"we_sent_invite_link_description": "Попросите тех, кого Вы пригласили, проверить их почтовые ящики. Им нужно перейди по ссылке, чтобы подтвердить вступление в эту команду."
|
||||||
},
|
},
|
||||||
"team_environment": {
|
"team_environment": {
|
||||||
"deleted": "Environment Deleted",
|
"deleted": "Окружение удалено",
|
||||||
"duplicate": "Environment Duplicated",
|
"duplicate": "Окружение скопировано",
|
||||||
"not_found": "Environment not found."
|
"not_found": "Окружение не найдено"
|
||||||
},
|
},
|
||||||
"test": {
|
"test": {
|
||||||
"failed": "Тест не пройден",
|
"failed": "Тест не пройден",
|
||||||
@@ -734,9 +881,9 @@
|
|||||||
"url": "URL"
|
"url": "URL"
|
||||||
},
|
},
|
||||||
"workspace": {
|
"workspace": {
|
||||||
"change": "Change workspace",
|
"change": "Изменить пространство",
|
||||||
"personal": "My Workspace",
|
"personal": "Моё пространство",
|
||||||
"team": "Team Workspace",
|
"team": "Пространство команды",
|
||||||
"title": "Workspaces"
|
"title": "Рабочие пространства"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
Before Width: | Height: | Size: 666 KiB After Width: | Height: | Size: 926 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 358 KiB After Width: | Height: | Size: 510 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 382 KiB After Width: | Height: | Size: 535 KiB |
@@ -10,18 +10,6 @@
|
|||||||
:class="{ '-rotate-180': !EXPAND_NAVIGATION }"
|
:class="{ '-rotate-180': !EXPAND_NAVIGATION }"
|
||||||
@click="EXPAND_NAVIGATION = !EXPAND_NAVIGATION"
|
@click="EXPAND_NAVIGATION = !EXPAND_NAVIGATION"
|
||||||
/>
|
/>
|
||||||
<HoppButtonSecondary
|
|
||||||
v-tippy="{ theme: 'tooltip' }"
|
|
||||||
:title="`${ZEN_MODE ? t('action.turn_off') : t('action.turn_on')} ${t(
|
|
||||||
'layout.zen_mode'
|
|
||||||
)}`"
|
|
||||||
:icon="ZEN_MODE ? IconMinimize : IconMaximize"
|
|
||||||
:class="{
|
|
||||||
'!text-accent !focus-visible:text-accentDark !hover:text-accentDark':
|
|
||||||
ZEN_MODE,
|
|
||||||
}"
|
|
||||||
@click="ZEN_MODE = !ZEN_MODE"
|
|
||||||
/>
|
|
||||||
<tippy interactive trigger="click" theme="popover">
|
<tippy interactive trigger="click" theme="popover">
|
||||||
<HoppButtonSecondary
|
<HoppButtonSecondary
|
||||||
v-tippy="{ theme: 'tooltip' }"
|
v-tippy="{ theme: 'tooltip' }"
|
||||||
@@ -211,11 +199,9 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, watch } from "vue"
|
import { ref } from "vue"
|
||||||
import { version } from "~/../package.json"
|
import { version } from "~/../package.json"
|
||||||
import IconSidebar from "~icons/lucide/sidebar"
|
import IconSidebar from "~icons/lucide/sidebar"
|
||||||
import IconMinimize from "~icons/lucide/minimize"
|
|
||||||
import IconMaximize from "~icons/lucide/maximize"
|
|
||||||
import IconZap from "~icons/lucide/zap"
|
import IconZap from "~icons/lucide/zap"
|
||||||
import IconShare2 from "~icons/lucide/share-2"
|
import IconShare2 from "~icons/lucide/share-2"
|
||||||
import IconColumns from "~icons/lucide/columns"
|
import IconColumns from "~icons/lucide/columns"
|
||||||
@@ -241,7 +227,6 @@ const showDeveloperOptions = ref(false)
|
|||||||
|
|
||||||
const EXPAND_NAVIGATION = useSetting("EXPAND_NAVIGATION")
|
const EXPAND_NAVIGATION = useSetting("EXPAND_NAVIGATION")
|
||||||
const SIDEBAR = useSetting("SIDEBAR")
|
const SIDEBAR = useSetting("SIDEBAR")
|
||||||
const ZEN_MODE = useSetting("ZEN_MODE")
|
|
||||||
const COLUMN_LAYOUT = useSetting("COLUMN_LAYOUT")
|
const COLUMN_LAYOUT = useSetting("COLUMN_LAYOUT")
|
||||||
const SIDEBAR_ON_LEFT = useSetting("SIDEBAR_ON_LEFT")
|
const SIDEBAR_ON_LEFT = useSetting("SIDEBAR_ON_LEFT")
|
||||||
|
|
||||||
@@ -252,13 +237,6 @@ const currentUser = useReadonlyStream(
|
|||||||
platform.auth.getCurrentUser()
|
platform.auth.getCurrentUser()
|
||||||
)
|
)
|
||||||
|
|
||||||
watch(
|
|
||||||
() => ZEN_MODE.value,
|
|
||||||
() => {
|
|
||||||
EXPAND_NAVIGATION.value = !ZEN_MODE.value
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
const nativeShare = () => {
|
const nativeShare = () => {
|
||||||
if (navigator.share) {
|
if (navigator.share) {
|
||||||
navigator
|
navigator
|
||||||
|
|||||||
@@ -67,7 +67,6 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { watch } from "vue"
|
|
||||||
import IconSidebar from "~icons/lucide/sidebar"
|
import IconSidebar from "~icons/lucide/sidebar"
|
||||||
import IconSidebarOpen from "~icons/lucide/sidebar-open"
|
import IconSidebarOpen from "~icons/lucide/sidebar-open"
|
||||||
import IconChevronRight from "~icons/lucide/chevron-right"
|
import IconChevronRight from "~icons/lucide/chevron-right"
|
||||||
@@ -77,17 +76,9 @@ import { platform } from "~/platform"
|
|||||||
|
|
||||||
const t = useI18n()
|
const t = useI18n()
|
||||||
|
|
||||||
const ZEN_MODE = useSetting("ZEN_MODE")
|
|
||||||
const EXPAND_NAVIGATION = useSetting("EXPAND_NAVIGATION")
|
const EXPAND_NAVIGATION = useSetting("EXPAND_NAVIGATION")
|
||||||
const SIDEBAR = useSetting("SIDEBAR")
|
const SIDEBAR = useSetting("SIDEBAR")
|
||||||
|
|
||||||
watch(
|
|
||||||
() => ZEN_MODE.value,
|
|
||||||
() => {
|
|
||||||
EXPAND_NAVIGATION.value = !ZEN_MODE.value
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
defineProps<{
|
defineProps<{
|
||||||
show: boolean
|
show: boolean
|
||||||
}>()
|
}>()
|
||||||
|
|||||||
@@ -119,5 +119,8 @@ watch(
|
|||||||
&.active {
|
&.active {
|
||||||
@apply after:bg-accentLight;
|
@apply after:bg-accentLight;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scroll-padding: 4rem !important;
|
||||||
|
scroll-margin: 4rem !important;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
:key="`result-${result.id}`"
|
:key="`result-${result.id}`"
|
||||||
:entry="result"
|
:entry="result"
|
||||||
:active="isEqual(selectedEntry, [sectionIndex, entryIndex])"
|
:active="isEqual(selectedEntry, [sectionIndex, entryIndex])"
|
||||||
@mouseover="selectedEntry = [sectionIndex, entryIndex]"
|
@mouseover="onMouseOver($event, sectionIndex, entryIndex)"
|
||||||
@action="runAction(sectionID, result)"
|
@action="runAction(sectionID, result)"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -178,6 +178,24 @@ function runAction(searcherID: string, result: SpotlightSearcherResult) {
|
|||||||
emit("hide-modal")
|
emit("hide-modal")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let lastMousePosition: { x: number; y: number }
|
||||||
|
|
||||||
|
const onMouseOver = (
|
||||||
|
e: MouseEvent,
|
||||||
|
sectionIndex: number,
|
||||||
|
entryIndex: number
|
||||||
|
) => {
|
||||||
|
const mousePosition = {
|
||||||
|
x: e.clientX,
|
||||||
|
y: e.clientY,
|
||||||
|
}
|
||||||
|
|
||||||
|
// if the position is same, do nothing
|
||||||
|
if (isEqual(lastMousePosition, mousePosition)) return
|
||||||
|
selectedEntry.value = [sectionIndex, entryIndex]
|
||||||
|
lastMousePosition = mousePosition
|
||||||
|
}
|
||||||
|
|
||||||
function newUseArrowKeysForNavigation() {
|
function newUseArrowKeysForNavigation() {
|
||||||
const selectedEntry = ref<[number, number]>([0, 0]) // [sectionIndex, entryIndex]
|
const selectedEntry = ref<[number, number]>([0, 0]) // [sectionIndex, entryIndex]
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
<div class="flex">
|
<div class="flex">
|
||||||
<HoppButtonSecondary
|
<HoppButtonSecondary
|
||||||
v-tippy="{ theme: 'tooltip' }"
|
v-tippy="{ theme: 'tooltip' }"
|
||||||
to="https://docs.hoppscotch.io/documentation/getting-started/rest/using-parameters"
|
to="https://docs.hoppscotch.io/documentation/features/rest-api-testing"
|
||||||
blank
|
blank
|
||||||
:title="t('app.wiki')"
|
:title="t('app.wiki')"
|
||||||
:icon="IconHelpCircle"
|
:icon="IconHelpCircle"
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<span
|
<span
|
||||||
v-tippy="{ theme: 'tooltip' }"
|
v-tippy="{ theme: 'tooltip' }"
|
||||||
:title="relativeTime"
|
:title="relativeTime"
|
||||||
class="mx-auto truncate ts-font text-secondaryLight hover:text-secondary hover:text-center"
|
class="mx-auto truncate text-tiny text-secondaryLight hover:text-secondary hover:text-center"
|
||||||
>
|
>
|
||||||
{{ shortDateTime(entry.ts) }}
|
{{ shortDateTime(entry.ts) }}
|
||||||
</span>
|
</span>
|
||||||
@@ -406,8 +406,4 @@ const icon = computed(() => markRaw(ICONS[props.entry.source].icon))
|
|||||||
@apply transition;
|
@apply transition;
|
||||||
@apply hover: text-secondary;
|
@apply hover: text-secondary;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ts-font {
|
|
||||||
font-size: 0.6rem;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -311,35 +311,36 @@ const envVars = computed(() =>
|
|||||||
|
|
||||||
const envTooltipPlugin = new HoppReactiveEnvPlugin(envVars, view)
|
const envTooltipPlugin = new HoppReactiveEnvPlugin(envVars, view)
|
||||||
|
|
||||||
const initView = (el: any) => {
|
function handleTextSelection() {
|
||||||
function handleTextSelection() {
|
const selection = view.value?.state.selection.main
|
||||||
const selection = view.value?.state.selection.main
|
if (selection) {
|
||||||
if (selection) {
|
const from = selection.from
|
||||||
const from = selection.from
|
const to = selection.to
|
||||||
const to = selection.to
|
if (from === to) return
|
||||||
const text = view.value?.state.doc.sliceString(from, to)
|
const text = view.value?.state.doc.sliceString(from, to)
|
||||||
const { top, left } = view.value?.coordsAtPos(from)
|
const { top, left } = view.value?.coordsAtPos(from)
|
||||||
if (text) {
|
if (text) {
|
||||||
invokeAction("contextmenu.open", {
|
invokeAction("contextmenu.open", {
|
||||||
position: {
|
position: {
|
||||||
top,
|
top,
|
||||||
left,
|
left,
|
||||||
},
|
},
|
||||||
text,
|
text,
|
||||||
})
|
})
|
||||||
showSuggestionPopover.value = false
|
showSuggestionPopover.value = false
|
||||||
} else {
|
} else {
|
||||||
invokeAction("contextmenu.open", {
|
invokeAction("contextmenu.open", {
|
||||||
position: {
|
position: {
|
||||||
top,
|
top,
|
||||||
left,
|
left,
|
||||||
},
|
},
|
||||||
text: null,
|
text: null,
|
||||||
})
|
})
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const initView = (el: any) => {
|
||||||
// Debounce to prevent double click from selecting the word
|
// Debounce to prevent double click from selecting the word
|
||||||
const debounceFn = useDebounceFn(() => {
|
const debounceFn = useDebounceFn(() => {
|
||||||
handleTextSelection()
|
handleTextSelection()
|
||||||
@@ -381,6 +382,11 @@ const initView = (el: any) => {
|
|||||||
drop(ev) {
|
drop(ev) {
|
||||||
ev.preventDefault()
|
ev.preventDefault()
|
||||||
},
|
},
|
||||||
|
scroll(event) {
|
||||||
|
if (event.target) {
|
||||||
|
handleTextSelection()
|
||||||
|
}
|
||||||
|
},
|
||||||
}),
|
}),
|
||||||
ViewPlugin.fromClass(
|
ViewPlugin.fromClass(
|
||||||
class {
|
class {
|
||||||
|
|||||||
@@ -1,71 +0,0 @@
|
|||||||
<template>
|
|
||||||
<span class="inline-flex">
|
|
||||||
<tippy
|
|
||||||
interactive
|
|
||||||
trigger="click"
|
|
||||||
theme="popover"
|
|
||||||
:on-shown="() => tippyActions.focus()"
|
|
||||||
>
|
|
||||||
<span class="select-wrapper">
|
|
||||||
<HoppButtonSecondary
|
|
||||||
v-tippy="{ theme: 'tooltip' }"
|
|
||||||
:title="t('settings.change_font_size')"
|
|
||||||
class="pr-8"
|
|
||||||
:icon="IconType"
|
|
||||||
outline
|
|
||||||
:label="`${getFontSizeName(
|
|
||||||
fontSizes.find((size) => size === active)
|
|
||||||
)}`"
|
|
||||||
/>
|
|
||||||
</span>
|
|
||||||
<template #content="{ hide }">
|
|
||||||
<div
|
|
||||||
ref="tippyActions"
|
|
||||||
class="flex flex-col focus:outline-none"
|
|
||||||
tabindex="0"
|
|
||||||
@keyup.escape="hide()"
|
|
||||||
>
|
|
||||||
<HoppSmartItem
|
|
||||||
v-for="(size, index) in fontSizes"
|
|
||||||
:key="`size-${index}`"
|
|
||||||
:label="`${getFontSizeName(size)}`"
|
|
||||||
:icon="size === active ? IconCircleDot : IconCircle"
|
|
||||||
:active="size === active"
|
|
||||||
@click="
|
|
||||||
() => {
|
|
||||||
setActiveFont(size)
|
|
||||||
hide()
|
|
||||||
}
|
|
||||||
"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</tippy>
|
|
||||||
</span>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup lang="ts">
|
|
||||||
import IconCircleDot from "~icons/lucide/circle-dot"
|
|
||||||
import IconCircle from "~icons/lucide/circle"
|
|
||||||
import IconType from "~icons/lucide/type"
|
|
||||||
import { HoppFontSizes, HoppFontSize, applySetting } from "~/newstore/settings"
|
|
||||||
import { useSetting } from "@composables/settings"
|
|
||||||
import { useI18n } from "@composables/i18n"
|
|
||||||
import { ref } from "vue"
|
|
||||||
|
|
||||||
const t = useI18n()
|
|
||||||
|
|
||||||
const fontSizes = HoppFontSizes
|
|
||||||
const active = useSetting("FONT_SIZE")
|
|
||||||
|
|
||||||
const getFontSizeName = (size: HoppFontSize) => {
|
|
||||||
return t(`settings.font_size_${size}`)
|
|
||||||
}
|
|
||||||
|
|
||||||
const setActiveFont = (size: HoppFontSize) => {
|
|
||||||
applySetting("FONT_SIZE", size)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Template refs
|
|
||||||
const tippyActions = ref<any | null>(null)
|
|
||||||
</script>
|
|
||||||
@@ -216,6 +216,33 @@ export function useCodemirror(
|
|||||||
? new HoppEnvironmentPlugin(subscribeToStream, view)
|
? new HoppEnvironmentPlugin(subscribeToStream, view)
|
||||||
: null
|
: null
|
||||||
|
|
||||||
|
function handleTextSelection() {
|
||||||
|
const selection = view.value?.state.selection.main
|
||||||
|
if (selection) {
|
||||||
|
const from = selection.from
|
||||||
|
const to = selection.to
|
||||||
|
const text = view.value?.state.doc.sliceString(from, to)
|
||||||
|
const { top, left } = view.value?.coordsAtPos(from)
|
||||||
|
if (text) {
|
||||||
|
invokeAction("contextmenu.open", {
|
||||||
|
position: {
|
||||||
|
top,
|
||||||
|
left,
|
||||||
|
},
|
||||||
|
text,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
invokeAction("contextmenu.open", {
|
||||||
|
position: {
|
||||||
|
top,
|
||||||
|
left,
|
||||||
|
},
|
||||||
|
text: null,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const initView = (el: any) => {
|
const initView = (el: any) => {
|
||||||
if (el) platform.ui?.onCodemirrorInstanceMount?.(el)
|
if (el) platform.ui?.onCodemirrorInstanceMount?.(el)
|
||||||
|
|
||||||
@@ -226,33 +253,6 @@ export function useCodemirror(
|
|||||||
ViewPlugin.fromClass(
|
ViewPlugin.fromClass(
|
||||||
class {
|
class {
|
||||||
update(update: ViewUpdate) {
|
update(update: ViewUpdate) {
|
||||||
function handleTextSelection() {
|
|
||||||
const selection = view.value?.state.selection.main
|
|
||||||
if (selection) {
|
|
||||||
const from = selection.from
|
|
||||||
const to = selection.to
|
|
||||||
const text = view.value?.state.doc.sliceString(from, to)
|
|
||||||
const { top, left } = view.value?.coordsAtPos(from)
|
|
||||||
if (text) {
|
|
||||||
invokeAction("contextmenu.open", {
|
|
||||||
position: {
|
|
||||||
top,
|
|
||||||
left,
|
|
||||||
},
|
|
||||||
text,
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
invokeAction("contextmenu.open", {
|
|
||||||
position: {
|
|
||||||
top,
|
|
||||||
left,
|
|
||||||
},
|
|
||||||
text: null,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Debounce to prevent double click from selecting the word
|
// Debounce to prevent double click from selecting the word
|
||||||
const debounceFn = useDebounceFn(() => {
|
const debounceFn = useDebounceFn(() => {
|
||||||
handleTextSelection()
|
handleTextSelection()
|
||||||
@@ -296,6 +296,13 @@ export function useCodemirror(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
|
EditorView.domEventHandlers({
|
||||||
|
scroll(event) {
|
||||||
|
if (event.target) {
|
||||||
|
handleTextSelection()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}),
|
||||||
EditorView.updateListener.of((update) => {
|
EditorView.updateListener.of((update) => {
|
||||||
if (options.extendedEditorConfig.readOnly) {
|
if (options.extendedEditorConfig.readOnly) {
|
||||||
update.view.contentDOM.inputMode = "none"
|
update.view.contentDOM.inputMode = "none"
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ export const bindings: {
|
|||||||
"alt-x": "request.method.delete",
|
"alt-x": "request.method.delete",
|
||||||
"ctrl-k": "modals.search.toggle",
|
"ctrl-k": "modals.search.toggle",
|
||||||
"ctrl-/": "flyouts.keybinds.toggle",
|
"ctrl-/": "flyouts.keybinds.toggle",
|
||||||
"?": "modals.support.toggle",
|
"shift-/": "modals.support.toggle",
|
||||||
"ctrl-m": "modals.share.toggle",
|
"ctrl-m": "modals.share.toggle",
|
||||||
"alt-r": "navigation.jump.rest",
|
"alt-r": "navigation.jump.rest",
|
||||||
"alt-q": "navigation.jump.graphql",
|
"alt-q": "navigation.jump.graphql",
|
||||||
@@ -120,7 +120,8 @@ function generateKeybindingString(ev: KeyboardEvent): ShortcutKey | null {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getPressedKey(ev: KeyboardEvent): Key | null {
|
function getPressedKey(ev: KeyboardEvent): Key | null {
|
||||||
const val = ev.key.toLowerCase()
|
const val = ev.code.toLowerCase()
|
||||||
|
|
||||||
// Check arrow keys
|
// Check arrow keys
|
||||||
if (val === "arrowup") return "up"
|
if (val === "arrowup") return "up"
|
||||||
else if (val === "arrowdown") return "down"
|
else if (val === "arrowdown") return "down"
|
||||||
@@ -128,21 +129,20 @@ function getPressedKey(ev: KeyboardEvent): Key | null {
|
|||||||
else if (val === "arrowright") return "right"
|
else if (val === "arrowright") return "right"
|
||||||
|
|
||||||
// Check letter keys
|
// Check letter keys
|
||||||
const isLetter = ev.code.toLowerCase().startsWith("key")
|
const isLetter = val.startsWith("key")
|
||||||
if (isLetter) return ev.code.toLowerCase().substring(3) as Key
|
if (isLetter) return val.substring(3) as Key
|
||||||
|
|
||||||
// Check if number keys
|
// Check if number keys
|
||||||
if (val.length === 1 && !isNaN(val as any)) return val as Key
|
const isDigit = val.startsWith("digit")
|
||||||
|
if (isDigit) return val.substring(5) as Key
|
||||||
|
|
||||||
// Check if question mark
|
// Check if slash
|
||||||
if (val === "?") return "?"
|
if (val === "slash") return "/"
|
||||||
|
|
||||||
// Check if question mark
|
|
||||||
if (val === "/") return "/"
|
|
||||||
|
|
||||||
// Check if period
|
// Check if period
|
||||||
if (val === ".") return "."
|
if (val === "period") return "."
|
||||||
|
|
||||||
|
// Check if enter
|
||||||
if (val === "enter") return "enter"
|
if (val === "enter") return "enter"
|
||||||
|
|
||||||
// If no other cases match, this is not a valid key
|
// If no other cases match, this is not a valid key
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="flex w-screen h-screen">
|
<div class="flex w-screen h-screen">
|
||||||
<Splitpanes class="no-splitter" :dbl-click-splitter="false" horizontal>
|
<Splitpanes class="no-splitter" :dbl-click-splitter="false" horizontal>
|
||||||
<Pane v-if="!zenMode" style="height: auto">
|
<Pane style="height: auto">
|
||||||
<AppHeader />
|
<AppHeader />
|
||||||
</Pane>
|
</Pane>
|
||||||
<Pane :class="spacerClass" class="flex flex-1 !overflow-auto md:mb-0">
|
<Pane :class="spacerClass" class="flex flex-1 !overflow-auto md:mb-0">
|
||||||
@@ -79,9 +79,7 @@ const router = useRouter()
|
|||||||
const showSearch = ref(false)
|
const showSearch = ref(false)
|
||||||
const showSupport = ref(false)
|
const showSupport = ref(false)
|
||||||
|
|
||||||
const fontSize = useSetting("FONT_SIZE")
|
|
||||||
const expandNavigation = useSetting("EXPAND_NAVIGATION")
|
const expandNavigation = useSetting("EXPAND_NAVIGATION")
|
||||||
const zenMode = useSetting("ZEN_MODE")
|
|
||||||
const rightSidebar = useSetting("SIDEBAR")
|
const rightSidebar = useSetting("SIDEBAR")
|
||||||
const columnLayout = useSetting("COLUMN_LAYOUT")
|
const columnLayout = useSetting("COLUMN_LAYOUT")
|
||||||
|
|
||||||
@@ -133,24 +131,9 @@ watch(mdAndLarger, () => {
|
|||||||
columnLayout.value = true
|
columnLayout.value = true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
const spacerClass = computed(() =>
|
||||||
const spacerClass = computed(() => {
|
expandNavigation.value ? "spacer-small" : "spacer-expand"
|
||||||
if (fontSize.value === "small" && expandNavigation.value)
|
)
|
||||||
return "spacer-small"
|
|
||||||
if (fontSize.value === "medium" && expandNavigation.value)
|
|
||||||
return "spacer-medium"
|
|
||||||
if (fontSize.value === "large" && expandNavigation.value)
|
|
||||||
return "spacer-large"
|
|
||||||
if (
|
|
||||||
(fontSize.value === "small" ||
|
|
||||||
fontSize.value === "medium" ||
|
|
||||||
fontSize.value === "large") &&
|
|
||||||
!expandNavigation.value
|
|
||||||
)
|
|
||||||
return "spacer-expand"
|
|
||||||
|
|
||||||
return ""
|
|
||||||
})
|
|
||||||
|
|
||||||
defineActionHandler("modals.search.toggle", () => {
|
defineActionHandler("modals.search.toggle", () => {
|
||||||
showSearch.value = !showSearch.value
|
showSearch.value = !showSearch.value
|
||||||
|
|||||||
@@ -68,23 +68,9 @@ const applyAccentColor = (_app: App) => {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
||||||
const applyFontSize = (_app: App) => {
|
|
||||||
const [pref] = useSettingStatic("FONT_SIZE")
|
|
||||||
|
|
||||||
watch(
|
|
||||||
pref,
|
|
||||||
(newPref) => {
|
|
||||||
document.documentElement.setAttribute("data-font-size", newPref)
|
|
||||||
},
|
|
||||||
{ immediate: true }
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default <HoppModule>{
|
export default <HoppModule>{
|
||||||
onVueAppInit(app) {
|
onVueAppInit(app) {
|
||||||
applyColorMode(app)
|
applyColorMode(app)
|
||||||
applyAccentColor(app)
|
applyAccentColor(app)
|
||||||
applyFontSize(app)
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,10 +23,6 @@ export const HoppAccentColors = [
|
|||||||
|
|
||||||
export type HoppAccentColor = (typeof HoppAccentColors)[number]
|
export type HoppAccentColor = (typeof HoppAccentColors)[number]
|
||||||
|
|
||||||
export const HoppFontSizes = ["small", "medium", "large"] as const
|
|
||||||
|
|
||||||
export type HoppFontSize = (typeof HoppFontSizes)[number]
|
|
||||||
|
|
||||||
export type SettingsDef = {
|
export type SettingsDef = {
|
||||||
syncCollections: boolean
|
syncCollections: boolean
|
||||||
syncHistory: boolean
|
syncHistory: boolean
|
||||||
@@ -49,8 +45,6 @@ export type SettingsDef = {
|
|||||||
EXPAND_NAVIGATION: boolean
|
EXPAND_NAVIGATION: boolean
|
||||||
SIDEBAR: boolean
|
SIDEBAR: boolean
|
||||||
SIDEBAR_ON_LEFT: boolean
|
SIDEBAR_ON_LEFT: boolean
|
||||||
ZEN_MODE: boolean
|
|
||||||
FONT_SIZE: HoppFontSize
|
|
||||||
COLUMN_LAYOUT: boolean
|
COLUMN_LAYOUT: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -76,8 +70,6 @@ export const getDefaultSettings = (): SettingsDef => ({
|
|||||||
EXPAND_NAVIGATION: true,
|
EXPAND_NAVIGATION: true,
|
||||||
SIDEBAR: true,
|
SIDEBAR: true,
|
||||||
SIDEBAR_ON_LEFT: true,
|
SIDEBAR_ON_LEFT: true,
|
||||||
ZEN_MODE: false,
|
|
||||||
FONT_SIZE: "small",
|
|
||||||
COLUMN_LAYOUT: true,
|
COLUMN_LAYOUT: true,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -141,6 +141,7 @@ import { InspectionService } from "~/services/inspection"
|
|||||||
import { HeaderInspectorService } from "~/services/inspection/inspectors/header.inspector"
|
import { HeaderInspectorService } from "~/services/inspection/inspectors/header.inspector"
|
||||||
import { EnvironmentInspectorService } from "~/services/inspection/inspectors/environment.inspector"
|
import { EnvironmentInspectorService } from "~/services/inspection/inspectors/environment.inspector"
|
||||||
import { ResponseInspectorService } from "~/services/inspection/inspectors/response.inspector"
|
import { ResponseInspectorService } from "~/services/inspection/inspectors/response.inspector"
|
||||||
|
import { cloneDeep } from "lodash-es"
|
||||||
|
|
||||||
const savingRequest = ref(false)
|
const savingRequest = ref(false)
|
||||||
const confirmingCloseForTabID = ref<string | null>(null)
|
const confirmingCloseForTabID = ref<string | null>(null)
|
||||||
@@ -243,7 +244,7 @@ const duplicateTab = (tabID: string) => {
|
|||||||
const tab = getTabRef(tabID)
|
const tab = getTabRef(tabID)
|
||||||
if (tab.value) {
|
if (tab.value) {
|
||||||
const newTab = createNewTab({
|
const newTab = createNewTab({
|
||||||
request: tab.value.document.request,
|
request: cloneDeep(tab.value.document.request),
|
||||||
isDirty: true,
|
isDirty: true,
|
||||||
})
|
})
|
||||||
currentTabID.value = newTab.id
|
currentTabID.value = newTab.id
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div class="container space-y-8 divide-y divide-dividerLight">
|
<div class="container divide-y divide-dividerLight">
|
||||||
<div class="md:grid md:gap-4 md:grid-cols-3">
|
<div class="md:grid md:gap-4 md:grid-cols-3">
|
||||||
<div class="p-8 md:col-span-1">
|
<div class="p-8 md:col-span-1">
|
||||||
<h3 class="heading">
|
<h3 class="heading">
|
||||||
@@ -36,14 +36,6 @@
|
|||||||
<SmartAccentModePicker />
|
<SmartAccentModePicker />
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
|
||||||
<h4 class="font-semibold text-secondaryDark">
|
|
||||||
{{ t("settings.font_size") }}
|
|
||||||
</h4>
|
|
||||||
<div class="mt-4">
|
|
||||||
<SmartFontSizePicker />
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section>
|
<section>
|
||||||
<h4 class="font-semibold text-secondaryDark">
|
<h4 class="font-semibold text-secondaryDark">
|
||||||
{{ t("settings.language") }}
|
{{ t("settings.language") }}
|
||||||
@@ -90,14 +82,6 @@
|
|||||||
{{ t("settings.sidebar_on_left") }}
|
{{ t("settings.sidebar_on_left") }}
|
||||||
</HoppSmartToggle>
|
</HoppSmartToggle>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center">
|
|
||||||
<HoppSmartToggle
|
|
||||||
:on="ZEN_MODE"
|
|
||||||
@change="toggleSetting('ZEN_MODE')"
|
|
||||||
>
|
|
||||||
{{ t("layout.zen_mode") }}
|
|
||||||
</HoppSmartToggle>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
@@ -178,7 +162,6 @@ const PROXY_URL = useSetting("PROXY_URL")
|
|||||||
const TELEMETRY_ENABLED = useSetting("TELEMETRY_ENABLED")
|
const TELEMETRY_ENABLED = useSetting("TELEMETRY_ENABLED")
|
||||||
const EXPAND_NAVIGATION = useSetting("EXPAND_NAVIGATION")
|
const EXPAND_NAVIGATION = useSetting("EXPAND_NAVIGATION")
|
||||||
const SIDEBAR_ON_LEFT = useSetting("SIDEBAR_ON_LEFT")
|
const SIDEBAR_ON_LEFT = useSetting("SIDEBAR_ON_LEFT")
|
||||||
const ZEN_MODE = useSetting("ZEN_MODE")
|
|
||||||
|
|
||||||
const confirmRemove = ref(false)
|
const confirmRemove = ref(false)
|
||||||
|
|
||||||
@@ -186,10 +169,6 @@ const proxySettings = computed(() => ({
|
|||||||
url: PROXY_URL.value,
|
url: PROXY_URL.value,
|
||||||
}))
|
}))
|
||||||
|
|
||||||
watch(ZEN_MODE, (mode) => {
|
|
||||||
applySetting("EXPAND_NAVIGATION", !mode)
|
|
||||||
})
|
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
proxySettings,
|
proxySettings,
|
||||||
({ url }) => {
|
({ url }) => {
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ export const twitter: HoppSupportOptionsMenuItem = {
|
|||||||
icon: IconTwitter,
|
icon: IconTwitter,
|
||||||
action: {
|
action: {
|
||||||
type: "link",
|
type: "link",
|
||||||
href: "https://hoppscotch.io/discord",
|
href: "https://hoppscotch.io/twitter",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,17 +84,7 @@ export const invite: HoppSupportOptionsMenuItem = {
|
|||||||
action: {
|
action: {
|
||||||
type: "custom",
|
type: "custom",
|
||||||
do() {
|
do() {
|
||||||
if (navigator.share) {
|
invokeAction("modals.share.toggle")
|
||||||
navigator
|
|
||||||
.share({
|
|
||||||
title: "Hoppscotch",
|
|
||||||
text: "Hoppscotch • Open source API development ecosystem - Helps you create requests faster, saving precious time on development.",
|
|
||||||
url: "https://hoppscotch.io",
|
|
||||||
})
|
|
||||||
.catch(console.error)
|
|
||||||
} else {
|
|
||||||
// fallback
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import IconGlobe from "~icons/lucide/globe"
|
|||||||
import IconMonitor from "~icons/lucide/monitor"
|
import IconMonitor from "~icons/lucide/monitor"
|
||||||
import IconMoon from "~icons/lucide/moon"
|
import IconMoon from "~icons/lucide/moon"
|
||||||
import IconSun from "~icons/lucide/sun"
|
import IconSun from "~icons/lucide/sun"
|
||||||
import IconCircle from "~icons/lucide/circle"
|
|
||||||
import IconCheckCircle from "~icons/lucide/check-circle"
|
import IconCheckCircle from "~icons/lucide/check-circle"
|
||||||
|
|
||||||
type Doc = {
|
type Doc = {
|
||||||
@@ -34,7 +33,6 @@ export class SettingsSpotlightSearcherService extends StaticSpotlightSearcherSer
|
|||||||
|
|
||||||
private t = getI18n()
|
private t = getI18n()
|
||||||
|
|
||||||
private activeFontSize = useSetting("FONT_SIZE")
|
|
||||||
private activeTheme = useSetting("BG_COLOR")
|
private activeTheme = useSetting("BG_COLOR")
|
||||||
|
|
||||||
public readonly searcherID = "settings"
|
public readonly searcherID = "settings"
|
||||||
@@ -91,60 +89,7 @@ export class SettingsSpotlightSearcherService extends StaticSpotlightSearcherSer
|
|||||||
: markRaw(IconMoon)
|
: markRaw(IconMoon)
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
font_size_sm: {
|
|
||||||
text: [
|
|
||||||
this.t("settings.font_size"),
|
|
||||||
this.t("spotlight.settings.font.size_sm"),
|
|
||||||
],
|
|
||||||
onClick: () => {
|
|
||||||
console.log("clicked")
|
|
||||||
},
|
|
||||||
alternates: [
|
|
||||||
"font size",
|
|
||||||
"change font size",
|
|
||||||
"change font",
|
|
||||||
"increase font",
|
|
||||||
],
|
|
||||||
icon: computed(() =>
|
|
||||||
this.activeFontSize.value === "small"
|
|
||||||
? markRaw(IconCheckCircle)
|
|
||||||
: markRaw(IconCircle)
|
|
||||||
),
|
|
||||||
},
|
|
||||||
font_size_md: {
|
|
||||||
text: [
|
|
||||||
this.t("settings.font_size"),
|
|
||||||
this.t("spotlight.settings.font.size_md"),
|
|
||||||
],
|
|
||||||
alternates: [
|
|
||||||
"font size",
|
|
||||||
"change font size",
|
|
||||||
"change font",
|
|
||||||
"increase font",
|
|
||||||
],
|
|
||||||
icon: computed(() =>
|
|
||||||
this.activeFontSize.value === "medium"
|
|
||||||
? markRaw(IconCheckCircle)
|
|
||||||
: markRaw(IconCircle)
|
|
||||||
),
|
|
||||||
},
|
|
||||||
font_size_lg: {
|
|
||||||
text: [
|
|
||||||
this.t("settings.font_size"),
|
|
||||||
this.t("spotlight.settings.font.size_lg"),
|
|
||||||
],
|
|
||||||
alternates: [
|
|
||||||
"font size",
|
|
||||||
"change font size",
|
|
||||||
"change font",
|
|
||||||
"increase font",
|
|
||||||
],
|
|
||||||
icon: computed(() =>
|
|
||||||
this.activeFontSize.value === "large"
|
|
||||||
? markRaw(IconCheckCircle)
|
|
||||||
: markRaw(IconCircle)
|
|
||||||
),
|
|
||||||
},
|
|
||||||
change_lang: {
|
change_lang: {
|
||||||
text: [
|
text: [
|
||||||
this.t("spotlight.section.interface"),
|
this.t("spotlight.section.interface"),
|
||||||
@@ -202,17 +147,6 @@ export class SettingsSpotlightSearcherService extends StaticSpotlightSearcherSer
|
|||||||
case "theme_black":
|
case "theme_black":
|
||||||
invokeAction("settings.theme.black")
|
invokeAction("settings.theme.black")
|
||||||
break
|
break
|
||||||
|
|
||||||
// font size actions
|
|
||||||
case "font_size_sm":
|
|
||||||
this.activeFontSize.value = "small"
|
|
||||||
break
|
|
||||||
case "font_size_md":
|
|
||||||
this.activeFontSize.value = "medium"
|
|
||||||
break
|
|
||||||
case "font_size_lg":
|
|
||||||
this.activeFontSize.value = "large"
|
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,21 @@
|
|||||||
@mixin base-theme {
|
@mixin base-theme {
|
||||||
--font-sans: "Inter Variable", sans-serif;
|
--font-sans: 'Inter Variable', sans-serif;
|
||||||
--font-icon: "Material Symbols Rounded Variable";
|
--font-icon: 'Material Symbols Rounded Variable';
|
||||||
--font-mono: "Roboto Mono Variable", monospace;
|
--font-mono: 'Roboto Mono Variable', monospace;
|
||||||
--font-size-tiny: calc(var(--font-size-body) - 0.062rem);
|
--font-size-body: 0.75rem;
|
||||||
|
--font-size-tiny: 0.688rem;
|
||||||
|
--line-height-body: 1rem;
|
||||||
|
--upper-primary-sticky-fold: 4.125rem;
|
||||||
|
--upper-secondary-sticky-fold: 6.188rem;
|
||||||
|
--upper-tertiary-sticky-fold: 8.25rem;
|
||||||
|
--upper-mobile-primary-sticky-fold: 6.625rem;
|
||||||
|
--upper-mobile-secondary-sticky-fold: 8.688rem;
|
||||||
|
--upper-mobile-sticky-fold: 10.75rem;
|
||||||
|
--upper-mobile-tertiary-sticky-fold: 8.25rem;
|
||||||
|
--lower-primary-sticky-fold: 3rem;
|
||||||
|
--lower-secondary-sticky-fold: 5.063rem;
|
||||||
|
--lower-tertiary-sticky-fold: 7.125rem;
|
||||||
|
--sidebar-primary-sticky-fold: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin dark-theme {
|
@mixin dark-theme {
|
||||||
@@ -200,8 +213,8 @@
|
|||||||
:root {
|
:root {
|
||||||
@include base-theme;
|
@include base-theme;
|
||||||
@include dark-theme;
|
@include dark-theme;
|
||||||
@include green-theme;
|
|
||||||
@include dark-editor-theme;
|
@include dark-editor-theme;
|
||||||
|
@include green-theme;
|
||||||
}
|
}
|
||||||
|
|
||||||
:root.light {
|
:root.light {
|
||||||
@@ -257,63 +270,3 @@
|
|||||||
:root[data-accent='yellow'] {
|
:root[data-accent='yellow'] {
|
||||||
@include yellow-theme;
|
@include yellow-theme;
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin font-small {
|
|
||||||
--font-size-body: 0.75rem;
|
|
||||||
--line-height-body: 1rem;
|
|
||||||
--upper-primary-sticky-fold: 4.125rem;
|
|
||||||
--upper-secondary-sticky-fold: 6.188rem;
|
|
||||||
--upper-tertiary-sticky-fold: 8.25rem;
|
|
||||||
--upper-mobile-primary-sticky-fold: 6.625rem;
|
|
||||||
--upper-mobile-secondary-sticky-fold: 8.688rem;
|
|
||||||
--upper-mobile-sticky-fold: 10.75rem;
|
|
||||||
--upper-mobile-tertiary-sticky-fold: 8.25rem;
|
|
||||||
--lower-primary-sticky-fold: 3rem;
|
|
||||||
--lower-secondary-sticky-fold: 5.063rem;
|
|
||||||
--lower-tertiary-sticky-fold: 7.125rem;
|
|
||||||
--sidebar-primary-sticky-fold: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin font-medium {
|
|
||||||
--font-size-body: 0.875rem;
|
|
||||||
--line-height-body: 1.25rem;
|
|
||||||
--upper-primary-sticky-fold: 4.375rem;
|
|
||||||
--upper-secondary-sticky-fold: 6.688rem;
|
|
||||||
--upper-tertiary-sticky-fold: 9rem;
|
|
||||||
--upper-mobile-primary-sticky-fold: 7.125rem;
|
|
||||||
--upper-mobile-secondary-sticky-fold: 9.438rem;
|
|
||||||
--upper-mobile-sticky-fold: 11.75rem;
|
|
||||||
--upper-mobile-tertiary-sticky-fold: 9rem;
|
|
||||||
--lower-primary-sticky-fold: 3.25rem;
|
|
||||||
--lower-secondary-sticky-fold: 5.563rem;
|
|
||||||
--lower-tertiary-sticky-fold: 7.875rem;
|
|
||||||
--sidebar-primary-sticky-fold: 2.25rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin font-large {
|
|
||||||
--font-size-body: 1rem;
|
|
||||||
--line-height-body: 1.5rem;
|
|
||||||
--upper-primary-sticky-fold: 4.625rem;
|
|
||||||
--upper-secondary-sticky-fold: 7.188rem;
|
|
||||||
--upper-tertiary-sticky-fold: 9.75rem;
|
|
||||||
--upper-mobile-primary-sticky-fold: 7.625rem;
|
|
||||||
--upper-mobile-secondary-sticky-fold: 10.188rem;
|
|
||||||
--upper-mobile-sticky-fold: 12.75rem;
|
|
||||||
--upper-mobile-tertiary-sticky-fold: 9.75rem;
|
|
||||||
--lower-primary-sticky-fold: 3.5rem;
|
|
||||||
--lower-secondary-sticky-fold: 6.063rem;
|
|
||||||
--lower-tertiary-sticky-fold: 8.625rem;
|
|
||||||
--sidebar-primary-sticky-fold: 2.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
:root[data-font-size='small'] {
|
|
||||||
@include font-small;
|
|
||||||
}
|
|
||||||
|
|
||||||
:root[data-font-size='medium'] {
|
|
||||||
@include font-medium;
|
|
||||||
}
|
|
||||||
|
|
||||||
:root[data-font-size='large'] {
|
|
||||||
@include font-large;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,20 +1,17 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en" data-font-size="medium">
|
<html lang="en">
|
||||||
|
<head>
|
||||||
<head>
|
<script>
|
||||||
<script>
|
globalThis.import_meta_env = JSON.parse('"import_meta_env_placeholder"');
|
||||||
globalThis.import_meta_env = JSON.parse('"import_meta_env_placeholder"')
|
</script>
|
||||||
</script>
|
<meta charset="UTF-8" />
|
||||||
<meta charset="UTF-8">
|
<link rel="icon" href="/favicon.ico" />
|
||||||
<link rel="icon" href="/favicon.ico" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<title>Hoppscotch Admin</title>
|
||||||
<title>Hoppscotch Admin</title>
|
<meta property="og:image" content="/cover.jpg" />
|
||||||
<meta property="og:image" content="/cover.jpg" />
|
</head>
|
||||||
</head>
|
<body>
|
||||||
|
<div id="app"></div>
|
||||||
<body>
|
<script type="module" src="/src/main.ts"></script>
|
||||||
<div id="app"></div>
|
</body>
|
||||||
<script type="module" src="/src/main.ts"></script>
|
</html>
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
|
|||||||
@@ -2,7 +2,20 @@
|
|||||||
--font-sans: "Inter Variable", sans-serif;
|
--font-sans: "Inter Variable", sans-serif;
|
||||||
--font-icon: "Material Symbols Rounded Variable";
|
--font-icon: "Material Symbols Rounded Variable";
|
||||||
--font-mono: "Roboto Mono Variable", monospace;
|
--font-mono: "Roboto Mono Variable", monospace;
|
||||||
--font-size-tiny: calc(var(--font-size-body) - 0.062rem);
|
--font-size-body: 0.75rem;
|
||||||
|
--font-size-tiny: 0.688rem;
|
||||||
|
--line-height-body: 1rem;
|
||||||
|
--upper-primary-sticky-fold: 4.125rem;
|
||||||
|
--upper-secondary-sticky-fold: 6.188rem;
|
||||||
|
--upper-tertiary-sticky-fold: 8.25rem;
|
||||||
|
--upper-mobile-primary-sticky-fold: 6.625rem;
|
||||||
|
--upper-mobile-secondary-sticky-fold: 8.688rem;
|
||||||
|
--upper-mobile-sticky-fold: 10.75rem;
|
||||||
|
--upper-mobile-tertiary-sticky-fold: 8.25rem;
|
||||||
|
--lower-primary-sticky-fold: 3rem;
|
||||||
|
--lower-secondary-sticky-fold: 5.063rem;
|
||||||
|
--lower-tertiary-sticky-fold: 7.125rem;
|
||||||
|
--sidebar-primary-sticky-fold: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin dark-theme {
|
@mixin dark-theme {
|
||||||
@@ -200,8 +213,8 @@
|
|||||||
:root {
|
:root {
|
||||||
@include base-theme;
|
@include base-theme;
|
||||||
@include dark-theme;
|
@include dark-theme;
|
||||||
@include green-theme;
|
|
||||||
@include dark-editor-theme;
|
@include dark-editor-theme;
|
||||||
|
@include green-theme;
|
||||||
}
|
}
|
||||||
|
|
||||||
:root.light {
|
:root.light {
|
||||||
@@ -257,63 +270,3 @@
|
|||||||
:root[data-accent="yellow"] {
|
:root[data-accent="yellow"] {
|
||||||
@include yellow-theme;
|
@include yellow-theme;
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin font-small {
|
|
||||||
--font-size-body: 0.75rem;
|
|
||||||
--line-height-body: 1rem;
|
|
||||||
--upper-primary-sticky-fold: 4.125rem;
|
|
||||||
--upper-secondary-sticky-fold: 6.188rem;
|
|
||||||
--upper-tertiary-sticky-fold: 8.25rem;
|
|
||||||
--upper-mobile-primary-sticky-fold: 6.625rem;
|
|
||||||
--upper-mobile-secondary-sticky-fold: 8.688rem;
|
|
||||||
--upper-mobile-sticky-fold: 10.75rem;
|
|
||||||
--upper-mobile-tertiary-sticky-fold: 8.25rem;
|
|
||||||
--lower-primary-sticky-fold: 3rem;
|
|
||||||
--lower-secondary-sticky-fold: 5.063rem;
|
|
||||||
--lower-tertiary-sticky-fold: 7.125rem;
|
|
||||||
--sidebar-primary-sticky-fold: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin font-medium {
|
|
||||||
--font-size-body: 0.875rem;
|
|
||||||
--line-height-body: 1.25rem;
|
|
||||||
--upper-primary-sticky-fold: 4.375rem;
|
|
||||||
--upper-secondary-sticky-fold: 6.688rem;
|
|
||||||
--upper-tertiary-sticky-fold: 9rem;
|
|
||||||
--upper-mobile-primary-sticky-fold: 7.125rem;
|
|
||||||
--upper-mobile-secondary-sticky-fold: 9.438rem;
|
|
||||||
--upper-mobile-sticky-fold: 11.75rem;
|
|
||||||
--upper-mobile-tertiary-sticky-fold: 9rem;
|
|
||||||
--lower-primary-sticky-fold: 3.25rem;
|
|
||||||
--lower-secondary-sticky-fold: 5.563rem;
|
|
||||||
--lower-tertiary-sticky-fold: 7.875rem;
|
|
||||||
--sidebar-primary-sticky-fold: 2.25rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin font-large {
|
|
||||||
--font-size-body: 1rem;
|
|
||||||
--line-height-body: 1.5rem;
|
|
||||||
--upper-primary-sticky-fold: 4.625rem;
|
|
||||||
--upper-secondary-sticky-fold: 7.188rem;
|
|
||||||
--upper-tertiary-sticky-fold: 9.75rem;
|
|
||||||
--upper-mobile-primary-sticky-fold: 7.625rem;
|
|
||||||
--upper-mobile-secondary-sticky-fold: 10.188rem;
|
|
||||||
--upper-mobile-sticky-fold: 12.75rem;
|
|
||||||
--upper-mobile-tertiary-sticky-fold: 9.75rem;
|
|
||||||
--lower-primary-sticky-fold: 3.5rem;
|
|
||||||
--lower-secondary-sticky-fold: 6.063rem;
|
|
||||||
--lower-tertiary-sticky-fold: 8.625rem;
|
|
||||||
--sidebar-primary-sticky-fold: 2.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
:root[data-font-size="small"] {
|
|
||||||
@include font-small;
|
|
||||||
}
|
|
||||||
|
|
||||||
:root[data-font-size="medium"] {
|
|
||||||
@include font-medium;
|
|
||||||
}
|
|
||||||
|
|
||||||
:root[data-font-size="large"] {
|
|
||||||
@include font-large;
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user