new notification providers
-
-
- To set up a new notification provider these files need to be modified/created:
- - `server/notification-providers/PROVIDER_NAME.js` is where the heart of the notification provider lives.
- - Both `monitorJSON` and `heartbeatJSON` can be `null` for some events.
- If both are `null`, this is a general testing message, but if just `heartbeatJSON` is `null` this is a certificate expiry.
- - Please wrap the axios call into a
- ```js
- try {
- let result = await axios.post(...);
- if (result.status === ...) ...
- } catch (error) {
- this.throwGeneralAxiosError(error);
- }
- ```
- - `server/notification.js` is where the backend of the notification provider needs to be registered.
- *If you have an idea how we can skip this step, we would love to hear about it ^^*
- - `src/components/NotificationDialog.vue` you need to decide if the provider is a regional or a global one and add it with a name to the respective list
- - `src/components/notifications/PROVIDER_NAME.vue` is where the frontend of each provider lives.
- Please make sure that you have:
- - used `HiddenInput` for secret credentials
- - included all the necessary helptexts/placeholder/.. to make sure the notification provider is simple to setup for new users.
- - include all translations (`{{ $t("Translation key") }}`, [`i18n-t keypath="Translation key">`](https://vue-i18n.intlify.dev/guide/advanced/component.html)) in `src/lang/en.json` to enable our translators to translate this
- - `src/components/notifications/index.js` is where the frontend of the provider needs to be registered.
- *If you have an idea how we can skip this step, we would love to hear about it ^^*
- Offering notifications is close to the core of what we are as an uptime monitor.
- Therefore, making sure that they work is also really important.
- Because testing notification providers is quite time intensive, we mostly offload this onto the person contributing a notification provider.
-
- To make shure you have tested the notification provider, please include screenshots of the following events in the pull-request description:
- - `UP`/`DOWN`
- - Certificate Expiry via https://expired.badssl.com/
- - Testing (the test button on the notification provider setup page)
-
- Using the following way to format this is encouraged:
- ```md
- | Event | Before | After |
- ------------------
- | `UP` | paste-image-here | paste-image-here |
- | `DOWN` | paste-image-here | paste-image-here |
- | Certificate-expiry | paste-image-here | paste-image-here |
- | Testing | paste-image-here | paste-image-here |
+- Small, Non-Breaking Bug Fixes (click to expand)
+
+
+ If you come across a bug and think you can solve, we appreciate your work.
+ Please make sure that you follow these rules:
+
+ - keep the PR as small as possible, fix only one thing at a time => keeping it
+ reviewable
+ - test that your code does what you claim it does.
+
+ Because maintainer time is precious, junior maintainers may merge
+ uncontroversial PRs in this area.
+
+
+
+
+- Translations / Internationalisation (i18n) (click to expand)
+
+
+ We use weblate to localise this project into many languages. If you are
+ unhappy with a translation this is the best start. On how to translate using
+ weblate, please see
+ [these instructions](https://github.com/louislam/uptime-kuma/blob/master/src/lang/README.md).
+
+ There are two cases in which a change cannot be done in weblate and requires a
+ PR:
+
+ - A text may not be currently localisable. In this case, **adding a new
+ language key** via `$t("languageKey")` might be nessesary
+ - language keys need to be **added to `en.json`** to be visible in weblate. If
+ this has not happened, a PR is appreciated.
+ - **Adding a new language** requires a new file see
+ [these instructions](https://github.com/louislam/uptime-kuma/blob/master/src/lang/README.md)
+
+ Because maintainer time is precious, junior maintainers may merge
+ uncontroversial PRs in this area.
+
+
+
+
+- New Notification Providers (click to expand)
+
+
+ To set up a new notification provider these files need to be modified/created:
+
+ - `server/notification-providers/PROVIDER_NAME.js` is where the heart of the
+ notification provider lives.
+
+ - Both `monitorJSON` and `heartbeatJSON` can be `null` for some events. If
+
+ both are `null`, this is a general testing message, but if just
+ `heartbeatJSON` is `null` this is a certificate expiry.
+
+ - Please wrap the axios call into a
+
+ ```js
+ try {
+ let result = await axios.post(...);
+ if (result.status === ...) ...
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
```
- Because maintainer time is precious junior maintainers may merge uncontroversial PRs in this area.
+ - `server/notification.js` is where the backend of the notification provider
+ needs to be registered. _If you have an idea how we can skip this step, we
+ would love to hear about it ^^_
+
+ - `src/components/NotificationDialog.vue` you need to decide if the provider
+ is a regional or a global one and add it with a name to the respective list
+
+ - `src/components/notifications/PROVIDER_NAME.vue` is where the frontend of
+ each provider lives. Please make sure that you have:
+
+ - used `HiddenInput` for secret credentials
+ - included all the necessary helptexts/placeholder/.. to make sure the
+
+ notification provider is simple to setup for new users. - include all
+ translations (`{{ $t("Translation key") }}`,
+ [`i18n-t keypath="Translation key">`](https://vue-i18n.intlify.dev/guide/advanced/component.html))
+ in `src/lang/en.json` to enable our translators to translate this
+
+ - `src/components/notifications/index.js` is where the frontend of the
+ provider needs to be registered. _If you have an idea how we can skip this
+ step, we would love to hear about it ^^_
+
+ Offering notifications is close to the core of what we are as an uptime
+ monitor. Therefore, making sure that they work is also really important.
+ Because testing notification providers is quite time intensive, we mostly
+ offload this onto the person contributing a notification provider.
+
+ To make sure you have tested the notification provider, please include
+ screenshots of the following events in the pull-request description:
+
+ - `UP`/`DOWN`
+ - Certificate Expiry via
+ - Testing (the test button on the notification provider setup page)
+
+
+
+ Using the following way to format this is encouraged:
+
+ ```md
+ | Event | Before | After |
+ | ------------------ | --------------------- | -------------------- |
+ | `UP` |  |  |
+ | `DOWN` |  |  |
+ | Certificate-expiry |  |  |
+ | Testing |  |  |
+ ```
+
+ Because maintainer time is precious, junior maintainers may merge
+ uncontroversial PRs in this area.
+
-- new monitoring types
+
+- New Monitoring Types (click to expand)
To set up a new notification provider these files need to be modified/created:
- - `server/monitor-types/MONITORING_TYPE.js` is the core of each monitor.
- the `async check(...)`-function should:
- - throw an error for each fault that is detected with an actionable error message
- - in the happy-path, you should set `heartbeat.msg` to a successfull message and set `heartbeat.status = UP`
- - `server/uptime-kuma-server.js` is where the monitoring backend needs to be registered.
- *If you have an idea how we can skip this step, we would love to hear about it ^^*
+
+ - `server/monitor-types/MONITORING_TYPE.js` is the core of each monitor. the
+ `async check(...)`-function should:
+
+ - throw an error for each fault that is detected with an actionable error
+
+ message - in the happy-path, you should set `heartbeat.msg` to a successful
+ message and set `heartbeat.status = UP`
+
+ - `server/uptime-kuma-server.js` is where the monitoring backend needs to be
+ registered. _If you have an idea how we can skip this step, we would love to
+ hear about it ^^_
+
- `src/pages/EditMonitor.vue` is the shared frontend users interact with.
- Please make sure that you have:
- - used `HiddenInput` for secret credentials
- - included all the necessary helptexts/placeholder/.. to make sure the notification provider is simple to setup for new users.
- - include all translations (`{{ $t("Translation key") }}`, [`i18n-t keypath="Translation key">`](https://vue-i18n.intlify.dev/guide/advanced/component.html)) in `src/lang/en.json` to enable our translators to translate this
- -
+ Please make sure that you have: - used `HiddenInput` for secret
+ credentials - included all the necessary helptexts/placeholder/.. to make
+ sure the notification provider is simple to setup for new users. - include
+ all translations (`{{ $t("Translation key") }}`,
+ [`i18n-t keypath="Translation key">`](https://vue-i18n.intlify.dev/guide/advanced/component.html))
+ in `src/lang/en.json` to enable our translators to translate this
+ Because maintainer time is precious, junior maintainers may merge
+ uncontroversial PRs in this area.
- Because maintainer time is precious junior maintainers may merge uncontroversial PRs in this area.
-
-
-- new features/ major changes / breaking bugfixes
-
-
- be sure to **create an empty draft pull request or open an issue, so we can have a discussion first**.
- This is especially important for a large pull request or you don't know if it will be merged or not.
-
- Because of the large impact of this work, only senior maintainers may merge PRs in this area.
-The following rules are essential for making your PR mergable:
-- Merging multiple issues by a huge PR is more difficult to review and causes conflicts with other PRs. Please
+- New Features / Major Changes / Breaking Bugfixes (click to expand)
+
+
+ be sure to **create an empty draft pull request or open an issue, so we can
+ have a discussion first**. This is especially important for a large pull
+ request or when you don't know if it will be merged or not.
+
+ Because of the large impact of this work, only senior maintainers may
+ merge PRs in this area.
+
+
+
+
+- Pull Request Guidelines (click to expand)
+
+
+ ## Steps to Submit a Pull Request
+
+ 1. **Fork** the [Uptime-Kuma repository].
+
+ [Uptime-Kuma repository]: https://github.com/louislam/uptime-kuma/
+
+ 2. **Clone** your forked repository to your local machine.
+ 3. **Create a new branch** for your changes (e.g.,
+ `feature/add-new-notification-provider-signal`).
+ 4. **Initiate a discussion before making major changes** by creating an empty
+ commit:
+
+ ```sh
+ git commit -m "" --allow-empty
+ ```
+
+ 5. **Push** your branch to your forked repository.
+ 6. **Open a pull request** using this link: [Compare & Pull Request].
+
+ [Compare & Pull Request]: https://github.com/louislam/uptime-kuma/compare/
+
+ 7. **Select the correct source and target branches**.
+ 8. **Link to related issues** for context.
+ 9. **Provide a clear and concise description** explaining the changes and
+ their purpose.
+
+ - **Type of changes**
+
+ - Bugfix (a non-breaking change that resolves an issue)
+ - New feature (a non-breaking change that adds new functionality)
+ - Breaking change (a fix or feature that alters existing functionality in a
+ way that could cause issues)
+ - User Interface (UI) updates
+ - New Documentation (addition of new documentation)
+ - Documentation Update (modification of existing documentation)
+ - Documentation Update Required (the change requires updates to related
+ documentation)
+ - Other (please specify):
+ - Provide additional details here.
+
+ - **Checklist**
+
+ - My code adheres to the style guidelines of this project.
+ - I ran ESLint and other code linters for modified files.
+ - I have reviewed and tested my code.
+ - I have commented my code, especially in hard-to-understand areas (e.g.,
+ using JSDoc for methods).
+ - My changes generate no new warnings.
+ - My code needed automated testing. I have added them (this is an optional
+ task).
+ - Documentation updates are included (if applicable).
+ - I have considered potential security impacts and mitigated risks.
+ - Dependency updates are listed and explained.
+ - I have read and understood the
+ [Pull Request guidelines](#recommended-pull-request-guideline).
+
+ 10. **When publishing your PR, set it as a** `Draft pull request` **to allow
+ for review and prevent automatic merging.**
+ 11. **Maintainers will assign relevant labels** (e.g., `A:maintenance`,
+ `A:notifications`).
+ 12. **Complete the PR checklist**, ensuring that:
+
+ - Documentation is updated if necessary.
+ - Tests are written or updated.
+ - CI/CD checks pass successfully.
+
+ 13. **Request feedback** from team members to refine your changes before the
+ final review.
+
+ ## When Can You Change the PR Status to "Ready for Review"?
+
+ A PR should remain in **draft status** until all tasks are completed. Only
+ change the status to **Ready for Review** when:
+
+ - You have implemented all planned changes.
+ - You have addressed all feedback.
+ - Your code is fully tested and ready for integration.
+ - You have updated or created the necessary tests.
+ - You have verified that CI/CD checks pass successfully.
+
+
+
+ A **work-in-progress (WIP) PR** must stay in **draft status** until everything
+ is finalized.
+
+ Since maintainer time is valuable, junior maintainers may merge
+ uncontroversial PRs.
+
+
+
+
+## The following rules are essential for making your PR mergable
+
+- Merging multiple issues by a huge PR is more difficult to review and causes
+ conflicts with other PRs. Please
+
- (if possible) **create one PR for one issue** or
- - (if not possible) **explain which issues a PR addresses and why this PR should not be broken apart**
-- Make sure your **PR passes our continuous integration**.
- PRs will not be merged unless all CI-Checks are green.
-- **Breaking changes** (unless for a good reason and discussed beforehand) will not get merged / not get merged quickly.
- Such changes require a major version release.
-- **Test your code** before submitting a PR.
- Buggy PRs will not be merged.
+ - (if not possible) **explain which issues a PR addresses and why this PR
+ should not be broken apart**
+
+- Make sure your **PR passes our continuous integration**. PRs will not be
+ merged unless all CI-Checks are green.
+- **Breaking changes** (unless for a good reason and discussed beforehand) will
+ not get merged / not get merged quickly. Such changes require a major version
+ release.
+- **Test your code** before submitting a PR. Buggy PRs will not be merged.
- Make sure the **UI/UX is close to Uptime Kuma**.
-- **Think about the maintainability**:
- Don't add functionality that is completely **out of scope**.
- Keep in mind that we need to be able to maintain the functionality.
+- **Think about the maintainability**: Don't add functionality that is
+ completely **out of scope**. Keep in mind that we need to be able to maintain
+ the functionality.
- Don't modify or delete existing logic without a valid reason.
- Don't convert existing code into other programming languages for no reason.
-I ([@louislam](https://github.com/louislam)) have the final say.
-If your pull request does not meet my expectations, I will reject it, no matter how much time you spent on it.
-Therefore, it is essential to have a discussion beforehand.
+I ([@louislam](https://github.com/louislam)) have the final say. If your pull
+request does not meet my expectations, I will reject it, no matter how much time
+you spent on it. Therefore, it is essential to have a discussion beforehand.
-I will assign your pull request to a [milestone](https://github.com/louislam/uptime-kuma/milestones), if I plan to review and merge it.
+I will assign your pull request to a [milestone], if I plan to review and merge
+it.
-Please don't rush or ask for an ETA.
-We have to understand the pull request, make sure it has no breaking changes and stick to the vision of this project, especially for large pull requests.
+[milestone]: https://github.com/louislam/uptime-kuma/milestones
+Please don't rush or ask for an ETA. We have to understand the pull request,
+make sure it has no breaking changes and stick to the vision of this project,
+especially for large pull requests.
-## I'd like to work on an issue. How do I do that?
+## I'd Like to Work on an Issue. How Do I Do That?
-We have found that assigning people to issues is management-overhead that we don't need.
-A short comment that you want to try your hand at this issue is appreciated to save other devs time.
-If you come across any problem during development, feel free to leave a comment with what you are stuck on.
+We have found that assigning people to issues is unnecessary management
+overhead. Instead, a short comment stating that you want to work on an issue is
+appreciated, as it saves time for other developers. If you encounter any
+problems during development, feel free to leave a comment describing what you
+are stuck on.
### Recommended Pull Request Guideline
-Before diving deep into coding, having a discussion first by creating an empty pull request for discussion is preferred.
-The rationale behind this is that we can align the direction and scope of the feature to eliminate any conflicts with existing and planned work, and can help by pointing out any potential pitfalls.
+Before jumping into coding, it's recommended to initiate a discussion by
+creating an empty pull request. This approach allows us to align on the
+direction and scope of the feature, ensuring it doesn't conflict with existing
+or planned work. It also provides an opportunity to identify potential pitfalls
+early on, helping to avoid issues down the line.
-1. Fork the project
-2. Clone your fork repo to local
-3. Create a new branch
-4. Create an empty commit: `git commit -m "" --allow-empty`
-5. Push to your fork repo
-6. Prepare a pull request: https://github.com/louislam/uptime-kuma/compare
-7. Write a proper description. You can mention @louislam in it, so @louislam will get the notification.
-8. Create your pull request as a Draft
-9. Wait for the discussion
+1. **Fork** the [Uptime-Kuma repository].
+2. **Clone** your forked repository to your local machine.
+3. **Create a new branch** for your changes (e.g.,
+ `feature/add-new-notification-provider-signal`).
+4. **Initiate a discussion before making major changes** by creating an empty
+ commit:
+
+ ```sh
+ git commit -m "" --allow-empty
+ ```
+
+5. **Push** your branch to your forked repository.
+6. **Open a pull request** using this link: [Compare & Pull Request].
+7. **Select the correct source and target branches**.
+8. **Link to related issues** for context.
+9. **Provide a clear and concise description** explaining the changes and their
+ purpose.
+
+ - **Type of changes**
+
+ - Bugfix (a non-breaking change that resolves an issue)
+ - New feature (a non-breaking change that adds new functionality)
+ - Breaking change (a fix or feature that alters existing functionality in a
+ way that could cause issues)
+ - User Interface (UI) updates
+ - New Documentation (addition of new documentation)
+ - Documentation Update (modification of existing documentation)
+ - Documentation Update Required (the change requires updates to related
+ documentation)
+ - Other (please specify):
+ - Provide additional details here.
+
+ - **Checklist**
+
+ - My code adheres to the style guidelines of this project.
+ - I ran ESLint and other code linters for modified files.
+ - I have reviewed and tested my code.
+ - I have commented my code, especially in hard-to-understand areas (e.g.,
+ using JSDoc for methods).
+ - My changes generate no new warnings.
+ - My code needed automated testing. I have added them (this is an optional
+ task).
+ - Documentation updates are included (if applicable).
+ - I have considered potential security impacts and mitigated risks.
+ - Dependency updates are listed and explained.
+ - I have read and understood the
+ [Pull Request guidelines](#recommended-pull-request-guideline).
+
+10. **When publishing your PR, set it as a** `Draft pull request` **to allow for
+ review and prevent automatic merging.**
+11. **Maintainers will assign relevant labels** (e.g., `A:maintenance`,
+ `A:notifications`).
+12. **Complete the PR checklist**, ensuring that:
+
+ - Documentation is updated if necessary.
+ - Tests are written or updated.
+ - CI/CD checks pass successfully.
+
+13. **Request feedback** from team members to refine your changes before the
+ final review.
+
+### When Can You Change the PR Status to "Ready for Review"?
+
+A PR should remain in **draft status** until all tasks are completed. Only
+change the status to **Ready for Review** when:
+
+- You have implemented all planned changes.
+- You have addressed all feedback.
+- Your code is fully tested and ready for integration.
+- You have updated or created the necessary tests.
+- You have verified that CI/CD checks pass successfully.
+
+A **work-in-progress (WIP) PR** must stay in **draft status** until everything
+is finalized.
## Project Styles
-I personally do not like something that requires so many configurations before you can finally start the app.
-The goal is to make the Uptime Kuma installation as easy as installing a mobile app.
+I personally do not like something that requires a lot of configuration before
+you can finally start the app. The goal is to make the Uptime Kuma installation
+as easy as installing a mobile app.
- Easy to install for non-Docker users
+
- no native build dependency is needed (for `x86_64`/`armv7`/`arm64`)
- no extra configuration and
- no extra effort required to get it running
+
- Single container for Docker users
+
- no complex docker-compose file
- mapping the volume and exposing the port should be the only requirements
-- Settings should be configurable in the frontend. Environment variables are discouraged, unless it is related to startup such as `DATA_DIR`
+
+- Settings should be configurable in the frontend. Environment variables are
+ discouraged, unless it is related to startup such as `DATA_DIR`
- Easy to use
- The web UI styling should be consistent and nice
@@ -230,22 +476,21 @@ The goal is to make the Uptime Kuma installation as easy as installing a mobile
## Tools
-- [`Node.js`](https://nodejs.org/) >= 14
-- [`npm`](https://www.npmjs.com/) >= 8.5
+- [`Node.js`](https://nodejs.org/) >= 18
+- [`npm`](https://www.npmjs.com/) >= 9.3
- [`git`](https://git-scm.com/)
-- IDE that supports [`ESLint`](https://eslint.org/) and EditorConfig (I am using [`IntelliJ IDEA`](https://www.jetbrains.com/idea/))
-- A SQLite GUI tool (f.ex. [`SQLite Expert Personal`](https://www.sqliteexpert.com/download.html) or [`DBeaver Community`](https://dbeaver.io/download/))
-
-### GitHub Codespaces
-
-If you don't want to setup an local environment, you can now develop on GitHub Codespaces, read more:
-
-https://github.com/louislam/uptime-kuma/tree/master/.devcontainer
+- IDE that supports [`ESLint`](https://eslint.org/) and EditorConfig (I am using
+ [`IntelliJ IDEA`](https://www.jetbrains.com/idea/))
+- A SQLite GUI tool (f.ex.
+ [`SQLite Expert Personal`](https://www.sqliteexpert.com/download.html) or
+ [`DBeaver Community`](https://dbeaver.io/download/))
## Git Branches
-- `master`: 2.X.X development. If you want to add a new feature, your pull request should base on this.
-- `1.23.X`: 1.23.X development. If you want to fix a bug for v1 and v2, your pull request should base on this.
+- `master`: 2.X.X development. If you want to add a new feature, your pull
+ request should base on this.
+- `1.23.X`: 1.23.X development. If you want to fix a bug for v1 and v2, your
+ pull request should base on this.
- All other branches are unused, outdated or for dev.
## Install Dependencies for Development
@@ -266,7 +511,8 @@ Port `3000` and port `3001` will be used.
npm run dev
```
-But sometimes, you would like to restart the server, but not the frontend, you can run these commands in two terminals:
+But sometimes you may want to restart the server without restarting the
+frontend. In that case, you can run these commands in two terminals:
```bash
npm run start-frontend-dev
@@ -277,9 +523,9 @@ npm run start-server-dev
It binds to `0.0.0.0:3001` by default.
-The backend is an `express.js` server with `socket.io` integrated.
-It uses `socket.io` to communicate with clients, and most server logic is encapsulated in the `socket.io` handlers.
-`express.js` is also used to serve:
+The backend is an `express.js` server with `socket.io` integrated. It uses
+`socket.io` to communicate with clients, and most server logic is encapsulated
+in the `socket.io` handlers. `express.js` is also used to serve:
- as an entry point for redirecting to a status page or the dashboard
- the frontend built files (`index.html`, `*.js`, `*.css`, etc.)
@@ -295,11 +541,13 @@ It uses `socket.io` to communicate with clients, and most server logic is encaps
- `routers/` (Express Routers)
- `socket-handler/` (Socket.io Handlers)
- `server.js` (Server entry point)
-- `uptime-kuma-server.js` (UptimeKumaServer class, main logic should be here, but some still in `server.js`)
+- `uptime-kuma-server.js` (UptimeKumaServer class, main logic should be here,
+ but some still in `server.js`)
## Frontend Dev Server
-It binds to `0.0.0.0:3000` by default. The frontend dev server is used for development only.
+It binds to `0.0.0.0:3000` by default. The frontend dev server is used for
+development only.
For production, it is not used. It will be compiled to `dist` directory instead.
@@ -313,17 +561,19 @@ npm run build
### Frontend Details
-Uptime Kuma Frontend is a single page application (SPA). Most paths are handled by Vue Router.
+Uptime Kuma Frontend is a single page application (SPA). Most paths are handled
+by Vue Router.
The router is in `src/router.js`
-As you can see, most data in the frontend is stored at the root level, even though you changed the current router to any other pages.
+As you can see, most data in the frontend is stored at the root level, even
+though you changed the current router to any other pages.
The data and socket logic are in `src/mixins/socket.js`.
## Database Migration
-See: https://github.com/louislam/uptime-kuma/tree/master/db/knex_migrations
+See:
## Unit Test
@@ -334,11 +584,12 @@ npm test
## Dependencies
-Both frontend and backend share the same `package.json`.
-However, the frontend dependencies are eventually not used in the production environment, because it is usually also baked into `dist` files. So:
+Both frontend and backend share the same `package.json`. However, the frontend
+dependencies are eventually not used in the production environment, because it
+is usually also baked into `dist` files. So:
- Frontend dependencies = "devDependencies"
- - Examples: `vue`, `chart.js`
+ - Examples: - `vue`, `chart.js`
- Backend dependencies = "dependencies"
- Examples: `socket.io`, `sqlite3`
- Development dependencies = "devDependencies"
@@ -346,31 +597,41 @@ However, the frontend dependencies are eventually not used in the production env
### Update Dependencies
-Since previously updating Vite 2.5.10 to 2.6.0 broke the application completely, from now on, it should update the patch release version only.
+Since previously updating Vite 2.5.10 to 2.6.0 broke the application completely,
+from now on, it should update the patch release version only.
Patch release = the third digit ([Semantic Versioning](https://semver.org/))
-If for security / bug / other reasons, a library must be updated, breaking changes need to be checked by the person proposing the change.
+If for security / bug / other reasons, a library must be updated, breaking
+changes need to be checked by the person proposing the change.
## Translations
-Please add **all** the strings which are translatable to `src/lang/en.json` (if translation keys are omitted, they can not be translated.)
+Please add **all** the strings which are translatable to `src/lang/en.json` (if
+translation keys are omitted, they can not be translated.)
-**Don't include any other languages in your initial pull request** (even if this is your mother tongue), to avoid merge-conflicts between weblate and `master`.
-The translations can then (after merging a PR into `master`) be translated by awesome people donating their language skills.
+**Don't include any other languages in your initial pull request** (even if this
+is your mother tongue), to avoid merge-conflicts between weblate and `master`.
+The translations can then (after merging a PR into `master`) be translated by
+awesome people donating their language skills.
-If you want to help by translating Uptime Kuma into your language, please visit the [instructions on how to translate using weblate](https://github.com/louislam/uptime-kuma/blob/master/src/lang/README.md).
+If you want to help by translating Uptime Kuma into your language, please visit
+the [instructions on how to translate using weblate].
+
+[instructions on how to translate using weblate]:
+ https://github.com/louislam/uptime-kuma/blob/master/src/lang/README.md
## Spelling & Grammar
-Feel free to correct the grammar in the documentation or code.
-My mother language is not English and my grammar is not that great.
+Feel free to correct the grammar in the documentation or code. My mother
+language is not English and my grammar is not that great.
## Wiki
-Since there is no way to make a pull request to the wiki, I have set up another repo to do that.
+Since there is no way to make a pull request to the wiki, I have set up another
+repo to do that.
-https://github.com/louislam/uptime-kuma-wiki
+
## Docker
@@ -411,15 +672,15 @@ https://github.com/louislam/uptime-kuma-wiki
## Maintainer
Check the latest issues and pull requests:
-https://github.com/louislam/uptime-kuma/issues?q=sort%3Aupdated-desc
+
### What is a maintainer and what are their roles?
-This project has multiple maintainers which specialise in different areas.
+This project has multiple maintainers who specialise in different areas.
Currently, there are 3 maintainers:
| Person | Role | Main Area |
-|-------------------|-------------------|------------------|
+| ----------------- | ----------------- | ---------------- |
| `@louislam` | senior maintainer | major features |
| `@chakflying` | junior maintainer | fixing bugs |
| `@commanderstorm` | junior maintainer | issue-management |
@@ -428,12 +689,48 @@ Currently, there are 3 maintainers:
We have a few procedures we follow. These are documented here:
-- Release
+- Set up a Docker Builder (click to expand)
+
+
+ - amd64, armv7 using local.
+ - arm64 using remote arm64 cpu, as the emulator is too slow and can no longer
+ pass the `npm ci` command.
+
+ 1. Add the public key to the remote server.
+ 2. Add the remote context. The remote machine must be arm64 and installed
+ Docker CE.
+
+ ```bash
+ docker context create oracle-arm64-jp --docker "host=ssh://root@100.107.174.88"
+ ```
+
+ 3. Create a new builder.
+
+ ```bash
+ docker buildx create --name kuma-builder --platform linux/amd64,linux/arm/v7
+ docker buildx use kuma-builder
+ docker buildx inspect --bootstrap
+ ```
+
+ 4. Append the remote context to the builder.
+
+ ```bash
+ docker buildx create --append --name kuma-builder --platform linux/arm64 oracle-arm64-jp
+ ```
+
+ 5. Verify the builder and check if the builder is using `kuma-builder`.
+ `docker buildx inspect kuma-builder docker buildx ls`
+
+
+
+
+- Release (click to expand)
1. Draft a release note
2. Make sure the repo is cleared
- 3. If the healthcheck is updated, remember to re-compile it: `npm run build-docker-builder-go`
+ 3. If the healthcheck is updated, remember to re-compile it:
+ `npm run build-docker-builder-go`
4. `npm run release-final` with env vars: `VERSION` and `GITHUB_TOKEN`
5. Wait until the `Press any key to continue`
6. `git push`
@@ -443,13 +740,16 @@ We have a few procedures we follow. These are documented here:
These Items need to be checked:
- - [ ] Check all tags is fine on https://hub.docker.com/r/louislam/uptime-kuma/tags
- - [ ] Try the Docker image with tag 1.X.X (Clean install / amd64 / arm64 / armv7)
+ - [ ] Check all tags is fine on
+
+ - [ ] Try the Docker image with tag 1.X.X (Clean install / amd64 / arm64 /
+ armv7)
- [ ] Try clean installation with Node.js
-
+
-- Release Beta
+
+- Release Beta (click to expand)
1. Draft a release note, check `This is a pre-release`
@@ -458,35 +758,37 @@ We have a few procedures we follow. These are documented here:
4. Wait until the `Press any key to continue`
5. Publish the release note as `1.X.X-beta.X`
6. Press any key to continue
-
+
-- Release Wiki
+
+- Release Wiki (click to expand)
**Setup Repo**
-
+
```bash
git clone https://github.com/louislam/uptime-kuma-wiki.git
cd uptime-kuma-wiki
git remote add production https://github.com/louislam/uptime-kuma.wiki.git
```
-
+
**Push to Production Wiki**
-
+
```bash
git pull
git push production master
```
-
+
-- Change the base of a pull request such as master
to 1.23.X
+
+- Change the base of a pull request such as master
to 1.23.X
(click to expand)
-
+
```bash
git rebase --onto
```
-
+
diff --git a/README.md b/README.md
index ebeca5259..34e34020f 100644
--- a/README.md
+++ b/README.md
@@ -43,11 +43,18 @@ It is a temporary live demo, all data will be deleted after 10 minutes. Sponsore
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1
```
-Uptime Kuma is now running on http://localhost:3001
+Uptime Kuma is now running on .
> [!WARNING]
> File Systems like **NFS** (Network File System) are **NOT** supported. Please map to a local directory or volume.
+> [!NOTE]
+> If you want to limit exposure to localhost (without exposing port for other users or to use a [reverse proxy](https://github.com/louislam/uptime-kuma/wiki/Reverse-Proxy)), you can expose the port like this:
+>
+> ```bash
+> docker run -d --restart=always -p 127.0.0.1:3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1
+> ```
+
### 💪🏻 Non-Docker
Requirements:
@@ -55,16 +62,14 @@ Requirements:
- Platform
- ✅ Major Linux distros such as Debian, Ubuntu, CentOS, Fedora and ArchLinux etc.
- ✅ Windows 10 (x64), Windows Server 2012 R2 (x64) or higher
+ - ❌ FreeBSD / OpenBSD / NetBSD
- ❌ Replit / Heroku
-- [Node.js](https://nodejs.org/en/download/) 14 / 16 / 18 / 20.4
+- [Node.js](https://nodejs.org/en/download/) 18 / 20.4
- [npm](https://docs.npmjs.com/cli/) 9
- [Git](https://git-scm.com/downloads)
- [pm2](https://pm2.keymetrics.io/) - For running Uptime Kuma in the background
```bash
-# Update your npm
-npm install npm@9 -g
-
git clone https://github.com/louislam/uptime-kuma.git
cd uptime-kuma
npm run setup
diff --git a/SECURITY.md b/SECURITY.md
index 72b4fc0f1..a7de9e997 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -2,29 +2,37 @@
## Reporting a Vulnerability
-1. Please report security issues to https://github.com/louislam/uptime-kuma/security/advisories/new.
-2. Please also create an empty security issue to alert me, as GitHub Advisories do not send a notification, I probably will miss it without this. https://github.com/louislam/uptime-kuma/issues/new?assignees=&labels=help&template=security.md
+1. Please report security issues to
+ .
+2. Please also create an empty security issue to alert me, as GitHub Advisories
+ do not send a notification, I probably will miss it without this.
+
-Do not use the public issue tracker or discuss it in public as it will cause more damage.
+Do not use the public issue tracker or discuss it in public as it will cause
+more damage.
## Do you accept other 3rd-party bug bounty platforms?
-At this moment, I DO NOT accept other bug bounty platforms, because I am not familiar with these platforms and someone has tried to send a phishing link to me by doing this already. To minimize my own risk, please report through GitHub Advisories only. I will ignore all 3rd-party bug bounty platforms emails.
+At this moment, I DO NOT accept other bug bounty platforms, because I am not
+familiar with these platforms and someone has tried to send a phishing link to
+me by doing this already. To minimize my own risk, please report through GitHub
+Advisories only. I will ignore all 3rd-party bug bounty platforms emails.
## Supported Versions
### Uptime Kuma Versions
-You should use or upgrade to the latest version of Uptime Kuma. All `1.X.X` versions are upgradable to the latest version.
+You should use or upgrade to the latest version of Uptime Kuma. All `1.X.X`
+versions are upgradable to the latest version.
### Upgradable Docker Tags
-| Tag | Supported |
-|-|-|
-| 1 | :white_check_mark: |
-| 1-debian | :white_check_mark: |
-| latest | :white_check_mark: |
-| debian | :white_check_mark: |
-| 1-alpine | ⚠️ Deprecated |
-| alpine | ⚠️ Deprecated |
-| All other tags | ❌ |
+| Tag | Supported |
+| -------------- | ------------------ |
+| 1 | :white_check_mark: |
+| 1-debian | :white_check_mark: |
+| latest | :white_check_mark: |
+| debian | :white_check_mark: |
+| 1-alpine | ⚠️ Deprecated |
+| alpine | ⚠️ Deprecated |
+| All other tags | ❌ |
diff --git a/config/cypress.config.js b/config/cypress.config.js
deleted file mode 100644
index 26784e882..000000000
--- a/config/cypress.config.js
+++ /dev/null
@@ -1,28 +0,0 @@
-const { defineConfig } = require("cypress");
-
-module.exports = defineConfig({
- projectId: "vyjuem",
- e2e: {
- experimentalStudio: true,
- setupNodeEvents(on, config) {
-
- },
- fixturesFolder: "test/cypress/fixtures",
- screenshotsFolder: "test/cypress/screenshots",
- videosFolder: "test/cypress/videos",
- downloadsFolder: "test/cypress/downloads",
- supportFile: "test/cypress/support/e2e.js",
- baseUrl: "http://localhost:3002",
- defaultCommandTimeout: 10000,
- pageLoadTimeout: 60000,
- viewportWidth: 1920,
- viewportHeight: 1080,
- specPattern: [
- "test/cypress/e2e/setup.cy.js",
- "test/cypress/e2e/**/*.js"
- ],
- },
- env: {
- baseUrl: "http://localhost:3002",
- },
-});
diff --git a/config/cypress.frontend.config.js b/config/cypress.frontend.config.js
deleted file mode 100644
index eecdcb8dd..000000000
--- a/config/cypress.frontend.config.js
+++ /dev/null
@@ -1,10 +0,0 @@
-const { defineConfig } = require("cypress");
-
-module.exports = defineConfig({
- e2e: {
- supportFile: false,
- specPattern: [
- "test/cypress/unit/**/*.js"
- ],
- }
-});
diff --git a/config/playwright.config.js b/config/playwright.config.js
index 94239d2dd..5c574eecc 100644
--- a/config/playwright.config.js
+++ b/config/playwright.config.js
@@ -1,11 +1,11 @@
import { defineConfig, devices } from "@playwright/test";
const port = 30001;
-const url = `http://localhost:${port}`;
+export const url = `http://localhost:${port}`;
export default defineConfig({
// Look for test files in the "tests" directory, relative to this configuration file.
- testDir: "../test/e2e",
+ testDir: "../test/e2e/specs",
outputDir: "../private/playwright-test-results",
fullyParallel: false,
locale: "en-US",
@@ -40,9 +40,15 @@ export default defineConfig({
// Configure projects for major browsers.
projects: [
{
- name: "chromium",
+ name: "run-once setup",
+ testMatch: /setup-process\.once\.js/,
use: { ...devices["Desktop Chrome"] },
},
+ {
+ name: "specs",
+ use: { ...devices["Desktop Chrome"] },
+ dependencies: [ "run-once setup" ],
+ },
/*
{
name: "firefox",
@@ -52,7 +58,7 @@ export default defineConfig({
// Run your local dev server before starting the tests.
webServer: {
- command: `node extra/remove-playwright-test-data.js && node server/server.js --port=${port} --data-dir=./data/playwright-test`,
+ command: `node extra/remove-playwright-test-data.js && cross-env NODE_ENV=development node server/server.js --port=${port} --data-dir=./data/playwright-test`,
url,
reuseExistingServer: false,
cwd: "../",
diff --git a/config/vite.config.js b/config/vite.config.js
index 7b30df945..7f2dfb6ff 100644
--- a/config/vite.config.js
+++ b/config/vite.config.js
@@ -16,9 +16,7 @@ export default defineConfig({
},
define: {
"FRONTEND_VERSION": JSON.stringify(process.env.npm_package_version),
- "DEVCONTAINER": JSON.stringify(process.env.DEVCONTAINER),
- "GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN": JSON.stringify(process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN),
- "CODESPACE_NAME": JSON.stringify(process.env.CODESPACE_NAME),
+ "process.env": {},
},
plugins: [
vue(),
diff --git a/db/knex_init_db.js b/db/knex_init_db.js
index 7ce1bb48e..46bff4bfa 100644
--- a/db/knex_init_db.js
+++ b/db/knex_init_db.js
@@ -318,7 +318,10 @@ async function createTables() {
// monitor_tls_info
await knex.schema.createTable("monitor_tls_info", (table) => {
table.increments("id");
- table.integer("monitor_id").unsigned().notNullable(); //TODO: no fk ?
+ table.integer("monitor_id").unsigned().notNullable()
+ .references("id").inTable("monitor")
+ .onDelete("CASCADE")
+ .onUpdate("CASCADE");
table.text("info_json");
});
diff --git a/db/knex_migrations/2023-12-20-0000-alter-status-page.js b/db/knex_migrations/2023-12-20-0000-alter-status-page.js
new file mode 100644
index 000000000..61ef5d607
--- /dev/null
+++ b/db/knex_migrations/2023-12-20-0000-alter-status-page.js
@@ -0,0 +1,12 @@
+exports.up = function (knex) {
+ return knex.schema
+ .alterTable("status_page", function (table) {
+ table.integer("auto_refresh_interval").defaultTo(300).unsigned();
+ });
+};
+
+exports.down = function (knex) {
+ return knex.schema.alterTable("status_page", function (table) {
+ table.dropColumn("auto_refresh_interval");
+ });
+};
diff --git a/db/knex_migrations/2024-01-22-0000-stats-extras.js b/db/knex_migrations/2024-01-22-0000-stats-extras.js
new file mode 100644
index 000000000..b92e8892a
--- /dev/null
+++ b/db/knex_migrations/2024-01-22-0000-stats-extras.js
@@ -0,0 +1,26 @@
+exports.up = function (knex) {
+ return knex.schema
+ .alterTable("stat_daily", function (table) {
+ table.text("extras").defaultTo(null).comment("Extra statistics during this time period");
+ })
+ .alterTable("stat_minutely", function (table) {
+ table.text("extras").defaultTo(null).comment("Extra statistics during this time period");
+ })
+ .alterTable("stat_hourly", function (table) {
+ table.text("extras").defaultTo(null).comment("Extra statistics during this time period");
+ });
+
+};
+
+exports.down = function (knex) {
+ return knex.schema
+ .alterTable("stat_daily", function (table) {
+ table.dropColumn("extras");
+ })
+ .alterTable("stat_minutely", function (table) {
+ table.dropColumn("extras");
+ })
+ .alterTable("stat_hourly", function (table) {
+ table.dropColumn("extras");
+ });
+};
diff --git a/db/knex_migrations/2024-04-26-0000-snmp-monitor.js b/db/knex_migrations/2024-04-26-0000-snmp-monitor.js
new file mode 100644
index 000000000..24752f2dd
--- /dev/null
+++ b/db/knex_migrations/2024-04-26-0000-snmp-monitor.js
@@ -0,0 +1,16 @@
+exports.up = function (knex) {
+ return knex.schema
+ .alterTable("monitor", function (table) {
+ table.string("snmp_oid").defaultTo(null);
+ table.enum("snmp_version", [ "1", "2c", "3" ]).defaultTo("2c");
+ table.string("json_path_operator").defaultTo(null);
+ });
+};
+
+exports.down = function (knex) {
+ return knex.schema.alterTable("monitor", function (table) {
+ table.dropColumn("snmp_oid");
+ table.dropColumn("snmp_version");
+ table.dropColumn("json_path_operator");
+ });
+};
diff --git a/db/knex_migrations/2024-08-24-000-add-cache-bust.js b/db/knex_migrations/2024-08-24-000-add-cache-bust.js
new file mode 100644
index 000000000..3644377c4
--- /dev/null
+++ b/db/knex_migrations/2024-08-24-000-add-cache-bust.js
@@ -0,0 +1,13 @@
+exports.up = function (knex) {
+ return knex.schema
+ .alterTable("monitor", function (table) {
+ table.boolean("cache_bust").notNullable().defaultTo(false);
+ });
+};
+
+exports.down = function (knex) {
+ return knex.schema
+ .alterTable("monitor", function (table) {
+ table.dropColumn("cache_bust");
+ });
+};
diff --git a/db/knex_migrations/2024-08-24-0000-conditions.js b/db/knex_migrations/2024-08-24-0000-conditions.js
new file mode 100644
index 000000000..96352fdc4
--- /dev/null
+++ b/db/knex_migrations/2024-08-24-0000-conditions.js
@@ -0,0 +1,12 @@
+exports.up = function (knex) {
+ return knex.schema
+ .alterTable("monitor", function (table) {
+ table.text("conditions").notNullable().defaultTo("[]");
+ });
+};
+
+exports.down = function (knex) {
+ return knex.schema.alterTable("monitor", function (table) {
+ table.dropColumn("conditions");
+ });
+};
diff --git a/db/knex_migrations/2024-10-1315-rabbitmq-monitor.js b/db/knex_migrations/2024-10-1315-rabbitmq-monitor.js
new file mode 100644
index 000000000..6a17f3366
--- /dev/null
+++ b/db/knex_migrations/2024-10-1315-rabbitmq-monitor.js
@@ -0,0 +1,17 @@
+exports.up = function (knex) {
+ return knex.schema.alterTable("monitor", function (table) {
+ table.text("rabbitmq_nodes");
+ table.string("rabbitmq_username");
+ table.string("rabbitmq_password");
+ });
+
+};
+
+exports.down = function (knex) {
+ return knex.schema.alterTable("monitor", function (table) {
+ table.dropColumn("rabbitmq_nodes");
+ table.dropColumn("rabbitmq_username");
+ table.dropColumn("rabbitmq_password");
+ });
+
+};
diff --git a/db/knex_migrations/2024-10-31-0000-fix-snmp-monitor.js b/db/knex_migrations/2024-10-31-0000-fix-snmp-monitor.js
new file mode 100644
index 000000000..0a605d38f
--- /dev/null
+++ b/db/knex_migrations/2024-10-31-0000-fix-snmp-monitor.js
@@ -0,0 +1,7 @@
+exports.up = function (knex) {
+ return knex("monitor").whereNull("json_path_operator").update("json_path_operator", "==");
+};
+exports.down = function (knex) {
+ // changing the json_path_operator back to null for all "==" is not possible anymore
+ // we have lost the context which fields have been set explicitely in >= v2.0 and which would need to be reverted
+};
diff --git a/db/knex_migrations/2024-11-27-1927-fix-info-json-data-type.js b/db/knex_migrations/2024-11-27-1927-fix-info-json-data-type.js
new file mode 100644
index 000000000..0f3f75e5b
--- /dev/null
+++ b/db/knex_migrations/2024-11-27-1927-fix-info-json-data-type.js
@@ -0,0 +1,13 @@
+// Update info_json column to LONGTEXT mainly for MariaDB
+exports.up = function (knex) {
+ return knex.schema
+ .alterTable("monitor_tls_info", function (table) {
+ table.text("info_json", "longtext").alter();
+ });
+};
+
+exports.down = function (knex) {
+ return knex.schema.alterTable("monitor_tls_info", function (table) {
+ table.text("info_json", "text").alter();
+ });
+};
diff --git a/db/knex_migrations/2025-03-25-0127-fix-5721.js b/db/knex_migrations/2025-03-25-0127-fix-5721.js
new file mode 100644
index 000000000..d94282b13
--- /dev/null
+++ b/db/knex_migrations/2025-03-25-0127-fix-5721.js
@@ -0,0 +1,13 @@
+// Fix #5721: Change proxy port column type to integer to support larger port numbers
+exports.up = function (knex) {
+ return knex.schema
+ .alterTable("proxy", function (table) {
+ table.integer("port").alter();
+ });
+};
+
+exports.down = function (knex) {
+ return knex.schema.alterTable("proxy", function (table) {
+ table.smallint("port").alter();
+ });
+};
diff --git a/db/knex_migrations/2025-05-09-0000-add-custom-url.js b/db/knex_migrations/2025-05-09-0000-add-custom-url.js
new file mode 100644
index 000000000..b3465c87f
--- /dev/null
+++ b/db/knex_migrations/2025-05-09-0000-add-custom-url.js
@@ -0,0 +1,13 @@
+// Add column custom_url to monitor_group table
+exports.up = function (knex) {
+ return knex.schema
+ .alterTable("monitor_group", function (table) {
+ table.text("custom_url", "text");
+ });
+};
+
+exports.down = function (knex) {
+ return knex.schema.alterTable("monitor_group", function (table) {
+ table.dropColumn("custom_url");
+ });
+};
diff --git a/db/old_migrations/patch-monitor-tls-info-add-fk.sql b/db/old_migrations/patch-monitor-tls-info-add-fk.sql
new file mode 100644
index 000000000..9b9c2d2cb
--- /dev/null
+++ b/db/old_migrations/patch-monitor-tls-info-add-fk.sql
@@ -0,0 +1,18 @@
+BEGIN TRANSACTION;
+
+PRAGMA writable_schema = TRUE;
+
+UPDATE
+ SQLITE_MASTER
+SET
+ sql = replace(sql,
+ 'monitor_id INTEGER NOT NULL',
+ 'monitor_id INTEGER NOT NULL REFERENCES [monitor] ([id]) ON DELETE CASCADE ON UPDATE CASCADE'
+)
+WHERE
+ name = 'monitor_tls_info'
+ AND type = 'table';
+
+PRAGMA writable_schema = RESET;
+
+COMMIT;
diff --git a/db/patch-monitor-tls-info-add-fk.sql b/db/patch-monitor-tls-info-add-fk.sql
new file mode 100644
index 000000000..9b9c2d2cb
--- /dev/null
+++ b/db/patch-monitor-tls-info-add-fk.sql
@@ -0,0 +1,18 @@
+BEGIN TRANSACTION;
+
+PRAGMA writable_schema = TRUE;
+
+UPDATE
+ SQLITE_MASTER
+SET
+ sql = replace(sql,
+ 'monitor_id INTEGER NOT NULL',
+ 'monitor_id INTEGER NOT NULL REFERENCES [monitor] ([id]) ON DELETE CASCADE ON UPDATE CASCADE'
+)
+WHERE
+ name = 'monitor_tls_info'
+ AND type = 'table';
+
+PRAGMA writable_schema = RESET;
+
+COMMIT;
diff --git a/docker/debian-base.dockerfile b/docker/debian-base.dockerfile
index 77b7d37fe..a17174371 100644
--- a/docker/debian-base.dockerfile
+++ b/docker/debian-base.dockerfile
@@ -1,9 +1,18 @@
+# Download Apprise deb package
+FROM node:20-bookworm-slim AS download-apprise
+WORKDIR /app
+COPY ./extra/download-apprise.mjs ./download-apprise.mjs
+RUN apt update && \
+ apt --yes --no-install-recommends install curl && \
+ npm install cheerio semver && \
+ node ./download-apprise.mjs
+
+# Base Image (Slim)
# If the image changed, the second stage image should be changed too
FROM node:20-bookworm-slim AS base2-slim
ARG TARGETPLATFORM
# Specify --no-install-recommends to skip unused dependencies, make the base much smaller!
-# apprise = for notifications (From testing repo)
# sqlite3 = for debugging
# iputils-ping = for ping
# util-linux = for setpriv (Should be dropped in 2.0.0?)
@@ -12,10 +21,10 @@ ARG TARGETPLATFORM
# ca-certificates = keep the cert up-to-date
# sudo = for start service nscd with non-root user
# nscd = for better DNS caching
-RUN echo "deb http://deb.debian.org/debian testing main" >> /etc/apt/sources.list && \
- apt update && \
- apt --yes --no-install-recommends -t testing install apprise sqlite3 ca-certificates && \
- apt --yes --no-install-recommends -t stable install \
+RUN apt update && \
+ apt --yes --no-install-recommends install \
+ sqlite3 \
+ ca-certificates \
iputils-ping \
util-linux \
dumb-init \
@@ -25,6 +34,16 @@ RUN echo "deb http://deb.debian.org/debian testing main" >> /etc/apt/sources.lis
rm -rf /var/lib/apt/lists/* && \
apt --yes autoremove
+# apprise = for notifications (Install from the deb package, as the stable one is too old) (workaround for #4867)
+# Switching to testing repo is no longer working, as the testing repo is not bookworm anymore.
+# python3-paho-mqtt (#4859)
+# TODO: no idea how to delete the deb file after installation as it becomes a layer already
+COPY --from=download-apprise /app/apprise.deb ./apprise.deb
+RUN apt update && \
+ apt --yes --no-install-recommends install ./apprise.deb python3-paho-mqtt && \
+ rm -rf /var/lib/apt/lists/* && \
+ rm -f apprise.deb && \
+ apt --yes autoremove
# Install cloudflared
RUN curl https://pkg.cloudflare.com/cloudflare-main.gpg --output /usr/share/keyrings/cloudflare-main.gpg && \
@@ -42,7 +61,9 @@ COPY ./docker/etc/sudoers /etc/sudoers
# Full Base Image
# MariaDB, Chromium and fonts
-FROM base2-slim AS base2
+# Make sure to reuse the slim image here. Uncomment the above line if you want to build it from scratch.
+# FROM base2-slim AS base2
+FROM louislam/uptime-kuma:base2-slim AS base2
ENV UPTIME_KUMA_ENABLE_EMBEDDED_MARIADB=1
RUN apt update && \
apt --yes --no-install-recommends install chromium fonts-indic fonts-noto fonts-noto-cjk mariadb-server && \
diff --git a/docker/dockerfile b/docker/dockerfile
index 572c732e0..d55f94f61 100644
--- a/docker/dockerfile
+++ b/docker/dockerfile
@@ -27,7 +27,6 @@ RUN mkdir ./data
# ⭐ Main Image
############################################
FROM $BASE_IMAGE AS release
-USER node
WORKDIR /app
LABEL org.opencontainers.image.source="https://github.com/louislam/uptime-kuma"
@@ -46,6 +45,7 @@ CMD ["node", "server/server.js"]
# Rootless Image
############################################
FROM release AS rootless
+USER node
############################################
# Mark as Nightly
diff --git a/extra/beta/update-version.js b/extra/beta/update-version.js
index d8e626d03..9ab00155b 100644
--- a/extra/beta/update-version.js
+++ b/extra/beta/update-version.js
@@ -5,7 +5,7 @@ const util = require("../../src/util");
util.polyfill();
-const version = process.env.VERSION;
+const version = process.env.RELEASE_BETA_VERSION;
console.log("Beta Version: " + version);
diff --git a/extra/check-knex-filenames.mjs b/extra/check-knex-filenames.mjs
new file mode 100644
index 000000000..4911fc562
--- /dev/null
+++ b/extra/check-knex-filenames.mjs
@@ -0,0 +1,72 @@
+import fs from "fs";
+const dir = "./db/knex_migrations";
+
+// Get the file list (ending with .js) from the directory
+const files = fs.readdirSync(dir).filter((file) => file !== "README.md");
+
+// They are wrong, but they had been merged, so allowed.
+const exceptionList = [
+ "2024-08-24-000-add-cache-bust.js",
+ "2024-10-1315-rabbitmq-monitor.js",
+];
+
+// Correct format: YYYY-MM-DD-HHmm-description.js
+
+for (const file of files) {
+ if (exceptionList.includes(file)) {
+ continue;
+ }
+
+ // Check ending with .js
+ if (!file.endsWith(".js")) {
+ console.error(`It should end with .js: ${file}`);
+ process.exit(1);
+ }
+
+ const parts = file.split("-");
+
+ // Should be at least 5 parts
+ if (parts.length < 5) {
+ console.error(`Invalid format: ${file}`);
+ process.exit(1);
+ }
+
+ // First part should be a year >= 2024
+ const year = parseInt(parts[0], 10);
+ if (isNaN(year) || year < 2023) {
+ console.error(`Invalid year: ${file}`);
+ process.exit(1);
+ }
+
+ // Second part should be a month
+ const month = parseInt(parts[1], 10);
+ if (isNaN(month) || month < 1 || month > 12) {
+ console.error(`Invalid month: ${file}`);
+ process.exit(1);
+ }
+
+ // Third part should be a day
+ const day = parseInt(parts[2], 10);
+ if (isNaN(day) || day < 1 || day > 31) {
+ console.error(`Invalid day: ${file}`);
+ process.exit(1);
+ }
+
+ // Fourth part should be HHmm
+ const time = parts[3];
+
+ // Check length is 4
+ if (time.length !== 4) {
+ console.error(`Invalid time: ${file}`);
+ process.exit(1);
+ }
+
+ const hour = parseInt(time.substring(0, 2), 10);
+ const minute = parseInt(time.substring(2), 10);
+ if (isNaN(hour) || hour < 0 || hour > 23 || isNaN(minute) || minute < 0 || minute > 59) {
+ console.error(`Invalid time: ${file}`);
+ process.exit(1);
+ }
+}
+
+console.log("All knex filenames are correct.");
diff --git a/extra/check-lang-json.js b/extra/check-lang-json.js
new file mode 100644
index 000000000..dfda34892
--- /dev/null
+++ b/extra/check-lang-json.js
@@ -0,0 +1,27 @@
+// For #5231
+
+const fs = require("fs");
+
+let path = "./src/lang";
+
+// list directories in the lang directory
+let jsonFileList = fs.readdirSync(path);
+
+for (let jsonFile of jsonFileList) {
+ if (!jsonFile.endsWith(".json")) {
+ continue;
+ }
+
+ let jsonPath = path + "/" + jsonFile;
+ let originalContent = fs.readFileSync(jsonPath, "utf8");
+ let langData = JSON.parse(originalContent);
+
+ let formattedContent = JSON.stringify(langData, null, 4) + "\n";
+
+ if (originalContent !== formattedContent) {
+ console.error(`File ${jsonFile} is not formatted correctly.`);
+ process.exit(1);
+ }
+}
+
+console.log("All lang json files are formatted correctly.");
diff --git a/extra/download-apprise.mjs b/extra/download-apprise.mjs
new file mode 100644
index 000000000..3d31f7cf4
--- /dev/null
+++ b/extra/download-apprise.mjs
@@ -0,0 +1,57 @@
+// Go to http://ftp.debian.org/debian/pool/main/a/apprise/ using fetch api, where it is a apache directory listing page
+// Use cheerio to parse the html and get the latest version of Apprise
+// call curl to download the latest version of Apprise
+// Target file: the latest version of Apprise, which the format is apprise_{VERSION}_all.deb
+
+import * as cheerio from "cheerio";
+import semver from "semver";
+import * as childProcess from "child_process";
+
+const baseURL = "http://ftp.debian.org/debian/pool/main/a/apprise/";
+const response = await fetch(baseURL);
+
+if (!response.ok) {
+ throw new Error("Failed to fetch page of Apprise Debian repository.");
+}
+
+const html = await response.text();
+
+const $ = cheerio.load(html);
+
+// Get all the links in the page
+const linkElements = $("a");
+
+// Filter the links which match apprise_{VERSION}_all.deb
+const links = [];
+const pattern = /apprise_(.*?)_all.deb/;
+
+for (let i = 0; i < linkElements.length; i++) {
+ const link = linkElements[i];
+ if (link.attribs.href.match(pattern) && !link.attribs.href.includes("~")) {
+ links.push({
+ filename: link.attribs.href,
+ version: link.attribs.href.match(pattern)[1],
+ });
+ }
+}
+
+console.log(links);
+
+// semver compare and download
+let latestLink = {
+ filename: "",
+ version: "0.0.0",
+};
+
+for (const link of links) {
+ if (semver.gt(link.version, latestLink.version)) {
+ latestLink = link;
+ }
+}
+
+const downloadURL = baseURL + latestLink.filename;
+console.log(`Downloading ${downloadURL}...`);
+let result = childProcess.spawnSync("curl", [ downloadURL, "--output", "apprise.deb" ]);
+console.log(result.stdout?.toString());
+console.error(result.stderr?.toString());
+process.exit(result.status !== null ? result.status : 1);
diff --git a/extra/download-dist.js b/extra/download-dist.js
index b8be5eb8a..b339ac930 100644
--- a/extra/download-dist.js
+++ b/extra/download-dist.js
@@ -4,7 +4,6 @@ const tar = require("tar");
const packageJSON = require("../package.json");
const fs = require("fs");
-const rmSync = require("./fs-rmSync.js");
const version = packageJSON.version;
const filename = "dist.tar.gz";
@@ -29,8 +28,9 @@ function download(url) {
if (fs.existsSync("./dist")) {
if (fs.existsSync("./dist-backup")) {
- rmSync("./dist-backup", {
- recursive: true
+ fs.rmSync("./dist-backup", {
+ recursive: true,
+ force: true,
});
}
@@ -43,8 +43,9 @@ function download(url) {
tarStream.on("close", () => {
if (fs.existsSync("./dist-backup")) {
- rmSync("./dist-backup", {
- recursive: true
+ fs.rmSync("./dist-backup", {
+ recursive: true,
+ force: true,
});
}
console.log("Done");
diff --git a/extra/env2arg.js b/extra/env2arg.js
deleted file mode 100644
index f89a91e43..000000000
--- a/extra/env2arg.js
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env node
-
-const childProcess = require("child_process");
-let env = process.env;
-
-let cmd = process.argv[2];
-let args = process.argv.slice(3);
-let replacedArgs = [];
-
-for (let arg of args) {
- for (let key in env) {
- arg = arg.replaceAll(`$${key}`, env[key]);
- }
- replacedArgs.push(arg);
-}
-
-let child = childProcess.spawn(cmd, replacedArgs);
-child.stdout.pipe(process.stdout);
-child.stderr.pipe(process.stderr);
diff --git a/extra/exe-builder/.gitignore b/extra/exe-builder/.gitignore
deleted file mode 100644
index d52874b6c..000000000
--- a/extra/exe-builder/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-packages/
diff --git a/extra/exe-builder/App.config b/extra/exe-builder/App.config
deleted file mode 100644
index 97eb34aff..000000000
--- a/extra/exe-builder/App.config
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/extra/exe-builder/DownloadForm.Designer.cs b/extra/exe-builder/DownloadForm.Designer.cs
deleted file mode 100644
index 26a474e9c..000000000
--- a/extra/exe-builder/DownloadForm.Designer.cs
+++ /dev/null
@@ -1,84 +0,0 @@
-using System.ComponentModel;
-
-namespace UptimeKuma {
- partial class DownloadForm {
- ///
- /// Required designer variable.
- ///
- private IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing) {
- if (disposing && (components != null)) {
- components.Dispose();
- }
-
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent() {
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DownloadForm));
- this.progressBar = new System.Windows.Forms.ProgressBar();
- this.label = new System.Windows.Forms.Label();
- this.labelData = new System.Windows.Forms.Label();
- this.SuspendLayout();
- //
- // progressBar
- //
- this.progressBar.Location = new System.Drawing.Point(12, 12);
- this.progressBar.Name = "progressBar";
- this.progressBar.Size = new System.Drawing.Size(472, 41);
- this.progressBar.TabIndex = 0;
- //
- // label
- //
- this.label.Location = new System.Drawing.Point(12, 59);
- this.label.Name = "label";
- this.label.Size = new System.Drawing.Size(472, 23);
- this.label.TabIndex = 1;
- this.label.Text = "Preparing...";
- //
- // labelData
- //
- this.labelData.Location = new System.Drawing.Point(12, 82);
- this.labelData.Name = "labelData";
- this.labelData.Size = new System.Drawing.Size(472, 23);
- this.labelData.TabIndex = 2;
- //
- // DownloadForm
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(496, 117);
- this.Controls.Add(this.labelData);
- this.Controls.Add(this.label);
- this.Controls.Add(this.progressBar);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
- this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
- this.MaximizeBox = false;
- this.Name = "DownloadForm";
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
- this.Text = "Uptime Kuma";
- this.Load += new System.EventHandler(this.DownloadForm_Load);
- this.ResumeLayout(false);
- }
-
- private System.Windows.Forms.Label labelData;
-
- private System.Windows.Forms.Label label;
-
- private System.Windows.Forms.ProgressBar progressBar;
-
- #endregion
- }
-}
-
diff --git a/extra/exe-builder/DownloadForm.cs b/extra/exe-builder/DownloadForm.cs
deleted file mode 100644
index 28a57c527..000000000
--- a/extra/exe-builder/DownloadForm.cs
+++ /dev/null
@@ -1,204 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Diagnostics;
-using System.IO;
-using System.IO.Compression;
-using System.Net;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-using Newtonsoft.Json;
-
-namespace UptimeKuma {
- public partial class DownloadForm : Form {
- private readonly Queue downloadQueue = new();
- private readonly WebClient webClient = new();
- private DownloadItem currentDownloadItem;
-
- public DownloadForm() {
- InitializeComponent();
- }
-
- private void DownloadForm_Load(object sender, EventArgs e) {
- webClient.DownloadProgressChanged += DownloadProgressChanged;
- webClient.DownloadFileCompleted += DownloadFileCompleted;
-
- label.Text = "Reading latest version...";
-
- // Read json from https://uptime.kuma.pet/version
- var versionJson = new WebClient().DownloadString("https://uptime.kuma.pet/version");
- var versionObj = JsonConvert.DeserializeObject(versionJson);
-
- var nodeVersion = versionObj.nodejs;
- var uptimeKumaVersion = versionObj.latest;
- var hasUpdateFile = File.Exists("update");
-
- if (!Directory.Exists("node")) {
- downloadQueue.Enqueue(new DownloadItem {
- URL = $"https://nodejs.org/dist/v{nodeVersion}/node-v{nodeVersion}-win-x64.zip",
- Filename = "node.zip",
- TargetFolder = "node"
- });
- }
-
- if (!Directory.Exists("core") || hasUpdateFile) {
-
- // It is update, rename the core folder to core.old
- if (Directory.Exists("core")) {
- // Remove the old core.old folder
- if (Directory.Exists("core.old")) {
- Directory.Delete("core.old", true);
- }
-
- Directory.Move("core", "core.old");
- }
-
- downloadQueue.Enqueue(new DownloadItem {
- URL = $"https://github.com/louislam/uptime-kuma/archive/refs/tags/{uptimeKumaVersion}.zip",
- Filename = "core.zip",
- TargetFolder = "core"
- });
-
- File.WriteAllText("version.json", versionJson);
-
- // Delete the update file
- if (hasUpdateFile) {
- File.Delete("update");
- }
- }
-
- DownloadNextFile();
- }
-
- void DownloadNextFile() {
- if (downloadQueue.Count > 0) {
- var item = downloadQueue.Dequeue();
-
- currentDownloadItem = item;
-
- // Download if the zip file is not existing
- if (!File.Exists(item.Filename)) {
- label.Text = item.URL;
- webClient.DownloadFileAsync(new Uri(item.URL), item.Filename);
- } else {
- progressBar.Value = 100;
- label.Text = "Use local " + item.Filename;
- DownloadFileCompleted(null, null);
- }
- } else {
- npmSetup();
- }
- }
-
- void npmSetup() {
- labelData.Text = "";
-
- var npm = "..\\node\\npm.cmd";
- var cmd = $"{npm} ci --production & {npm} run download-dist & exit";
-
- var startInfo = new ProcessStartInfo {
- FileName = "cmd.exe",
- Arguments = $"/k \"{cmd}\"",
- RedirectStandardOutput = false,
- RedirectStandardError = false,
- RedirectStandardInput = true,
- UseShellExecute = false,
- CreateNoWindow = false,
- WorkingDirectory = "core"
- };
-
- var process = new Process();
- process.StartInfo = startInfo;
- process.EnableRaisingEvents = true;
- process.Exited += (_, e) => {
- progressBar.Value = 100;
-
- if (process.ExitCode == 0) {
- Task.Delay(2000).ContinueWith(_ => {
- Application.Restart();
- });
- label.Text = "Done";
- } else {
- label.Text = "Failed, exit code: " + process.ExitCode;
- }
-
- };
- process.Start();
- label.Text = "Installing dependencies and download dist files";
- progressBar.Value = 50;
- process.WaitForExit();
- }
-
- void DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) {
- progressBar.Value = e.ProgressPercentage;
- var total = e.TotalBytesToReceive / 1024;
- var current = e.BytesReceived / 1024;
-
- if (total > 0) {
- labelData.Text = $"{current}KB/{total}KB";
- }
- }
-
- void DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) {
- Extract(currentDownloadItem);
- DownloadNextFile();
- }
-
- void Extract(DownloadItem item) {
- if (Directory.Exists(item.TargetFolder)) {
- var dir = new DirectoryInfo(item.TargetFolder);
- dir.Delete(true);
- }
-
- if (Directory.Exists("temp")) {
- var dir = new DirectoryInfo("temp");
- dir.Delete(true);
- }
-
- labelData.Text = $"Extracting {item.Filename}...";
-
- ZipFile.ExtractToDirectory(item.Filename, "temp");
-
- string[] dirList;
-
- // Move to the correct level
- dirList = Directory.GetDirectories("temp");
-
-
-
- if (dirList.Length > 0) {
- var dir = dirList[0];
-
- // As sometime ExtractToDirectory is still locking the directory, loop until ok
- while (true) {
- try {
- Directory.Move(dir, item.TargetFolder);
- break;
- } catch (Exception exception) {
- Thread.Sleep(1000);
- }
- }
-
- } else {
- MessageBox.Show("Unexcepted Error: Cannot move extracted files, folder not found.");
- }
-
- labelData.Text = $"Extracted";
-
- if (Directory.Exists("temp")) {
- var dir = new DirectoryInfo("temp");
- dir.Delete(true);
- }
-
- File.Delete(item.Filename);
- }
- }
-
- public class DownloadItem {
- public string URL { get; set; }
- public string Filename { get; set; }
- public string TargetFolder { get; set; }
- }
-}
-
diff --git a/extra/exe-builder/DownloadForm.resx b/extra/exe-builder/DownloadForm.resx
deleted file mode 100644
index e87e0c0d4..000000000
--- a/extra/exe-builder/DownloadForm.resx
+++ /dev/null
@@ -1,377 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
-
-
- AAABAAMAMDAAAAEAIACoJQAANgAAACAgAAABACAAqBAAAN4lAAAQEAAAAQAgAGgEAACGNgAAKAAAADAA
- AABgAAAAAQAgAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAA////BPT09Bfu7u4e8fHxJPPz8yv19fUy9fX1M/Pz8yvx8fEk9vb2HPPz8xXMzMwFAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
- /wHv7+8f7u7uPPPz81Tx8fFs8fHxgPHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGB8fHxcfHx8V3x8fFI9PT0MOvr6w0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AADy8vIU8fHxS/Dw8Hbx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fFr9PT0R/Dw8CIAAAABAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAA8vLyFPHx8Vnx8fGB8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fFs9fX1Mb+/vwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAICAgALy8vI88fHxfvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvLy8nby8vI8gICAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAzMzMBfHx8Vrx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8vLyYf///wwAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzMwF8vLyYPHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8W/z8/MWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADv7+9R8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLw8PB26urqDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPLy8ijx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgu7w7Ifj79ud2u7PtNLrw83P677dzeu85c3r
- u+rM67rwzOu68c7rverQ68Dj0uvD3NbuyM3b7c+64u7apujv5ZPx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxXgAAAAEAAAAAAAAAAAAAAAAAAAAA4+PjCfDw
- 8Hfx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLd7tSmzeu92MbqsvvG6bH/xumy/8fq
- s//H6rP/yOq0/8jqtf/J6rb/yeq2/8rrt//K67j/y+u4/8vruf/M67r/zOu7/83ru//Q7MDx1u7Kz9/t
- 163s8OuJ8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgu/v7y8AAAAAAAAAAAAA
- AAAAAAAA7u7uPfHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC5PDdl8jqtuTE6a7/xOmv/8Xp
- sP/G6bH/xumx/8bpsv/H6rP/x+qz/8jqtP/I6rX/yeq2/8nqtv/K67f/yuu4/8vruP/L67n/zOu6/8zr
- u//N67v/zey8/87svf/P67742e3Mx+jv5ZLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvDw
- 8HWAgIACAAAAAAAAAACqqqoD8vLyc/Hx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLf7degxOiu+cPo
- rf/D6a7/xOmu/8Xpr//F6bD/xumx/8bpsf/G6bL/x+qz/8fqs//I6rT/yOq1/8nqtv/J6rb/yuu3/8rr
- uP/L67j/y+u5/8zruv/M67v/zeu7/83svP/O7L3/zuy9/87svfzc7tK28fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fEkAAAAAAAAAADz8/Mq8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgunv
- 5o3D6a/0wuis/8Lorf/D6K3/xOmu/8Tprv/F6a//xemw/8bpsf/G6bH/xumy/8fqs//H6rP/yOq0/8jq
- tf/J6rb/yeq2/8rrt//K67j/y+u4/8vruf/M67r/zOu7/83ru//N7Lz/zuy9/87svf/O7L3/3e/TtPHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLy8vJNAAAAAAAAAADy8vJM8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgszqutDB6Kv/weir/8LorP/D6K3/w+it/8Tprv/E6a7/xemv/8XpsP/G6bH/xumx/8bp
- sv/H6rP/x+qz/8jqtP/I6rX/yeq2/8nqtv/K67f/yuu4/8vruP/L67n/zOu6/8zru//N67v/zey8/87s
- vf/O7L3/zuy++u3w6Yzx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLy8vJ1AAAAAAAAAADx8fFr8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC6O/kjsDoqvzA6Kr/weir/8Loq//C6Kz/w+it/8Porf/E6a7/xOmu/8Xp
- r//F6bD/xumx/8bpsf/G6bL/x+qz/8fqtP/I6rT/yOq1/8nqtv/J6rb/yuu3/8rruP/L67n/y+u5/8zr
- uv/M67v/zeu7/83svP/O7L3/zuy9/93u07Xx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC////Bv//
- /wfx8fGB8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC1ezJsr/nqf/A56n/weiq/8Hoq//C6Kv/wuis/8Po
- rf/D6K3/xOmu/8Pprv+856T/uOed/7bmmv+05Zf/teWZ/7jnnf+86KP/wOio/8fqs//J6rb/yeq2/8rr
- t//K67j/y+u5/8vruf/M67r/zOu7/83ru//N7Lz/zuy9/9buyNLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8vLyE/Ly8hPx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGCy+q6zr/nqP/A56n/wOep/8Ho
- qv/B6Kv/wuir/8LorP+u5Y//neF2/5bgav+V4Gr/luBr/5fhbP+Y4W7/meFv/5rhcf+b4nL/nOJ0/53i
- dv+j5H//reaM/7nnnf/E6q//y+y4/8vruf/L67n/zOu6/8zru//N67v/zey8/9Lsxd/x8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC7+/vIPb29hzx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGCx+m03L/n
- qP+/56j/wOep/8Dnqf/B6Kr/weir/7nmn/+R32T/kt9l/5PfZ/+U4Gj/leBq/5bga/+X4W3/mOFu/5nh
- b/+a4XH/m+Jy/5zidP+d4nX/nuN3/5/jeP+f4nn/weqq/8rruP/L67n/y+u5/8zruv/M67v/zeu7/9Ls
- w+Lx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8PDwI/Hx8SXx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGCxeix5L/nqP+/56j/v+eo/8Dnqf/A56n/weiq/7Pllv+Q3mP/kd9k/5LfZf+T32f/lOBo/5Xg
- av+W4Gv/l+Ft/5jhbv+Z4W//muFx/5vicv+c4nT/neJ1/57jd/+f43j/xOmu/8rrt//K67j/y+u5/8vr
- uf/M67r/zOu7/9Tsxtfx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC9PT0GO/v7yDx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGCx+m037/nqP+/56j/v+eo/7/nqP/A56n/wOip/7TmmP+P3mH/kN5j/5Hf
- ZP+S32b/k99n/5TgaP+V4Gr/luBr/5fhbf+Y4W7/meFw/5rhcf+b4nL/nOJ0/53idf+h5Hz/yuu2/8nq
- t//K67f/yuu4/8vruf/L67n/zOu6/9ftysrx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC7e3tDvT0
- 9Bfx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGCyOq117/nqP+/56j/v+eo/7/nqP+/56j/wOep/7vn
- of+O3mD/j95h/5DeY/+R32T/kt9m/5PfZ/+U4Gj/leBq/5bga/+X4W3/mOFu/5nhcP+a4nH/m+Jy/5zi
- dP+r5Yr/yOq1/8nqtv/J6rf/yuu3/8rruP/L67n/y+u5/9zu1LHx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLz8/OA////A+7u7g/x8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGCz+q+xb/nqP+/56j/v+eo/7/n
- qP+/56j/v+eo/8Dnqf+S4Gb/jt5g/4/eYf+Q3mP/kd9k/5LfZv+T32f/lOBo/5Xgav+W4Gv/l+Ft/5jh
- bv+Z4XD/muJx/5vic/+4553/yOq0/8jqtf/J6rb/yeq3/8rrt//K67j/y+u5/+bw4Zfx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fFrAAAAAP///wHz8/N88fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC1+zMrr/n
- qP+/56j/v+eo/7/nqP+/56j/v+eo/7/nqP+f4Xn/jd5f/47eYP+P3mH/kN5j/5HfZP+S32b/k99n/5Tg
- af+V4Gr/luBr/5fhbf+Y4W7/meFw/5vic//F6rD/x+q0/8jqtP/I6rX/yeq2/8nqt//K67f/zOu88u/x
- 74Px8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLv7+9QAAAAAAAAAADw8PBm8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC5e7gk7/nqP+/56j/v+eo/7/nqP+/56j/v+eo/7/nqP+u5I//jN1d/43eX/+O3mD/j95h/5De
- Y/+R32T/kt9m/5PfZ/+U4Gn/leBq/5bga/+X4W3/mOFu/6rliP/G6rL/x+qz/8fqtP/I6rT/yOq1/8nq
- tv/J6rf/1OzGy/Hx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YL19fUzAAAAAAAAAADy8vJO8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgsPoru2/56j/v+eo/7/nqP+/56j/v+eo/7/nqP++6Kf/j95i/4zd
- Xf+N3l//jt5g/4/eYv+Q3mP/kd9k/5LfZv+T32f/lOBp/5Xgav+W4Gz/l+Ft/7voov/G6bL/xuqy/8fq
- s//H6rT/yOq1/8jqtf/J6rb/4e/Zo/Hx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLw8PARAAAAAAAA
- AADu7u4u8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgszpvMm/56j/v+eo/7/nqP+/56j/v+eo/7/n
- qP+/56j/q+SL/4vdXP+M3V3/jd5f/47eYP+P3mL/kN9j/5HfZP+S32b/k99n/5Tgaf+V4Gr/qOOH/8Xp
- sP/G6bH/xumy/8bqsv/H6rP/x+q0/8jqtf/K67jy8PHwhPHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8WoAAAAAAAAAAAAAAADo6OgL8fHxgfHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxguDv2J2/56j/v+eo/7/n
- qP+/56j/v+eo/7/nqP+/56j/v+eo/6Xjgv+L3Vz/jN1d/43eX/+O3mD/j95i/5DfY/+R32T/kt9m/5Pf
- Z/+k44D/xOmu/8XpsP/F6bD/xumx/8bpsv/G6rL/x+qz/8fqtP/W7cnB8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvPz80AAAAAAAAAAAAAAAAAAAAAA8PDwZ/Hx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLD6K/rv+eo/7/nqP+/56j/v+eo/7/nqP+/56j/v+eo/7/nqP+u5I//kt5n/4zdXf+N3l//jt5g/4/e
- Yv+Q32P/luFs/67kj//D6K3/xOmu/8Tpr//F6bD/xemw/8bpsf/G6bL/xuqy/8fqtP7o7+WR8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvPz8xYAAAAAAAAAAAAAAAAAAAAA8vLyPPHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLV7ci0v+eo/7/nqP+/56j/v+eo/7/nqP+/56j/v+eo/7/nqP+/56j/wOio/7Xl
- mv+u5I7/rOSM/67kj/+35pz/wumr/8Lorf/D6K3/w+it/8Tprv/E6a//xemw/8XpsP/G6bH/xumy/9Ds
- wNPx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8vLyZQAAAAAAAAAAAAAAAAAAAAAAAAAA////DPHx
- 8YDx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGCx+m03L/nqP+/56j/v+eo/7/nqP+/56j/v+eo/7/n
- qP+/56j/v+eo/7/nqP+/56j/wOep/8Doqv/B6Kr/weir/8LorP/C6K3/w+it/8Porv/E6a7/xOmv/8Xp
- sP/F6bD/yOq18uvw6Yvx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC7+/vMQAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAPHx8Vzx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC6O/ij8LorPG/56j/v+eo/7/n
- qP+/56j/v+eo/7/nqP+/56j/v+eo/7/nqP+/56j/v+eo/8Dnqf/A6Kr/weiq/8Hoq//C6Kz/wuit/8Po
- rf/D6K7/xOmu/8Tpr//F6bH74u/anvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLw8PB6////BQAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPPz8yrx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxguHu
- 2pnB56v2v+eo/7/nqP+/56j/v+eo/7/nqP+/56j/v+eo/7/nqP+/56j/v+eo/7/nqP/A56n/wOiq/8Ho
- q//B6Kv/wuis/8Lorf/D6K3/w+mu/8Tprv3b7dKq8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fFJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHy8vJf8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLi7tyXwumt8L/nqP+/56j/v+eo/7/nqP+/56j/v+eo/7/nqP+/56j/v+eo/7/n
- qP+/56j/wOep/8Doqv/B6Kv/weir/8LorP/C6K3/xOiv+d7u1aTx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvLy8nb///8KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADv7+8Q8/Pze/Hx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC6/Dpiszqu82/56j/v+eo/7/nqP+/56j/v+eo/7/n
- qP+/56j/v+eo/7/nqP+/56j/v+eo/8Dnqf/A6Kr/weir/8Hoq//H6bTj5e7elfHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvPz8yoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAA9fX1MvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLe7tShx+mz3r/n
- qP+/56j/v+eo/7/nqP+/56j/v+eo/7/nqP+/56j/v+eo/7/nqP/A56n/xumy5drtz6rv8e+D8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8vLyTgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPHx8Unx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgubv45DU68e2y+q6z8XoseTD6a7uweir9MPpru7F6bHly+q50tLsxLrl796U8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLy8vJh////AwAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wHx8fFZ8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8Wzf398IAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8D8/PzVfHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8PDwZujo
- 6AsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAA////AfHx8Ujx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fFa////BQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADz8/Mp8vLydvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8/PzfPHx8TcAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////CvLy8lDz8/N/8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvPz84Hx8fFa8PDwEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AADw8PAR8vLyTvHx8X3x8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fF/8/PzVvT09BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wXz8/Mq8/PzU/Hx8XDx8fGB8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLy8vJz8fHxWO/v7y////8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8G7e3tHfLy
- 8ifu7u4u8PDwNPT09C/y8vIo7+/vH+Pj4wkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAP///////wAA////////AAD///////8AAP//gAf//wAA//gAAD//AAD/wAAAB/8AAP+A
- AAAB/wAA/gAAAAB/AAD8AAAAAD8AAPgAAAAAHwAA8AAAAAAPAADwAAAAAAcAAOAAAAAABwAA4AAAAAAD
- AADAAAAAAAMAAMAAAAAAAwAAwAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAA
- AAAAAQAAgAAAAAABAACAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAABwAAwAAAAAAH
- AADgAAAAAAcAAOAAAAAADwAA4AAAAAAPAADwAAAAAB8AAPAAAAAAHwAA+AAAAAA/AAD8AAAAAD8AAPwA
- AAAAfwAA/gAAAAD/AAD/AAAAAf8AAP+AAAAD/wAA/8AAAAf/AAD/8AAAH/8AAP/8AAA//wAA//8AAf//
- AAD//+AP//8AAP///////wAA////////AAD///////8AACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAgICAAu/v7xD09PQX7u7uHvDw8CP29vYb8vLyFOrq6gwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICA
- gALy8vIm7+/vT/Pz82fz8/N98fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvDw8Hrw8PBm7+/vUPT0
- 9C3o6OgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj
- 4wnz8/NC8vLydPHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YHy8vJj8/PzKoCAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AADx8fEl8vLydfHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxcfHx8SUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAA9PT0LfHx8YDx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8/PzgPLy8j0AAAABAAAAAAAA
- AAAAAAAAAAAAAO3t7Rzx8fGA8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLr8OmM5O7emeTv
- 3Z7h79mj5fDem+nv45Tu8u6H8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvLy
- 8joAAAAAAAAAAAAAAAD///8E8fHxbvHx8YLx8fGC8fHxgvHx8YLx8fGC7vDshtns0K7N67zayeq288fq
- s//I6rT/yOq1/8nqtv/K67f/y+u4/8vruf/P7L7w0+zF29vv0Lrn8OKX8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8/PzfvPz8xUAAAAAAAAAAPX19TLx8fGC8fHxgvHx8YLx8fGC8fHxgt3u1KXF6rHzxOmv/8Xp
- sP/G6bH/xumy/8fqs//I6rT/yOq1/8nqtv/K67f/y+u4/8vruf/M67v/zey8/87svf/S7MPj4u7Zp/Hx
- 8YLx8fGC8fHxgvHx8YLx8fGC8/PzVQAAAAAAAAAA8fHxavHx8YLx8fGC8fHxgvHx8YLf7defwuis/cPo
- rf/E6a7/xOmv/8XpsP/G6bH/xumy/8fqs//I6rT/yOq1/8nqtv/K67f/y+u4/8vruv/M67v/zey8/87s
- vf/N67z/3e7SufHx8YLx8fGC8fHxgvHx8YLz8/N8////Bf///w3x8fGC8fHxgvHx8YLx8fGC8fHxgsXp
- sOnB6Kv/wuis/8Porf/E6a7/xOmv/8XpsP/G6bH/xumy/8fqs//I6rT/yOq1/8nqtv/K67f/y+u4/8vr
- uv/M67v/zey8/87svf/O67z96/Hoj/Hx8YLx8fGC8fHxgvHx8YLy8vIm8/PzK/Hx8YLx8fGC8fHxgvHx
- 8YLg79icwOep/8Hoqv/B6Kv/wuis/8Porf/E6a7/wuit/73opP+76KL/u+eh/77opv/D6a3/yeu1/8nq
- tv/K67f/y+u5/8zruv/M67v/zey8/87svf/d7tSz8fHxgvHx8YLx8fGC8fHxgvHx8Tby8vI68fHxgvHx
- 8YLx8fGC8fHxgtTrxre/56j/wOep/8Hoqv/B6Kv/uOad/53idv+V4Gn/leBq/5fhbP+Y4W//muFx/5vi
- c/+e4Xb/puWD/7PmlP/D6a3/y+u5/8zruv/M67v/zey8/9rtzsHx8fGC8fHxgvHx8YLx8fGC8/PzQfPz
- 80Lx8fGC8fHxgvHx8YLx8fGC0OvAwr/nqP+/56j/wOep/8Hoqv+o44b/kd9k/5LfZv+U4Gj/leBq/5fh
- bf+Y4W//muFx/5vic/+d4nX/n+N3/7fnm//K67j/y+u5/8zruv/M67v/2u3QvPHx8YLx8fGC8fHxgvHx
- 8YLy8vI98/PzP/Hx8YLx8fGC8fHxgvHx8YLQ6sK/v+eo/7/nqP+/56j/wOep/6jjhv+P3mL/kd9k/5Lf
- Zv+U4Gj/leBr/5fhbf+Y4W//muFx/5zic/+d4nX/v+mm/8nqt//K67j/y+u5/8zruv/f79au8fHxgvHx
- 8YLx8fGC8fHxgvX19TLx8fE38fHxgvHx8YLx8fGC8fHxgtTrybO/56j/v+eo/7/nqP+/56j/sOSS/47e
- YP+P3mL/kd9k/5LfZv+U4Gj/leBr/5fhbf+Z4W//muJx/5/jd//H6bP/yeq2/8nqt//K67j/y+u5/+nv
- 45Tx8fGC8fHxgvHx8YLx8fGC7+/vIPHx8SXx8fGC8fHxgvHx8YLx8fGC4e/Zm7/nqP+/56j/v+eo/7/n
- qP+956X/jt5h/47eYP+P3mL/kd9k/5LfZv+U4Gn/luBr/5fhbf+Z4W//q+aK/8fqs//I6rT/yeq2/8nq
- t//N7Lvw8fHxgvHx8YLx8fGC8fHxgvPz84D///8G6+vrDfHx8YLx8fGC8fHxgvHx8YLv8e+Dweis87/n
- qP+/56j/v+eo/7/nqP+d4XX/jN1e/47eYP+P3mL/kd9k/5PfZ/+U4Gn/luBr/5fhbf+86KP/xuqy/8fq
- s//I6rX/yeq2/9Tsx8nx8fGC8fHxgvHx8YLx8fGC8PDwaAAAAAAAAAAA8fHxbPHx8YLx8fGC8fHxgvHx
- 8YLM6rrMv+eo/7/nqP+/56j/v+eo/7blmv+N3V//jN1e/47eYP+Q3mL/kd9k/5PfZ/+U4Gn/qeSH/8Xp
- sP/G6bH/xuqy/8fqs//I6rX/5fDem/Hx8YLx8fGC8fHxgvHx8YLz8/M/AAAAAAAAAADz8/NB8fHxgvHx
- 8YLx8fGC8fHxgt3s06O/56j/v+eo/7/nqP+/56j/v+eo/7Xmmf+U32n/jN1e/47eYP+Q3mL/k99o/6zk
- i//D6a7/xemv/8XpsP/G6bH/xuqy/8vqu+jx8fGC8fHxgvHx8YLx8fGC8fHxgvPz8xUAAAAAAAAAAPT0
- 9Bfx8fGC8fHxgvHx8YLx8fGC8fHvg8Tpsee/56j/v+eo/7/nqP+/56j/v+eo/7/nqP+35pz/suWV/7Xm
- mf/A6Kj/wuit/8Porf/E6a7/xemv/8XpsP/G6bH/3e3UqvHx8YLx8fGC8fHxgvHx8YLw8PBmAAAAAAAA
- AAAAAAAAAAAAAPHx8W7x8fGC8fHxgvHx8YLx8fGC4u7cmMHnqvm/56j/v+eo/7/nqP+/56j/v+eo/7/n
- qP+/56j/wOep/8Hoqv/C6Kz/wuit/8Porf/E6a7/xemv/9Hrwszx8fGC8fHxgvHx8YLx8fGC8fHxgvX1
- 9TEAAAAAAAAAAAAAAAAAAAAA7u7uO/Hx8YLx8fGC8fHxgvHx8YLx8fGC3e7SpMHoqfq/56j/v+eo/7/n
- qP+/56j/v+eo/7/nqP+/56j/wOip/8Hoq//C6Kz/wuit/8Porf/O67zV8PHwhPHx8YLx8fGC8fHxgvHx
- 8YLy8vJ2////BQAAAAAAAAAAAAAAAAAAAACqqqoD8PDwafHx8YLx8fGC8fHxgvHx8YLx8fGC4O/YnMTo
- ruy/56j/v+eo/7/nqP+/56j/v+eo/7/nqP+/56j/wOip/8Hoq//C6Kz90uvEwe/x74Px8fGC8fHxgvHx
- 8YLx8fGC8fHxgvPz8ykAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADz8/MW8fHxfPHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8PLuhdXtyLXF6bHlv+eo/7/nqP+/56j/v+eo/7/nqP/B6Kv0zeq8zOXv4JTx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLy8vJNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADy8vIm8fHxgPHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLs8OmJ4e/Zm93u06Pf7def5+/hkvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxXf///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AADy8vIo8/PzffHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8VnMzMwFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAD29vYb8fHxbvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvPz83/v7+9BgICAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzMwF8/PzQPLy8nnx8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgvPz84Hx8fFc9PT0GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////B/X19TLx8fFc8PDwevHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8fHxgPHx8Wv09PRE9PT0FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAA7+/vEPb29hvw8PAj7+/vH/T09Be/v78EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////8B///wAA//wAAD/wAAAP4AAAB+AA
- AAfAAAADwAAAA4AAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAADwAAAA8AAAAPAAAAH4AAAB+AA
- AA/wAAAP+AAAH/gAAD/+AAB//wAB///AA///+B////////////8oAAAAEAAAACAAAAABACAAAAAAAAAE
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////CfDw8BH///8GAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAAu7u7i7x8fFe8PDwevHx8YLx8fGC8fHxgvDw
- 8Hvx8fFs7+/vT/Dw8CMAAAABAAAAAAAAAAAAAAAA5ubmCvLy8l/x8fGC8fHxgvHx8YLx8fGC8fHxgvHx
- 8YLx8fGC8fHxgvHx8YLx8fGC8/PzZu7u7g8AAAAAAAAAAPHx8V3x8fGC8fHxgunv5o7Z7c200+vFytTs
- xc7W7cnH2+7QueLu2qbu8OyH8fHxgvHx8YLx8fFu////BfHx8STx8fGC8fHxgtrtzq3D6a/8xemw/8bp
- sv/I6rT/yeq2/8vruP/M67v/z+u++Nzu0bjx8fGC8fHxgu/v7zDx8fFI8fHxguzw6ojC56z3wuis/8Tp
- rv/E6q3/weiq/8fqsv/J6rb/y+u5/8zru//N67z/6/HpjfHx8YLy8vJN8fHxXPHx8YLg79icv+eo/8Ho
- qv+k4n//lOBo/5fhbf+a4XH/n+J5/7Pmlv/L67n/zOu7/+Xw353x8fGC8fHxXvHx8Vrx8fGC4O3Zm7/n
- qP+/56j/nuF3/5HfZP+U4Gj/l+Ft/5ricf+x5pL/yeq3/8vruf/r8emN8fHxgu/v70/x8fFK8fHxguzw
- 6ojA6Kn8v+eo/6njiP+O3mD/kd9k/5Tgaf+X4W3/vuim/8jqtP/N67zr8fHxgvHx8YLy8vI68/PzK/Hx
- 8YLx8fGCx+m03L/nqP++6Kb/meBw/47eYP+S32X/q+SL/8XpsP/G6rL/1+zLvvHx8YLz8/OB8PDwEdXV
- 1Qbx8fF98fHxgt/t1Z/A56j9v+eo/7/nqP+656H/vuim/8Lorf/E6a7/yOq18Ovw6Yvx8fGC8vLyYwAA
- AAAAAAAA8fHxR/Hx8YLx8fGC2O3NrMDnqfq/56j/v+eo/7/nqP/B6Kv/xumy7OTu3Zfx8fGC8/PzgfLy
- 8icAAAAAAAAAAP///wPz8/Nm8fHxgvHx8YLo7+SO0+zFuczquszM6bzJ1+zMru7w7Ibx8fGC8fHxgvHx
- 8UcAAAAAAAAAAAAAAAAAAAAA4+PjCfHx8Vzx8fGC8fHxgvHx8YLx8fGC8fHxgvHx8YLx8fGC8fHxgfPz
- 80D///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8/PzK/Ly8mDz8/N+8fHxgvHx8YLy8vJ68vLyUezs
- 7BsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAevr6w3j4+MJAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD8fwAA4AcAAMADAACAAQAAgAEAAIABAACAAQAAgAEAAIAB
- AADAAwAAwAMAAOAHAADwDwAA/n8AAP//AAA=
-
-
-
\ No newline at end of file
diff --git a/extra/exe-builder/FodyWeavers.xml b/extra/exe-builder/FodyWeavers.xml
deleted file mode 100644
index 0b37e4ef4..000000000
--- a/extra/exe-builder/FodyWeavers.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/extra/exe-builder/FodyWeavers.xsd b/extra/exe-builder/FodyWeavers.xsd
deleted file mode 100644
index ff119f713..000000000
--- a/extra/exe-builder/FodyWeavers.xsd
+++ /dev/null
@@ -1,141 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks
-
-
-
-
- A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.
-
-
-
-
- A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks
-
-
-
-
- A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.
-
-
-
-
- A list of unmanaged 32 bit assembly names to include, delimited with line breaks.
-
-
-
-
- A list of unmanaged 64 bit assembly names to include, delimited with line breaks.
-
-
-
-
- The order of preloaded assemblies, delimited with line breaks.
-
-
-
-
-
- This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file.
-
-
-
-
- Controls if .pdbs for reference assemblies are also embedded.
-
-
-
-
- Controls if runtime assemblies are also embedded.
-
-
-
-
- Controls whether the runtime assemblies are embedded with their full path or only with their assembly name.
-
-
-
-
- Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option.
-
-
-
-
- As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off.
-
-
-
-
- Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code.
-
-
-
-
- Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior.
-
-
-
-
- A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with |
-
-
-
-
- A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |.
-
-
-
-
- A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with |
-
-
-
-
- A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with |.
-
-
-
-
- A list of unmanaged 32 bit assembly names to include, delimited with |.
-
-
-
-
- A list of unmanaged 64 bit assembly names to include, delimited with |.
-
-
-
-
- The order of preloaded assemblies, delimited with |.
-
-
-
-
-
-
-
- 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
-
-
-
-
- A comma-separated list of error codes that can be safely ignored in assembly verification.
-
-
-
-
- 'false' to turn off automatic generation of the XML Schema file.
-
-
-
-
-
\ No newline at end of file
diff --git a/extra/exe-builder/Program.cs b/extra/exe-builder/Program.cs
deleted file mode 100644
index d9db4d001..000000000
--- a/extra/exe-builder/Program.cs
+++ /dev/null
@@ -1,262 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Drawing;
-using System.IO;
-using System.Linq;
-using System.Net;
-using System.Net.Sockets;
-using System.Reflection;
-using System.Runtime.InteropServices;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-using Microsoft.Win32;
-using Newtonsoft.Json;
-using UptimeKuma.Properties;
-
-namespace UptimeKuma {
- static class Program {
- ///
- /// The main entry point for the application.
- ///
- [STAThread]
- static void Main(string[] args) {
- var cwd = Path.GetDirectoryName(Application.ExecutablePath);
-
- if (cwd != null) {
- Environment.CurrentDirectory = cwd;
- }
-
- bool isIntranet = args.Contains("--intranet");
-
- if (isIntranet) {
- Console.WriteLine("The --intranet argument was provided, so we will not try to access the internet. The first time this application runs you'll need to run it without the --intranet param or copy the result from another machine to the intranet server.");
- }
-
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- Application.Run(new UptimeKumaApplicationContext(isIntranet));
- }
- }
-
- public class UptimeKumaApplicationContext : ApplicationContext
- {
- private static Mutex mutex = null;
-
- const string appName = "Uptime Kuma";
-
- private NotifyIcon trayIcon;
- private Process process;
-
- private MenuItem statusMenuItem;
- private MenuItem runWhenStarts;
- private MenuItem openMenuItem;
-
- private RegistryKey registryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
-
- private readonly bool intranetOnly;
-
- public UptimeKumaApplicationContext(bool intranetOnly) {
-
- // Single instance only
- bool createdNew;
- mutex = new Mutex(true, appName, out createdNew);
- if (!createdNew) {
- return;
- }
-
- this.intranetOnly = intranetOnly;
-
- var startingText = "Starting server...";
- trayIcon = new NotifyIcon();
- trayIcon.Text = startingText;
-
- runWhenStarts = new MenuItem("Run when system starts", RunWhenStarts);
- runWhenStarts.Checked = registryKey.GetValue(appName) != null;
-
- statusMenuItem = new MenuItem(startingText);
- statusMenuItem.Enabled = false;
-
- openMenuItem = new MenuItem("Open", Open);
- openMenuItem.Enabled = false;
-
- trayIcon.Icon = Icon.ExtractAssociatedIcon(Assembly.GetExecutingAssembly().Location);
- trayIcon.ContextMenu = new ContextMenu(new MenuItem[] {
- statusMenuItem,
- openMenuItem,
- //new("Debug Console", DebugConsole),
- runWhenStarts,
- new("Check for Update...", CheckForUpdate),
- new("Visit GitHub...", VisitGitHub),
- new("About", About),
- new("Exit", Exit),
- });
-
- trayIcon.MouseDoubleClick += new MouseEventHandler(Open);
- trayIcon.Visible = true;
-
- var hasUpdateFile = File.Exists("update");
-
- if (!hasUpdateFile && Directory.Exists("core") && Directory.Exists("node") && Directory.Exists("core/node_modules") && Directory.Exists("core/dist")) {
- // Go go go
- StartProcess();
- } else {
- DownloadFiles();
- }
- }
-
- void DownloadFiles() {
- if (intranetOnly) {
- return;
- }
-
- var form = new DownloadForm();
- form.Closed += Exit;
- form.Show();
- }
-
- private void RunWhenStarts(object sender, EventArgs e) {
- if (registryKey == null) {
- MessageBox.Show("Error: Unable to set startup registry key.");
- return;
- }
-
- if (runWhenStarts.Checked) {
- registryKey.DeleteValue(appName, false);
- runWhenStarts.Checked = false;
- } else {
- registryKey.SetValue(appName, Application.ExecutablePath);
- runWhenStarts.Checked = true;
- }
- }
-
- void StartProcess() {
- var startInfo = new ProcessStartInfo {
- FileName = "node/node.exe",
- Arguments = "server/server.js --data-dir=\"../data/\"",
- RedirectStandardOutput = false,
- RedirectStandardError = false,
- UseShellExecute = false,
- CreateNoWindow = true,
- WorkingDirectory = "core"
- };
-
- process = new Process();
- process.StartInfo = startInfo;
- process.EnableRaisingEvents = true;
- process.Exited += ProcessExited;
-
- try {
- process.Start();
- //Open(null, null);
-
- // Async task to check if the server is ready
- Task.Run(() => {
- var runningText = "Server is running";
- using TcpClient tcpClient = new TcpClient();
- while (true) {
- try {
- tcpClient.Connect("127.0.0.1", 3001);
- statusMenuItem.Text = runningText;
- openMenuItem.Enabled = true;
- trayIcon.Text = runningText;
- break;
- } catch (Exception) {
- System.Threading.Thread.Sleep(2000);
- }
- }
- });
-
- } catch (Exception e) {
- MessageBox.Show("Startup failed: " + e.Message, "Uptime Kuma Error");
- }
- }
-
- void StopProcess() {
- process?.Kill();
- }
-
- void Open(object sender, EventArgs e) {
- Process.Start("http://localhost:3001");
- }
-
- void DebugConsole(object sender, EventArgs e) {
-
- }
-
- void CheckForUpdate(object sender, EventArgs e) {
- if (intranetOnly) {
- return;
- }
-
- // Check version.json exists
- if (File.Exists("version.json")) {
- // Load version.json and compare with the latest version from GitHub
- var currentVersionObj = JsonConvert.DeserializeObject(File.ReadAllText("version.json"));
-
- var versionJson = new WebClient().DownloadString("https://uptime.kuma.pet/version");
- var latestVersionObj = JsonConvert.DeserializeObject(versionJson);
-
- // Compare version, if the latest version is newer, then update
- if (new System.Version(latestVersionObj.latest).CompareTo(new System.Version(currentVersionObj.latest)) > 0) {
- var result = MessageBox.Show("A new version is available. Do you want to update?", "Update", MessageBoxButtons.YesNo);
- if (result == DialogResult.Yes) {
- // Create a empty file `update`, so the app will download the core files again at startup
- File.Create("update").Close();
-
- trayIcon.Visible = false;
- process?.Kill();
-
- // Restart the app, it will download the core files again at startup
- Application.Restart();
- }
- } else {
- MessageBox.Show("You are using the latest version.");
- }
- }
-
-
- }
-
- void VisitGitHub(object sender, EventArgs e) {
- if (intranetOnly) {
- MessageBox.Show("You have parsed in --intranet so we will not try to access the internet or visit github.com, please go to https://github.com/louislam/uptime-kuma if you want to visit github.");
- return;
- }
-
- Process.Start("https://github.com/louislam/uptime-kuma");
- }
-
- void About(object sender, EventArgs e)
- {
- MessageBox.Show("Uptime Kuma Windows Runtime v1.0.0" + Environment.NewLine + "© 2023 Louis Lam", "Info");
- }
-
- void Exit(object sender, EventArgs e)
- {
- // Hide tray icon, otherwise it will remain shown until user mouses over it
- trayIcon.Visible = false;
- process?.Kill();
- Application.Exit();
- }
-
- void ProcessExited(object sender, EventArgs e) {
-
- if (process.ExitCode != 0) {
- var line = "";
- while (!process.StandardOutput.EndOfStream)
- {
- line += process.StandardOutput.ReadLine();
- }
-
- MessageBox.Show("Uptime Kuma exited unexpectedly. Exit code: " + process.ExitCode + " " + line);
- }
-
- trayIcon.Visible = false;
- Application.Exit();
- }
-
- }
-}
-
diff --git a/extra/exe-builder/Properties/AssemblyInfo.cs b/extra/exe-builder/Properties/AssemblyInfo.cs
deleted file mode 100644
index aa35ef812..000000000
--- a/extra/exe-builder/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("Uptime Kuma")]
-[assembly: AssemblyDescription("A portable executable for running Uptime Kuma")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Uptime Kuma")]
-[assembly: AssemblyProduct("Uptime Kuma")]
-[assembly: AssemblyCopyright("Copyright © 2023 Louis Lam")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("86B40AFB-61FC-433D-8C31-650B0F32EA8F")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.2.0")]
-[assembly: AssemblyFileVersion("1.0.2.0")]
diff --git a/extra/exe-builder/Properties/Resources.Designer.cs b/extra/exe-builder/Properties/Resources.Designer.cs
deleted file mode 100644
index 8c8e559c5..000000000
--- a/extra/exe-builder/Properties/Resources.Designer.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace UptimeKuma.Properties {
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder",
- "4.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resources {
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance",
- "CA1811:AvoidUncalledPrivateCode")]
- internal Resources() {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState
- .Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
- get {
- if ((resourceMan == null)) {
- global::System.Resources.ResourceManager temp =
- new global::System.Resources.ResourceManager("UptimeKuma.Properties.Resources",
- typeof(Resources).Assembly);
- resourceMan = temp;
- }
-
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState
- .Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
- get { return resourceCulture; }
- set { resourceCulture = value; }
- }
- }
-}
\ No newline at end of file
diff --git a/extra/exe-builder/Properties/Resources.resx b/extra/exe-builder/Properties/Resources.resx
deleted file mode 100644
index ffecec851..000000000
--- a/extra/exe-builder/Properties/Resources.resx
+++ /dev/null
@@ -1,117 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/extra/exe-builder/Properties/Settings.Designer.cs b/extra/exe-builder/Properties/Settings.Designer.cs
deleted file mode 100644
index 6c63b395b..000000000
--- a/extra/exe-builder/Properties/Settings.Designer.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace UptimeKuma.Properties {
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute(
- "Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
- internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
- private static Settings defaultInstance =
- ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
- public static Settings Default {
- get { return defaultInstance; }
- }
- }
-}
\ No newline at end of file
diff --git a/extra/exe-builder/Properties/Settings.settings b/extra/exe-builder/Properties/Settings.settings
deleted file mode 100644
index abf36c5d3..000000000
--- a/extra/exe-builder/Properties/Settings.settings
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/extra/exe-builder/UptimeKuma.csproj b/extra/exe-builder/UptimeKuma.csproj
deleted file mode 100644
index a2ce892ba..000000000
--- a/extra/exe-builder/UptimeKuma.csproj
+++ /dev/null
@@ -1,203 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {2DB53988-1D93-4AC0-90C4-96ADEAAC5C04}
- WinExe
- UptimeKuma
- uptime-kuma
- v4.7.2
- 512
- true
- true
- ..\..\public\favicon.ico
- 9
-
-
- AnyCPU
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- AnyCPU
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
- app.manifest
-
-
- COPY "$(SolutionDir)bin\Debug\uptime-kuma.exe" "%UserProfile%\Desktop\uptime-kuma-win64\"
-
-
-
- packages\Microsoft.Win32.Primitives.4.3.0\lib\net46\Microsoft.Win32.Primitives.dll
-
-
-
- packages\Newtonsoft.Json.13.0.2\lib\net45\Newtonsoft.Json.dll
-
-
-
- packages\System.AppContext.4.3.0\lib\net463\System.AppContext.dll
-
-
- packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll
-
-
-
- packages\System.Console.4.3.1\lib\net46\System.Console.dll
-
-
-
- packages\System.Diagnostics.DiagnosticSource.7.0.1\lib\net462\System.Diagnostics.DiagnosticSource.dll
-
-
- packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll
-
-
- packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll
-
-
- packages\System.IO.4.3.0\lib\net462\System.IO.dll
-
-
- packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll
-
-
-
- packages\System.IO.Compression.ZipFile.4.3.0\lib\net46\System.IO.Compression.ZipFile.dll
-
-
- packages\System.IO.FileSystem.4.3.0\lib\net46\System.IO.FileSystem.dll
-
-
- packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll
-
-
- packages\System.Linq.4.3.0\lib\net463\System.Linq.dll
-
-
- packages\System.Linq.Expressions.4.3.0\lib\net463\System.Linq.Expressions.dll
-
-
- packages\System.Memory.4.5.5\lib\net461\System.Memory.dll
-
-
- packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll
-
-
- packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll
-
-
-
- packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll
-
-
- packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll
-
-
- packages\System.Runtime.4.3.1\lib\net462\System.Runtime.dll
-
-
- packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll
-
-
- packages\System.Runtime.Extensions.4.3.1\lib\net462\System.Runtime.Extensions.dll
-
-
- packages\System.Runtime.InteropServices.4.3.0\lib\net463\System.Runtime.InteropServices.dll
-
-
- packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll
-
-
- packages\System.Security.Cryptography.Algorithms.4.3.1\lib\net463\System.Security.Cryptography.Algorithms.dll
-
-
- packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll
-
-
- packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll
-
-
- packages\System.Security.Cryptography.X509Certificates.4.3.2\lib\net461\System.Security.Cryptography.X509Certificates.dll
-
-
- packages\System.Text.RegularExpressions.4.3.1\lib\net463\System.Text.RegularExpressions.dll
-
-
-
-
-
-
-
-
-
-
- packages\System.Xml.ReaderWriter.4.3.1\lib\net46\System.Xml.ReaderWriter.dll
-
-
-
-
- Form
-
-
- DownloadForm.cs
-
-
-
-
-
- DownloadForm.cs
-
-
- ResXFileCodeGenerator
- Resources.Designer.cs
- Designer
-
-
- True
- Resources.resx
-
-
- favicon.ico
-
-
-
- SettingsSingleFileGenerator
- Settings.Designer.cs
-
-
- True
- Settings.settings
- True
-
-
-
-
-
-
-
-
-
-
-
-
- This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105.The missing file is {0}.
-
-
-
-
-
\ No newline at end of file
diff --git a/extra/exe-builder/UptimeKuma.sln b/extra/exe-builder/UptimeKuma.sln
deleted file mode 100644
index 201d7e234..000000000
--- a/extra/exe-builder/UptimeKuma.sln
+++ /dev/null
@@ -1,16 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UptimeKuma", "UptimeKuma.csproj", "{2DB53988-1D93-4AC0-90C4-96ADEAAC5C04}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {2DB53988-1D93-4AC0-90C4-96ADEAAC5C04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {2DB53988-1D93-4AC0-90C4-96ADEAAC5C04}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {2DB53988-1D93-4AC0-90C4-96ADEAAC5C04}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {2DB53988-1D93-4AC0-90C4-96ADEAAC5C04}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
-EndGlobal
diff --git a/extra/exe-builder/UptimeKuma.sln.DotSettings.user b/extra/exe-builder/UptimeKuma.sln.DotSettings.user
deleted file mode 100644
index b4ca9dadf..000000000
--- a/extra/exe-builder/UptimeKuma.sln.DotSettings.user
+++ /dev/null
@@ -1,3 +0,0 @@
-
- True
- True
\ No newline at end of file
diff --git a/extra/exe-builder/Version.cs b/extra/exe-builder/Version.cs
deleted file mode 100644
index 896c7a244..000000000
--- a/extra/exe-builder/Version.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace UptimeKuma {
- public class Version {
- public string latest { get; set; }
- public string slow { get; set; }
- public string beta { get; set; }
- public string nodejs { get; set; }
- public string exe { get; set; }
- }
-}
diff --git a/extra/exe-builder/app.manifest b/extra/exe-builder/app.manifest
deleted file mode 100644
index 4a48528fc..000000000
--- a/extra/exe-builder/app.manifest
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
- true
- PerMonitorV2
-
-
-
-
-
-
-
-
-
-
-
diff --git a/extra/exe-builder/packages.config b/extra/exe-builder/packages.config
deleted file mode 100644
index 579e2b7ff..000000000
--- a/extra/exe-builder/packages.config
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/extra/fs-rmSync.js b/extra/fs-rmSync.js
deleted file mode 100644
index a42e30a68..000000000
--- a/extra/fs-rmSync.js
+++ /dev/null
@@ -1,23 +0,0 @@
-const fs = require("fs");
-/**
- * Detect if `fs.rmSync` is available
- * to avoid the runtime deprecation warning triggered for using `fs.rmdirSync` with `{ recursive: true }` in Node.js v16,
- * or the `recursive` property removing completely in the future Node.js version.
- * See the link below.
- * @todo Once we drop the support for Node.js v14 (or at least versions before v14.14.0), we can safely replace this function with `fs.rmSync`, since `fs.rmSync` was add in Node.js v14.14.0 and currently we supports all the Node.js v14 versions that include the versions before the v14.14.0, and this function have almost the same signature with `fs.rmSync`.
- * @link https://nodejs.org/docs/latest-v16.x/api/deprecations.html#dep0147-fsrmdirpath--recursive-true- the deprecation information of `fs.rmdirSync`
- * @link https://nodejs.org/docs/latest-v16.x/api/fs.html#fsrmsyncpath-options the document of `fs.rmSync`
- * @param {fs.PathLike} path Valid types for path values in "fs".
- * @param {fs.RmDirOptions} options options for `fs.rmdirSync`, if `fs.rmSync` is available and property `recursive` is true, it will automatically have property `force` with value `true`.
- * @returns {void}
- */
-const rmSync = (path, options) => {
- if (typeof fs.rmSync === "function") {
- if (options.recursive) {
- options.force = true;
- }
- return fs.rmSync(path, options);
- }
- return fs.rmdirSync(path, options);
-};
-module.exports = rmSync;
diff --git a/extra/mark-as-nightly.js b/extra/mark-as-nightly.js
index ada2aca81..d2cb8cb4b 100644
--- a/extra/mark-as-nightly.js
+++ b/extra/mark-as-nightly.js
@@ -15,7 +15,6 @@ if (newVersion) {
// Process package.json
pkg.version = newVersion;
pkg.scripts.setup = pkg.scripts.setup.replaceAll(oldVersion, newVersion);
- pkg.scripts["build-docker"] = pkg.scripts["build-docker"].replaceAll(oldVersion, newVersion);
fs.writeFileSync("package.json", JSON.stringify(pkg, null, 4) + "\n");
// Process README.md
diff --git a/extra/press-any-key.js b/extra/press-any-key.js
deleted file mode 100644
index 42fc363cd..000000000
--- a/extra/press-any-key.js
+++ /dev/null
@@ -1,6 +0,0 @@
-console.log("Git Push and Publish the release note on github, then press any key to continue");
-
-process.stdin.setRawMode(true);
-process.stdin.resume();
-process.stdin.on("data", process.exit.bind(process, 0));
-
diff --git a/extra/release/beta.mjs b/extra/release/beta.mjs
new file mode 100644
index 000000000..7ea13b9b4
--- /dev/null
+++ b/extra/release/beta.mjs
@@ -0,0 +1,64 @@
+import "dotenv/config";
+import {
+ ver,
+ buildDist,
+ buildImage,
+ checkDocker,
+ checkTagExists,
+ checkVersionFormat,
+ getRepoNames,
+ pressAnyKey,
+ execSync, uploadArtifacts,
+} from "./lib.mjs";
+import semver from "semver";
+
+const repoNames = getRepoNames();
+const version = process.env.RELEASE_BETA_VERSION;
+const githubToken = process.env.RELEASE_GITHUB_TOKEN;
+
+console.log("RELEASE_BETA_VERSION:", version);
+
+if (!githubToken) {
+ console.error("GITHUB_TOKEN is required");
+ process.exit(1);
+}
+
+// Check if the version is a valid semver
+checkVersionFormat(version);
+
+// Check if the semver identifier is "beta"
+const semverIdentifier = semver.prerelease(version);
+console.log("Semver identifier:", semverIdentifier);
+if (semverIdentifier[0] !== "beta") {
+ console.error("VERSION should have a semver identifier of 'beta'");
+ process.exit(1);
+}
+
+// Check if docker is running
+checkDocker();
+
+// Check if the tag exists
+await checkTagExists(repoNames, version);
+
+// node extra/beta/update-version.js
+execSync("node ./extra/beta/update-version.js");
+
+// Build frontend dist
+buildDist();
+
+// Build slim image (rootless)
+buildImage(repoNames, [ "beta-slim-rootless", ver(version, "slim-rootless") ], "rootless", "BASE_IMAGE=louislam/uptime-kuma:base2-slim");
+
+// Build full image (rootless)
+buildImage(repoNames, [ "beta-rootless", ver(version, "rootless") ], "rootless");
+
+// Build slim image
+buildImage(repoNames, [ "beta-slim", ver(version, "slim") ], "release", "BASE_IMAGE=louislam/uptime-kuma:base2-slim");
+
+// Build full image
+buildImage(repoNames, [ "beta", version ], "release");
+
+await pressAnyKey();
+
+// npm run upload-artifacts
+uploadArtifacts(version, githubToken);
diff --git a/extra/release/final.mjs b/extra/release/final.mjs
new file mode 100644
index 000000000..bf0ec2b0c
--- /dev/null
+++ b/extra/release/final.mjs
@@ -0,0 +1,57 @@
+import "dotenv/config";
+import {
+ ver,
+ buildDist,
+ buildImage,
+ checkDocker,
+ checkTagExists,
+ checkVersionFormat,
+ getRepoNames,
+ pressAnyKey, execSync, uploadArtifacts
+} from "./lib.mjs";
+
+const repoNames = getRepoNames();
+const version = process.env.RELEASE_VERSION;
+const githubToken = process.env.RELEASE_GITHUB_TOKEN;
+
+console.log("RELEASE_VERSION:", version);
+
+if (!githubToken) {
+ console.error("GITHUB_TOKEN is required");
+ process.exit(1);
+}
+
+// Check if the version is a valid semver
+checkVersionFormat(version);
+
+// Check if docker is running
+checkDocker();
+
+// Check if the tag exists
+await checkTagExists(repoNames, version);
+
+// node extra/beta/update-version.js
+execSync("node extra/update-version.js");
+
+// Build frontend dist
+buildDist();
+
+// Build slim image (rootless)
+buildImage(repoNames, [ "2-slim-rootless", ver(version, "slim-rootless") ], "rootless", "BASE_IMAGE=louislam/uptime-kuma:base2-slim");
+
+// Build full image (rootless)
+buildImage(repoNames, [ "2-rootless", ver(version, "rootless") ], "rootless");
+
+// Build slim image
+buildImage(repoNames, [ "next-slim", "2-slim", ver(version, "slim") ], "release", "BASE_IMAGE=louislam/uptime-kuma:base2-slim");
+
+// Build full image
+buildImage(repoNames, [ "next", "2", version ], "release");
+
+await pressAnyKey();
+
+// npm run upload-artifacts
+uploadArtifacts(version, githubToken);
+
+// node extra/update-wiki-version.js
+execSync("node extra/update-wiki-version.js");
diff --git a/extra/release/lib.mjs b/extra/release/lib.mjs
new file mode 100644
index 000000000..81b9f11b3
--- /dev/null
+++ b/extra/release/lib.mjs
@@ -0,0 +1,251 @@
+import "dotenv/config";
+import * as childProcess from "child_process";
+import semver from "semver";
+
+export const dryRun = process.env.RELEASE_DRY_RUN === "1";
+
+if (dryRun) {
+ console.info("Dry run enabled.");
+}
+
+/**
+ * Check if docker is running
+ * @returns {void}
+ */
+export function checkDocker() {
+ try {
+ childProcess.execSync("docker ps");
+ } catch (error) {
+ console.error("Docker is not running. Please start docker and try again.");
+ process.exit(1);
+ }
+}
+
+/**
+ * Get Docker Hub repository name
+ */
+export function getRepoNames() {
+ if (process.env.RELEASE_REPO_NAMES) {
+ // Split by comma
+ return process.env.RELEASE_REPO_NAMES.split(",").map((name) => name.trim());
+ }
+ return [
+ "louislam/uptime-kuma",
+ "ghcr.io/louislam/uptime-kuma",
+ ];
+}
+
+/**
+ * Build frontend dist
+ * @returns {void}
+ */
+export function buildDist() {
+ if (!dryRun) {
+ childProcess.execSync("npm run build", { stdio: "inherit" });
+ } else {
+ console.info("[DRY RUN] npm run build");
+ }
+}
+
+/**
+ * Build docker image and push to Docker Hub
+ * @param {string[]} repoNames Docker Hub repository names
+ * @param {string[]} tags Docker image tags
+ * @param {string} target Dockerfile's target name
+ * @param {string} buildArgs Docker build args
+ * @param {string} dockerfile Path to Dockerfile
+ * @param {string} platform Build platform
+ * @returns {void}
+ */
+export function buildImage(repoNames, tags, target, buildArgs = "", dockerfile = "docker/dockerfile", platform = "linux/amd64,linux/arm64,linux/arm/v7") {
+ let args = [
+ "buildx",
+ "build",
+ "-f",
+ dockerfile,
+ "--platform",
+ platform,
+ ];
+
+ for (let repoName of repoNames) {
+ // Add tags
+ for (let tag of tags) {
+ args.push("-t", `${repoName}:${tag}`);
+ }
+ }
+
+ args = [
+ ...args,
+ "--target",
+ target,
+ ];
+
+ // Add build args
+ if (buildArgs) {
+ args.push("--build-arg", buildArgs);
+ }
+
+ args = [
+ ...args,
+ ".",
+ "--push",
+ ];
+
+ if (!dryRun) {
+ childProcess.spawnSync("docker", args, { stdio: "inherit" });
+ } else {
+ console.log(`[DRY RUN] docker ${args.join(" ")}`);
+ }
+}
+
+/**
+ * Check if the version already exists on Docker Hub
+ * TODO: use semver to compare versions if it is greater than the previous?
+ * @param {string[]} repoNames repository name (Only check the name with single slash)
+ * @param {string} version Version to check
+ * @returns {void}
+ */
+export async function checkTagExists(repoNames, version) {
+ // Skip if the tag is not on Docker Hub
+ // louislam/uptime-kuma
+ let dockerHubRepoNames = repoNames.filter((name) => {
+ return name.split("/").length === 2;
+ });
+
+ for (let repoName of dockerHubRepoNames) {
+ await checkTagExistsSingle(repoName, version);
+ }
+}
+
+/**
+ * Check if the version already exists on Docker Hub
+ * @param {string} repoName repository name
+ * @param {string} version Version to check
+ * @returns {Promise}
+ */
+export async function checkTagExistsSingle(repoName, version) {
+ console.log(`Checking if version ${version} exists on Docker Hub:`, repoName);
+
+ // Get a list of tags from the Docker Hub repository
+ let tags = [];
+
+ // It is mainly to check my careless mistake that I forgot to update the release version in .env, so `page_size` is set to 100 is enough, I think.
+ const response = await fetch(`https://hub.docker.com/v2/repositories/${repoName}/tags/?page_size=100`);
+ if (response.ok) {
+ const data = await response.json();
+ tags = data.results.map((tag) => tag.name);
+ } else {
+ console.error("Failed to get tags from Docker Hub");
+ process.exit(1);
+ }
+
+ // Check if the version already exists
+ if (tags.includes(version)) {
+ console.error(`Version ${version} already exists`);
+ process.exit(1);
+ }
+}
+
+/**
+ * Check the version format
+ * @param {string} version Version to check
+ * @returns {void}
+ */
+export function checkVersionFormat(version) {
+ if (!version) {
+ console.error("VERSION is required");
+ process.exit(1);
+ }
+
+ // Check the version format, it should be a semver and must be like this: "2.0.0-beta.0"
+ if (!semver.valid(version)) {
+ console.error("VERSION is not a valid semver version");
+ process.exit(1);
+ }
+}
+
+/**
+ * Press any key to continue
+ * @returns {Promise}
+ */
+export function pressAnyKey() {
+ console.log("Git Push and Publish the release note on github, then press any key to continue");
+ process.stdin.setRawMode(true);
+ process.stdin.resume();
+ return new Promise(resolve => process.stdin.once("data", data => {
+ process.stdin.setRawMode(false);
+ process.stdin.pause();
+ resolve();
+ }));
+}
+
+/**
+ * Append version identifier
+ * @param {string} version Version
+ * @param {string} identifier Identifier
+ * @returns {string} Version with identifier
+ */
+export function ver(version, identifier) {
+ const obj = semver.parse(version);
+
+ if (obj.prerelease.length === 0) {
+ obj.prerelease = [ identifier ];
+ } else {
+ obj.prerelease[0] = [ obj.prerelease[0], identifier ].join("-");
+ }
+ return obj.format();
+}
+
+/**
+ * Upload artifacts to GitHub
+ * docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg VERSION --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain
+ * @param {string} version Version
+ * @param {string} githubToken GitHub token
+ * @returns {void}
+ */
+export function uploadArtifacts(version, githubToken) {
+ let args = [
+ "buildx",
+ "build",
+ "-f",
+ "docker/dockerfile",
+ "--platform",
+ "linux/amd64",
+ "-t",
+ "louislam/uptime-kuma:upload-artifact",
+ "--build-arg",
+ `VERSION=${version}`,
+ "--build-arg",
+ "GITHUB_TOKEN",
+ "--target",
+ "upload-artifact",
+ ".",
+ "--progress",
+ "plain",
+ ];
+
+ if (!dryRun) {
+ childProcess.spawnSync("docker", args, {
+ stdio: "inherit",
+ env: {
+ ...process.env,
+ GITHUB_TOKEN: githubToken,
+ },
+ });
+ } else {
+ console.log(`[DRY RUN] docker ${args.join(" ")}`);
+ }
+}
+
+/**
+ * Execute a command
+ * @param {string} cmd Command to execute
+ * @returns {void}
+ */
+export function execSync(cmd) {
+ if (!dryRun) {
+ childProcess.execSync(cmd, { stdio: "inherit" });
+ } else {
+ console.info(`[DRY RUN] ${cmd}`);
+ }
+}
diff --git a/extra/release/nightly.mjs b/extra/release/nightly.mjs
new file mode 100644
index 000000000..54951ac42
--- /dev/null
+++ b/extra/release/nightly.mjs
@@ -0,0 +1,16 @@
+import { buildDist, buildImage, checkDocker, getRepoNames } from "./lib.mjs";
+
+// Docker Hub repository name
+const repoNames = getRepoNames();
+
+// Check if docker is running
+checkDocker();
+
+// Build frontend dist (it will build on the host machine, TODO: build on a container?)
+buildDist();
+
+// Build full image (rootless)
+buildImage(repoNames, [ "nightly2-rootless" ], "nightly-rootless");
+
+// Build full image
+buildImage(repoNames, [ "nightly2" ], "nightly");
diff --git a/extra/release/upload-artifacts-beta.mjs b/extra/release/upload-artifacts-beta.mjs
new file mode 100644
index 000000000..2897097e6
--- /dev/null
+++ b/extra/release/upload-artifacts-beta.mjs
@@ -0,0 +1,6 @@
+import { uploadArtifacts } from "./lib.mjs";
+
+const version = process.env.RELEASE_BETA_VERSION;
+const githubToken = process.env.RELEASE_GITHUB_TOKEN;
+
+uploadArtifacts(version, githubToken);
diff --git a/extra/release/upload-artifacts.mjs b/extra/release/upload-artifacts.mjs
new file mode 100644
index 000000000..cd34bd7d4
--- /dev/null
+++ b/extra/release/upload-artifacts.mjs
@@ -0,0 +1,6 @@
+import { uploadArtifacts } from "./lib.mjs";
+
+const version = process.env.RELEASE_VERSION;
+const githubToken = process.env.RELEASE_GITHUB_TOKEN;
+
+uploadArtifacts(version, githubToken);
diff --git a/extra/remove-empty-lang-keys.js b/extra/remove-empty-lang-keys.js
new file mode 100644
index 000000000..6b34fa00c
--- /dev/null
+++ b/extra/remove-empty-lang-keys.js
@@ -0,0 +1,25 @@
+// For #5231
+
+const fs = require("fs");
+
+let path = "../src/lang";
+
+// list directories in the lang directory
+let jsonFileList = fs.readdirSync(path);
+
+for (let jsonFile of jsonFileList) {
+ if (!jsonFile.endsWith(".json")) {
+ continue;
+ }
+
+ let jsonPath = path + "/" + jsonFile;
+ let langData = JSON.parse(fs.readFileSync(jsonPath, "utf8"));
+
+ for (let key in langData) {
+ if (langData[key] === "") {
+ delete langData[key];
+ }
+ }
+
+ fs.writeFileSync(jsonPath, JSON.stringify(langData, null, 4) + "\n");
+}
diff --git a/extra/reset-migrate-aggregate-table-state.js b/extra/reset-migrate-aggregate-table-state.js
new file mode 100644
index 000000000..e6c51fbd0
--- /dev/null
+++ b/extra/reset-migrate-aggregate-table-state.js
@@ -0,0 +1,24 @@
+const { R } = require("redbean-node");
+const Database = require("../server/database");
+const args = require("args-parser")(process.argv);
+const { Settings } = require("../server/settings");
+
+const main = async () => {
+ console.log("Connecting the database");
+ Database.initDataDir(args);
+ await Database.connect(false, false, true);
+
+ console.log("Deleting all data from aggregate tables");
+ await R.exec("DELETE FROM stat_minutely");
+ await R.exec("DELETE FROM stat_hourly");
+ await R.exec("DELETE FROM stat_daily");
+
+ console.log("Resetting the aggregate table state");
+ await Settings.set("migrateAggregateTableState", "");
+
+ await Database.close();
+ console.log("Done");
+};
+
+main();
+
diff --git a/extra/reset-password.js b/extra/reset-password.js
index b87d90f16..e66173af1 100644
--- a/extra/reset-password.js
+++ b/extra/reset-password.js
@@ -3,6 +3,7 @@ console.log("== Uptime Kuma Reset Password Tool ==");
const Database = require("../server/database");
const { R } = require("redbean-node");
const readline = require("readline");
+const { passwordStrength } = require("check-password-strength");
const { initJWTSecret } = require("../server/util-server");
const User = require("../server/model/user");
const { io } = require("socket.io-client");
@@ -42,8 +43,15 @@ const main = async () => {
console.log("Using password from argument");
console.warn("\x1b[31m%s\x1b[0m", "Warning: the password might be stored, in plain text, in your shell's history");
password = confirmPassword = args["new-password"] + "";
+ if (passwordStrength(password).value === "Too weak") {
+ throw new Error("Password is too weak, please use a stronger password.");
+ }
} else {
password = await question("New Password: ");
+ if (passwordStrength(password).value === "Too weak") {
+ console.log("Password is too weak, please try again.");
+ continue;
+ }
confirmPassword = await question("Confirm New Password: ");
}
diff --git a/extra/test-docker.js b/extra/test-docker.js
deleted file mode 100644
index d7926fcca..000000000
--- a/extra/test-docker.js
+++ /dev/null
@@ -1,9 +0,0 @@
-// Check if docker is running
-const { exec } = require("child_process");
-
-exec("docker ps", (err, stdout, stderr) => {
- if (err) {
- console.error("Docker is not running. Please start docker and try again.");
- process.exit(1);
- }
-});
diff --git a/extra/update-language-files/index.js b/extra/update-language-files/index.js
index 5b748a98e..acb6bd467 100644
--- a/extra/update-language-files/index.js
+++ b/extra/update-language-files/index.js
@@ -2,7 +2,6 @@
import fs from "fs";
import util from "util";
-import rmSync from "../fs-rmSync.js";
/**
* Copy across the required language files
@@ -16,7 +15,10 @@ import rmSync from "../fs-rmSync.js";
*/
function copyFiles(langCode, baseLang) {
if (fs.existsSync("./languages")) {
- rmSync("./languages", { recursive: true });
+ fs.rmSync("./languages", {
+ recursive: true,
+ force: true,
+ });
}
fs.mkdirSync("./languages");
@@ -93,6 +95,9 @@ console.log("Updating: " + langCode);
copyFiles(langCode, baseLangCode);
await updateLanguage(langCode, baseLangCode);
-rmSync("./languages", { recursive: true });
+fs.rmSync("./languages", {
+ recursive: true,
+ force: true,
+});
console.log("Done. Fixing formatting by ESLint...");
diff --git a/extra/update-version.js b/extra/update-version.js
index 2bc13a78e..f9aead09d 100644
--- a/extra/update-version.js
+++ b/extra/update-version.js
@@ -5,7 +5,7 @@ const util = require("../src/util");
util.polyfill();
-const newVersion = process.env.VERSION;
+const newVersion = process.env.RELEASE_VERSION;
console.log("New Version: " + newVersion);
diff --git a/extra/update-wiki-version.js b/extra/update-wiki-version.js
index 003deec01..f6c961213 100644
--- a/extra/update-wiki-version.js
+++ b/extra/update-wiki-version.js
@@ -1,7 +1,7 @@
const childProcess = require("child_process");
const fs = require("fs");
-const newVersion = process.env.VERSION;
+const newVersion = process.env.RELEASE_VERSION;
if (!newVersion) {
console.log("Missing version");
diff --git a/package-lock.json b/package-lock.json
index 7578c1917..c5269c088 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,21 +1,20 @@
{
"name": "uptime-kuma",
- "version": "2.0.0-dev",
+ "version": "2.0.0-beta.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "uptime-kuma",
- "version": "2.0.0-dev",
+ "version": "2.0.0-beta.2",
"license": "MIT",
"dependencies": {
- "@grpc/grpc-js": "~1.7.3",
+ "@grpc/grpc-js": "~1.8.22",
"@louislam/ping": "~0.4.4-mod.1",
"@louislam/sqlite3": "15.1.6",
"@vvo/tzdb": "^6.125.0",
"args-parser": "~1.3.0",
- "axios": "~0.28.0",
- "axios-ntlm": "1.3.0",
+ "axios": "~0.30.0",
"badge-maker": "~3.3.1",
"bcryptjs": "~2.4.3",
"chardet": "~1.4.0",
@@ -25,19 +24,22 @@
"command-exists": "~1.2.9",
"compare-versions": "~3.6.0",
"compression": "~1.7.4",
- "croner": "~6.0.5",
+ "country-flag-emoji-polyfill": "^0.1.8",
+ "croner": "~8.1.0",
"dayjs": "~1.11.5",
+ "dev-null": "^0.1.1",
"dotenv": "~16.0.3",
- "express": "~4.17.3",
+ "express": "~4.21.0",
"express-basic-auth": "~1.2.1",
"express-static-gzip": "~2.1.7",
+ "feed": "^4.2.2",
"form-data": "~4.0.0",
"gamedig": "^4.2.0",
"html-escaper": "^3.0.3",
"http-cookie-agent": "~5.0.4",
"http-graceful-shutdown": "~3.1.7",
- "http-proxy-agent": "~5.0.0",
- "https-proxy-agent": "~5.0.1",
+ "http-proxy-agent": "~7.0.2",
+ "https-proxy-agent": "~7.0.6",
"iconv-lite": "~0.6.3",
"isomorphic-ws": "^5.0.0",
"jsesc": "~3.0.2",
@@ -45,19 +47,21 @@
"jsonwebtoken": "~9.0.0",
"jwt-decode": "~3.1.2",
"kafkajs": "^2.2.4",
- "knex": "^2.4.2",
+ "knex": "~3.1.0",
"limiter": "~2.1.0",
"liquidjs": "^10.7.0",
+ "marked": "^14.0.0",
"mitt": "~3.0.1",
"mongodb": "~4.17.1",
"mqtt": "~4.3.7",
- "mssql": "~8.1.4",
- "mysql2": "~3.6.2",
+ "mssql": "~11.0.0",
+ "mysql2": "~3.11.3",
"nanoid": "~3.3.4",
+ "net-snmp": "^3.11.2",
"node-cloudflared-tunnel": "~1.0.9",
"node-radius-client": "~1.0.0",
- "nodemailer": "~6.6.5",
- "nostr-tools": "^1.13.1",
+ "nodemailer": "~6.9.13",
+ "nostr-tools": "^2.10.4",
"notp": "~2.0.3",
"openid-client": "^5.4.2",
"password-hash": "~1.2.2",
@@ -72,23 +76,25 @@
"redbean-node": "~0.3.0",
"redis": "~4.5.1",
"semver": "~7.5.4",
- "socket.io": "~4.6.1",
- "socket.io-client": "~4.6.1",
- "socks-proxy-agent": "6.1.1",
- "tar": "~6.1.11",
+ "socket.io": "~4.8.0",
+ "socket.io-client": "~4.8.0",
+ "socks-proxy-agent": "~8.0.5",
+ "tar": "~6.2.1",
"tcp-ping": "~0.1.1",
"thirty-two": "~1.0.2",
"tough-cookie": "~4.1.3",
"ws": "^8.13.0"
},
"devDependencies": {
- "@actions/github": "~5.0.1",
+ "@actions/github": "~6.0.0",
"@fortawesome/fontawesome-svg-core": "~1.2.36",
"@fortawesome/free-regular-svg-icons": "~5.15.4",
"@fortawesome/free-solid-svg-icons": "~5.15.4",
"@fortawesome/vue-fontawesome": "~3.0.0-5",
"@playwright/test": "~1.39.0",
"@popperjs/core": "~2.10.2",
+ "@testcontainers/hivemq": "^10.13.1",
+ "@testcontainers/rabbitmq": "^10.13.2",
"@types/bootstrap": "~5.1.9",
"@types/node": "^20.8.6",
"@typescript-eslint/eslint-plugin": "^6.7.5",
@@ -106,18 +112,17 @@
"cross-env": "~7.0.3",
"delay": "^5.0.0",
"dns2": "~2.0.1",
- "dompurify": "~2.4.3",
+ "dompurify": "~3.2.4",
"eslint": "~8.14.0",
"eslint-plugin-jsdoc": "~46.4.6",
"eslint-plugin-vue": "~8.7.1",
"favico.js": "~0.3.10",
"get-port-please": "^3.1.1",
- "marked": "~4.2.5",
"node-ssh": "~13.1.0",
"postcss-html": "~1.5.0",
"postcss-rtlcss": "~3.7.2",
"postcss-scss": "~4.0.4",
- "prismjs": "~1.29.0",
+ "prismjs": "~1.30.0",
"qrcode": "~1.5.0",
"rollup-plugin-visualizer": "^5.6.0",
"sass": "~1.42.1",
@@ -125,16 +130,17 @@
"stylelint-config-standard": "~25.0.0",
"terser": "~5.15.0",
"test": "~3.3.0",
+ "testcontainers": "^10.13.1",
"typescript": "~4.4.4",
"v-pagination-3": "~0.1.7",
- "vite": "~5.0.10",
+ "vite": "~5.4.15",
"vite-plugin-compression": "^0.5.1",
"vite-plugin-vue-devtools": "^7.0.15",
"vue": "~3.4.2",
"vue-chartjs": "~5.2.0",
"vue-confirm-dialog": "~1.0.2",
"vue-contenteditable": "~3.0.4",
- "vue-i18n": "~9.2.2",
+ "vue-i18n": "~9.14.3",
"vue-image-crop-upload": "~3.0.3",
"vue-multiselect": "~3.0.0-alpha.2",
"vue-prism-editor": "~2.0.0-alpha.2",
@@ -146,710 +152,731 @@
"whatwg-url": "~12.0.1"
},
"engines": {
- "node": "14 || 16 || 18 || >= 20.4.0"
- }
- },
- "node_modules/@aashutoshrathi/word-wrap": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
- "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node": "18 || >= 20.4.0"
}
},
"node_modules/@actions/github": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/@actions/github/-/github-5.0.3.tgz",
- "integrity": "sha512-myjA/pdLQfhUGLtRZC/J4L1RXOG4o6aYdiEq+zr5wVVKljzbFld+xv10k1FX6IkIJtNxbAq44BdwSNpQ015P0A==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.0.tgz",
+ "integrity": "sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@actions/http-client": "^2.0.1",
- "@octokit/core": "^3.6.0",
- "@octokit/plugin-paginate-rest": "^2.17.0",
- "@octokit/plugin-rest-endpoint-methods": "^5.13.0"
+ "@actions/http-client": "^2.2.0",
+ "@octokit/core": "^5.0.1",
+ "@octokit/plugin-paginate-rest": "^9.0.0",
+ "@octokit/plugin-rest-endpoint-methods": "^10.0.0"
}
},
"node_modules/@actions/http-client": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.0.tgz",
- "integrity": "sha512-q+epW0trjVUUHboliPb4UF9g2msf+w61b32tAkFEwL/IwP0DQWgbCMM0Hbe3e3WXSKz5VcUXbzJQgy8Hkra/Lg==",
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz",
+ "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"tunnel": "^0.0.6",
"undici": "^5.25.4"
}
},
"node_modules/@ampproject/remapping": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
- "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@antfu/utils": {
- "version": "0.7.7",
- "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.7.tgz",
- "integrity": "sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==",
+ "version": "0.7.10",
+ "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz",
+ "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==",
"dev": true,
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
- "node_modules/@aws-crypto/crc32": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz",
- "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==",
- "optional": true,
- "dependencies": {
- "@aws-crypto/util": "^3.0.0",
- "@aws-sdk/types": "^3.222.0",
- "tslib": "^1.11.1"
- }
- },
- "node_modules/@aws-crypto/crc32/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "optional": true
- },
- "node_modules/@aws-crypto/ie11-detection": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz",
- "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==",
- "optional": true,
- "dependencies": {
- "tslib": "^1.11.1"
- }
- },
- "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "optional": true
- },
"node_modules/@aws-crypto/sha256-browser": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz",
- "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz",
+ "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-crypto/ie11-detection": "^3.0.0",
- "@aws-crypto/sha256-js": "^3.0.0",
- "@aws-crypto/supports-web-crypto": "^3.0.0",
- "@aws-crypto/util": "^3.0.0",
+ "@aws-crypto/sha256-js": "^5.2.0",
+ "@aws-crypto/supports-web-crypto": "^5.2.0",
+ "@aws-crypto/util": "^5.2.0",
"@aws-sdk/types": "^3.222.0",
"@aws-sdk/util-locate-window": "^3.0.0",
- "@aws-sdk/util-utf8-browser": "^3.0.0",
- "tslib": "^1.11.1"
+ "@smithy/util-utf8": "^2.0.0",
+ "tslib": "^2.6.2"
}
},
- "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "optional": true
- },
- "node_modules/@aws-crypto/sha256-js": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz",
- "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==",
+ "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz",
+ "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-crypto/util": "^3.0.0",
- "@aws-sdk/types": "^3.222.0",
- "tslib": "^1.11.1"
- }
- },
- "node_modules/@aws-crypto/sha256-js/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "optional": true
- },
- "node_modules/@aws-crypto/supports-web-crypto": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz",
- "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==",
- "optional": true,
- "dependencies": {
- "tslib": "^1.11.1"
- }
- },
- "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "optional": true
- },
- "node_modules/@aws-crypto/util": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz",
- "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==",
- "optional": true,
- "dependencies": {
- "@aws-sdk/types": "^3.222.0",
- "@aws-sdk/util-utf8-browser": "^3.0.0",
- "tslib": "^1.11.1"
- }
- },
- "node_modules/@aws-crypto/util/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "optional": true
- },
- "node_modules/@aws-sdk/client-cognito-identity": {
- "version": "3.501.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.501.0.tgz",
- "integrity": "sha512-ynWW9VVT7CTMQBh8l7WFt2SNekg3667gwjQmeGN8+DDMDqt2Z+L52717S0AN1pQDUMbh/DuKKPk+Sr30HBK3vA==",
- "optional": true,
- "dependencies": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/client-sts": "3.501.0",
- "@aws-sdk/core": "3.496.0",
- "@aws-sdk/credential-provider-node": "3.501.0",
- "@aws-sdk/middleware-host-header": "3.496.0",
- "@aws-sdk/middleware-logger": "3.496.0",
- "@aws-sdk/middleware-recursion-detection": "3.496.0",
- "@aws-sdk/middleware-signing": "3.496.0",
- "@aws-sdk/middleware-user-agent": "3.496.0",
- "@aws-sdk/region-config-resolver": "3.496.0",
- "@aws-sdk/types": "3.496.0",
- "@aws-sdk/util-endpoints": "3.496.0",
- "@aws-sdk/util-user-agent-browser": "3.496.0",
- "@aws-sdk/util-user-agent-node": "3.496.0",
- "@smithy/config-resolver": "^2.1.1",
- "@smithy/core": "^1.3.1",
- "@smithy/fetch-http-handler": "^2.4.1",
- "@smithy/hash-node": "^2.1.1",
- "@smithy/invalid-dependency": "^2.1.1",
- "@smithy/middleware-content-length": "^2.1.1",
- "@smithy/middleware-endpoint": "^2.4.1",
- "@smithy/middleware-retry": "^2.1.1",
- "@smithy/middleware-serde": "^2.1.1",
- "@smithy/middleware-stack": "^2.1.1",
- "@smithy/node-config-provider": "^2.2.1",
- "@smithy/node-http-handler": "^2.3.1",
- "@smithy/protocol-http": "^3.1.1",
- "@smithy/smithy-client": "^2.3.1",
- "@smithy/types": "^2.9.1",
- "@smithy/url-parser": "^2.1.1",
- "@smithy/util-base64": "^2.1.1",
- "@smithy/util-body-length-browser": "^2.1.1",
- "@smithy/util-body-length-node": "^2.2.1",
- "@smithy/util-defaults-mode-browser": "^2.1.1",
- "@smithy/util-defaults-mode-node": "^2.1.1",
- "@smithy/util-endpoints": "^1.1.1",
- "@smithy/util-retry": "^2.1.1",
- "@smithy/util-utf8": "^2.1.1",
- "tslib": "^2.5.0"
+ "tslib": "^2.6.2"
},
"engines": {
"node": ">=14.0.0"
}
},
+ "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz",
+ "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@smithy/is-array-buffer": "^2.2.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
+ "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@smithy/util-buffer-from": "^2.2.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-crypto/sha256-js": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz",
+ "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-crypto/util": "^5.2.0",
+ "@aws-sdk/types": "^3.222.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-crypto/supports-web-crypto": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz",
+ "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.6.2"
+ }
+ },
+ "node_modules/@aws-crypto/util": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz",
+ "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "^3.222.0",
+ "@smithy/util-utf8": "^2.0.0",
+ "tslib": "^2.6.2"
+ }
+ },
+ "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz",
+ "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz",
+ "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@smithy/is-array-buffer": "^2.2.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
+ "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@smithy/util-buffer-from": "^2.2.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cognito-identity": {
+ "version": "3.782.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.782.0.tgz",
+ "integrity": "sha512-Zad5x3L5K+PuhdY2v8Q0tsafmVBa2SJJxNukPzXM1APxW7FpDVMxcdSzjfCfX7CvSpohR8zDIEROqMfoUisaTw==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "5.2.0",
+ "@aws-crypto/sha256-js": "5.2.0",
+ "@aws-sdk/core": "3.775.0",
+ "@aws-sdk/credential-provider-node": "3.782.0",
+ "@aws-sdk/middleware-host-header": "3.775.0",
+ "@aws-sdk/middleware-logger": "3.775.0",
+ "@aws-sdk/middleware-recursion-detection": "3.775.0",
+ "@aws-sdk/middleware-user-agent": "3.782.0",
+ "@aws-sdk/region-config-resolver": "3.775.0",
+ "@aws-sdk/types": "3.775.0",
+ "@aws-sdk/util-endpoints": "3.782.0",
+ "@aws-sdk/util-user-agent-browser": "3.775.0",
+ "@aws-sdk/util-user-agent-node": "3.782.0",
+ "@smithy/config-resolver": "^4.1.0",
+ "@smithy/core": "^3.2.0",
+ "@smithy/fetch-http-handler": "^5.0.2",
+ "@smithy/hash-node": "^4.0.2",
+ "@smithy/invalid-dependency": "^4.0.2",
+ "@smithy/middleware-content-length": "^4.0.2",
+ "@smithy/middleware-endpoint": "^4.1.0",
+ "@smithy/middleware-retry": "^4.1.0",
+ "@smithy/middleware-serde": "^4.0.3",
+ "@smithy/middleware-stack": "^4.0.2",
+ "@smithy/node-config-provider": "^4.0.2",
+ "@smithy/node-http-handler": "^4.0.4",
+ "@smithy/protocol-http": "^5.1.0",
+ "@smithy/smithy-client": "^4.2.0",
+ "@smithy/types": "^4.2.0",
+ "@smithy/url-parser": "^4.0.2",
+ "@smithy/util-base64": "^4.0.0",
+ "@smithy/util-body-length-browser": "^4.0.0",
+ "@smithy/util-body-length-node": "^4.0.0",
+ "@smithy/util-defaults-mode-browser": "^4.0.8",
+ "@smithy/util-defaults-mode-node": "^4.0.8",
+ "@smithy/util-endpoints": "^3.0.2",
+ "@smithy/util-middleware": "^4.0.2",
+ "@smithy/util-retry": "^4.0.2",
+ "@smithy/util-utf8": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
"node_modules/@aws-sdk/client-sso": {
- "version": "3.496.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.496.0.tgz",
- "integrity": "sha512-fuaMuxKg7CMUsP9l3kxYWCOxFsBjdA0xj5nlikaDm1661/gB4KkAiGqRY8LsQkpNXvXU8Nj+f7oCFADFyGYzyw==",
+ "version": "3.782.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.782.0.tgz",
+ "integrity": "sha512-5GlJBejo8wqMpSSEKb45WE82YxI2k73YuebjLH/eWDNQeE6VI5Bh9lA1YQ7xNkLLH8hIsb0pSfKVuwh0VEzVrg==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/core": "3.496.0",
- "@aws-sdk/middleware-host-header": "3.496.0",
- "@aws-sdk/middleware-logger": "3.496.0",
- "@aws-sdk/middleware-recursion-detection": "3.496.0",
- "@aws-sdk/middleware-user-agent": "3.496.0",
- "@aws-sdk/region-config-resolver": "3.496.0",
- "@aws-sdk/types": "3.496.0",
- "@aws-sdk/util-endpoints": "3.496.0",
- "@aws-sdk/util-user-agent-browser": "3.496.0",
- "@aws-sdk/util-user-agent-node": "3.496.0",
- "@smithy/config-resolver": "^2.1.1",
- "@smithy/core": "^1.3.1",
- "@smithy/fetch-http-handler": "^2.4.1",
- "@smithy/hash-node": "^2.1.1",
- "@smithy/invalid-dependency": "^2.1.1",
- "@smithy/middleware-content-length": "^2.1.1",
- "@smithy/middleware-endpoint": "^2.4.1",
- "@smithy/middleware-retry": "^2.1.1",
- "@smithy/middleware-serde": "^2.1.1",
- "@smithy/middleware-stack": "^2.1.1",
- "@smithy/node-config-provider": "^2.2.1",
- "@smithy/node-http-handler": "^2.3.1",
- "@smithy/protocol-http": "^3.1.1",
- "@smithy/smithy-client": "^2.3.1",
- "@smithy/types": "^2.9.1",
- "@smithy/url-parser": "^2.1.1",
- "@smithy/util-base64": "^2.1.1",
- "@smithy/util-body-length-browser": "^2.1.1",
- "@smithy/util-body-length-node": "^2.2.1",
- "@smithy/util-defaults-mode-browser": "^2.1.1",
- "@smithy/util-defaults-mode-node": "^2.1.1",
- "@smithy/util-endpoints": "^1.1.1",
- "@smithy/util-retry": "^2.1.1",
- "@smithy/util-utf8": "^2.1.1",
- "tslib": "^2.5.0"
+ "@aws-crypto/sha256-browser": "5.2.0",
+ "@aws-crypto/sha256-js": "5.2.0",
+ "@aws-sdk/core": "3.775.0",
+ "@aws-sdk/middleware-host-header": "3.775.0",
+ "@aws-sdk/middleware-logger": "3.775.0",
+ "@aws-sdk/middleware-recursion-detection": "3.775.0",
+ "@aws-sdk/middleware-user-agent": "3.782.0",
+ "@aws-sdk/region-config-resolver": "3.775.0",
+ "@aws-sdk/types": "3.775.0",
+ "@aws-sdk/util-endpoints": "3.782.0",
+ "@aws-sdk/util-user-agent-browser": "3.775.0",
+ "@aws-sdk/util-user-agent-node": "3.782.0",
+ "@smithy/config-resolver": "^4.1.0",
+ "@smithy/core": "^3.2.0",
+ "@smithy/fetch-http-handler": "^5.0.2",
+ "@smithy/hash-node": "^4.0.2",
+ "@smithy/invalid-dependency": "^4.0.2",
+ "@smithy/middleware-content-length": "^4.0.2",
+ "@smithy/middleware-endpoint": "^4.1.0",
+ "@smithy/middleware-retry": "^4.1.0",
+ "@smithy/middleware-serde": "^4.0.3",
+ "@smithy/middleware-stack": "^4.0.2",
+ "@smithy/node-config-provider": "^4.0.2",
+ "@smithy/node-http-handler": "^4.0.4",
+ "@smithy/protocol-http": "^5.1.0",
+ "@smithy/smithy-client": "^4.2.0",
+ "@smithy/types": "^4.2.0",
+ "@smithy/url-parser": "^4.0.2",
+ "@smithy/util-base64": "^4.0.0",
+ "@smithy/util-body-length-browser": "^4.0.0",
+ "@smithy/util-body-length-node": "^4.0.0",
+ "@smithy/util-defaults-mode-browser": "^4.0.8",
+ "@smithy/util-defaults-mode-node": "^4.0.8",
+ "@smithy/util-endpoints": "^3.0.2",
+ "@smithy/util-middleware": "^4.0.2",
+ "@smithy/util-retry": "^4.0.2",
+ "@smithy/util-utf8": "^4.0.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/client-sts": {
- "version": "3.501.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.501.0.tgz",
- "integrity": "sha512-Uwc/xuxsA46dZS5s+4U703LBNDrGpWF7RB4XYEEMD21BLfGuqntxLLQux8xxKt3Pcur0CsXNja5jXt3uLnE5MA==",
- "optional": true,
- "dependencies": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/core": "3.496.0",
- "@aws-sdk/credential-provider-node": "3.501.0",
- "@aws-sdk/middleware-host-header": "3.496.0",
- "@aws-sdk/middleware-logger": "3.496.0",
- "@aws-sdk/middleware-recursion-detection": "3.496.0",
- "@aws-sdk/middleware-user-agent": "3.496.0",
- "@aws-sdk/region-config-resolver": "3.496.0",
- "@aws-sdk/types": "3.496.0",
- "@aws-sdk/util-endpoints": "3.496.0",
- "@aws-sdk/util-user-agent-browser": "3.496.0",
- "@aws-sdk/util-user-agent-node": "3.496.0",
- "@smithy/config-resolver": "^2.1.1",
- "@smithy/core": "^1.3.1",
- "@smithy/fetch-http-handler": "^2.4.1",
- "@smithy/hash-node": "^2.1.1",
- "@smithy/invalid-dependency": "^2.1.1",
- "@smithy/middleware-content-length": "^2.1.1",
- "@smithy/middleware-endpoint": "^2.4.1",
- "@smithy/middleware-retry": "^2.1.1",
- "@smithy/middleware-serde": "^2.1.1",
- "@smithy/middleware-stack": "^2.1.1",
- "@smithy/node-config-provider": "^2.2.1",
- "@smithy/node-http-handler": "^2.3.1",
- "@smithy/protocol-http": "^3.1.1",
- "@smithy/smithy-client": "^2.3.1",
- "@smithy/types": "^2.9.1",
- "@smithy/url-parser": "^2.1.1",
- "@smithy/util-base64": "^2.1.1",
- "@smithy/util-body-length-browser": "^2.1.1",
- "@smithy/util-body-length-node": "^2.2.1",
- "@smithy/util-defaults-mode-browser": "^2.1.1",
- "@smithy/util-defaults-mode-node": "^2.1.1",
- "@smithy/util-endpoints": "^1.1.1",
- "@smithy/util-middleware": "^2.1.1",
- "@smithy/util-retry": "^2.1.1",
- "@smithy/util-utf8": "^2.1.1",
- "fast-xml-parser": "4.2.5",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/core": {
- "version": "3.496.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.496.0.tgz",
- "integrity": "sha512-yT+ug7Cw/3eJi7x2es0+46x12+cIJm5Xv+GPWsrTFD1TKgqO/VPEgfDtHFagDNbFmjNQA65Ygc/kEdIX9ICX/A==",
+ "version": "3.775.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.775.0.tgz",
+ "integrity": "sha512-8vpW4WihVfz0DX+7WnnLGm3GuQER++b0IwQG35JlQMlgqnc44M//KbJPsIHA0aJUJVwJAEShgfr5dUbY8WUzaA==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/core": "^1.3.1",
- "@smithy/protocol-http": "^3.1.1",
- "@smithy/signature-v4": "^2.1.1",
- "@smithy/smithy-client": "^2.3.1",
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@aws-sdk/types": "3.775.0",
+ "@smithy/core": "^3.2.0",
+ "@smithy/node-config-provider": "^4.0.2",
+ "@smithy/property-provider": "^4.0.2",
+ "@smithy/protocol-http": "^5.1.0",
+ "@smithy/signature-v4": "^5.0.2",
+ "@smithy/smithy-client": "^4.2.0",
+ "@smithy/types": "^4.2.0",
+ "@smithy/util-middleware": "^4.0.2",
+ "fast-xml-parser": "4.4.1",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-cognito-identity": {
- "version": "3.501.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.501.0.tgz",
- "integrity": "sha512-U9fjzliKzMiPx/EWLNLCEoF5wWhVtlluTEc4/WhNtSryV2PyihqIAK8nK4+MFaXB4xOrlRnpYMd7oqm03wMGyw==",
+ "version": "3.782.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.782.0.tgz",
+ "integrity": "sha512-rWUmO9yZUBkM2CrTN9lm5X7Ubl7bRPBKyq5hvWpVNSa6BpUcmAQ6CUwEACOc+9cXmUqmKFhP6MGT2GpVlRrzDQ==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/client-cognito-identity": "3.501.0",
- "@aws-sdk/types": "3.496.0",
- "@smithy/property-provider": "^2.1.1",
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@aws-sdk/client-cognito-identity": "3.782.0",
+ "@aws-sdk/types": "3.775.0",
+ "@smithy/property-provider": "^4.0.2",
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-env": {
- "version": "3.496.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.496.0.tgz",
- "integrity": "sha512-lukQMJ8SWWP5RqkRNOHi/H+WMhRvSWa3Fc5Jf/VP6xHiPLfF1XafcvthtV91e0VwPCiseI+HqChrcGq8pvnxHw==",
+ "version": "3.775.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.775.0.tgz",
+ "integrity": "sha512-6ESVxwCbGm7WZ17kY1fjmxQud43vzJFoLd4bmlR+idQSWdqlzGDYdcfzpjDKTcivdtNrVYmFvcH1JBUwCRAZhw==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.496.0",
- "@smithy/property-provider": "^2.1.1",
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@aws-sdk/core": "3.775.0",
+ "@aws-sdk/types": "3.775.0",
+ "@smithy/property-provider": "^4.0.2",
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-http": {
- "version": "3.496.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.496.0.tgz",
- "integrity": "sha512-iphFlFX0qDFsE24XmFlcKmsR4uyNaqQrK+Y18mwSZMs1yWtL4Sck0rcTXU/cU2W3/xisjh7xFXK5L5aowjMZOg==",
+ "version": "3.775.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.775.0.tgz",
+ "integrity": "sha512-PjDQeDH/J1S0yWV32wCj2k5liRo0ssXMseCBEkCsD3SqsU8o5cU82b0hMX4sAib/RkglCSZqGO0xMiN0/7ndww==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.496.0",
- "@smithy/fetch-http-handler": "^2.4.1",
- "@smithy/node-http-handler": "^2.3.1",
- "@smithy/property-provider": "^2.1.1",
- "@smithy/protocol-http": "^3.1.1",
- "@smithy/smithy-client": "^2.3.1",
- "@smithy/types": "^2.9.1",
- "@smithy/util-stream": "^2.1.1",
- "tslib": "^2.5.0"
+ "@aws-sdk/core": "3.775.0",
+ "@aws-sdk/types": "3.775.0",
+ "@smithy/fetch-http-handler": "^5.0.2",
+ "@smithy/node-http-handler": "^4.0.4",
+ "@smithy/property-provider": "^4.0.2",
+ "@smithy/protocol-http": "^5.1.0",
+ "@smithy/smithy-client": "^4.2.0",
+ "@smithy/types": "^4.2.0",
+ "@smithy/util-stream": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-ini": {
- "version": "3.501.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.501.0.tgz",
- "integrity": "sha512-6UXnwLtYIr298ljveumCVXsH+x7csGscK5ylY+veRFy514NqyloRdJt8JY26hhh5SF9MYnkW+JyWSJ2Ls3tOjQ==",
+ "version": "3.782.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.782.0.tgz",
+ "integrity": "sha512-wd4KdRy2YjLsE4Y7pz00470Iip06GlRHkG4dyLW7/hFMzEO2o7ixswCWp6J2VGZVAX64acknlv2Q0z02ebjmhw==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/credential-provider-env": "3.496.0",
- "@aws-sdk/credential-provider-process": "3.496.0",
- "@aws-sdk/credential-provider-sso": "3.501.0",
- "@aws-sdk/credential-provider-web-identity": "3.496.0",
- "@aws-sdk/types": "3.496.0",
- "@smithy/credential-provider-imds": "^2.2.1",
- "@smithy/property-provider": "^2.1.1",
- "@smithy/shared-ini-file-loader": "^2.3.1",
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@aws-sdk/core": "3.775.0",
+ "@aws-sdk/credential-provider-env": "3.775.0",
+ "@aws-sdk/credential-provider-http": "3.775.0",
+ "@aws-sdk/credential-provider-process": "3.775.0",
+ "@aws-sdk/credential-provider-sso": "3.782.0",
+ "@aws-sdk/credential-provider-web-identity": "3.782.0",
+ "@aws-sdk/nested-clients": "3.782.0",
+ "@aws-sdk/types": "3.775.0",
+ "@smithy/credential-provider-imds": "^4.0.2",
+ "@smithy/property-provider": "^4.0.2",
+ "@smithy/shared-ini-file-loader": "^4.0.2",
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-node": {
- "version": "3.501.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.501.0.tgz",
- "integrity": "sha512-NM62D8gYrQ1nyLYwW4k48B2/lMHDzHDcQccS1wJakr6bg5sdtG06CumwlVcY+LAa0o1xRnhHmh/yiwj/nN4avw==",
+ "version": "3.782.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.782.0.tgz",
+ "integrity": "sha512-HZiAF+TCEyKjju9dgysjiPIWgt/+VerGaeEp18mvKLNfgKz1d+/82A2USEpNKTze7v3cMFASx3CvL8yYyF7mJw==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/credential-provider-env": "3.496.0",
- "@aws-sdk/credential-provider-ini": "3.501.0",
- "@aws-sdk/credential-provider-process": "3.496.0",
- "@aws-sdk/credential-provider-sso": "3.501.0",
- "@aws-sdk/credential-provider-web-identity": "3.496.0",
- "@aws-sdk/types": "3.496.0",
- "@smithy/credential-provider-imds": "^2.2.1",
- "@smithy/property-provider": "^2.1.1",
- "@smithy/shared-ini-file-loader": "^2.3.1",
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@aws-sdk/credential-provider-env": "3.775.0",
+ "@aws-sdk/credential-provider-http": "3.775.0",
+ "@aws-sdk/credential-provider-ini": "3.782.0",
+ "@aws-sdk/credential-provider-process": "3.775.0",
+ "@aws-sdk/credential-provider-sso": "3.782.0",
+ "@aws-sdk/credential-provider-web-identity": "3.782.0",
+ "@aws-sdk/types": "3.775.0",
+ "@smithy/credential-provider-imds": "^4.0.2",
+ "@smithy/property-provider": "^4.0.2",
+ "@smithy/shared-ini-file-loader": "^4.0.2",
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-process": {
- "version": "3.496.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.496.0.tgz",
- "integrity": "sha512-/YZscCTGOKVmGr916Th4XF8Sz6JDtZ/n2loHG9exok9iy/qIbACsTRNLP9zexPxhPoue/oZqecY5xbVljfY34A==",
+ "version": "3.775.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.775.0.tgz",
+ "integrity": "sha512-A6k68H9rQp+2+7P7SGO90Csw6nrUEm0Qfjpn9Etc4EboZhhCLs9b66umUsTsSBHus4FDIe5JQxfCUyt1wgNogg==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.496.0",
- "@smithy/property-provider": "^2.1.1",
- "@smithy/shared-ini-file-loader": "^2.3.1",
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@aws-sdk/core": "3.775.0",
+ "@aws-sdk/types": "3.775.0",
+ "@smithy/property-provider": "^4.0.2",
+ "@smithy/shared-ini-file-loader": "^4.0.2",
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-sso": {
- "version": "3.501.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.501.0.tgz",
- "integrity": "sha512-y90dlvvZ55PwecODFdMx0NiNlJJfm7X6S61PKdLNCMRcu1YK+eWn0CmPHGHobBUQ4SEYhnFLcHSsf+VMim6BtQ==",
+ "version": "3.782.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.782.0.tgz",
+ "integrity": "sha512-1y1ucxTtTIGDSNSNxriQY8msinilhe9gGvQpUDYW9gboyC7WQJPDw66imy258V6osdtdi+xoHzVCbCz3WhosMQ==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/client-sso": "3.496.0",
- "@aws-sdk/token-providers": "3.501.0",
- "@aws-sdk/types": "3.496.0",
- "@smithy/property-provider": "^2.1.1",
- "@smithy/shared-ini-file-loader": "^2.3.1",
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@aws-sdk/client-sso": "3.782.0",
+ "@aws-sdk/core": "3.775.0",
+ "@aws-sdk/token-providers": "3.782.0",
+ "@aws-sdk/types": "3.775.0",
+ "@smithy/property-provider": "^4.0.2",
+ "@smithy/shared-ini-file-loader": "^4.0.2",
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/credential-provider-web-identity": {
- "version": "3.496.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.496.0.tgz",
- "integrity": "sha512-IbP+qLlvJSpNPj+zW6TtFuLRTK5Tf0hW+2pom4vFyi5YSH4pn8UOC136UdewX8vhXGS9BJQ5zBDMasIyl5VeGQ==",
+ "version": "3.782.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.782.0.tgz",
+ "integrity": "sha512-xCna0opVPaueEbJoclj5C6OpDNi0Gynj+4d7tnuXGgQhTHPyAz8ZyClkVqpi5qvHTgxROdUEDxWqEO5jqRHZHQ==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.496.0",
- "@smithy/property-provider": "^2.1.1",
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@aws-sdk/core": "3.775.0",
+ "@aws-sdk/nested-clients": "3.782.0",
+ "@aws-sdk/types": "3.775.0",
+ "@smithy/property-provider": "^4.0.2",
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/credential-providers": {
- "version": "3.501.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.501.0.tgz",
- "integrity": "sha512-nyfGzzYKcAny2kUyQjVDhSzfFTwkfZjGyJZ79WaLkNcCsVSsHBbptPRmRV2b4N0EoHTCfGqkbB02as4av/OQrw==",
+ "version": "3.782.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.782.0.tgz",
+ "integrity": "sha512-EP0viOqgw9hU8Lt25Rc7nPlPKMCsO7ntVGSA5TDdjaOHU9wN1LdKwRmFWYE+ii0FIPmagJmgJJoHdpq85oqsUw==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/client-cognito-identity": "3.501.0",
- "@aws-sdk/client-sso": "3.496.0",
- "@aws-sdk/client-sts": "3.501.0",
- "@aws-sdk/credential-provider-cognito-identity": "3.501.0",
- "@aws-sdk/credential-provider-env": "3.496.0",
- "@aws-sdk/credential-provider-http": "3.496.0",
- "@aws-sdk/credential-provider-ini": "3.501.0",
- "@aws-sdk/credential-provider-node": "3.501.0",
- "@aws-sdk/credential-provider-process": "3.496.0",
- "@aws-sdk/credential-provider-sso": "3.501.0",
- "@aws-sdk/credential-provider-web-identity": "3.496.0",
- "@aws-sdk/types": "3.496.0",
- "@smithy/credential-provider-imds": "^2.2.1",
- "@smithy/property-provider": "^2.1.1",
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@aws-sdk/client-cognito-identity": "3.782.0",
+ "@aws-sdk/core": "3.775.0",
+ "@aws-sdk/credential-provider-cognito-identity": "3.782.0",
+ "@aws-sdk/credential-provider-env": "3.775.0",
+ "@aws-sdk/credential-provider-http": "3.775.0",
+ "@aws-sdk/credential-provider-ini": "3.782.0",
+ "@aws-sdk/credential-provider-node": "3.782.0",
+ "@aws-sdk/credential-provider-process": "3.775.0",
+ "@aws-sdk/credential-provider-sso": "3.782.0",
+ "@aws-sdk/credential-provider-web-identity": "3.782.0",
+ "@aws-sdk/nested-clients": "3.782.0",
+ "@aws-sdk/types": "3.775.0",
+ "@smithy/config-resolver": "^4.1.0",
+ "@smithy/core": "^3.2.0",
+ "@smithy/credential-provider-imds": "^4.0.2",
+ "@smithy/node-config-provider": "^4.0.2",
+ "@smithy/property-provider": "^4.0.2",
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/middleware-host-header": {
- "version": "3.496.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.496.0.tgz",
- "integrity": "sha512-jUdPpSJeqCYXf6hSjfwsfHway7peIV8Vz51w/BN91bF4vB/bYwAC5o9/iJiK/EoByp5asxA8fg9wFOyGjzdbLg==",
+ "version": "3.775.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.775.0.tgz",
+ "integrity": "sha512-tkSegM0Z6WMXpLB8oPys/d+umYIocvO298mGvcMCncpRl77L9XkvSLJIFzaHes+o7djAgIduYw8wKIMStFss2w==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.496.0",
- "@smithy/protocol-http": "^3.1.1",
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@aws-sdk/types": "3.775.0",
+ "@smithy/protocol-http": "^5.1.0",
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/middleware-logger": {
- "version": "3.496.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.496.0.tgz",
- "integrity": "sha512-EwMVSY6iBMeGbVnvwdaFl/ClMS/YWtxCAo+bcEtgk8ltRuo7qgbJem8Km/fvWC1vdWvIbe4ArdJ8iGzq62ffAw==",
+ "version": "3.775.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.775.0.tgz",
+ "integrity": "sha512-FaxO1xom4MAoUJsldmR92nT1G6uZxTdNYOFYtdHfd6N2wcNaTuxgjIvqzg5y7QIH9kn58XX/dzf1iTjgqUStZw==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.496.0",
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@aws-sdk/types": "3.775.0",
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/middleware-recursion-detection": {
- "version": "3.496.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.496.0.tgz",
- "integrity": "sha512-+IuOcFsfqg2WAnaEzH6KhVbicqCxtOq9w3DH2jwTpddRlCx2Kqf6wCzg8luhHRGyjBZdsbIS+OXwyMevoppawA==",
+ "version": "3.775.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.775.0.tgz",
+ "integrity": "sha512-GLCzC8D0A0YDG5u3F5U03Vb9j5tcOEFhr8oc6PDk0k0vm5VwtZOE6LvK7hcCSoAB4HXyOUM0sQuXrbaAh9OwXA==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.496.0",
- "@smithy/protocol-http": "^3.1.1",
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@aws-sdk/types": "3.775.0",
+ "@smithy/protocol-http": "^5.1.0",
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-signing": {
- "version": "3.496.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.496.0.tgz",
- "integrity": "sha512-Oq73Brs4IConvWnRlh8jM1V7LHoTw9SVQklu/QW2FPlNrB3B8fuTdWHHYIWv7ybw1bykXoCY99v865Mmq/Or/g==",
- "optional": true,
- "dependencies": {
- "@aws-sdk/types": "3.496.0",
- "@smithy/property-provider": "^2.1.1",
- "@smithy/protocol-http": "^3.1.1",
- "@smithy/signature-v4": "^2.1.1",
- "@smithy/types": "^2.9.1",
- "@smithy/util-middleware": "^2.1.1",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/middleware-user-agent": {
- "version": "3.496.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.496.0.tgz",
- "integrity": "sha512-+iMtRxFk0GmFWNUF4ilxylOQd9PZdR4ZC9jkcPIh1PZlvKtpCyFywKlk5RRZKklSoJ/CttcqwhMvOXTNbWm/0w==",
+ "version": "3.782.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.782.0.tgz",
+ "integrity": "sha512-i32H2R6IItX+bQ2p4+v2gGO2jA80jQoJO2m1xjU9rYWQW3+ErWy4I5YIuQHTBfb6hSdAHbaRfqPDgbv9J2rjEg==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.496.0",
- "@aws-sdk/util-endpoints": "3.496.0",
- "@smithy/protocol-http": "^3.1.1",
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@aws-sdk/core": "3.775.0",
+ "@aws-sdk/types": "3.775.0",
+ "@aws-sdk/util-endpoints": "3.782.0",
+ "@smithy/core": "^3.2.0",
+ "@smithy/protocol-http": "^5.1.0",
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/nested-clients": {
+ "version": "3.782.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.782.0.tgz",
+ "integrity": "sha512-QOYC8q7luzHFXrP0xYAqBctoPkynjfV0r9dqntFu4/IWMTyC1vlo1UTxFAjIPyclYw92XJyEkVCVg9v/nQnsUA==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "5.2.0",
+ "@aws-crypto/sha256-js": "5.2.0",
+ "@aws-sdk/core": "3.775.0",
+ "@aws-sdk/middleware-host-header": "3.775.0",
+ "@aws-sdk/middleware-logger": "3.775.0",
+ "@aws-sdk/middleware-recursion-detection": "3.775.0",
+ "@aws-sdk/middleware-user-agent": "3.782.0",
+ "@aws-sdk/region-config-resolver": "3.775.0",
+ "@aws-sdk/types": "3.775.0",
+ "@aws-sdk/util-endpoints": "3.782.0",
+ "@aws-sdk/util-user-agent-browser": "3.775.0",
+ "@aws-sdk/util-user-agent-node": "3.782.0",
+ "@smithy/config-resolver": "^4.1.0",
+ "@smithy/core": "^3.2.0",
+ "@smithy/fetch-http-handler": "^5.0.2",
+ "@smithy/hash-node": "^4.0.2",
+ "@smithy/invalid-dependency": "^4.0.2",
+ "@smithy/middleware-content-length": "^4.0.2",
+ "@smithy/middleware-endpoint": "^4.1.0",
+ "@smithy/middleware-retry": "^4.1.0",
+ "@smithy/middleware-serde": "^4.0.3",
+ "@smithy/middleware-stack": "^4.0.2",
+ "@smithy/node-config-provider": "^4.0.2",
+ "@smithy/node-http-handler": "^4.0.4",
+ "@smithy/protocol-http": "^5.1.0",
+ "@smithy/smithy-client": "^4.2.0",
+ "@smithy/types": "^4.2.0",
+ "@smithy/url-parser": "^4.0.2",
+ "@smithy/util-base64": "^4.0.0",
+ "@smithy/util-body-length-browser": "^4.0.0",
+ "@smithy/util-body-length-node": "^4.0.0",
+ "@smithy/util-defaults-mode-browser": "^4.0.8",
+ "@smithy/util-defaults-mode-node": "^4.0.8",
+ "@smithy/util-endpoints": "^3.0.2",
+ "@smithy/util-middleware": "^4.0.2",
+ "@smithy/util-retry": "^4.0.2",
+ "@smithy/util-utf8": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/region-config-resolver": {
- "version": "3.496.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.496.0.tgz",
- "integrity": "sha512-URrNVOPHPgEDm6QFu6lDC2cUFs+Jx23mA3jEwCvoKlXiEY/ZoWjH8wlX3OMUlLrF1qoUTuD03jjrJzF6zoCgug==",
+ "version": "3.775.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.775.0.tgz",
+ "integrity": "sha512-40iH3LJjrQS3LKUJAl7Wj0bln7RFPEvUYKFxtP8a+oKFDO0F65F52xZxIJbPn6sHkxWDAnZlGgdjZXM3p2g5wQ==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.496.0",
- "@smithy/node-config-provider": "^2.2.1",
- "@smithy/types": "^2.9.1",
- "@smithy/util-config-provider": "^2.2.1",
- "@smithy/util-middleware": "^2.1.1",
- "tslib": "^2.5.0"
+ "@aws-sdk/types": "3.775.0",
+ "@smithy/node-config-provider": "^4.0.2",
+ "@smithy/types": "^4.2.0",
+ "@smithy/util-config-provider": "^4.0.0",
+ "@smithy/util-middleware": "^4.0.2",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/token-providers": {
- "version": "3.501.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.501.0.tgz",
- "integrity": "sha512-MvLPhNxlStmQqVm2crGLUqYWvK/AbMmI9j4FbEfJ15oG/I+730zjSJQEy2MvdiqbJRDPZ/tRCL89bUedOrmi0g==",
+ "version": "3.782.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.782.0.tgz",
+ "integrity": "sha512-4tPuk/3+THPrzKaXW4jE2R67UyGwHLFizZ47pcjJWbhb78IIJAy94vbeqEQ+veS84KF5TXcU7g5jGTXC0D70Wg==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/middleware-host-header": "3.496.0",
- "@aws-sdk/middleware-logger": "3.496.0",
- "@aws-sdk/middleware-recursion-detection": "3.496.0",
- "@aws-sdk/middleware-user-agent": "3.496.0",
- "@aws-sdk/region-config-resolver": "3.496.0",
- "@aws-sdk/types": "3.496.0",
- "@aws-sdk/util-endpoints": "3.496.0",
- "@aws-sdk/util-user-agent-browser": "3.496.0",
- "@aws-sdk/util-user-agent-node": "3.496.0",
- "@smithy/config-resolver": "^2.1.1",
- "@smithy/fetch-http-handler": "^2.4.1",
- "@smithy/hash-node": "^2.1.1",
- "@smithy/invalid-dependency": "^2.1.1",
- "@smithy/middleware-content-length": "^2.1.1",
- "@smithy/middleware-endpoint": "^2.4.1",
- "@smithy/middleware-retry": "^2.1.1",
- "@smithy/middleware-serde": "^2.1.1",
- "@smithy/middleware-stack": "^2.1.1",
- "@smithy/node-config-provider": "^2.2.1",
- "@smithy/node-http-handler": "^2.3.1",
- "@smithy/property-provider": "^2.1.1",
- "@smithy/protocol-http": "^3.1.1",
- "@smithy/shared-ini-file-loader": "^2.3.1",
- "@smithy/smithy-client": "^2.3.1",
- "@smithy/types": "^2.9.1",
- "@smithy/url-parser": "^2.1.1",
- "@smithy/util-base64": "^2.1.1",
- "@smithy/util-body-length-browser": "^2.1.1",
- "@smithy/util-body-length-node": "^2.2.1",
- "@smithy/util-defaults-mode-browser": "^2.1.1",
- "@smithy/util-defaults-mode-node": "^2.1.1",
- "@smithy/util-endpoints": "^1.1.1",
- "@smithy/util-retry": "^2.1.1",
- "@smithy/util-utf8": "^2.1.1",
- "tslib": "^2.5.0"
+ "@aws-sdk/nested-clients": "3.782.0",
+ "@aws-sdk/types": "3.775.0",
+ "@smithy/property-provider": "^4.0.2",
+ "@smithy/shared-ini-file-loader": "^4.0.2",
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/types": {
- "version": "3.496.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.496.0.tgz",
- "integrity": "sha512-umkGadK4QuNQaMoDICMm7NKRI/mYSXiyPjcn3d53BhsuArYU/52CebGQKdt4At7SwwsiVJZw9RNBHyN5Mm0HVw==",
+ "version": "3.775.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.775.0.tgz",
+ "integrity": "sha512-ZoGKwa4C9fC9Av6bdfqcW6Ix5ot05F/S4VxWR2nHuMv7hzfmAjTOcUiWT7UR4hM/U0whf84VhDtXN/DWAk52KA==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/util-endpoints": {
- "version": "3.496.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.496.0.tgz",
- "integrity": "sha512-1QzOiWHi383ZwqSi/R2KgKCd7M+6DxkxI5acqLPm8mvDRDP2jRjrnVaC0g9/tlttWousGEemDUWStwrD2mVYSw==",
+ "version": "3.782.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.782.0.tgz",
+ "integrity": "sha512-/RJOAO7o7HI6lEa4ASbFFLHGU9iPK876BhsVfnl54MvApPVYWQ9sHO0anOUim2S5lQTwd/6ghuH3rFYSq/+rdw==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.496.0",
- "@smithy/types": "^2.9.1",
- "@smithy/util-endpoints": "^1.1.1",
- "tslib": "^2.5.0"
+ "@aws-sdk/types": "3.775.0",
+ "@smithy/types": "^4.2.0",
+ "@smithy/util-endpoints": "^3.0.2",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/util-locate-window": {
- "version": "3.495.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.495.0.tgz",
- "integrity": "sha512-MfaPXT0kLX2tQaR90saBT9fWQq2DHqSSJRzW+MZWsmF+y5LGCOhO22ac/2o6TKSQm7h0HRc2GaADqYYYor62yg==",
+ "version": "3.723.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.723.0.tgz",
+ "integrity": "sha512-Yf2CS10BqK688DRsrKI/EO6B8ff5J86NXe4C+VCysK7UOgN0l1zOTeTukZ3H8Q9tYYX3oaF1961o8vRkFm7Nmw==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "tslib": "^2.5.0"
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@aws-sdk/util-user-agent-browser": {
- "version": "3.496.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.496.0.tgz",
- "integrity": "sha512-4j2spN+h0I0qfSMsGvJXTfQBu1e18rPdekKvzsGJxhaAE1tNgUfUT4nbvc5uVn0sNjZmirskmJ3kfbzVOrqIFg==",
+ "version": "3.775.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.775.0.tgz",
+ "integrity": "sha512-txw2wkiJmZKVdDbscK7VBK+u+TJnRtlUjRTLei+elZg2ADhpQxfVAQl436FUeIv6AhB/oRHW6/K/EAGXUSWi0A==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.496.0",
- "@smithy/types": "^2.9.1",
+ "@aws-sdk/types": "3.775.0",
+ "@smithy/types": "^4.2.0",
"bowser": "^2.11.0",
- "tslib": "^2.5.0"
+ "tslib": "^2.6.2"
}
},
"node_modules/@aws-sdk/util-user-agent-node": {
- "version": "3.496.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.496.0.tgz",
- "integrity": "sha512-h0Ax0jlDc7UIo3KoSI4C4tVLBFoiAdx3+DhTVfgLS7x93d41dMlziPoBX2RgdcFn37qnzw6AQKTVTMwDbRCGpg==",
+ "version": "3.782.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.782.0.tgz",
+ "integrity": "sha512-dMFkUBgh2Bxuw8fYZQoH/u3H4afQ12VSkzEi//qFiDTwbKYq+u+RYjc8GLDM6JSK1BShMu5AVR7HD4ap1TYUnA==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.496.0",
- "@smithy/node-config-provider": "^2.2.1",
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@aws-sdk/middleware-user-agent": "3.782.0",
+ "@aws-sdk/types": "3.775.0",
+ "@smithy/node-config-provider": "^4.0.2",
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
},
"peerDependencies": {
"aws-crt": ">=1.0.0"
@@ -860,165 +887,192 @@
}
}
},
- "node_modules/@aws-sdk/util-utf8-browser": {
- "version": "3.259.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz",
- "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==",
- "optional": true,
- "dependencies": {
- "tslib": "^2.3.1"
- }
- },
"node_modules/@azure/abort-controller": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz",
- "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz",
+ "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==",
+ "license": "MIT",
"dependencies": {
- "tslib": "^2.2.0"
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@azure/core-auth": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.5.0.tgz",
- "integrity": "sha512-udzoBuYG1VBoHVohDTrvKjyzel34zt77Bhp7dQntVGGD0ehVq48owENbBG8fIgkHRNUBQH5k1r0hpoMu5L8+kw==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.9.0.tgz",
+ "integrity": "sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==",
+ "license": "MIT",
"dependencies": {
- "@azure/abort-controller": "^1.0.0",
- "@azure/core-util": "^1.1.0",
- "tslib": "^2.2.0"
+ "@azure/abort-controller": "^2.0.0",
+ "@azure/core-util": "^1.11.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@azure/core-client": {
- "version": "1.7.3",
- "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.7.3.tgz",
- "integrity": "sha512-kleJ1iUTxcO32Y06dH9Pfi9K4U+Tlb111WXEnbt7R/ne+NLRwppZiTGJuTD5VVoxTMK5NTbEtm5t2vcdNCFe2g==",
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.3.tgz",
+ "integrity": "sha512-/wGw8fJ4mdpJ1Cum7s1S+VQyXt1ihwKLzfabS1O/RDADnmzVc01dHn44qD0BvGH6KlZNzOMW95tEpKqhkCChPA==",
+ "license": "MIT",
"dependencies": {
- "@azure/abort-controller": "^1.0.0",
+ "@azure/abort-controller": "^2.0.0",
"@azure/core-auth": "^1.4.0",
"@azure/core-rest-pipeline": "^1.9.1",
"@azure/core-tracing": "^1.0.0",
- "@azure/core-util": "^1.0.0",
+ "@azure/core-util": "^1.6.1",
"@azure/logger": "^1.0.0",
- "tslib": "^2.2.0"
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@azure/core-http-compat": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@azure/core-http-compat/-/core-http-compat-1.3.0.tgz",
- "integrity": "sha512-ZN9avruqbQ5TxopzG3ih3KRy52n8OAbitX3fnZT5go4hzu0J+KVPSzkL+Wt3hpJpdG8WIfg1sBD1tWkgUdEpBA==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-http-compat/-/core-http-compat-2.2.0.tgz",
+ "integrity": "sha512-1kW8ZhN0CfbNOG6C688z5uh2yrzALE7dDXHiR9dY4vt+EbhGZQSbjDa5bQd2rf3X2pdWMsXbqbArxUyeNdvtmg==",
+ "license": "MIT",
"dependencies": {
- "@azure/abort-controller": "^1.0.4",
+ "@azure/abort-controller": "^2.0.0",
"@azure/core-client": "^1.3.0",
- "@azure/core-rest-pipeline": "^1.3.0"
+ "@azure/core-rest-pipeline": "^1.19.0"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@azure/core-lro": {
- "version": "2.5.4",
- "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.5.4.tgz",
- "integrity": "sha512-3GJiMVH7/10bulzOKGrrLeG/uCBH/9VtxqaMcB9lIqAeamI/xYQSHJL/KcsLDuH+yTjYpro/u6D/MuRe4dN70Q==",
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.7.2.tgz",
+ "integrity": "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==",
+ "license": "MIT",
"dependencies": {
- "@azure/abort-controller": "^1.0.0",
+ "@azure/abort-controller": "^2.0.0",
"@azure/core-util": "^1.2.0",
"@azure/logger": "^1.0.0",
- "tslib": "^2.2.0"
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@azure/core-paging": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.5.0.tgz",
- "integrity": "sha512-zqWdVIt+2Z+3wqxEOGzR5hXFZ8MGKK52x4vFLw8n58pR6ZfKRx3EXYTxTaYxYHc/PexPUTyimcTWFJbji9Z6Iw==",
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.6.2.tgz",
+ "integrity": "sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==",
+ "license": "MIT",
"dependencies": {
- "tslib": "^2.2.0"
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@azure/core-rest-pipeline": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.13.0.tgz",
- "integrity": "sha512-a62aP/wppgmnfIkJLfcB4ssPBcH94WzrzPVJ3tlJt050zX4lfmtnvy95D3igDo3f31StO+9BgPrzvkj4aOxnoA==",
+ "version": "1.19.1",
+ "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.19.1.tgz",
+ "integrity": "sha512-zHeoI3NCs53lLBbWNzQycjnYKsA1CVKlnzSNuSFcUDwBp8HHVObePxrM7HaX+Ha5Ks639H7chNC9HOaIhNS03w==",
+ "license": "MIT",
"dependencies": {
- "@azure/abort-controller": "^1.1.0",
- "@azure/core-auth": "^1.4.0",
+ "@azure/abort-controller": "^2.0.0",
+ "@azure/core-auth": "^1.8.0",
"@azure/core-tracing": "^1.0.1",
- "@azure/core-util": "^1.3.0",
+ "@azure/core-util": "^1.11.0",
"@azure/logger": "^1.0.0",
- "http-proxy-agent": "^5.0.0",
- "https-proxy-agent": "^5.0.0",
- "tslib": "^2.2.0"
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.0",
+ "tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@azure/core-tracing": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz",
- "integrity": "sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.2.0.tgz",
+ "integrity": "sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==",
+ "license": "MIT",
"dependencies": {
- "tslib": "^2.2.0"
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@azure/core-util": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.6.1.tgz",
- "integrity": "sha512-h5taHeySlsV9qxuK64KZxy4iln1BtMYlNt5jbuEFN3UFSAd1EwKg/Gjl5a6tZ/W8t6li3xPnutOx7zbDyXnPmQ==",
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.11.0.tgz",
+ "integrity": "sha512-DxOSLua+NdpWoSqULhjDyAZTXFdP/LKkqtYuxxz1SCN289zk3OG8UOpnCQAz/tygyACBtWp/BoO72ptK7msY8g==",
+ "license": "MIT",
"dependencies": {
- "@azure/abort-controller": "^1.0.0",
- "tslib": "^2.2.0"
+ "@azure/abort-controller": "^2.0.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@azure/identity": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-2.1.0.tgz",
- "integrity": "sha512-BPDz1sK7Ul9t0l9YKLEa8PHqWU4iCfhGJ+ELJl6c8CP3TpJt2urNCbm0ZHsthmxRsYoMPbz2Dvzj30zXZVmAFw==",
+ "version": "4.8.0",
+ "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.8.0.tgz",
+ "integrity": "sha512-l9ALUGHtFB/JfsqmA+9iYAp2a+cCwdNO/cyIr2y7nJLJsz1aae6qVP8XxT7Kbudg0IQRSIMXj0+iivFdbD1xPA==",
+ "license": "MIT",
"dependencies": {
- "@azure/abort-controller": "^1.0.0",
- "@azure/core-auth": "^1.3.0",
- "@azure/core-client": "^1.4.0",
- "@azure/core-rest-pipeline": "^1.1.0",
+ "@azure/abort-controller": "^2.0.0",
+ "@azure/core-auth": "^1.9.0",
+ "@azure/core-client": "^1.9.2",
+ "@azure/core-rest-pipeline": "^1.17.0",
"@azure/core-tracing": "^1.0.0",
- "@azure/core-util": "^1.0.0",
+ "@azure/core-util": "^1.11.0",
"@azure/logger": "^1.0.0",
- "@azure/msal-browser": "^2.26.0",
- "@azure/msal-common": "^7.0.0",
- "@azure/msal-node": "^1.10.0",
+ "@azure/msal-browser": "^4.2.0",
+ "@azure/msal-node": "^3.2.3",
"events": "^3.0.0",
"jws": "^4.0.0",
- "open": "^8.0.0",
+ "open": "^10.1.0",
"stoppable": "^1.1.0",
- "tslib": "^2.2.0",
- "uuid": "^8.3.0"
+ "tslib": "^2.2.0"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@azure/identity/node_modules/define-lazy-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
+ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@azure/identity/node_modules/is-wsl": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
+ "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-inside-container": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@azure/identity/node_modules/jwa": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
"integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
+ "license": "MIT",
"dependencies": {
"buffer-equal-constant-time": "1.0.1",
"ecdsa-sig-formatter": "1.0.11",
@@ -1029,202 +1083,168 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
"integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
+ "license": "MIT",
"dependencies": {
"jwa": "^2.0.0",
"safe-buffer": "^5.0.1"
}
},
- "node_modules/@azure/keyvault-keys": {
- "version": "4.7.2",
- "resolved": "https://registry.npmjs.org/@azure/keyvault-keys/-/keyvault-keys-4.7.2.tgz",
- "integrity": "sha512-VdIH6PjbQ3J5ntK+xeI8eOe1WsDxF9ndXw8BPR/9MZVnIj0vQNtNCS6gpR7EFQeGcs8XjzMfHm0AvKGErobqJQ==",
+ "node_modules/@azure/identity/node_modules/open": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz",
+ "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==",
+ "license": "MIT",
"dependencies": {
- "@azure/abort-controller": "^1.0.0",
+ "default-browser": "^5.2.1",
+ "define-lazy-prop": "^3.0.0",
+ "is-inside-container": "^1.0.0",
+ "is-wsl": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@azure/keyvault-common": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@azure/keyvault-common/-/keyvault-common-2.0.0.tgz",
+ "integrity": "sha512-wRLVaroQtOqfg60cxkzUkGKrKMsCP6uYXAOomOIysSMyt1/YM0eUn9LqieAWM8DLcU4+07Fio2YGpPeqUbpP9w==",
+ "license": "MIT",
+ "dependencies": {
+ "@azure/abort-controller": "^2.0.0",
"@azure/core-auth": "^1.3.0",
"@azure/core-client": "^1.5.0",
- "@azure/core-http-compat": "^1.3.0",
+ "@azure/core-rest-pipeline": "^1.8.0",
+ "@azure/core-tracing": "^1.0.0",
+ "@azure/core-util": "^1.10.0",
+ "@azure/logger": "^1.1.4",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@azure/keyvault-keys": {
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@azure/keyvault-keys/-/keyvault-keys-4.9.0.tgz",
+ "integrity": "sha512-ZBP07+K4Pj3kS4TF4XdkqFcspWwBHry3vJSOFM5k5ZABvf7JfiMonvaFk2nBF6xjlEbMpz5PE1g45iTMme0raQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@azure/abort-controller": "^2.0.0",
+ "@azure/core-auth": "^1.3.0",
+ "@azure/core-client": "^1.5.0",
+ "@azure/core-http-compat": "^2.0.1",
"@azure/core-lro": "^2.2.0",
"@azure/core-paging": "^1.1.1",
"@azure/core-rest-pipeline": "^1.8.1",
"@azure/core-tracing": "^1.0.0",
"@azure/core-util": "^1.0.0",
+ "@azure/keyvault-common": "^2.0.0",
"@azure/logger": "^1.0.0",
"tslib": "^2.2.0"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@azure/logger": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.0.4.tgz",
- "integrity": "sha512-ustrPY8MryhloQj7OWGe+HrYx+aoiOxzbXTtgblbV3xwCqpzUK36phH3XNHQKj3EPonyFUuDTfR3qFhTEAuZEg==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.4.tgz",
+ "integrity": "sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ==",
+ "license": "MIT",
"dependencies": {
- "tslib": "^2.2.0"
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@azure/msal-browser": {
- "version": "2.38.3",
- "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.38.3.tgz",
- "integrity": "sha512-2WuLFnWWPR1IdvhhysT18cBbkXx1z0YIchVss5AwVA95g7CU5CpT3d+5BcgVGNXDXbUU7/5p0xYHV99V5z8C/A==",
- "deprecated": "A newer major version of this library is available. Please upgrade to the latest available version.",
+ "version": "4.10.0",
+ "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.10.0.tgz",
+ "integrity": "sha512-48X2VwOtHk8A1CI00E8tAqko0+3qQh53u5bOPySzdojL3T/Ad4GgRnN0c0oLJ1/PcTm4D4QybHYG3LBOX0l3/g==",
+ "license": "MIT",
"dependencies": {
- "@azure/msal-common": "13.3.1"
+ "@azure/msal-common": "15.5.0"
},
"engines": {
"node": ">=0.8.0"
}
},
- "node_modules/@azure/msal-browser/node_modules/@azure/msal-common": {
- "version": "13.3.1",
- "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-13.3.1.tgz",
- "integrity": "sha512-Lrk1ozoAtaP/cp53May3v6HtcFSVxdFrg2Pa/1xu5oIvsIwhxW6zSPibKefCOVgd5osgykMi5jjcZHv8XkzZEQ==",
- "engines": {
- "node": ">=0.8.0"
- }
- },
"node_modules/@azure/msal-common": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-7.6.0.tgz",
- "integrity": "sha512-XqfbglUTVLdkHQ8F9UQJtKseRr3sSnr9ysboxtoswvaMVaEfvyLtMoHv9XdKUfOc0qKGzNgRFd9yRjIWVepl6Q==",
+ "version": "15.5.0",
+ "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.5.0.tgz",
+ "integrity": "sha512-u97AJ6m4PB24/Plms9e9iydRcOaxxrHWkan1px5GeWGJfakY1D/r1DmY1+Typ8zWC/5JbNzH1GYpXrorPymz5g==",
+ "license": "MIT",
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/@azure/msal-node": {
- "version": "1.18.4",
- "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.18.4.tgz",
- "integrity": "sha512-Kc/dRvhZ9Q4+1FSfsTFDME/v6+R2Y1fuMty/TfwqE5p9GTPw08BPbKgeWinE8JRHRp+LemjQbUZsn4Q4l6Lszg==",
- "deprecated": "A newer major version of this library is available. Please upgrade to the latest available version.",
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.5.0.tgz",
+ "integrity": "sha512-9cLUmcOZ5FODz3uAhS2C9A1U7xDUTCHVcaNQBYpOd5qCKdKM6ft/ydAfw27vEntuaDgnh5jytOAKsEzEbtoQ1Q==",
+ "license": "MIT",
"dependencies": {
- "@azure/msal-common": "13.3.1",
+ "@azure/msal-common": "15.5.0",
"jsonwebtoken": "^9.0.0",
"uuid": "^8.3.0"
},
"engines": {
- "node": "10 || 12 || 14 || 16 || 18"
- }
- },
- "node_modules/@azure/msal-node/node_modules/@azure/msal-common": {
- "version": "13.3.1",
- "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-13.3.1.tgz",
- "integrity": "sha512-Lrk1ozoAtaP/cp53May3v6HtcFSVxdFrg2Pa/1xu5oIvsIwhxW6zSPibKefCOVgd5osgykMi5jjcZHv8XkzZEQ==",
- "engines": {
- "node": ">=0.8.0"
+ "node": ">=16"
}
},
"node_modules/@babel/code-frame": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
- "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
+ "version": "7.26.2",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
+ "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/highlight": "^7.23.4",
- "chalk": "^2.4.2"
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@babel/code-frame/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "node_modules/@babel/code-frame/node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"dev": true,
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/code-frame/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/code-frame/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/@babel/code-frame/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "node_modules/@babel/code-frame/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/@babel/code-frame/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/code-frame/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
+ "license": "MIT"
},
"node_modules/@babel/compat-data": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz",
- "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==",
+ "version": "7.26.8",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz",
+ "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz",
- "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==",
+ "version": "7.26.10",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz",
+ "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.23.5",
- "@babel/generator": "^7.23.6",
- "@babel/helper-compilation-targets": "^7.23.6",
- "@babel/helper-module-transforms": "^7.23.3",
- "@babel/helpers": "^7.23.9",
- "@babel/parser": "^7.23.9",
- "@babel/template": "^7.23.9",
- "@babel/traverse": "^7.23.9",
- "@babel/types": "^7.23.9",
+ "@babel/code-frame": "^7.26.2",
+ "@babel/generator": "^7.26.10",
+ "@babel/helper-compilation-targets": "^7.26.5",
+ "@babel/helper-module-transforms": "^7.26.0",
+ "@babel/helpers": "^7.26.10",
+ "@babel/parser": "^7.26.10",
+ "@babel/template": "^7.26.9",
+ "@babel/traverse": "^7.26.10",
+ "@babel/types": "^7.26.10",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -1244,58 +1264,51 @@
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/@babel/generator": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
- "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz",
+ "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/types": "^7.23.6",
- "@jridgewell/gen-mapping": "^0.3.2",
- "@jridgewell/trace-mapping": "^0.3.17",
- "jsesc": "^2.5.1"
+ "@babel/parser": "^7.27.0",
+ "@babel/types": "^7.27.0",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^3.0.2"
},
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@babel/generator/node_modules/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true,
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
- "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
+ "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
- "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz",
+ "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.23.5",
- "@babel/helper-validator-option": "^7.23.5",
- "browserslist": "^4.22.2",
+ "@babel/compat-data": "^7.26.8",
+ "@babel/helper-validator-option": "^7.25.9",
+ "browserslist": "^4.24.0",
"lru-cache": "^5.1.1",
"semver": "^6.3.1"
},
@@ -1308,6 +1321,7 @@
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"yallist": "^3.0.2"
}
@@ -1317,6 +1331,7 @@
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
@@ -1325,22 +1340,22 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.23.10",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz",
- "integrity": "sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==",
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz",
+ "integrity": "sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-function-name": "^7.23.0",
- "@babel/helper-member-expression-to-functions": "^7.23.0",
- "@babel/helper-optimise-call-expression": "^7.22.5",
- "@babel/helper-replace-supers": "^7.22.20",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-member-expression-to-functions": "^7.25.9",
+ "@babel/helper-optimise-call-expression": "^7.25.9",
+ "@babel/helper-replace-supers": "^7.26.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+ "@babel/traverse": "^7.27.0",
"semver": "^6.3.1"
},
"engines": {
@@ -1355,79 +1370,49 @@
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
},
- "node_modules/@babel/helper-environment-visitor": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
- "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-function-name": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
- "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
- "dev": true,
- "dependencies": {
- "@babel/template": "^7.22.15",
- "@babel/types": "^7.23.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-hoist-variables": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
- "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
"node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz",
- "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz",
+ "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/types": "^7.23.0"
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
- "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
+ "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/types": "^7.22.15"
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
- "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
+ "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-module-imports": "^7.22.15",
- "@babel/helper-simple-access": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/helper-validator-identifier": "^7.22.20"
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1437,35 +1422,38 @@
}
},
"node_modules/@babel/helper-optimise-call-expression": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz",
- "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz",
+ "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
- "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
+ "version": "7.26.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz",
+ "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-replace-supers": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz",
- "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==",
+ "version": "7.26.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz",
+ "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-member-expression-to-functions": "^7.22.15",
- "@babel/helper-optimise-call-expression": "^7.22.5"
+ "@babel/helper-member-expression-to-functions": "^7.25.9",
+ "@babel/helper-optimise-call-expression": "^7.25.9",
+ "@babel/traverse": "^7.26.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1474,179 +1462,73 @@
"@babel/core": "^7.0.0"
}
},
- "node_modules/@babel/helper-simple-access": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
- "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
"node_modules/@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz",
- "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz",
+ "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-split-export-declaration": {
- "version": "7.22.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
- "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
- "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
+ "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
- "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
+ "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-option": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
- "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
+ "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helpers": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz",
- "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==",
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz",
+ "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/template": "^7.23.9",
- "@babel/traverse": "^7.23.9",
- "@babel/types": "^7.23.9"
+ "@babel/template": "^7.27.0",
+ "@babel/types": "^7.27.0"
},
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@babel/highlight": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
- "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
- "dev": true,
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.22.20",
- "chalk": "^2.4.2",
- "js-tokens": "^4.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/@babel/highlight/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/@babel/highlight/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
- },
- "node_modules/@babel/highlight/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/@babel/parser": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz",
- "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==",
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz",
+ "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.27.0"
+ },
"bin": {
"parser": "bin/babel-parser.js"
},
@@ -1655,14 +1537,15 @@
}
},
"node_modules/@babel/plugin-proposal-decorators": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.9.tgz",
- "integrity": "sha512-hJhBCb0+NnTWybvWq2WpbCYDOcflSbx0t+BYP65e5R9GVnukiDTi+on5bFkk4p7QGuv190H6KfNiV9Knf/3cZA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.9.tgz",
+ "integrity": "sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.23.9",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-decorators": "^7.23.3"
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/plugin-syntax-decorators": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1672,12 +1555,13 @@
}
},
"node_modules/@babel/plugin-syntax-decorators": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.23.3.tgz",
- "integrity": "sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz",
+ "integrity": "sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1687,12 +1571,13 @@
}
},
"node_modules/@babel/plugin-syntax-import-attributes": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz",
- "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==",
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz",
+ "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1706,6 +1591,7 @@
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
"integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
},
@@ -1714,12 +1600,13 @@
}
},
"node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz",
- "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz",
+ "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1729,12 +1616,13 @@
}
},
"node_modules/@babel/plugin-syntax-typescript": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz",
- "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz",
+ "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1744,15 +1632,17 @@
}
},
"node_modules/@babel/plugin-transform-typescript": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz",
- "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==",
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.0.tgz",
+ "integrity": "sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-create-class-features-plugin": "^7.23.6",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-typescript": "^7.23.3"
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-create-class-features-plugin": "^7.27.0",
+ "@babel/helper-plugin-utils": "^7.26.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+ "@babel/plugin-syntax-typescript": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1762,10 +1652,11 @@
}
},
"node_modules/@babel/runtime": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz",
- "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==",
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz",
+ "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"regenerator-runtime": "^0.14.0"
},
@@ -1774,33 +1665,32 @@
}
},
"node_modules/@babel/template": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz",
- "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==",
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz",
+ "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.23.5",
- "@babel/parser": "^7.23.9",
- "@babel/types": "^7.23.9"
+ "@babel/code-frame": "^7.26.2",
+ "@babel/parser": "^7.27.0",
+ "@babel/types": "^7.27.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz",
- "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==",
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz",
+ "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.23.5",
- "@babel/generator": "^7.23.6",
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-function-name": "^7.23.0",
- "@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/parser": "^7.23.9",
- "@babel/types": "^7.23.9",
+ "@babel/code-frame": "^7.26.2",
+ "@babel/generator": "^7.27.0",
+ "@babel/parser": "^7.27.0",
+ "@babel/template": "^7.27.0",
+ "@babel/types": "^7.27.0",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
@@ -1813,28 +1703,36 @@
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/@babel/types": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz",
- "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==",
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz",
+ "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-string-parser": "^7.23.4",
- "@babel/helper-validator-identifier": "^7.22.20",
- "to-fast-properties": "^2.0.0"
+ "@babel/helper-string-parser": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
+ "node_modules/@balena/dockerignore": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz",
+ "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
"node_modules/@csstools/css-parser-algorithms": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.5.0.tgz",
- "integrity": "sha512-abypo6m9re3clXA00eu5syw+oaPHbJTPapu9C4pzNsJ4hdZDzushT50Zhu+iIYXgEe1CxnRMn7ngsbV+MLrlpQ==",
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz",
+ "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==",
"dev": true,
"funding": [
{
@@ -1846,17 +1744,18 @@
"url": "https://opencollective.com/csstools"
}
],
+ "license": "MIT",
"engines": {
"node": "^14 || ^16 || >=18"
},
"peerDependencies": {
- "@csstools/css-tokenizer": "^2.2.3"
+ "@csstools/css-tokenizer": "^2.4.1"
}
},
"node_modules/@csstools/css-tokenizer": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.3.tgz",
- "integrity": "sha512-pp//EvZ9dUmGuGtG1p+n17gTHEOqu9jO+FiCUjNN3BDmyhdA2Jq9QsVeR7K8/2QCK17HSsioPlTW9ZkzoWb3Lg==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz",
+ "integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==",
"dev": true,
"funding": [
{
@@ -1868,14 +1767,15 @@
"url": "https://opencollective.com/csstools"
}
],
+ "license": "MIT",
"engines": {
"node": "^14 || ^16 || >=18"
}
},
"node_modules/@csstools/media-query-list-parser": {
- "version": "2.1.7",
- "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.7.tgz",
- "integrity": "sha512-lHPKJDkPUECsyAvD60joYfDmp8UERYxHGkFfyLJFTVK/ERJe0sVlIFLXU5XFxdjNDTerp5L4KeaKG+Z5S94qxQ==",
+ "version": "2.1.13",
+ "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz",
+ "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==",
"dev": true,
"funding": [
{
@@ -1887,18 +1787,19 @@
"url": "https://opencollective.com/csstools"
}
],
+ "license": "MIT",
"engines": {
"node": "^14 || ^16 || >=18"
},
"peerDependencies": {
- "@csstools/css-parser-algorithms": "^2.5.0",
- "@csstools/css-tokenizer": "^2.2.3"
+ "@csstools/css-parser-algorithms": "^2.7.1",
+ "@csstools/css-tokenizer": "^2.4.1"
}
},
"node_modules/@csstools/selector-specificity": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.1.tgz",
- "integrity": "sha512-NPljRHkq4a14YzZ3YD406uaxh7s0g6eAq3L9aLOWywoqe8PkYamAvtsh7KNX6c++ihDrJ0RiU+/z7rGnhlZ5ww==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz",
+ "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==",
"dev": true,
"funding": [
{
@@ -1910,6 +1811,7 @@
"url": "https://opencollective.com/csstools"
}
],
+ "license": "MIT-0",
"engines": {
"node": "^14 || ^16 || >=18"
},
@@ -1922,6 +1824,7 @@
"resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.40.1.tgz",
"integrity": "sha512-YORCdZSusAlBrFpZ77pJjc5r1bQs5caPWtAu+WWmiSo+8XaUzseapVrfAtiRFbQWnrBxxLLEwF6f6ZG/UgCQCg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"comment-parser": "1.4.0",
"esquery": "^1.5.0",
@@ -1932,13 +1835,14 @@
}
},
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz",
- "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
"cpu": [
"ppc64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"aix"
@@ -1948,13 +1852,14 @@
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz",
- "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
+ "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
"cpu": [
"arm"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"android"
@@ -1964,13 +1869,14 @@
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz",
- "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
+ "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"android"
@@ -1980,13 +1886,14 @@
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz",
- "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
+ "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"android"
@@ -1996,13 +1903,14 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz",
- "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
+ "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -2012,13 +1920,14 @@
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz",
- "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
+ "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -2028,13 +1937,14 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz",
- "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
+ "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"freebsd"
@@ -2044,13 +1954,14 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz",
- "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
+ "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"freebsd"
@@ -2060,13 +1971,14 @@
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz",
- "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
+ "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
"cpu": [
"arm"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -2076,13 +1988,14 @@
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz",
- "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
+ "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -2092,13 +2005,14 @@
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz",
- "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
+ "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
"cpu": [
"ia32"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -2108,13 +2022,14 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz",
- "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
+ "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
"cpu": [
"loong64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -2124,13 +2039,14 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz",
- "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
+ "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
"cpu": [
"mips64el"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -2140,13 +2056,14 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz",
- "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
"cpu": [
"ppc64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -2156,13 +2073,14 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz",
- "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
+ "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
"cpu": [
"riscv64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -2172,13 +2090,14 @@
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz",
- "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
+ "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
"cpu": [
"s390x"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -2188,13 +2107,14 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz",
- "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
+ "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -2204,13 +2124,14 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz",
- "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"netbsd"
@@ -2220,13 +2141,14 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz",
- "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"openbsd"
@@ -2236,13 +2158,14 @@
}
},
"node_modules/@esbuild/sunos-x64": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz",
- "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
+ "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"sunos"
@@ -2252,13 +2175,14 @@
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz",
- "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
+ "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
@@ -2268,13 +2192,14 @@
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz",
- "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
+ "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
"cpu": [
"ia32"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
@@ -2284,13 +2209,14 @@
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz",
- "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
+ "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
@@ -2300,25 +2226,30 @@
}
},
"node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
- "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz",
+ "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "eslint-visitor-keys": "^3.3.0"
+ "eslint-visitor-keys": "^3.4.3"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
"peerDependencies": {
"eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
}
},
"node_modules/@eslint-community/regexpp": {
- "version": "4.10.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
- "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
+ "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
@@ -2328,6 +2259,7 @@
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz",
"integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
@@ -2351,6 +2283,7 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -2361,6 +2294,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -2369,10 +2303,11 @@
}
},
"node_modules/@fastify/busboy": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz",
- "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz",
+ "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14"
}
@@ -2383,6 +2318,7 @@
"integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -2393,6 +2329,7 @@
"integrity": "sha512-YUcsLQKYb6DmaJjIHdDWpBIGCcyE/W+p/LMGvjQem55Mm2XWVAP5kWTMKWLv9lwpCVjpLxPyOMOyUocP1GxrtA==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"dependencies": {
"@fortawesome/fontawesome-common-types": "^0.2.36"
},
@@ -2406,6 +2343,7 @@
"integrity": "sha512-9VNNnU3CXHy9XednJ3wzQp6SwNwT3XaM26oS4Rp391GsxVYA+0oDR2J194YCIWf7jNRCYKjUCOduxdceLrx+xw==",
"dev": true,
"hasInstallScript": true,
+ "license": "(CC-BY-4.0 AND MIT)",
"dependencies": {
"@fortawesome/fontawesome-common-types": "^0.2.36"
},
@@ -2419,6 +2357,7 @@
"integrity": "sha512-JLmQfz6tdtwxoihXLg6lT78BorrFyCf59SAwBM6qV/0zXyVeDygJVb3fk+j5Qat+Yvcxp1buLTY5iDh1ZSAQ8w==",
"dev": true,
"hasInstallScript": true,
+ "license": "(CC-BY-4.0 AND MIT)",
"dependencies": {
"@fortawesome/fontawesome-common-types": "^0.2.36"
},
@@ -2427,10 +2366,11 @@
}
},
"node_modules/@fortawesome/vue-fontawesome": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.5.tgz",
- "integrity": "sha512-isZZ4+utQH9qg9cWxWYHQ9GwI3r5FeO7GnmzKYV+gbjxcptQhh+F99iZXi1Y9AvFUEgy8kRpAdvDlbb3drWFrw==",
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.8.tgz",
+ "integrity": "sha512-yyHHAj4G8pQIDfaIsMvQpwKMboIZtcHTUvPqXjOHyldh1O1vZfH4W03VDPv5RvI9P6DLTzJQlmVgj9wCf7c2Fw==",
"dev": true,
+ "license": "MIT",
"peerDependencies": {
"@fortawesome/fontawesome-svg-core": "~1 || ~6",
"vue": ">= 3.0.0 < 4"
@@ -2440,12 +2380,14 @@
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
"integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==",
+ "license": "MIT",
"optional": true
},
"node_modules/@grpc/grpc-js": {
- "version": "1.7.3",
- "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.7.3.tgz",
- "integrity": "sha512-H9l79u4kJ2PVSxUNA08HMYAnUBLj9v6KjYQ7SQ71hOZcEXhShE/y5iQCesP8+6/Ik/7i2O0a10bPquIcYfufog==",
+ "version": "1.8.22",
+ "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.22.tgz",
+ "integrity": "sha512-oAjDdN7fzbUi+4hZjKG96MR6KTEubAeMpQEb+77qy+3r0Ua5xTFuie6JOLr4ZZgl5g+W5/uRTS2M1V8mVAFPuA==",
+ "license": "Apache-2.0",
"dependencies": {
"@grpc/proto-loader": "^0.7.0",
"@types/node": ">=12.12.47"
@@ -2455,13 +2397,14 @@
}
},
"node_modules/@grpc/proto-loader": {
- "version": "0.7.10",
- "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.10.tgz",
- "integrity": "sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ==",
+ "version": "0.7.13",
+ "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.13.tgz",
+ "integrity": "sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==",
+ "license": "Apache-2.0",
"dependencies": {
"lodash.camelcase": "^4.3.0",
"long": "^5.0.0",
- "protobufjs": "^7.2.4",
+ "protobufjs": "^7.2.5",
"yargs": "^17.7.2"
},
"bin": {
@@ -2475,13 +2418,15 @@
"version": "9.3.0",
"resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
"integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==",
- "dev": true
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/@hapi/topo": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz",
"integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@hapi/hoek": "^9.0.0"
}
@@ -2490,7 +2435,9 @@
"version": "0.9.5",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz",
"integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==",
+ "deprecated": "Use @eslint/config-array instead",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"@humanwhocodes/object-schema": "^1.2.1",
"debug": "^4.1.1",
@@ -2505,6 +2452,7 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -2515,6 +2463,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -2526,83 +2475,62 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
- "dev": true
+ "deprecated": "Use @eslint/object-schema instead",
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/@intlify/core-base": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.2.2.tgz",
- "integrity": "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==",
+ "version": "9.14.4",
+ "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.14.4.tgz",
+ "integrity": "sha512-vtZCt7NqWhKEtHa3SD/322DlgP5uR9MqWxnE0y8Q0tjDs9H5Lxhss+b5wv8rmuXRoHKLESNgw9d+EN9ybBbj9g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@intlify/devtools-if": "9.2.2",
- "@intlify/message-compiler": "9.2.2",
- "@intlify/shared": "9.2.2",
- "@intlify/vue-devtools": "9.2.2"
+ "@intlify/message-compiler": "9.14.4",
+ "@intlify/shared": "9.14.4"
},
"engines": {
- "node": ">= 14"
- }
- },
- "node_modules/@intlify/devtools-if": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.2.2.tgz",
- "integrity": "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==",
- "dev": true,
- "dependencies": {
- "@intlify/shared": "9.2.2"
+ "node": ">= 16"
},
- "engines": {
- "node": ">= 14"
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
}
},
"node_modules/@intlify/message-compiler": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.2.2.tgz",
- "integrity": "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==",
+ "version": "9.14.4",
+ "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.14.4.tgz",
+ "integrity": "sha512-vcyCLiVRN628U38c3PbahrhbbXrckrM9zpy0KZVlDk2Z0OnGwv8uQNNXP3twwGtfLsCf4gu3ci6FMIZnPaqZsw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@intlify/shared": "9.2.2",
- "source-map": "0.6.1"
+ "@intlify/shared": "9.14.4",
+ "source-map-js": "^1.0.2"
},
"engines": {
- "node": ">= 14"
- }
- },
- "node_modules/@intlify/message-compiler/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
}
},
"node_modules/@intlify/shared": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.2.2.tgz",
- "integrity": "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==",
+ "version": "9.14.4",
+ "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.14.4.tgz",
+ "integrity": "sha512-P9zv6i1WvMc9qDBWvIgKkymjY2ptIiQ065PjDv7z7fDqH3J/HBRBN5IoiR46r/ujRcU7hCuSIZWvCAFCyuOYZA==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">= 14"
- }
- },
- "node_modules/@intlify/vue-devtools": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz",
- "integrity": "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==",
- "dev": true,
- "dependencies": {
- "@intlify/core-base": "9.2.2",
- "@intlify/shared": "9.2.2"
+ "node": ">= 16"
},
- "engines": {
- "node": ">= 14"
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
}
},
"node_modules/@isaacs/cliui": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
"integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "license": "ISC",
"dependencies": {
"string-width": "^5.1.2",
"string-width-cjs": "npm:string-width@^4.2.0",
@@ -2616,9 +2544,10 @@
}
},
"node_modules/@isaacs/cliui/node_modules/ansi-regex": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -2630,6 +2559,7 @@
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
"integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -2640,12 +2570,14 @@
"node_modules/@isaacs/cliui/node_modules/emoji-regex": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "license": "MIT"
},
"node_modules/@isaacs/cliui/node_modules/string-width": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
"integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "license": "MIT",
"dependencies": {
"eastasianwidth": "^0.2.0",
"emoji-regex": "^9.2.2",
@@ -2662,6 +2594,7 @@
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
},
@@ -2676,6 +2609,7 @@
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
"integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^6.1.0",
"string-width": "^5.0.1",
@@ -2689,78 +2623,98 @@
}
},
"node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
- "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
+ "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/set-array": "^1.2.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
+ "@jridgewell/trace-mapping": "^0.3.24"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
- "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/source-map": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz",
- "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==",
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
+ "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
}
},
"node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
- "dev": true
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.22",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz",
- "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==",
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
"node_modules/@js-joda/core": {
- "version": "5.6.1",
- "resolved": "https://registry.npmjs.org/@js-joda/core/-/core-5.6.1.tgz",
- "integrity": "sha512-Xla/d7ZMMR6+zRd6lTio0wRZECfcfFJP7GGe9A9L4tDOlD5CX4YcZ4YZle9w58bBYzssojVapI84RraKWDQZRg=="
+ "version": "5.6.5",
+ "resolved": "https://registry.npmjs.org/@js-joda/core/-/core-5.6.5.tgz",
+ "integrity": "sha512-3zwefSMwHpu8iVUW8YYz227sIv6UFqO31p1Bf1ZH/Vom7CmNyUsXjDBlnNzcuhmOL1XfxZ3nvND42kR23XlbcQ==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@js-sdsl/ordered-map": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz",
+ "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/js-sdsl"
+ }
},
"node_modules/@kurkle/color": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz",
- "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==",
- "dev": true
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz",
+ "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@louislam/ping": {
"version": "0.4.4-mod.1",
"resolved": "https://registry.npmjs.org/@louislam/ping/-/ping-0.4.4-mod.1.tgz",
"integrity": "sha512-uMq6qwL9/VYh2YBbDEhM7ZzJ8YON+juw/3k+28P3s9ue3uDMQ56MNPfywXoRpsxkU8RgjN0TDzEhQDzO1WisMw==",
+ "license": "MIT",
"dependencies": {
"command-exists": "~1.2.9",
"underscore": "~1.13.6"
@@ -2774,6 +2728,7 @@
"resolved": "https://registry.npmjs.org/@louislam/sqlite3/-/sqlite3-15.1.6.tgz",
"integrity": "sha512-cVf7hcMrfywYnycatLvorngTFpL3BSWvEy7/NrEfcTyQX8xxj9fdeD553oCTv5fIAk85fluo6mzPq89V3YzrVA==",
"hasInstallScript": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@mapbox/node-pre-gyp": "^1.0.0",
"node-addon-api": "^4.2.0",
@@ -2795,6 +2750,7 @@
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz",
"integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==",
+ "license": "BSD-3-Clause",
"dependencies": {
"detect-libc": "^2.0.0",
"https-proxy-agent": "^5.0.0",
@@ -2810,29 +2766,69 @@
"node-pre-gyp": "bin/node-pre-gyp"
}
},
+ "node_modules/@mapbox/node-pre-gyp/node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/@mapbox/node-pre-gyp/node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/@mongodb-js/saslprep": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.4.tgz",
- "integrity": "sha512-8zJ8N1x51xo9hwPh6AWnKdLGEC5N3lDa6kms1YHmFBoRhTpJR6HG8wWk0td1MVCu9cD4YBrvjZEtd5Obw0Fbnw==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.2.2.tgz",
+ "integrity": "sha512-EB0O3SCSNRUFk66iRCpI+cXzIjdswfCs7F6nOC3RAGJ7xr5YhaicvsRwJ9eyzYvYRlCSDUO/c7g4yNulxKC1WA==",
+ "license": "MIT",
"optional": true,
"dependencies": {
"sparse-bitfield": "^3.0.3"
}
},
"node_modules/@noble/ciphers": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.2.0.tgz",
- "integrity": "sha512-6YBxJDAapHSdd3bLDv6x2wRPwq4QFMUaB3HvljNBUTThDd12eSm7/3F+2lnfzx2jvM+S6Nsy0jEt9QbPqSwqRw==",
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.5.3.tgz",
+ "integrity": "sha512-B0+6IIHiqEs3BPMT0hcRmHvEj2QHOLu+uwt+tqDDeVd0oyVzh7BPrDcPjRnV1PV/5LaknXJJQvOuRGR0zQJz+w==",
+ "license": "MIT",
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/@noble/curves": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz",
- "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz",
+ "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==",
+ "license": "MIT",
"dependencies": {
- "@noble/hashes": "1.3.1"
+ "@noble/hashes": "1.3.2"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@noble/curves/node_modules/@noble/hashes": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz",
+ "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 16"
},
"funding": {
"url": "https://paulmillr.com/funding/"
@@ -2842,6 +2838,7 @@
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz",
"integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==",
+ "license": "MIT",
"engines": {
"node": ">= 16"
},
@@ -2854,6 +2851,7 @@
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@nodelib/fs.stat": "2.0.5",
"run-parallel": "^1.1.9"
@@ -2867,6 +2865,7 @@
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 8"
}
@@ -2876,6 +2875,7 @@
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@nodelib/fs.scandir": "2.1.5",
"fastq": "^1.6.0"
@@ -2888,6 +2888,7 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz",
"integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==",
+ "license": "ISC",
"optional": true,
"dependencies": {
"@gar/promisify": "^1.0.1",
@@ -2899,6 +2900,7 @@
"resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz",
"integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==",
"deprecated": "This functionality has been moved to @npmcli/fs",
+ "license": "MIT",
"optional": true,
"dependencies": {
"mkdirp": "^1.0.4",
@@ -2909,120 +2911,182 @@
}
},
"node_modules/@octokit/auth-token": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz",
- "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz",
+ "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==",
"dev": true,
- "dependencies": {
- "@octokit/types": "^6.0.3"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 18"
}
},
"node_modules/@octokit/core": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz",
- "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==",
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.1.tgz",
+ "integrity": "sha512-dKYCMuPO1bmrpuogcjQ8z7ICCH3FP6WmxpwC03yjzGfZhj9fTJg6+bS1+UAplekbN2C+M61UNllGOOoAfGCrdQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@octokit/auth-token": "^2.4.4",
- "@octokit/graphql": "^4.5.8",
- "@octokit/request": "^5.6.3",
- "@octokit/request-error": "^2.0.5",
- "@octokit/types": "^6.0.3",
+ "@octokit/auth-token": "^4.0.0",
+ "@octokit/graphql": "^7.1.0",
+ "@octokit/request": "^8.4.1",
+ "@octokit/request-error": "^5.1.1",
+ "@octokit/types": "^13.0.0",
"before-after-hook": "^2.2.0",
"universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
}
},
"node_modules/@octokit/endpoint": {
- "version": "6.0.12",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz",
- "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==",
+ "version": "9.0.6",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz",
+ "integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@octokit/types": "^6.0.3",
- "is-plain-object": "^5.0.0",
+ "@octokit/types": "^13.1.0",
"universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
}
},
"node_modules/@octokit/graphql": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz",
- "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.1.tgz",
+ "integrity": "sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@octokit/request": "^5.6.0",
- "@octokit/types": "^6.0.3",
+ "@octokit/request": "^8.4.1",
+ "@octokit/types": "^13.0.0",
"universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
}
},
"node_modules/@octokit/openapi-types": {
- "version": "12.11.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz",
- "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==",
- "dev": true
+ "version": "24.2.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz",
+ "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@octokit/plugin-paginate-rest": {
- "version": "2.21.3",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz",
- "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==",
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.2.tgz",
+ "integrity": "sha512-u3KYkGF7GcZnSD/3UP0S7K5XUFT2FkOQdcfXZGZQPGv3lm4F2Xbf71lvjldr8c1H3nNbF+33cLEkWYbokGWqiQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@octokit/types": "^6.40.0"
+ "@octokit/types": "^12.6.0"
+ },
+ "engines": {
+ "node": ">= 18"
},
"peerDependencies": {
- "@octokit/core": ">=2"
+ "@octokit/core": "5"
+ }
+ },
+ "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": {
+ "version": "20.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz",
+ "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": {
+ "version": "12.6.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz",
+ "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/openapi-types": "^20.0.0"
}
},
"node_modules/@octokit/plugin-rest-endpoint-methods": {
- "version": "5.16.2",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz",
- "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==",
+ "version": "10.4.1",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz",
+ "integrity": "sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@octokit/types": "^6.39.0",
- "deprecation": "^2.3.1"
+ "@octokit/types": "^12.6.0"
+ },
+ "engines": {
+ "node": ">= 18"
},
"peerDependencies": {
- "@octokit/core": ">=3"
+ "@octokit/core": "5"
+ }
+ },
+ "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": {
+ "version": "20.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz",
+ "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": {
+ "version": "12.6.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz",
+ "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/openapi-types": "^20.0.0"
}
},
"node_modules/@octokit/request": {
- "version": "5.6.3",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz",
- "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==",
+ "version": "8.4.1",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.1.tgz",
+ "integrity": "sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@octokit/endpoint": "^6.0.1",
- "@octokit/request-error": "^2.1.0",
- "@octokit/types": "^6.16.1",
- "is-plain-object": "^5.0.0",
- "node-fetch": "^2.6.7",
+ "@octokit/endpoint": "^9.0.6",
+ "@octokit/request-error": "^5.1.1",
+ "@octokit/types": "^13.1.0",
"universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
}
},
"node_modules/@octokit/request-error": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz",
- "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz",
+ "integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@octokit/types": "^6.0.3",
+ "@octokit/types": "^13.1.0",
"deprecation": "^2.0.0",
"once": "^1.4.0"
+ },
+ "engines": {
+ "node": ">= 18"
}
},
"node_modules/@octokit/types": {
- "version": "6.41.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz",
- "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==",
+ "version": "13.10.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz",
+ "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@octokit/openapi-types": "^12.11.0"
+ "@octokit/openapi-types": "^24.2.0"
}
},
"node_modules/@pkgjs/parseargs": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
"integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=14"
@@ -3032,7 +3096,9 @@
"version": "1.39.0",
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.39.0.tgz",
"integrity": "sha512-3u1iFqgzl7zr004bGPYiN/5EZpRUSFddQBra8Rqll5N0/vfpqlP9I9EXqAoGacuAbX6c9Ulg/Cjqglp5VkK6UQ==",
+ "deprecated": "Please update to the latest version of Playwright to test up-to-date browsers.",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"playwright": "1.39.0"
},
@@ -3044,16 +3110,18 @@
}
},
"node_modules/@polka/url": {
- "version": "1.0.0-next.24",
- "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.24.tgz",
- "integrity": "sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==",
- "dev": true
+ "version": "1.0.0-next.29",
+ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz",
+ "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@popperjs/core": {
"version": "2.10.2",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz",
"integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ==",
"dev": true,
+ "license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
@@ -3062,27 +3130,32 @@
"node_modules/@protobufjs/aspromise": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
- "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="
+ "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==",
+ "license": "BSD-3-Clause"
},
"node_modules/@protobufjs/base64": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
- "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
+ "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==",
+ "license": "BSD-3-Clause"
},
"node_modules/@protobufjs/codegen": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
- "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
+ "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==",
+ "license": "BSD-3-Clause"
},
"node_modules/@protobufjs/eventemitter": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
- "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q=="
+ "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==",
+ "license": "BSD-3-Clause"
},
"node_modules/@protobufjs/fetch": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
"integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
+ "license": "BSD-3-Clause",
"dependencies": {
"@protobufjs/aspromise": "^1.1.1",
"@protobufjs/inquire": "^1.1.0"
@@ -3091,32 +3164,38 @@
"node_modules/@protobufjs/float": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
- "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="
+ "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==",
+ "license": "BSD-3-Clause"
},
"node_modules/@protobufjs/inquire": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
- "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q=="
+ "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==",
+ "license": "BSD-3-Clause"
},
"node_modules/@protobufjs/path": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
- "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="
+ "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==",
+ "license": "BSD-3-Clause"
},
"node_modules/@protobufjs/pool": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
- "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="
+ "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==",
+ "license": "BSD-3-Clause"
},
"node_modules/@protobufjs/utf8": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
- "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="
+ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==",
+ "license": "BSD-3-Clause"
},
"node_modules/@redis/bloom": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.1.0.tgz",
"integrity": "sha512-9QovlxmpRtvxVbN0UBcv8WfdSMudNZZTFqCsnBszcQXqaZb/TVe30ScgGEO7u1EAIacTPAo7/oCYjYAxiHLanQ==",
+ "license": "MIT",
"peerDependencies": {
"@redis/client": "^1.0.0"
}
@@ -3125,6 +3204,7 @@
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/@redis/client/-/client-1.4.2.tgz",
"integrity": "sha512-oUdEjE0I7JS5AyaAjkD3aOXn9NhO7XKyPyXEyrgFDu++VrVBHUPnV6dgEya9TcMuj5nIJRuCzCm8ZP+c9zCHPw==",
+ "license": "MIT",
"dependencies": {
"cluster-key-slot": "1.1.1",
"generic-pool": "3.9.0",
@@ -3138,6 +3218,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.0.tgz",
"integrity": "sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==",
+ "license": "MIT",
"peerDependencies": {
"@redis/client": "^1.0.0"
}
@@ -3146,6 +3227,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.4.tgz",
"integrity": "sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==",
+ "license": "MIT",
"peerDependencies": {
"@redis/client": "^1.0.0"
}
@@ -3154,6 +3236,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.0.tgz",
"integrity": "sha512-NyFZEVnxIJEybpy+YskjgOJRNsfTYqaPbK/Buv6W2kmFNaRk85JiqjJZA5QkRmWvGbyQYwoO5QfDi2wHskKrQQ==",
+ "license": "MIT",
"peerDependencies": {
"@redis/client": "^1.0.0"
}
@@ -3162,19 +3245,21 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.4.tgz",
"integrity": "sha512-ThUIgo2U/g7cCuZavucQTQzA9g9JbDDY2f64u3AbAoz/8vE2lt2U37LamDUVChhaDA3IRT9R6VvJwqnUfTJzng==",
+ "license": "MIT",
"peerDependencies": {
"@redis/client": "^1.0.0"
}
},
"node_modules/@rollup/pluginutils": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
- "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz",
+ "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/estree": "^1.0.0",
"estree-walker": "^2.0.2",
- "picomatch": "^2.3.1"
+ "picomatch": "^4.0.2"
},
"engines": {
"node": ">=14.0.0"
@@ -3188,170 +3273,294 @@
}
}
},
+ "node_modules/@rollup/pluginutils/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz",
- "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==",
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.39.0.tgz",
+ "integrity": "sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==",
"cpu": [
"arm"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"android"
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz",
- "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==",
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.39.0.tgz",
+ "integrity": "sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"android"
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz",
- "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==",
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.39.0.tgz",
+ "integrity": "sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz",
- "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==",
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.39.0.tgz",
+ "integrity": "sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.39.0.tgz",
+ "integrity": "sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.39.0.tgz",
+ "integrity": "sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz",
- "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==",
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.39.0.tgz",
+ "integrity": "sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==",
"cpu": [
"arm"
],
"dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.39.0.tgz",
+ "integrity": "sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz",
- "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==",
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.39.0.tgz",
+ "integrity": "sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz",
- "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==",
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.39.0.tgz",
+ "integrity": "sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.39.0.tgz",
+ "integrity": "sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.39.0.tgz",
+ "integrity": "sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz",
- "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==",
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.39.0.tgz",
+ "integrity": "sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==",
"cpu": [
"riscv64"
],
"dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.39.0.tgz",
+ "integrity": "sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.39.0.tgz",
+ "integrity": "sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz",
- "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==",
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.39.0.tgz",
+ "integrity": "sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz",
- "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==",
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.39.0.tgz",
+ "integrity": "sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz",
- "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==",
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.39.0.tgz",
+ "integrity": "sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz",
- "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==",
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.39.0.tgz",
+ "integrity": "sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==",
"cpu": [
"ia32"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz",
- "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==",
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.39.0.tgz",
+ "integrity": "sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
@@ -3366,12 +3575,14 @@
"type": "individual",
"url": "https://paulmillr.com/funding/"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/@scure/bip32": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.1.tgz",
"integrity": "sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==",
+ "license": "MIT",
"dependencies": {
"@noble/curves": "~1.1.0",
"@noble/hashes": "~1.3.1",
@@ -3381,10 +3592,23 @@
"url": "https://paulmillr.com/funding/"
}
},
+ "node_modules/@scure/bip32/node_modules/@noble/curves": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz",
+ "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "1.3.1"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
"node_modules/@scure/bip39": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz",
"integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==",
+ "license": "MIT",
"dependencies": {
"@noble/hashes": "~1.3.0",
"@scure/base": "~1.1.0"
@@ -3393,11 +3617,19 @@
"url": "https://paulmillr.com/funding/"
}
},
+ "node_modules/@sec-ant/readable-stream": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz",
+ "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@sideway/address": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz",
"integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@hapi/hoek": "^9.0.0"
}
@@ -3406,596 +3638,670 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz",
"integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==",
- "dev": true
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/@sideway/pinpoint": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz",
"integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==",
- "dev": true
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/@sindresorhus/is": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz",
- "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==",
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
+ "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
+ "license": "MIT",
"engines": {
- "node": ">=14.16"
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sindresorhus/is?sponsor=1"
}
},
+ "node_modules/@sindresorhus/merge-streams": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
+ "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@smithy/abort-controller": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.1.1.tgz",
- "integrity": "sha512-1+qdrUqLhaALYL0iOcN43EP6yAXXQ2wWZ6taf4S2pNGowmOc5gx+iMQv+E42JizNJjB0+gEadOXeV1Bf7JWL1Q==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.2.tgz",
+ "integrity": "sha512-Sl/78VDtgqKxN2+1qduaVE140XF+Xg+TafkncspwM4jFP/LHr76ZHmIY/y3V1M0mMLNk+Je6IGbzxy23RSToMw==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/config-resolver": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.1.1.tgz",
- "integrity": "sha512-lxfLDpZm+AWAHPFZps5JfDoO9Ux1764fOgvRUBpHIO8HWHcSN1dkgsago1qLRVgm1BZ8RCm8cgv99QvtaOWIhw==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.1.0.tgz",
+ "integrity": "sha512-8smPlwhga22pwl23fM5ew4T9vfLUCeFXlcqNOCD5M5h8VmNPNUE9j6bQSuRXpDSV11L/E/SwEBQuW8hr6+nS1A==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/node-config-provider": "^2.2.1",
- "@smithy/types": "^2.9.1",
- "@smithy/util-config-provider": "^2.2.1",
- "@smithy/util-middleware": "^2.1.1",
- "tslib": "^2.5.0"
+ "@smithy/node-config-provider": "^4.0.2",
+ "@smithy/types": "^4.2.0",
+ "@smithy/util-config-provider": "^4.0.0",
+ "@smithy/util-middleware": "^4.0.2",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/core": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.3.1.tgz",
- "integrity": "sha512-tf+NIu9FkOh312b6M9G4D68is4Xr7qptzaZGZUREELF8ysE1yLKphqt7nsomjKZVwW7WE5pDDex9idowNGRQ/Q==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.2.0.tgz",
+ "integrity": "sha512-k17bgQhVZ7YmUvA8at4af1TDpl0NDMBuBKJl8Yg0nrefwmValU+CnA5l/AriVdQNthU/33H3nK71HrLgqOPr1Q==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/middleware-endpoint": "^2.4.1",
- "@smithy/middleware-retry": "^2.1.1",
- "@smithy/middleware-serde": "^2.1.1",
- "@smithy/protocol-http": "^3.1.1",
- "@smithy/smithy-client": "^2.3.1",
- "@smithy/types": "^2.9.1",
- "@smithy/util-middleware": "^2.1.1",
- "tslib": "^2.5.0"
+ "@smithy/middleware-serde": "^4.0.3",
+ "@smithy/protocol-http": "^5.1.0",
+ "@smithy/types": "^4.2.0",
+ "@smithy/util-body-length-browser": "^4.0.0",
+ "@smithy/util-middleware": "^4.0.2",
+ "@smithy/util-stream": "^4.2.0",
+ "@smithy/util-utf8": "^4.0.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/credential-provider-imds": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.2.1.tgz",
- "integrity": "sha512-7XHjZUxmZYnONheVQL7j5zvZXga+EWNgwEAP6OPZTi7l8J4JTeNh9aIOfE5fKHZ/ee2IeNOh54ZrSna+Vc6TFA==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.2.tgz",
+ "integrity": "sha512-32lVig6jCaWBHnY+OEQ6e6Vnt5vDHaLiydGrwYMW9tPqO688hPGTYRamYJ1EptxEC2rAwJrHWmPoKRBl4iTa8w==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/node-config-provider": "^2.2.1",
- "@smithy/property-provider": "^2.1.1",
- "@smithy/types": "^2.9.1",
- "@smithy/url-parser": "^2.1.1",
- "tslib": "^2.5.0"
+ "@smithy/node-config-provider": "^4.0.2",
+ "@smithy/property-provider": "^4.0.2",
+ "@smithy/types": "^4.2.0",
+ "@smithy/url-parser": "^4.0.2",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/eventstream-codec": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.1.1.tgz",
- "integrity": "sha512-E8KYBxBIuU4c+zrpR22VsVrOPoEDzk35bQR3E+xm4k6Pa6JqzkDOdMyf9Atac5GPNKHJBdVaQ4JtjdWX2rl/nw==",
- "optional": true,
- "dependencies": {
- "@aws-crypto/crc32": "3.0.0",
- "@smithy/types": "^2.9.1",
- "@smithy/util-hex-encoding": "^2.1.1",
- "tslib": "^2.5.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/fetch-http-handler": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.4.1.tgz",
- "integrity": "sha512-VYGLinPsFqH68lxfRhjQaSkjXM7JysUOJDTNjHBuN/ykyRb2f1gyavN9+VhhPTWCy32L4yZ2fdhpCs/nStEicg==",
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.0.2.tgz",
+ "integrity": "sha512-+9Dz8sakS9pe7f2cBocpJXdeVjMopUDLgZs1yWeu7h++WqSbjUYv/JAJwKwXw1HV6gq1jyWjxuyn24E2GhoEcQ==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/protocol-http": "^3.1.1",
- "@smithy/querystring-builder": "^2.1.1",
- "@smithy/types": "^2.9.1",
- "@smithy/util-base64": "^2.1.1",
- "tslib": "^2.5.0"
+ "@smithy/protocol-http": "^5.1.0",
+ "@smithy/querystring-builder": "^4.0.2",
+ "@smithy/types": "^4.2.0",
+ "@smithy/util-base64": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/hash-node": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.1.1.tgz",
- "integrity": "sha512-Qhoq0N8f2OtCnvUpCf+g1vSyhYQrZjhSwvJ9qvR8BUGOtTXiyv2x1OD2e6jVGmlpC4E4ax1USHoyGfV9JFsACg==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.0.2.tgz",
+ "integrity": "sha512-VnTpYPnRUE7yVhWozFdlxcYknv9UN7CeOqSrMH+V877v4oqtVYuoqhIhtSjmGPvYrYnAkaM61sLMKHvxL138yg==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.1",
- "@smithy/util-buffer-from": "^2.1.1",
- "@smithy/util-utf8": "^2.1.1",
- "tslib": "^2.5.0"
+ "@smithy/types": "^4.2.0",
+ "@smithy/util-buffer-from": "^4.0.0",
+ "@smithy/util-utf8": "^4.0.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/invalid-dependency": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.1.1.tgz",
- "integrity": "sha512-7WTgnKw+VPg8fxu2v9AlNOQ5yaz6RA54zOVB4f6vQuR0xFKd+RzlCpt0WidYTsye7F+FYDIaS/RnJW4pxjNInw==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.0.2.tgz",
+ "integrity": "sha512-GatB4+2DTpgWPday+mnUkoumP54u/MDM/5u44KF9hIu8jF0uafZtQLcdfIKkIcUNuF/fBojpLEHZS/56JqPeXQ==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/is-array-buffer": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.1.1.tgz",
- "integrity": "sha512-xozSQrcUinPpNPNPds4S7z/FakDTh1MZWtRP/2vQtYB/u3HYrX2UXuZs+VhaKBd6Vc7g2XPr2ZtwGBNDN6fNKQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.0.0.tgz",
+ "integrity": "sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "tslib": "^2.5.0"
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/middleware-content-length": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.1.1.tgz",
- "integrity": "sha512-rSr9ezUl9qMgiJR0UVtVOGEZElMdGFyl8FzWEF5iEKTlcWxGr2wTqGfDwtH3LAB7h+FPkxqv4ZU4cpuCN9Kf/g==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.0.2.tgz",
+ "integrity": "sha512-hAfEXm1zU+ELvucxqQ7I8SszwQ4znWMbNv6PLMndN83JJN41EPuS93AIyh2N+gJ6x8QFhzSO6b7q2e6oClDI8A==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/protocol-http": "^3.1.1",
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@smithy/protocol-http": "^5.1.0",
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/middleware-endpoint": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.4.1.tgz",
- "integrity": "sha512-XPZTb1E2Oav60Ven3n2PFx+rX9EDsU/jSTA8VDamt7FXks67ekjPY/XrmmPDQaFJOTUHJNKjd8+kZxVO5Ael4Q==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.0.tgz",
+ "integrity": "sha512-xhLimgNCbCzsUppRTGXWkZywksuTThxaIB0HwbpsVLY5sceac4e1TZ/WKYqufQLaUy+gUSJGNdwD2jo3cXL0iA==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/middleware-serde": "^2.1.1",
- "@smithy/node-config-provider": "^2.2.1",
- "@smithy/shared-ini-file-loader": "^2.3.1",
- "@smithy/types": "^2.9.1",
- "@smithy/url-parser": "^2.1.1",
- "@smithy/util-middleware": "^2.1.1",
- "tslib": "^2.5.0"
+ "@smithy/core": "^3.2.0",
+ "@smithy/middleware-serde": "^4.0.3",
+ "@smithy/node-config-provider": "^4.0.2",
+ "@smithy/shared-ini-file-loader": "^4.0.2",
+ "@smithy/types": "^4.2.0",
+ "@smithy/url-parser": "^4.0.2",
+ "@smithy/util-middleware": "^4.0.2",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/middleware-retry": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.1.1.tgz",
- "integrity": "sha512-eMIHOBTXro6JZ+WWzZWd/8fS8ht5nS5KDQjzhNMHNRcG5FkNTqcKpYhw7TETMYzbLfhO5FYghHy1vqDWM4FLDA==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.1.0.tgz",
+ "integrity": "sha512-2zAagd1s6hAaI/ap6SXi5T3dDwBOczOMCSkkYzktqN1+tzbk1GAsHNAdo/1uzxz3Ky02jvZQwbi/vmDA6z4Oyg==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/node-config-provider": "^2.2.1",
- "@smithy/protocol-http": "^3.1.1",
- "@smithy/service-error-classification": "^2.1.1",
- "@smithy/smithy-client": "^2.3.1",
- "@smithy/types": "^2.9.1",
- "@smithy/util-middleware": "^2.1.1",
- "@smithy/util-retry": "^2.1.1",
- "tslib": "^2.5.0",
- "uuid": "^8.3.2"
+ "@smithy/node-config-provider": "^4.0.2",
+ "@smithy/protocol-http": "^5.1.0",
+ "@smithy/service-error-classification": "^4.0.2",
+ "@smithy/smithy-client": "^4.2.0",
+ "@smithy/types": "^4.2.0",
+ "@smithy/util-middleware": "^4.0.2",
+ "@smithy/util-retry": "^4.0.2",
+ "tslib": "^2.6.2",
+ "uuid": "^9.0.1"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@smithy/middleware-retry/node_modules/uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "bin": {
+ "uuid": "dist/bin/uuid"
}
},
"node_modules/@smithy/middleware-serde": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.1.1.tgz",
- "integrity": "sha512-D8Gq0aQBeE1pxf3cjWVkRr2W54t+cdM2zx78tNrVhqrDykRA7asq8yVJij1u5NDtKzKqzBSPYh7iW0svUKg76g==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.0.3.tgz",
+ "integrity": "sha512-rfgDVrgLEVMmMn0BI8O+8OVr6vXzjV7HZj57l0QxslhzbvVfikZbVfBVthjLHqib4BW44QhcIgJpvebHlRaC9A==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/middleware-stack": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.1.1.tgz",
- "integrity": "sha512-KPJhRlhsl8CjgGXK/DoDcrFGfAqoqvuwlbxy+uOO4g2Azn1dhH+GVfC3RAp+6PoL5PWPb+vt6Z23FP+Mr6qeCw==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.0.2.tgz",
+ "integrity": "sha512-eSPVcuJJGVYrFYu2hEq8g8WWdJav3sdrI4o2c6z/rjnYDd3xH9j9E7deZQCzFn4QvGPouLngH3dQ+QVTxv5bOQ==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/node-config-provider": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.2.1.tgz",
- "integrity": "sha512-epzK3x1xNxA9oJgHQ5nz+2j6DsJKdHfieb+YgJ7ATWxzNcB7Hc+Uya2TUck5MicOPhDV8HZImND7ZOecVr+OWg==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.0.2.tgz",
+ "integrity": "sha512-WgCkILRZfJwJ4Da92a6t3ozN/zcvYyJGUTmfGbgS/FkCcoCjl7G4FJaCDN1ySdvLvemnQeo25FdkyMSTSwulsw==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/property-provider": "^2.1.1",
- "@smithy/shared-ini-file-loader": "^2.3.1",
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@smithy/property-provider": "^4.0.2",
+ "@smithy/shared-ini-file-loader": "^4.0.2",
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/node-http-handler": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.3.1.tgz",
- "integrity": "sha512-gLA8qK2nL9J0Rk/WEZSvgin4AppvuCYRYg61dcUo/uKxvMZsMInL5I5ZdJTogOvdfVug3N2dgI5ffcUfS4S9PA==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.4.tgz",
+ "integrity": "sha512-/mdqabuAT3o/ihBGjL94PUbTSPSRJ0eeVTdgADzow0wRJ0rN4A27EOrtlK56MYiO1fDvlO3jVTCxQtQmK9dZ1g==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/abort-controller": "^2.1.1",
- "@smithy/protocol-http": "^3.1.1",
- "@smithy/querystring-builder": "^2.1.1",
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@smithy/abort-controller": "^4.0.2",
+ "@smithy/protocol-http": "^5.1.0",
+ "@smithy/querystring-builder": "^4.0.2",
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/property-provider": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.1.1.tgz",
- "integrity": "sha512-FX7JhhD/o5HwSwg6GLK9zxrMUrGnb3PzNBrcthqHKBc3dH0UfgEAU24xnJ8F0uow5mj17UeBEOI6o3CF2k7Mhw==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.0.2.tgz",
+ "integrity": "sha512-wNRoQC1uISOuNc2s4hkOYwYllmiyrvVXWMtq+TysNRVQaHm4yoafYQyjN/goYZS+QbYlPIbb/QRjaUZMuzwQ7A==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/protocol-http": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.1.1.tgz",
- "integrity": "sha512-6ZRTSsaXuSL9++qEwH851hJjUA0OgXdQFCs+VDw4tGH256jQ3TjYY/i34N4vd24RV3nrjNsgd1yhb57uMoKbzQ==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.1.0.tgz",
+ "integrity": "sha512-KxAOL1nUNw2JTYrtviRRjEnykIDhxc84qMBzxvu1MUfQfHTuBlCG7PA6EdVwqpJjH7glw7FqQoFxUJSyBQgu7g==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/querystring-builder": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.1.1.tgz",
- "integrity": "sha512-C/ko/CeEa8jdYE4gt6nHO5XDrlSJ3vdCG0ZAc6nD5ZIE7LBp0jCx4qoqp7eoutBu7VrGMXERSRoPqwi1WjCPbg==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.0.2.tgz",
+ "integrity": "sha512-NTOs0FwHw1vimmQM4ebh+wFQvOwkEf/kQL6bSM1Lock+Bv4I89B3hGYoUEPkmvYPkDKyp5UdXJYu+PoTQ3T31Q==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.1",
- "@smithy/util-uri-escape": "^2.1.1",
- "tslib": "^2.5.0"
+ "@smithy/types": "^4.2.0",
+ "@smithy/util-uri-escape": "^4.0.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/querystring-parser": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.1.1.tgz",
- "integrity": "sha512-H4+6jKGVhG1W4CIxfBaSsbm98lOO88tpDWmZLgkJpt8Zkk/+uG0FmmqMuCAc3HNM2ZDV+JbErxr0l5BcuIf/XQ==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.0.2.tgz",
+ "integrity": "sha512-v6w8wnmZcVXjfVLjxw8qF7OwESD9wnpjp0Dqry/Pod0/5vcEA3qxCr+BhbOHlxS8O+29eLpT3aagxXGwIoEk7Q==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/service-error-classification": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.1.tgz",
- "integrity": "sha512-txEdZxPUgM1PwGvDvHzqhXisrc5LlRWYCf2yyHfvITWioAKat7srQvpjMAvgzf0t6t7j8yHrryXU9xt7RZqFpw==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.0.2.tgz",
+ "integrity": "sha512-LA86xeFpTKn270Hbkixqs5n73S+LVM0/VZco8dqd+JT75Dyx3Lcw/MraL7ybjmz786+160K8rPOmhsq0SocoJQ==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.1"
+ "@smithy/types": "^4.2.0"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/shared-ini-file-loader": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.3.1.tgz",
- "integrity": "sha512-2E2kh24igmIznHLB6H05Na4OgIEilRu0oQpYXo3LCNRrawHAcfDKq9004zJs+sAMt2X5AbY87CUCJ7IpqpSgdw==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.2.tgz",
+ "integrity": "sha512-J9/gTWBGVuFZ01oVA6vdb4DAjf1XbDhK6sLsu3OS9qmLrS6KB5ygpeHiM3miIbj1qgSJ96GYszXFWv6ErJ8QEw==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/signature-v4": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.1.1.tgz",
- "integrity": "sha512-Hb7xub0NHuvvQD3YwDSdanBmYukoEkhqBjqoxo+bSdC0ryV9cTfgmNjuAQhTPYB6yeU7hTR+sPRiFMlxqv6kmg==",
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.0.2.tgz",
+ "integrity": "sha512-Mz+mc7okA73Lyz8zQKJNyr7lIcHLiPYp0+oiqiMNc/t7/Kf2BENs5d63pEj7oPqdjaum6g0Fc8wC78dY1TgtXw==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/eventstream-codec": "^2.1.1",
- "@smithy/is-array-buffer": "^2.1.1",
- "@smithy/types": "^2.9.1",
- "@smithy/util-hex-encoding": "^2.1.1",
- "@smithy/util-middleware": "^2.1.1",
- "@smithy/util-uri-escape": "^2.1.1",
- "@smithy/util-utf8": "^2.1.1",
- "tslib": "^2.5.0"
+ "@smithy/is-array-buffer": "^4.0.0",
+ "@smithy/protocol-http": "^5.1.0",
+ "@smithy/types": "^4.2.0",
+ "@smithy/util-hex-encoding": "^4.0.0",
+ "@smithy/util-middleware": "^4.0.2",
+ "@smithy/util-uri-escape": "^4.0.0",
+ "@smithy/util-utf8": "^4.0.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/smithy-client": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.3.1.tgz",
- "integrity": "sha512-YsTdU8xVD64r2pLEwmltrNvZV6XIAC50LN6ivDopdt+YiF/jGH6PY9zUOu0CXD/d8GMB8gbhnpPsdrjAXHS9QA==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.2.0.tgz",
+ "integrity": "sha512-Qs65/w30pWV7LSFAez9DKy0Koaoh3iHhpcpCCJ4waj/iqwsuSzJna2+vYwq46yBaqO5ZbP9TjUsATUNxrKeBdw==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/middleware-endpoint": "^2.4.1",
- "@smithy/middleware-stack": "^2.1.1",
- "@smithy/protocol-http": "^3.1.1",
- "@smithy/types": "^2.9.1",
- "@smithy/util-stream": "^2.1.1",
- "tslib": "^2.5.0"
+ "@smithy/core": "^3.2.0",
+ "@smithy/middleware-endpoint": "^4.1.0",
+ "@smithy/middleware-stack": "^4.0.2",
+ "@smithy/protocol-http": "^5.1.0",
+ "@smithy/types": "^4.2.0",
+ "@smithy/util-stream": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/types": {
- "version": "2.9.1",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.9.1.tgz",
- "integrity": "sha512-vjXlKNXyprDYDuJ7UW5iobdmyDm6g8dDG+BFUncAg/3XJaN45Gy5RWWWUVgrzIK7S4R1KWgIX5LeJcfvSI24bw==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.2.0.tgz",
+ "integrity": "sha512-7eMk09zQKCO+E/ivsjQv+fDlOupcFUCSC/L2YUPgwhvowVGWbPQHjEFcmjt7QQ4ra5lyowS92SV53Zc6XD4+fg==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "tslib": "^2.5.0"
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/url-parser": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.1.1.tgz",
- "integrity": "sha512-qC9Bv8f/vvFIEkHsiNrUKYNl8uKQnn4BdhXl7VzQRP774AwIjiSMMwkbT+L7Fk8W8rzYVifzJNYxv1HwvfBo3Q==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.0.2.tgz",
+ "integrity": "sha512-Bm8n3j2ScqnT+kJaClSVCMeiSenK6jVAzZCNewsYWuZtnBehEz4r2qP0riZySZVfzB+03XZHJeqfmJDkeeSLiQ==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/querystring-parser": "^2.1.1",
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@smithy/querystring-parser": "^4.0.2",
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-base64": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.1.1.tgz",
- "integrity": "sha512-UfHVpY7qfF/MrgndI5PexSKVTxSZIdz9InghTFa49QOvuu9I52zLPLUHXvHpNuMb1iD2vmc6R+zbv/bdMipR/g==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.0.0.tgz",
+ "integrity": "sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/util-buffer-from": "^2.1.1",
- "tslib": "^2.5.0"
+ "@smithy/util-buffer-from": "^4.0.0",
+ "@smithy/util-utf8": "^4.0.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-body-length-browser": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.1.1.tgz",
- "integrity": "sha512-ekOGBLvs1VS2d1zM2ER4JEeBWAvIOUKeaFch29UjjJsxmZ/f0L3K3x0dEETgh3Q9bkZNHgT+rkdl/J/VUqSRag==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.0.0.tgz",
+ "integrity": "sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "tslib": "^2.5.0"
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-body-length-node": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.2.1.tgz",
- "integrity": "sha512-/ggJG+ta3IDtpNVq4ktmEUtOkH1LW64RHB5B0hcr5ZaWBmo96UX2cIOVbjCqqDickTXqBWZ4ZO0APuaPrD7Abg==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.0.0.tgz",
+ "integrity": "sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "tslib": "^2.5.0"
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-buffer-from": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.1.1.tgz",
- "integrity": "sha512-clhNjbyfqIv9Md2Mg6FffGVrJxw7bgK7s3Iax36xnfVj6cg0fUG7I4RH0XgXJF8bxi+saY5HR21g2UPKSxVCXg==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.0.0.tgz",
+ "integrity": "sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/is-array-buffer": "^2.1.1",
- "tslib": "^2.5.0"
+ "@smithy/is-array-buffer": "^4.0.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-config-provider": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.2.1.tgz",
- "integrity": "sha512-50VL/tx9oYYcjJn/qKqNy7sCtpD0+s8XEBamIFo4mFFTclKMNp+rsnymD796uybjiIquB7VCB/DeafduL0y2kw==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.0.0.tgz",
+ "integrity": "sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "tslib": "^2.5.0"
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-defaults-mode-browser": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.1.1.tgz",
- "integrity": "sha512-lqLz/9aWRO6mosnXkArtRuQqqZBhNpgI65YDpww4rVQBuUT7qzKbDLG5AmnQTCiU4rOquaZO/Kt0J7q9Uic7MA==",
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.8.tgz",
+ "integrity": "sha512-ZTypzBra+lI/LfTYZeop9UjoJhhGRTg3pxrNpfSTQLd3AJ37r2z4AXTKpq1rFXiiUIJsYyFgNJdjWRGP/cbBaQ==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/property-provider": "^2.1.1",
- "@smithy/smithy-client": "^2.3.1",
- "@smithy/types": "^2.9.1",
+ "@smithy/property-provider": "^4.0.2",
+ "@smithy/smithy-client": "^4.2.0",
+ "@smithy/types": "^4.2.0",
"bowser": "^2.11.0",
- "tslib": "^2.5.0"
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">= 10.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-defaults-mode-node": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.1.1.tgz",
- "integrity": "sha512-tYVrc+w+jSBfBd267KDnvSGOh4NMz+wVH7v4CClDbkdPfnjvImBZsOURncT5jsFwR9KCuDyPoSZq4Pa6+eCUrA==",
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.8.tgz",
+ "integrity": "sha512-Rgk0Jc/UDfRTzVthye/k2dDsz5Xxs9LZaKCNPgJTRyoyBoeiNCnHsYGOyu1PKN+sDyPnJzMOz22JbwxzBp9NNA==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/config-resolver": "^2.1.1",
- "@smithy/credential-provider-imds": "^2.2.1",
- "@smithy/node-config-provider": "^2.2.1",
- "@smithy/property-provider": "^2.1.1",
- "@smithy/smithy-client": "^2.3.1",
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@smithy/config-resolver": "^4.1.0",
+ "@smithy/credential-provider-imds": "^4.0.2",
+ "@smithy/node-config-provider": "^4.0.2",
+ "@smithy/property-provider": "^4.0.2",
+ "@smithy/smithy-client": "^4.2.0",
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">= 10.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-endpoints": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.1.1.tgz",
- "integrity": "sha512-sI4d9rjoaekSGEtq3xSb2nMjHMx8QXcz2cexnVyRWsy4yQ9z3kbDpX+7fN0jnbdOp0b3KSTZJZ2Yb92JWSanLw==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.0.2.tgz",
+ "integrity": "sha512-6QSutU5ZyrpNbnd51zRTL7goojlcnuOB55+F9VBD+j8JpRY50IGamsjlycrmpn8PQkmJucFW8A0LSfXj7jjtLQ==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/node-config-provider": "^2.2.1",
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@smithy/node-config-provider": "^4.0.2",
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">= 14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-hex-encoding": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.1.1.tgz",
- "integrity": "sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.0.0.tgz",
+ "integrity": "sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "tslib": "^2.5.0"
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-middleware": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.1.1.tgz",
- "integrity": "sha512-mKNrk8oz5zqkNcbcgAAepeJbmfUW6ogrT2Z2gDbIUzVzNAHKJQTYmH9jcy0jbWb+m7ubrvXKb6uMjkSgAqqsFA==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.0.2.tgz",
+ "integrity": "sha512-6GDamTGLuBQVAEuQ4yDQ+ti/YINf/MEmIegrEeg7DdB/sld8BX1lqt9RRuIcABOhAGTA50bRbPzErez7SlDtDQ==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-retry": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.1.1.tgz",
- "integrity": "sha512-Mg+xxWPTeSPrthpC5WAamJ6PW4Kbo01Fm7lWM1jmGRvmrRdsd3192Gz2fBXAMURyXpaNxyZf6Hr/nQ4q70oVEA==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.0.2.tgz",
+ "integrity": "sha512-Qryc+QG+7BCpvjloFLQrmlSd0RsVRHejRXd78jNO3+oREueCjwG1CCEH1vduw/ZkM1U9TztwIKVIi3+8MJScGg==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/service-error-classification": "^2.1.1",
- "@smithy/types": "^2.9.1",
- "tslib": "^2.5.0"
+ "@smithy/service-error-classification": "^4.0.2",
+ "@smithy/types": "^4.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">= 14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-stream": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.1.1.tgz",
- "integrity": "sha512-J7SMIpUYvU4DQN55KmBtvaMc7NM3CZ2iWICdcgaovtLzseVhAqFRYqloT3mh0esrFw+3VEK6nQFteFsTqZSECQ==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.2.0.tgz",
+ "integrity": "sha512-Vj1TtwWnuWqdgQI6YTUF5hQ/0jmFiOYsc51CSMgj7QfyO+RF4EnT2HNjoviNlOOmgzgvf3f5yno+EiC4vrnaWQ==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/fetch-http-handler": "^2.4.1",
- "@smithy/node-http-handler": "^2.3.1",
- "@smithy/types": "^2.9.1",
- "@smithy/util-base64": "^2.1.1",
- "@smithy/util-buffer-from": "^2.1.1",
- "@smithy/util-hex-encoding": "^2.1.1",
- "@smithy/util-utf8": "^2.1.1",
- "tslib": "^2.5.0"
+ "@smithy/fetch-http-handler": "^5.0.2",
+ "@smithy/node-http-handler": "^4.0.4",
+ "@smithy/types": "^4.2.0",
+ "@smithy/util-base64": "^4.0.0",
+ "@smithy/util-buffer-from": "^4.0.0",
+ "@smithy/util-hex-encoding": "^4.0.0",
+ "@smithy/util-utf8": "^4.0.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-uri-escape": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.1.1.tgz",
- "integrity": "sha512-saVzI1h6iRBUVSqtnlOnc9ssU09ypo7n+shdQ8hBTZno/9rZ3AuRYvoHInV57VF7Qn7B+pFJG7qTzFiHxWlWBw==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.0.0.tgz",
+ "integrity": "sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "tslib": "^2.5.0"
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-utf8": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.1.1.tgz",
- "integrity": "sha512-BqTpzYEcUMDwAKr7/mVRUtHDhs6ZoXDi9NypMvMfOr/+u1NW7JgqodPDECiiLboEm6bobcPcECxzjtQh865e9A==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.0.0.tgz",
+ "integrity": "sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==",
+ "license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@smithy/util-buffer-from": "^2.1.1",
- "tslib": "^2.5.0"
+ "@smithy/util-buffer-from": "^4.0.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/@socket.io/component-emitter": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz",
- "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg=="
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
+ "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==",
+ "license": "MIT"
},
"node_modules/@szmarczak/http-timer": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz",
"integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==",
+ "license": "MIT",
"dependencies": {
"defer-to-connect": "^2.0.1"
},
@@ -4004,22 +4310,46 @@
}
},
"node_modules/@tediousjs/connection-string": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/@tediousjs/connection-string/-/connection-string-0.3.0.tgz",
- "integrity": "sha512-d/keJiNKfpHo+GmSB8QcsAwBx8h+V1UbdozA5TD+eSLXprNY53JAYub47J9evsSKWDdNG5uVj0FiMozLKuzowQ=="
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/@tediousjs/connection-string/-/connection-string-0.5.0.tgz",
+ "integrity": "sha512-7qSgZbincDDDFyRweCIEvZULFAw5iz/DeunhvuxpL31nfntX3P4Yd4HkHBRg9H8CdqY1e5WFN1PZIz/REL9MVQ==",
+ "license": "MIT"
+ },
+ "node_modules/@testcontainers/hivemq": {
+ "version": "10.24.2",
+ "resolved": "https://registry.npmjs.org/@testcontainers/hivemq/-/hivemq-10.24.2.tgz",
+ "integrity": "sha512-5HXVaC4NXi5SSj3BpW3O7jNoPp6Z7A4ZasdZSLwgq2Ak6+9vZUJc8T1av2FcxHPr5V5B4jflyyJdsIgSTZGYcw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "testcontainers": "^10.24.2"
+ }
+ },
+ "node_modules/@testcontainers/rabbitmq": {
+ "version": "10.24.2",
+ "resolved": "https://registry.npmjs.org/@testcontainers/rabbitmq/-/rabbitmq-10.24.2.tgz",
+ "integrity": "sha512-2Ks5dY22kfgyK6JezF0koHZfEilD5l5T6ntth4VhqHK8MSFvk7Jve8Y6m4kdSth7u+nHH7L++zkROCBRA26r/A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "testcontainers": "^10.24.2"
+ }
},
"node_modules/@tootallnate/once": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
- "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
+ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+ "license": "MIT",
+ "optional": true,
"engines": {
- "node": ">= 10"
+ "node": ">= 6"
}
},
"node_modules/@types/accepts": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.7.tgz",
"integrity": "sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==",
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
@@ -4028,6 +4358,7 @@
"version": "1.19.5",
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
"integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
+ "license": "MIT",
"dependencies": {
"@types/connect": "*",
"@types/node": "*"
@@ -4038,14 +4369,28 @@
"resolved": "https://registry.npmjs.org/@types/bootstrap/-/bootstrap-5.1.13.tgz",
"integrity": "sha512-1hIIOgfkMlyQCQz/3ae53xr6ZN2d6EDj/n3G+Sh/LBsBUVigyDmnCbLwsaXJJ1GBGlkjgfXVoyIvEPowQw25xQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@popperjs/core": "^2.9.2"
}
},
+ "node_modules/@types/cacheable-request": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz",
+ "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/http-cache-semantics": "*",
+ "@types/keyv": "^3.1.4",
+ "@types/node": "*",
+ "@types/responselike": "^1.0.0"
+ }
+ },
"node_modules/@types/connect": {
"version": "3.4.38",
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
"integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
@@ -4053,17 +4398,14 @@
"node_modules/@types/content-disposition": {
"version": "0.5.8",
"resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.8.tgz",
- "integrity": "sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg=="
- },
- "node_modules/@types/cookie": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
- "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="
+ "integrity": "sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==",
+ "license": "MIT"
},
"node_modules/@types/cookies": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.9.0.tgz",
"integrity": "sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==",
+ "license": "MIT",
"dependencies": {
"@types/connect": "*",
"@types/express": "*",
@@ -4075,28 +4417,46 @@
"version": "2.8.17",
"resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz",
"integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==",
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
},
- "node_modules/@types/es-aggregate-error": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/@types/es-aggregate-error/-/es-aggregate-error-1.0.6.tgz",
- "integrity": "sha512-qJ7LIFp06h1QE1aVxbVd+zJP2wdaugYXYfd6JxsyRMrYHaxb6itXPogW2tz+ylUJ1n1b+JF1PHyYCfYHm0dvUg==",
+ "node_modules/@types/docker-modem": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/@types/docker-modem/-/docker-modem-3.0.6.tgz",
+ "integrity": "sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "@types/node": "*"
+ "@types/node": "*",
+ "@types/ssh2": "*"
+ }
+ },
+ "node_modules/@types/dockerode": {
+ "version": "3.3.37",
+ "resolved": "https://registry.npmjs.org/@types/dockerode/-/dockerode-3.3.37.tgz",
+ "integrity": "sha512-r+IoKpE5MLKaeD8CvoEh39ckWMLHR/+WBMoRQxrkL+apJqEWLMhBHh+93KIfyPWGd6gK7Q21jpoULKgNoRI0YA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/docker-modem": "*",
+ "@types/node": "*",
+ "@types/ssh2": "*"
}
},
"node_modules/@types/estree": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
- "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
- "dev": true
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
+ "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/express": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
"integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
+ "license": "MIT",
"dependencies": {
"@types/body-parser": "*",
"@types/express-serve-static-core": "^4.17.33",
@@ -4105,9 +4465,10 @@
}
},
"node_modules/@types/express-serve-static-core": {
- "version": "4.17.42",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.42.tgz",
- "integrity": "sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ==",
+ "version": "4.19.6",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz",
+ "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==",
+ "license": "MIT",
"dependencies": {
"@types/node": "*",
"@types/qs": "*",
@@ -4116,35 +4477,50 @@
}
},
"node_modules/@types/http-assert": {
- "version": "1.5.5",
- "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.5.tgz",
- "integrity": "sha512-4+tE/lwdAahgZT1g30Jkdm9PzFRde0xwxBNUyRsCitRvCQB90iuA2uJYdUnhnANRcqGXaWOGY4FEoxeElNAK2g=="
+ "version": "1.5.6",
+ "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.6.tgz",
+ "integrity": "sha512-TTEwmtjgVbYAzZYWyeHPrrtWnfVkm8tQkP8P21uQifPgMRgjrow3XDEYqucuC8SKZJT7pUnhU/JymvjggxO9vw==",
+ "license": "MIT"
},
"node_modules/@types/http-cache-semantics": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
- "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA=="
+ "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==",
+ "license": "MIT"
},
"node_modules/@types/http-errors": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz",
- "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA=="
+ "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==",
+ "license": "MIT"
},
"node_modules/@types/json-schema": {
"version": "7.0.15",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/keygrip": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.6.tgz",
- "integrity": "sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ=="
+ "integrity": "sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==",
+ "license": "MIT"
+ },
+ "node_modules/@types/keyv": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
+ "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
},
"node_modules/@types/koa": {
- "version": "2.14.0",
- "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.14.0.tgz",
- "integrity": "sha512-DTDUyznHGNHAl+wd1n0z1jxNajduyTh8R53xoewuerdBzGo6Ogj6F2299BFtrexJw4NtgjsI5SMPCmV9gZwGXA==",
+ "version": "2.15.0",
+ "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.15.0.tgz",
+ "integrity": "sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g==",
+ "license": "MIT",
"dependencies": {
"@types/accepts": "*",
"@types/content-disposition": "*",
@@ -4160,6 +4536,7 @@
"version": "3.2.8",
"resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.8.tgz",
"integrity": "sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==",
+ "license": "MIT",
"dependencies": {
"@types/koa": "*"
}
@@ -4167,106 +4544,170 @@
"node_modules/@types/mime": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
- "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w=="
+ "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
+ "license": "MIT"
},
"node_modules/@types/minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/node": {
- "version": "20.11.10",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.10.tgz",
- "integrity": "sha512-rZEfe/hJSGYmdfX9tvcPMYeYPW2sNl50nsw4jZmRcaG0HIAb0WYEpsB05GOb53vjqpyE9GUhlDQ4jLSoB5q9kg==",
+ "version": "20.17.30",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.30.tgz",
+ "integrity": "sha512-7zf4YyHA+jvBNfVrk2Gtvs6x7E8V+YDW05bNfG2XkWDJfYRXrTiP/DsB2zSYTaHX0bGIujTBQdMVAhb+j7mwpg==",
+ "license": "MIT",
"dependencies": {
- "undici-types": "~5.26.4"
+ "undici-types": "~6.19.2"
}
},
"node_modules/@types/normalize-package-data": {
"version": "2.4.4",
"resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
"integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/qs": {
- "version": "6.9.11",
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz",
- "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ=="
+ "version": "6.9.18",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz",
+ "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==",
+ "license": "MIT"
},
"node_modules/@types/range-parser": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
- "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ=="
+ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
+ "license": "MIT"
+ },
+ "node_modules/@types/readable-stream": {
+ "version": "4.0.18",
+ "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.18.tgz",
+ "integrity": "sha512-21jK/1j+Wg+7jVw1xnSwy/2Q1VgVjWuFssbYGTREPUBeZ+rqVFl2udq0IkxzPC0ZhOzVceUbyIACFZKLqKEBlA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "safe-buffer": "~5.1.1"
+ }
+ },
+ "node_modules/@types/readable-stream/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "license": "MIT"
+ },
+ "node_modules/@types/responselike": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz",
+ "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
},
"node_modules/@types/semver": {
- "version": "7.5.6",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz",
- "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==",
- "dev": true
+ "version": "7.7.0",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz",
+ "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/send": {
"version": "0.17.4",
"resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz",
"integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
+ "license": "MIT",
"dependencies": {
"@types/mime": "^1",
"@types/node": "*"
}
},
"node_modules/@types/serve-static": {
- "version": "1.15.5",
- "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz",
- "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==",
+ "version": "1.15.7",
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz",
+ "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==",
+ "license": "MIT",
"dependencies": {
"@types/http-errors": "*",
- "@types/mime": "*",
- "@types/node": "*"
+ "@types/node": "*",
+ "@types/send": "*"
}
},
"node_modules/@types/ssh2": {
- "version": "1.11.19",
- "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-1.11.19.tgz",
- "integrity": "sha512-ydbQAqEcdNVy2t1w7dMh6eWMr+iOgtEkqM/3K9RMijMaok/ER7L8GW6PwsOypHCN++M+c8S/UR9SgMqNIFstbA==",
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-1.15.5.tgz",
+ "integrity": "sha512-N1ASjp/nXH3ovBHddRJpli4ozpk6UdDYIX4RJWFa9L1YKnzdhTlVmiGHm4DZnj/jLbqZpes4aeR30EFGQtvhQQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "^18.11.18"
}
},
- "node_modules/@types/ssh2/node_modules/@types/node": {
- "version": "18.19.10",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.10.tgz",
- "integrity": "sha512-IZD8kAM02AW1HRDTPOlz3npFava678pr8Ie9Vp8uRhBROXAv8MXT2pCnGZZAKYdromsNQLHQcfWQ6EOatVLtqA==",
+ "node_modules/@types/ssh2-streams": {
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/@types/ssh2-streams/-/ssh2-streams-0.1.12.tgz",
+ "integrity": "sha512-Sy8tpEmCce4Tq0oSOYdfqaBpA3hDM8SoxoFh5vzFsu2oL+znzGz8oVWW7xb4K920yYMUY+PIG31qZnFMfPWNCg==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/ssh2/node_modules/@types/node": {
+ "version": "18.19.86",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.86.tgz",
+ "integrity": "sha512-fifKayi175wLyKyc5qUfyENhQ1dCNI1UNjp653d8kuYcPQN5JhX3dGuP/XmvPTg/xRBn1VTLpbmi+H/Mr7tLfQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"undici-types": "~5.26.4"
}
},
+ "node_modules/@types/ssh2/node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/trusted-types": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
+ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
"node_modules/@types/webidl-conversions": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz",
- "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA=="
+ "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==",
+ "license": "MIT"
},
"node_modules/@types/whatwg-url": {
"version": "8.2.2",
"resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz",
"integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==",
+ "license": "MIT",
"dependencies": {
"@types/node": "*",
"@types/webidl-conversions": "*"
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "6.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.20.0.tgz",
- "integrity": "sha512-fTwGQUnjhoYHeSF6m5pWNkzmDDdsKELYrOBxhjMrofPqCkoC2k3B2wvGHFxa1CTIqkEn88nlW1HVMztjo2K8Hg==",
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz",
+ "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.5.1",
- "@typescript-eslint/scope-manager": "6.20.0",
- "@typescript-eslint/type-utils": "6.20.0",
- "@typescript-eslint/utils": "6.20.0",
- "@typescript-eslint/visitor-keys": "6.20.0",
+ "@typescript-eslint/scope-manager": "6.21.0",
+ "@typescript-eslint/type-utils": "6.21.0",
+ "@typescript-eslint/utils": "6.21.0",
+ "@typescript-eslint/visitor-keys": "6.21.0",
"debug": "^4.3.4",
"graphemer": "^1.4.0",
"ignore": "^5.2.4",
@@ -4292,15 +4733,16 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "6.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.20.0.tgz",
- "integrity": "sha512-bYerPDF/H5v6V76MdMYhjwmwgMA+jlPVqjSDq2cRqMi8bP5sR3Z+RLOiOMad3nsnmDVmn2gAFCyNgh/dIrfP/w==",
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz",
+ "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
- "@typescript-eslint/scope-manager": "6.20.0",
- "@typescript-eslint/types": "6.20.0",
- "@typescript-eslint/typescript-estree": "6.20.0",
- "@typescript-eslint/visitor-keys": "6.20.0",
+ "@typescript-eslint/scope-manager": "6.21.0",
+ "@typescript-eslint/types": "6.21.0",
+ "@typescript-eslint/typescript-estree": "6.21.0",
+ "@typescript-eslint/visitor-keys": "6.21.0",
"debug": "^4.3.4"
},
"engines": {
@@ -4320,13 +4762,14 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "6.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.20.0.tgz",
- "integrity": "sha512-p4rvHQRDTI1tGGMDFQm+GtxP1ZHyAh64WANVoyEcNMpaTFn3ox/3CcgtIlELnRfKzSs/DwYlDccJEtr3O6qBvA==",
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz",
+ "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "6.20.0",
- "@typescript-eslint/visitor-keys": "6.20.0"
+ "@typescript-eslint/types": "6.21.0",
+ "@typescript-eslint/visitor-keys": "6.21.0"
},
"engines": {
"node": "^16.0.0 || >=18.0.0"
@@ -4337,13 +4780,14 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "6.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.20.0.tgz",
- "integrity": "sha512-qnSobiJQb1F5JjN0YDRPHruQTrX7ICsmltXhkV536mp4idGAYrIyr47zF/JmkJtEcAVnIz4gUYJ7gOZa6SmN4g==",
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz",
+ "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/typescript-estree": "6.20.0",
- "@typescript-eslint/utils": "6.20.0",
+ "@typescript-eslint/typescript-estree": "6.21.0",
+ "@typescript-eslint/utils": "6.21.0",
"debug": "^4.3.4",
"ts-api-utils": "^1.0.1"
},
@@ -4364,10 +4808,11 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "6.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.20.0.tgz",
- "integrity": "sha512-MM9mfZMAhiN4cOEcUOEx+0HmuaW3WBfukBZPCfwSqFnQy0grXYtngKCqpQN339X3RrwtzspWJrpbrupKYUSBXQ==",
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz",
+ "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^16.0.0 || >=18.0.0"
},
@@ -4377,13 +4822,14 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "6.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.20.0.tgz",
- "integrity": "sha512-RnRya9q5m6YYSpBN7IzKu9FmLcYtErkDkc8/dKv81I9QiLLtVBHrjz+Ev/crAqgMNW2FCsoZF4g2QUylMnJz+g==",
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz",
+ "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
- "@typescript-eslint/types": "6.20.0",
- "@typescript-eslint/visitor-keys": "6.20.0",
+ "@typescript-eslint/types": "6.21.0",
+ "@typescript-eslint/visitor-keys": "6.21.0",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@@ -4405,17 +4851,18 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "6.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.20.0.tgz",
- "integrity": "sha512-/EKuw+kRu2vAqCoDwDCBtDRU6CTKbUmwwI7SH7AashZ+W+7o8eiyy6V2cdOqN49KsTcASWsC5QeghYuRDTyOOg==",
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz",
+ "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
"@types/json-schema": "^7.0.12",
"@types/semver": "^7.5.0",
- "@typescript-eslint/scope-manager": "6.20.0",
- "@typescript-eslint/types": "6.20.0",
- "@typescript-eslint/typescript-estree": "6.20.0",
+ "@typescript-eslint/scope-manager": "6.21.0",
+ "@typescript-eslint/types": "6.21.0",
+ "@typescript-eslint/typescript-estree": "6.21.0",
"semver": "^7.5.4"
},
"engines": {
@@ -4430,12 +4877,13 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "6.20.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.20.0.tgz",
- "integrity": "sha512-E8Cp98kRe4gKHjJD4NExXKz/zOJ1A2hhZc+IMVD6i7w4yjIvh6VyuRI0gRtxAsXtoC35uGMaQ9rjI2zJaXDEAw==",
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz",
+ "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "6.20.0",
+ "@typescript-eslint/types": "6.21.0",
"eslint-visitor-keys": "^3.4.1"
},
"engines": {
@@ -4447,10 +4895,11 @@
}
},
"node_modules/@vitejs/plugin-vue": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.3.tgz",
- "integrity": "sha512-b8S5dVS40rgHdDrw+DQi/xOM9ed+kSRZzfm1T74bMmBDCd8XO87NKlFYInzCtwvtWwXZvo1QxE2OSspTATWrbA==",
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.5.tgz",
+ "integrity": "sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^18.0.0 || >=20.0.0"
},
@@ -4460,28 +4909,28 @@
}
},
"node_modules/@vue/babel-helper-vue-transform-on": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.1.tgz",
- "integrity": "sha512-jtEXim+pfyHWwvheYwUwSXm43KwQo8nhOBDyjrUITV6X2tB7lJm6n/+4sqR8137UVZZul5hBzWHdZ2uStYpyRQ==",
- "dev": true
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.4.0.tgz",
+ "integrity": "sha512-mCokbouEQ/ocRce/FpKCRItGo+013tHg7tixg3DUNS+6bmIchPt66012kBMm476vyEIJPafrvOf4E5OYj3shSw==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@vue/babel-plugin-jsx": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.1.tgz",
- "integrity": "sha512-Yy9qGktktXhB39QE99So/BO2Uwm/ZG+gpL9vMg51ijRRbINvgbuhyJEi4WYmGRMx/MSTfK0xjgZ3/MyY+iLCEg==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.4.0.tgz",
+ "integrity": "sha512-9zAHmwgMWlaN6qRKdrg1uKsBKHvnUU+Py+MOCTuYZBoZsopa90Di10QRjB+YPnVss0BZbG/H5XFwJY1fTxJWhA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-module-imports": "^7.22.15",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-jsx": "^7.23.3",
- "@babel/template": "^7.22.15",
- "@babel/traverse": "^7.23.7",
- "@babel/types": "^7.23.6",
- "@vue/babel-helper-vue-transform-on": "1.2.1",
- "@vue/babel-plugin-resolve-type": "1.2.1",
- "camelcase": "^6.3.0",
- "html-tags": "^3.3.1",
- "svg-tags": "^1.0.0"
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.26.5",
+ "@babel/plugin-syntax-jsx": "^7.25.9",
+ "@babel/template": "^7.26.9",
+ "@babel/traverse": "^7.26.9",
+ "@babel/types": "^7.26.9",
+ "@vue/babel-helper-vue-transform-on": "1.4.0",
+ "@vue/babel-plugin-resolve-type": "1.4.0",
+ "@vue/shared": "^3.5.13"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
@@ -4492,176 +4941,279 @@
}
}
},
- "node_modules/@vue/babel-plugin-resolve-type": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.1.tgz",
- "integrity": "sha512-IOtnI7pHunUzHS/y+EG/yPABIAp0VN8QhQ0UCS09jeMVxgAnI9qdOzO85RXdQGxq+aWCdv8/+k3W0aYO6j/8fQ==",
+ "node_modules/@vue/babel-plugin-jsx/node_modules/@vue/shared": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz",
+ "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==",
"dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@vue/babel-plugin-resolve-type": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.4.0.tgz",
+ "integrity": "sha512-4xqDRRbQQEWHQyjlYSgZsWj44KfiF6D+ktCuXyZ8EnVDYV3pztmXJDf1HveAjUAXxAnR8daCQT51RneWWxtTyQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.23.5",
- "@babel/helper-module-imports": "^7.22.15",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/parser": "^7.23.6",
- "@vue/compiler-sfc": "^3.4.15"
+ "@babel/code-frame": "^7.26.2",
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.26.5",
+ "@babel/parser": "^7.26.9",
+ "@vue/compiler-sfc": "^3.5.13"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sxzz"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@vue/compiler-core": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.15.tgz",
- "integrity": "sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw==",
+ "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-core": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz",
+ "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/parser": "^7.23.6",
- "@vue/shared": "3.4.15",
+ "@babel/parser": "^7.25.3",
+ "@vue/shared": "3.5.13",
"entities": "^4.5.0",
"estree-walker": "^2.0.2",
- "source-map-js": "^1.0.2"
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-dom": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz",
+ "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-core": "3.5.13",
+ "@vue/shared": "3.5.13"
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-sfc": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz",
+ "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.25.3",
+ "@vue/compiler-core": "3.5.13",
+ "@vue/compiler-dom": "3.5.13",
+ "@vue/compiler-ssr": "3.5.13",
+ "@vue/shared": "3.5.13",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.11",
+ "postcss": "^8.4.48",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-ssr": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz",
+ "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-dom": "3.5.13",
+ "@vue/shared": "3.5.13"
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/shared": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz",
+ "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.38.tgz",
+ "integrity": "sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.24.7",
+ "@vue/shared": "3.4.38",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.0"
}
},
"node_modules/@vue/compiler-dom": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.15.tgz",
- "integrity": "sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ==",
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.38.tgz",
+ "integrity": "sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@vue/compiler-core": "3.4.15",
- "@vue/shared": "3.4.15"
+ "@vue/compiler-core": "3.4.38",
+ "@vue/shared": "3.4.38"
}
},
"node_modules/@vue/compiler-sfc": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.15.tgz",
- "integrity": "sha512-LCn5M6QpkpFsh3GQvs2mJUOAlBQcCco8D60Bcqmf3O3w5a+KWS5GvYbrrJBkgvL1BDnTp+e8q0lXCLgHhKguBA==",
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.38.tgz",
+ "integrity": "sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/parser": "^7.23.6",
- "@vue/compiler-core": "3.4.15",
- "@vue/compiler-dom": "3.4.15",
- "@vue/compiler-ssr": "3.4.15",
- "@vue/shared": "3.4.15",
+ "@babel/parser": "^7.24.7",
+ "@vue/compiler-core": "3.4.38",
+ "@vue/compiler-dom": "3.4.38",
+ "@vue/compiler-ssr": "3.4.38",
+ "@vue/shared": "3.4.38",
"estree-walker": "^2.0.2",
- "magic-string": "^0.30.5",
- "postcss": "^8.4.33",
- "source-map-js": "^1.0.2"
+ "magic-string": "^0.30.10",
+ "postcss": "^8.4.40",
+ "source-map-js": "^1.2.0"
}
},
"node_modules/@vue/compiler-ssr": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.15.tgz",
- "integrity": "sha512-1jdeQyiGznr8gjFDadVmOJqZiLNSsMa5ZgqavkPZ8O2wjHv0tVuAEsw5hTdUoUW4232vpBbL/wJhzVW/JwY1Uw==",
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.38.tgz",
+ "integrity": "sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@vue/compiler-dom": "3.4.15",
- "@vue/shared": "3.4.15"
+ "@vue/compiler-dom": "3.4.38",
+ "@vue/shared": "3.4.38"
}
},
"node_modules/@vue/devtools-api": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz",
- "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==",
- "dev": true
+ "version": "6.6.4",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
+ "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@vue/devtools-core": {
- "version": "7.0.15",
- "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-7.0.15.tgz",
- "integrity": "sha512-FTWknp0fDsAwPMRKjvQ6XKPED3Y9yPA+AefF/FOSkEfPh5Y2mLNwZaTHK/9zZjGXi76uJQMCDXycdQTxVoUIFQ==",
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-7.7.2.tgz",
+ "integrity": "sha512-lexREWj1lKi91Tblr38ntSsy6CvI8ba7u+jmwh2yruib/ltLUcsIzEjCnrkh1yYGGIKXbAuYV2tOG10fGDB9OQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@vue/devtools-kit": "^7.0.15",
- "@vue/devtools-shared": "^7.0.15",
- "birpc": "^0.2.15",
- "fast-glob": "^3.3.2",
- "image-meta": "^0.2.0",
+ "@vue/devtools-kit": "^7.7.2",
+ "@vue/devtools-shared": "^7.7.2",
"mitt": "^3.0.1",
- "pathe": "^1.1.2",
- "perfect-debounce": "^1.0.0",
- "vite-dev-rpc": "^0.1.4",
- "vite-hot-client": "^0.2.3",
- "vite-plugin-inspect": "^0.8.3"
- }
- },
- "node_modules/@vue/devtools-kit": {
- "version": "7.0.15",
- "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.0.15.tgz",
- "integrity": "sha512-dT7OeCe1LUCIhHIb/yRR6Hn+XHh73r1o78onqCrxEKHdoZwBItiIeVnmJZPEUDFstIxfs+tJL231mySk3laTow==",
- "dev": true,
- "dependencies": {
- "@vue/devtools-shared": "^7.0.15",
- "hookable": "^5.5.3",
- "mitt": "^3.0.1",
- "perfect-debounce": "^1.0.0",
- "speakingurl": "^14.0.1"
+ "nanoid": "^5.0.9",
+ "pathe": "^2.0.2",
+ "vite-hot-client": "^0.2.4"
},
"peerDependencies": {
"vue": "^3.0.0"
}
},
- "node_modules/@vue/devtools-shared": {
- "version": "7.0.15",
- "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.0.15.tgz",
- "integrity": "sha512-fpfvMVvS7aDgO7x2JPFiTQ1MHcCc63/bE7yTgs278gMBybuO9b3hdiZ/k0Pw1rN+RefaU9yQiFA+5CCFc1D+6w==",
+ "node_modules/@vue/devtools-core/node_modules/nanoid": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.5.tgz",
+ "integrity": "sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==",
"dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.js"
+ },
+ "engines": {
+ "node": "^18 || >=20"
+ }
+ },
+ "node_modules/@vue/devtools-kit": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.2.tgz",
+ "integrity": "sha512-CY0I1JH3Z8PECbn6k3TqM1Bk9ASWxeMtTCvZr7vb+CHi+X/QwQm5F1/fPagraamKMAHVfuuCbdcnNg1A4CYVWQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "rfdc": "^1.3.1"
+ "@vue/devtools-shared": "^7.7.2",
+ "birpc": "^0.2.19",
+ "hookable": "^5.5.3",
+ "mitt": "^3.0.1",
+ "perfect-debounce": "^1.0.0",
+ "speakingurl": "^14.0.1",
+ "superjson": "^2.2.1"
+ }
+ },
+ "node_modules/@vue/devtools-shared": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.2.tgz",
+ "integrity": "sha512-uBFxnp8gwW2vD6FrJB8JZLUzVb6PNRG0B0jBnHsOH8uKyva2qINY8PTF5Te4QlTbMDqU5K6qtJDr6cNsKWhbOA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "rfdc": "^1.4.1"
}
},
"node_modules/@vue/reactivity": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.15.tgz",
- "integrity": "sha512-55yJh2bsff20K5O84MxSvXKPHHt17I2EomHznvFiJCAZpJTNW8IuLj1xZWMLELRhBK3kkFV/1ErZGHJfah7i7w==",
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.38.tgz",
+ "integrity": "sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@vue/shared": "3.4.15"
+ "@vue/shared": "3.4.38"
}
},
"node_modules/@vue/runtime-core": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.15.tgz",
- "integrity": "sha512-6E3by5m6v1AkW0McCeAyhHTw+3y17YCOKG0U0HDKDscV4Hs0kgNT5G+GCHak16jKgcCDHpI9xe5NKb8sdLCLdw==",
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.38.tgz",
+ "integrity": "sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@vue/reactivity": "3.4.15",
- "@vue/shared": "3.4.15"
+ "@vue/reactivity": "3.4.38",
+ "@vue/shared": "3.4.38"
}
},
"node_modules/@vue/runtime-dom": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.15.tgz",
- "integrity": "sha512-EVW8D6vfFVq3V/yDKNPBFkZKGMFSvZrUQmx196o/v2tHKdwWdiZjYUBS+0Ez3+ohRyF8Njwy/6FH5gYJ75liUw==",
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.38.tgz",
+ "integrity": "sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@vue/runtime-core": "3.4.15",
- "@vue/shared": "3.4.15",
+ "@vue/reactivity": "3.4.38",
+ "@vue/runtime-core": "3.4.38",
+ "@vue/shared": "3.4.38",
"csstype": "^3.1.3"
}
},
"node_modules/@vue/server-renderer": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.15.tgz",
- "integrity": "sha512-3HYzaidu9cHjrT+qGUuDhFYvF/j643bHC6uUN9BgM11DVy+pM6ATsG6uPBLnkwOgs7BpJABReLmpL3ZPAsUaqw==",
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.38.tgz",
+ "integrity": "sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@vue/compiler-ssr": "3.4.15",
- "@vue/shared": "3.4.15"
+ "@vue/compiler-ssr": "3.4.38",
+ "@vue/shared": "3.4.38"
},
"peerDependencies": {
- "vue": "3.4.15"
+ "vue": "3.4.38"
}
},
"node_modules/@vue/shared": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.15.tgz",
- "integrity": "sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==",
- "dev": true
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.38.tgz",
+ "integrity": "sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@vuepic/vue-datepicker": {
"version": "3.4.8",
"resolved": "https://registry.npmjs.org/@vuepic/vue-datepicker/-/vue-datepicker-3.4.8.tgz",
"integrity": "sha512-nbuMA7IgjtT99LqcjSTSUcl7omTZSB+7vYSWQ9gQm31Frm/1wn54fT1Q0HaRD9nHXX982AACbqeND4K80SKONw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"date-fns": "^2.29.2"
},
@@ -4673,20 +5225,22 @@
}
},
"node_modules/@vvo/tzdb": {
- "version": "6.125.0",
- "resolved": "https://registry.npmjs.org/@vvo/tzdb/-/tzdb-6.125.0.tgz",
- "integrity": "sha512-zxOP62q3CUYIIe6sL/IK6AhmhnPUuHPNx86qZTXuzQHo/QhQRTfXb331poUStTDdZgBoLc6BADUATbGGN/1d4A=="
+ "version": "6.161.0",
+ "resolved": "https://registry.npmjs.org/@vvo/tzdb/-/tzdb-6.161.0.tgz",
+ "integrity": "sha512-rvk2x77vnY87Tu1d8QuJk300WWzk8OP9/cDw2KgxEdjlYpLarJx82j2sPUpiy1wnjSuTTnYwpjBgZnNS5Iyb+w==",
+ "license": "MIT"
},
"node_modules/abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+ "license": "ISC"
},
"node_modules/abort-controller": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
"integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"event-target-shim": "^5.0.0"
},
@@ -4698,6 +5252,7 @@
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
"integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "license": "MIT",
"dependencies": {
"mime-types": "~2.1.34",
"negotiator": "0.6.3"
@@ -4706,11 +5261,21 @@
"node": ">= 0.6"
}
},
+ "node_modules/accepts/node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/acorn": {
- "version": "8.11.3",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
- "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
+ "version": "8.14.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
+ "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
"dev": true,
+ "license": "MIT",
"bin": {
"acorn": "bin/acorn"
},
@@ -4723,6 +5288,7 @@
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true,
+ "license": "MIT",
"peerDependencies": {
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
@@ -4732,6 +5298,7 @@
"resolved": "https://registry.npmjs.org/aedes/-/aedes-0.46.3.tgz",
"integrity": "sha512-i3B+H74uNRhlqcs/JdrMp7e3daz4Cwls0x4yLcfjGXz2tIwnxhF6od4m86O6yyNdz/Gg3jfY3q0sc/Cz8qzg6g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"aedes-packet": "^2.3.1",
"aedes-persistence": "^8.1.3",
@@ -4757,6 +5324,7 @@
"resolved": "https://registry.npmjs.org/aedes-packet/-/aedes-packet-2.3.1.tgz",
"integrity": "sha512-LqBd57uc2rui2RbjycW17dylglejG26mM4ewVXGNDnVp/SUHFVEgm7d1HTmYrnSkSCNoHti042qgcTwv/F+BtQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"mqtt-packet": "^6.3.0"
},
@@ -4769,6 +5337,7 @@
"resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.10.0.tgz",
"integrity": "sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"bl": "^4.0.2",
"debug": "^4.1.1",
@@ -4780,6 +5349,7 @@
"resolved": "https://registry.npmjs.org/aedes-persistence/-/aedes-persistence-8.1.3.tgz",
"integrity": "sha512-VMCjEV+2g1TNJb/IlDEUy6SP9crT+QUhe2xc6UjyqrFNBNgTvHmOefXY7FxWrwmR2QA02vwg3+5p/JXkyg/Dkw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"aedes-packet": "^2.3.1",
"from2": "^2.3.0",
@@ -4790,20 +5360,19 @@
}
},
"node_modules/agent-base": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz",
- "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==",
- "dependencies": {
- "debug": "^4.3.4"
- },
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz",
+ "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==",
+ "license": "MIT",
"engines": {
"node": ">= 14"
}
},
"node_modules/agentkeepalive": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz",
- "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==",
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz",
+ "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==",
+ "license": "MIT",
"optional": true,
"dependencies": {
"humanize-ms": "^1.2.1"
@@ -4816,6 +5385,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
"integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+ "license": "MIT",
"optional": true,
"dependencies": {
"clean-stack": "^2.0.0",
@@ -4830,6 +5400,7 @@
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -4845,6 +5416,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/anafanafo/-/anafanafo-2.0.0.tgz",
"integrity": "sha512-Nlfq7NC4AOkTJerWRIZcOAiMNtIDVIGWGvQ98O7Jl6Kr2Dk0dX5u4MqN778kSRTy5KRqchpLdF2RtLFEz9FVkQ==",
+ "license": "MIT",
"dependencies": {
"char-width-table-consumer": "^1.0.0"
}
@@ -4853,6 +5425,7 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -4861,6 +5434,7 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -4874,13 +5448,15 @@
"node_modules/any-promise": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
- "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
+ "license": "MIT"
},
"node_modules/anymatch": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
"integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"normalize-path": "^3.0.0",
"picomatch": "^2.0.4"
@@ -4892,13 +5468,184 @@
"node_modules/aproba": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
- "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="
+ "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
+ "license": "ISC"
+ },
+ "node_modules/archiver": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz",
+ "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "archiver-utils": "^5.0.2",
+ "async": "^3.2.4",
+ "buffer-crc32": "^1.0.0",
+ "readable-stream": "^4.0.0",
+ "readdir-glob": "^1.1.2",
+ "tar-stream": "^3.0.0",
+ "zip-stream": "^6.0.1"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/archiver-utils": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz",
+ "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "glob": "^10.0.0",
+ "graceful-fs": "^4.2.0",
+ "is-stream": "^2.0.1",
+ "lazystream": "^1.0.0",
+ "lodash": "^4.17.15",
+ "normalize-path": "^3.0.0",
+ "readable-stream": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/archiver-utils/node_modules/buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
+ },
+ "node_modules/archiver-utils/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/archiver-utils/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/archiver-utils/node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/archiver-utils/node_modules/readable-stream": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
+ "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "abort-controller": "^3.0.0",
+ "buffer": "^6.0.3",
+ "events": "^3.3.0",
+ "process": "^0.11.10",
+ "string_decoder": "^1.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/archiver/node_modules/buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
+ },
+ "node_modules/archiver/node_modules/readable-stream": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
+ "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "abort-controller": "^3.0.0",
+ "buffer": "^6.0.3",
+ "events": "^3.3.0",
+ "process": "^0.11.10",
+ "string_decoder": "^1.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
},
"node_modules/are-docs-informative": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz",
"integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14"
}
@@ -4907,6 +5654,8 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
"integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
+ "deprecated": "This package is no longer supported.",
+ "license": "ISC",
"dependencies": {
"delegates": "^1.0.0",
"readable-stream": "^3.6.0"
@@ -4919,20 +5668,27 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
+ "dev": true,
+ "license": "Python-2.0"
},
"node_modules/args-parser": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/args-parser/-/args-parser-1.3.0.tgz",
- "integrity": "sha512-If3Zi4BSjlQIJ9fgAhSiKi0oJtgMzSqh0H4wvl7XSeO16FKx7QqaHld8lZeEajPX7y1C5qKKeNgyrfyvmjmjUQ=="
+ "integrity": "sha512-If3Zi4BSjlQIJ9fgAhSiKi0oJtgMzSqh0H4wvl7XSeO16FKx7QqaHld8lZeEajPX7y1C5qKKeNgyrfyvmjmjUQ==",
+ "license": "Apache-2.0"
},
"node_modules/array-buffer-byte-length": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
- "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz",
+ "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "is-array-buffer": "^3.0.1"
+ "call-bound": "^1.0.3",
+ "is-array-buffer": "^3.0.5"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -4941,29 +5697,33 @@
"node_modules/array-flatten": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "license": "MIT"
},
"node_modules/array-union": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
"integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/arraybuffer.prototype.slice": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz",
- "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz",
+ "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "array-buffer-byte-length": "^1.0.0",
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "get-intrinsic": "^1.2.1",
- "is-array-buffer": "^3.0.2",
- "is-shared-array-buffer": "^1.0.2"
+ "array-buffer-byte-length": "^1.0.1",
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.5",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "is-array-buffer": "^3.0.4"
},
"engines": {
"node": ">= 0.4"
@@ -4977,6 +5737,7 @@
"resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
"integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -4986,28 +5747,66 @@
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
"integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"safer-buffer": "~2.1.0"
}
},
+ "node_modules/asn1-ber": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/asn1-ber/-/asn1-ber-1.2.2.tgz",
+ "integrity": "sha512-CbNem/7hxrjSiOAOOTX4iZxu+0m3jiLqlsERQwwPM1IDR/22M8IPpA1VVndCLw5KtjRYyRODbvAEIfuTogNDng==",
+ "license": "MIT"
+ },
"node_modules/astral-regex": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
"integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
+ "node_modules/async": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/async-function": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz",
+ "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/async-lock": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.1.tgz",
+ "integrity": "sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "license": "MIT"
},
"node_modules/available-typed-arrays": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
- "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "possible-typed-array-names": "^1.0.0"
+ },
"engines": {
"node": ">= 0.4"
},
@@ -5018,46 +5817,49 @@
"node_modules/await-lock": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz",
- "integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw=="
+ "integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==",
+ "license": "MIT"
+ },
+ "node_modules/aws-ssl-profiles": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz",
+ "integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6.0.0"
+ }
},
"node_modules/axios": {
- "version": "0.28.0",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.28.0.tgz",
- "integrity": "sha512-Tu7NYoGY4Yoc7I+Npf9HhUMtEEpV7ZiLH9yndTCoNhcpBH0kwcvFbzYN9/u5QKI5A6uefjsNNWaz5olJVYS62Q==",
+ "version": "0.30.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.30.0.tgz",
+ "integrity": "sha512-Z4F3LjCgfjZz8BMYalWdMgAQUnEtKDmpwNHjh/C8pQZWde32TF64cqnSeyL3xD/aTIASRU30RHTNzRiV/NpGMg==",
+ "license": "MIT",
"dependencies": {
- "follow-redirects": "^1.15.0",
+ "follow-redirects": "^1.15.4",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
},
- "node_modules/axios-ntlm": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/axios-ntlm/-/axios-ntlm-1.3.0.tgz",
- "integrity": "sha512-NPNsIMO1SGX5scs3ZWJqsV7iRLvET+DlRl94aZ7Sx14zA8RTQh9EDxsJmxB9cKjardKfp2Vge444uYYLfvWC0Q==",
- "dependencies": {
- "axios": "^0.21.3",
- "dev-null": "^0.1.1"
- }
- },
- "node_modules/axios-ntlm/node_modules/axios": {
- "version": "0.21.4",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
- "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
- "dependencies": {
- "follow-redirects": "^1.14.0"
- }
+ "node_modules/b4a": {
+ "version": "1.6.7",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz",
+ "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==",
+ "dev": true,
+ "license": "Apache-2.0"
},
"node_modules/babel-plugin-add-module-exports": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz",
"integrity": "sha512-3AN/9V/rKuv90NG65m4tTHsI04XrCKsWbztIcW7a8H5iIN7WlvWucRtVV0V/rT4QvtA11n5Vmp20fLwfMWqp6g==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/babel-runtime": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
"integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"core-js": "^2.4.0",
"regenerator-runtime": "^0.11.0"
@@ -5069,18 +5871,21 @@
"integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
"deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
"dev": true,
- "hasInstallScript": true
+ "hasInstallScript": true,
+ "license": "MIT"
},
"node_modules/babel-runtime/node_modules/regenerator-runtime": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/badge-maker": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/badge-maker/-/badge-maker-3.3.1.tgz",
"integrity": "sha512-OO/PS7Zg2E6qaUWzHEHt21Q5VjcFBAJVA8ztgT/fIdSZFBUwoyeo0ZhA6V5tUM8Vcjq8DJl6jfGhpjESssyqMQ==",
+ "license": "CC0-1.0",
"dependencies": {
"anafanafo": "2.0.0",
"css-color-converter": "^2.0.0"
@@ -5096,12 +5901,91 @@
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "license": "MIT"
+ },
+ "node_modules/bare-events": {
+ "version": "2.5.4",
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz",
+ "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true
+ },
+ "node_modules/bare-fs": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.2.tgz",
+ "integrity": "sha512-8wSeOia5B7LwD4+h465y73KOdj5QHsbbuoUfPBi+pXgFJIPuG7SsiOdJuijWMyfid49eD+WivpfY7KT8gbAzBA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "bare-events": "^2.5.4",
+ "bare-path": "^3.0.0",
+ "bare-stream": "^2.6.4"
+ },
+ "engines": {
+ "bare": ">=1.16.0"
+ },
+ "peerDependencies": {
+ "bare-buffer": "*"
+ },
+ "peerDependenciesMeta": {
+ "bare-buffer": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/bare-os": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz",
+ "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "engines": {
+ "bare": ">=1.14.0"
+ }
+ },
+ "node_modules/bare-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz",
+ "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "bare-os": "^3.0.1"
+ }
+ },
+ "node_modules/bare-stream": {
+ "version": "2.6.5",
+ "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz",
+ "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "streamx": "^2.21.0"
+ },
+ "peerDependencies": {
+ "bare-buffer": "*",
+ "bare-events": "*"
+ },
+ "peerDependenciesMeta": {
+ "bare-buffer": {
+ "optional": true
+ },
+ "bare-events": {
+ "optional": true
+ }
+ }
},
"node_modules/barse": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/barse/-/barse-0.4.3.tgz",
"integrity": "sha512-UEpvriJqAn8zuVinYICuKoPttZy3XxXEoqX/V2uYAL4zzJRuNzCK3+20nAu3YUIa2U7G53kf90wfBIp9/A+Odw==",
+ "license": "MIT",
"dependencies": {
"readable-stream": "~1.0.2"
}
@@ -5109,12 +5993,14 @@
"node_modules/barse/node_modules/isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
+ "license": "MIT"
},
"node_modules/barse/node_modules/readable-stream": {
"version": "1.0.34",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
"integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==",
+ "license": "MIT",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.1",
@@ -5125,7 +6011,8 @@
"node_modules/barse/node_modules/string_decoder": {
"version": "0.10.31",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
+ "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
+ "license": "MIT"
},
"node_modules/base64-js": {
"version": "1.5.1",
@@ -5144,12 +6031,14 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/base64id": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
"integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
+ "license": "MIT",
"engines": {
"node": "^4.5.0 || >= 5.9"
}
@@ -5158,6 +6047,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
"integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
+ "license": "MIT",
"dependencies": {
"safe-buffer": "5.1.2"
},
@@ -5165,11 +6055,18 @@
"node": ">= 0.8"
}
},
+ "node_modules/basic-auth/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "license": "MIT"
+ },
"node_modules/bcrypt-pbkdf": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
"integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"tweetnacl": "^0.14.3"
}
@@ -5177,38 +6074,47 @@
"node_modules/bcryptjs": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
- "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ=="
+ "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==",
+ "license": "MIT"
},
"node_modules/before-after-hook": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
"integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==",
- "dev": true
+ "dev": true,
+ "license": "Apache-2.0"
},
"node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/binary-search": {
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/binary-search/-/binary-search-1.3.6.tgz",
- "integrity": "sha512-nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA=="
+ "integrity": "sha512-nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA==",
+ "license": "CC0-1.0"
},
"node_modules/bintrees": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz",
- "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw=="
+ "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==",
+ "license": "MIT"
},
"node_modules/birpc": {
- "version": "0.2.16",
- "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.16.tgz",
- "integrity": "sha512-OtdZMBUZK0iZmWwD9aQXmtdUXtOHXz676T+cAX4lStFO3u5pQoKjMJtFfQzNzlzRC6ZHPRBvtFB6ATllNl7YKg==",
+ "version": "0.2.19",
+ "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.19.tgz",
+ "integrity": "sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==",
"dev": true,
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/antfu"
}
@@ -5217,6 +6123,7 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "license": "MIT",
"dependencies": {
"buffer": "^5.5.0",
"inherits": "^2.0.4",
@@ -5224,37 +6131,34 @@
}
},
"node_modules/body-parser": {
- "version": "1.19.2",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz",
- "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==",
+ "version": "1.20.3",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
+ "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
+ "license": "MIT",
"dependencies": {
"bytes": "3.1.2",
- "content-type": "~1.0.4",
+ "content-type": "~1.0.5",
"debug": "2.6.9",
- "depd": "~1.1.2",
- "http-errors": "1.8.1",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
"iconv-lite": "0.4.24",
- "on-finished": "~2.3.0",
- "qs": "6.9.7",
- "raw-body": "2.4.3",
- "type-is": "~1.6.18"
+ "on-finished": "2.4.1",
+ "qs": "6.13.0",
+ "raw-body": "2.5.2",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
},
"engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/body-parser/node_modules/bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
- "engines": {
- "node": ">= 0.8"
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
}
},
"node_modules/body-parser/node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
@@ -5263,6 +6167,7 @@
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
@@ -5273,12 +6178,17 @@
"node_modules/body-parser/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
},
"node_modules/body-parser/node_modules/qs": {
- "version": "6.9.7",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz",
- "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==",
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
+ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "side-channel": "^1.0.6"
+ },
"engines": {
"node": ">=0.6"
},
@@ -5289,13 +6199,15 @@
"node_modules/boolbase": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "license": "ISC"
},
"node_modules/bootstrap": {
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz",
"integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==",
"dev": true,
+ "license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/bootstrap"
@@ -5308,32 +6220,35 @@
"version": "2.11.0",
"resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz",
"integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==",
+ "license": "MIT",
"optional": true
},
"node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/browserslist": {
- "version": "4.23.0",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
- "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
+ "version": "4.24.4",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
+ "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
"dev": true,
"funding": [
{
@@ -5349,11 +6264,12 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
- "caniuse-lite": "^1.0.30001587",
- "electron-to-chromium": "^1.4.668",
- "node-releases": "^2.0.14",
- "update-browserslist-db": "^1.0.13"
+ "caniuse-lite": "^1.0.30001688",
+ "electron-to-chromium": "^1.5.73",
+ "node-releases": "^2.0.19",
+ "update-browserslist-db": "^1.1.1"
},
"bin": {
"browserslist": "cli.js"
@@ -5366,6 +6282,7 @@
"version": "4.7.2",
"resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz",
"integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==",
+ "license": "Apache-2.0",
"dependencies": {
"buffer": "^5.6.0"
},
@@ -5391,28 +6308,33 @@
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"dependencies": {
"base64-js": "^1.3.1",
"ieee754": "^1.1.13"
}
},
+ "node_modules/buffer-crc32": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz",
+ "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
"node_modules/buffer-equal-constant-time": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
- "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
+ "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
+ "license": "BSD-3-Clause"
},
"node_modules/buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
- },
- "node_modules/buffer-writer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz",
- "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==",
- "engines": {
- "node": ">=4"
- }
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "license": "MIT"
},
"node_modules/buildcheck": {
"version": "0.0.6",
@@ -5429,6 +6351,7 @@
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
"integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
},
@@ -5441,6 +6364,7 @@
"resolved": "https://registry.npmjs.org/bulk-write-stream/-/bulk-write-stream-2.0.1.tgz",
"integrity": "sha512-XWOLjgHtpDasHfwM8oO4df1JoZwa7/OwTsXDzh4rUTo+9CowzeOFBZz43w+H14h1fyq+xl28tVIBrdjcjj4Gug==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.3",
"readable-stream": "^3.1.1"
@@ -5450,7 +6374,7 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
"integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"run-applescript": "^7.0.0"
},
@@ -5461,10 +6385,21 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/byline": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz",
+ "integrity": "sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/bytes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
- "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -5473,6 +6408,7 @@
"version": "15.3.0",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz",
"integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==",
+ "license": "ISC",
"optional": true,
"dependencies": {
"@npmcli/fs": "^1.0.0",
@@ -5499,38 +6435,99 @@
}
},
"node_modules/cacheable-lookup": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz",
- "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz",
+ "integrity": "sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==",
+ "license": "MIT",
"engines": {
- "node": ">=14.16"
+ "node": ">=10.6.0"
}
},
"node_modules/cacheable-request": {
- "version": "10.2.14",
- "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz",
- "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz",
+ "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==",
+ "license": "MIT",
"dependencies": {
- "@types/http-cache-semantics": "^4.0.2",
- "get-stream": "^6.0.1",
- "http-cache-semantics": "^4.1.1",
- "keyv": "^4.5.3",
- "mimic-response": "^4.0.0",
- "normalize-url": "^8.0.0",
- "responselike": "^3.0.0"
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^4.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^6.0.1",
+ "responselike": "^2.0.0"
},
"engines": {
- "node": ">=14.16"
+ "node": ">=8"
+ }
+ },
+ "node_modules/cacheable-request/node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "license": "MIT",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cacheable-request/node_modules/lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
}
},
"node_modules/call-bind": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
- "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
+ "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.1",
- "set-function-length": "^1.1.1"
+ "call-bind-apply-helpers": "^1.0.0",
+ "es-define-property": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/call-bound": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "get-intrinsic": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -5541,6 +6538,7 @@
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -5550,6 +6548,7 @@
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
"integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -5562,6 +6561,7 @@
"resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz",
"integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"camelcase": "^6.3.0",
"map-obj": "^4.1.0",
@@ -5580,6 +6580,7 @@
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
"integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=10"
},
@@ -5588,9 +6589,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001588",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001588.tgz",
- "integrity": "sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ==",
+ "version": "1.0.30001713",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001713.tgz",
+ "integrity": "sha512-wCIWIg+A4Xr7NfhTuHdX+/FKh3+Op3LBbSp2N5Pfx6T/LhdQy3GTyoTg48BReaW/MyMNZAkTadsBtai3ldWK0Q==",
"dev": true,
"funding": [
{
@@ -5605,13 +6606,15 @@
"type": "github",
"url": "https://github.com/sponsors/ai"
}
- ]
+ ],
+ "license": "CC-BY-4.0"
},
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -5628,6 +6631,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -5639,6 +6643,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/char-width-table-consumer/-/char-width-table-consumer-1.0.0.tgz",
"integrity": "sha512-Fz4UD0LBpxPgL9i29CJ5O4KANwaMnX/OhhbxzvNa332h+9+nRKyeuLw4wA51lt/ex67+/AdsoBQJF3kgX2feYQ==",
+ "license": "MIT",
"dependencies": {
"binary-search": "^1.3.5"
}
@@ -5646,13 +6651,15 @@
"node_modules/chardet": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/chardet/-/chardet-1.4.0.tgz",
- "integrity": "sha512-NpwMDdSIprbYx1CLnfbxEIarI0Z+s9MssEgggMNheGM+WD68yOhV7IEA/3r6tr0yTRgQD0HuZJDw32s99i6L+A=="
+ "integrity": "sha512-NpwMDdSIprbYx1CLnfbxEIarI0Z+s9MssEgggMNheGM+WD68yOhV7IEA/3r6tr0yTRgQD0HuZJDw32s99i6L+A==",
+ "license": "MIT"
},
"node_modules/chart.js": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.2.1.tgz",
"integrity": "sha512-6YbpQ0nt3NovAgOzbkSSeeAQu/3za1319dPUQTXn9WcOpywM8rGKxJHrhS8V8xEkAlk8YhEfjbuAPfUyp6jIsw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@kurkle/color": "^0.3.0"
},
@@ -5665,6 +6672,7 @@
"resolved": "https://registry.npmjs.org/chartjs-adapter-dayjs-4/-/chartjs-adapter-dayjs-4-1.0.4.tgz",
"integrity": "sha512-yy9BAYW4aNzPVrCWZetbILegTRb7HokhgospPoC3b5iZ5qdlqNmXts2KdSp6AqnjkPAp/YWyHDxLvIvwt5x81w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -5674,25 +6682,31 @@
}
},
"node_modules/check-password-strength": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/check-password-strength/-/check-password-strength-2.0.7.tgz",
- "integrity": "sha512-VyklBkB6dOKnCIh63zdVr7QKVMN9/npwUqNAXxWrz8HabVZH/n/d+lyNm1O/vbXFJlT/Hytb5ouYKYGkoeZirQ=="
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/check-password-strength/-/check-password-strength-2.0.10.tgz",
+ "integrity": "sha512-HRM5ICPmtnNtLnTv2QrfVkq1IxI9z3bzYpDJ1k5ixwD9HtJGHuv265R6JmHOV6r8wLhQMlULnIUVpkrC2yaiCw==",
+ "license": "MIT"
},
"node_modules/cheerio": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz",
- "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz",
+ "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==",
+ "license": "MIT",
"dependencies": {
"cheerio-select": "^2.1.0",
"dom-serializer": "^2.0.0",
"domhandler": "^5.0.3",
- "domutils": "^3.0.1",
- "htmlparser2": "^8.0.1",
- "parse5": "^7.0.0",
- "parse5-htmlparser2-tree-adapter": "^7.0.0"
+ "domutils": "^3.1.0",
+ "encoding-sniffer": "^0.2.0",
+ "htmlparser2": "^9.1.0",
+ "parse5": "^7.1.2",
+ "parse5-htmlparser2-tree-adapter": "^7.0.0",
+ "parse5-parser-stream": "^7.1.2",
+ "undici": "^6.19.5",
+ "whatwg-mimetype": "^4.0.0"
},
"engines": {
- "node": ">= 6"
+ "node": ">=18.17"
},
"funding": {
"url": "https://github.com/cheeriojs/cheerio?sponsor=1"
@@ -5702,6 +6716,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
"integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
+ "license": "BSD-2-Clause",
"dependencies": {
"boolbase": "^1.0.0",
"css-select": "^5.1.0",
@@ -5714,17 +6729,21 @@
"url": "https://github.com/sponsors/fb55"
}
},
+ "node_modules/cheerio/node_modules/undici": {
+ "version": "6.21.2",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.2.tgz",
+ "integrity": "sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.17"
+ }
+ },
"node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
"dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
+ "license": "MIT",
"dependencies": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
@@ -5737,6 +6756,9 @@
"engines": {
"node": ">= 8.10.0"
},
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
"optionalDependencies": {
"fsevents": "~2.3.2"
}
@@ -5746,6 +6768,7 @@
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"is-glob": "^4.0.1"
},
@@ -5757,6 +6780,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "license": "ISC",
"engines": {
"node": ">=10"
}
@@ -5764,12 +6788,14 @@
"node_modules/chroma-js": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz",
- "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A=="
+ "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==",
+ "license": "(BSD-3-Clause AND Apache-2.0)"
},
"node_modules/clean-stack": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=6"
@@ -5779,6 +6805,7 @@
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
"integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "license": "ISC",
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.1",
@@ -5788,10 +6815,23 @@
"node": ">=12"
}
},
+ "node_modules/clone-response": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
+ "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-response": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/cluster-key-slot": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.1.tgz",
"integrity": "sha512-rwHwUfXL40Chm1r08yrhU3qpUvdVlgkKNeyeGPOxnW8/SyVDvgRaed/Uz54AqWNaTCAThlj6QAs3TZcKI0xDEw==",
+ "license": "Apache-2.0",
"engines": {
"node": ">=0.10.0"
}
@@ -5800,6 +6840,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
@@ -5810,12 +6851,14 @@
"node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "license": "MIT"
},
"node_modules/color-support": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
"integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+ "license": "ISC",
"bin": {
"color-support": "bin.js"
}
@@ -5824,17 +6867,20 @@
"version": "2.9.3",
"resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
"integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/colorette": {
"version": "2.0.19",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz",
- "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ=="
+ "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==",
+ "license": "MIT"
},
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "license": "MIT",
"dependencies": {
"delayed-stream": "~1.0.0"
},
@@ -5845,12 +6891,14 @@
"node_modules/command-exists": {
"version": "1.2.9",
"resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
- "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w=="
+ "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==",
+ "license": "MIT"
},
"node_modules/commander": {
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
"integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
+ "license": "MIT",
"engines": {
"node": ">=14"
}
@@ -5860,6 +6908,7 @@
"resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.0.tgz",
"integrity": "sha512-QLyTNiZ2KDOibvFPlZ6ZngVsZ/0gYnE6uTXi5aoDg8ed3AkJAz4sEje3Y8a29hQ1s6A99MZXe47fLAXQ1rTqaw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 12.0.0"
}
@@ -5868,6 +6917,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/commist/-/commist-1.1.0.tgz",
"integrity": "sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==",
+ "license": "MIT",
"dependencies": {
"leven": "^2.1.0",
"minimist": "^1.1.0"
@@ -5876,12 +6926,73 @@
"node_modules/compare-versions": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz",
- "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA=="
+ "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==",
+ "license": "MIT"
+ },
+ "node_modules/compress-commons": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz",
+ "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "crc-32": "^1.2.0",
+ "crc32-stream": "^6.0.0",
+ "is-stream": "^2.0.1",
+ "normalize-path": "^3.0.0",
+ "readable-stream": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/compress-commons/node_modules/buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
+ },
+ "node_modules/compress-commons/node_modules/readable-stream": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
+ "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "abort-controller": "^3.0.0",
+ "buffer": "^6.0.3",
+ "events": "^3.3.0",
+ "process": "^0.11.10",
+ "string_decoder": "^1.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
},
"node_modules/compressible": {
"version": "2.0.18",
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
"integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+ "license": "MIT",
"dependencies": {
"mime-db": ">= 1.43.0 < 2"
},
@@ -5890,16 +7001,17 @@
}
},
"node_modules/compression": {
- "version": "1.7.4",
- "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
- "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+ "version": "1.7.5",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.5.tgz",
+ "integrity": "sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==",
+ "license": "MIT",
"dependencies": {
- "accepts": "~1.3.5",
- "bytes": "3.0.0",
- "compressible": "~2.0.16",
+ "bytes": "3.1.2",
+ "compressible": "~2.0.18",
"debug": "2.6.9",
+ "negotiator": "~0.6.4",
"on-headers": "~1.0.2",
- "safe-buffer": "5.1.2",
+ "safe-buffer": "5.2.1",
"vary": "~1.1.2"
},
"engines": {
@@ -5910,6 +7022,7 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
@@ -5917,12 +7030,14 @@
"node_modules/compression/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
},
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "license": "MIT"
},
"node_modules/concat-stream": {
"version": "2.0.0",
@@ -5931,6 +7046,7 @@
"engines": [
"node >= 6.0"
],
+ "license": "MIT",
"dependencies": {
"buffer-from": "^1.0.0",
"inherits": "^2.0.3",
@@ -5943,6 +7059,7 @@
"resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.6.0.tgz",
"integrity": "sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chalk": "^4.1.0",
"date-fns": "^2.29.1",
@@ -5968,12 +7085,14 @@
"node_modules/console-control-strings": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
+ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
+ "license": "ISC"
},
"node_modules/content-disposition": {
"version": "0.5.4",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
"integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "license": "MIT",
"dependencies": {
"safe-buffer": "5.2.1"
},
@@ -5981,29 +7100,11 @@
"node": ">= 0.6"
}
},
- "node_modules/content-disposition/node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
"node_modules/content-type": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -6012,12 +7113,14 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/cookie": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
- "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
+ "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -6025,7 +7128,24 @@
"node_modules/cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "license": "MIT"
+ },
+ "node_modules/copy-anything": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz",
+ "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-what": "^4.1.8"
+ },
+ "engines": {
+ "node": ">=12.13"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mesqueeb"
+ }
},
"node_modules/core-js": {
"version": "3.26.1",
@@ -6033,6 +7153,7 @@
"integrity": "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
@@ -6041,12 +7162,14 @@
"node_modules/core-util-is": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
+ "license": "MIT"
},
"node_modules/cors": {
"version": "2.8.5",
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
"integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "license": "MIT",
"dependencies": {
"object-assign": "^4",
"vary": "^1"
@@ -6060,6 +7183,7 @@
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz",
"integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"import-fresh": "^3.3.0",
"js-yaml": "^4.1.0",
@@ -6081,27 +7205,103 @@
}
}
},
+ "node_modules/country-flag-emoji-polyfill": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/country-flag-emoji-polyfill/-/country-flag-emoji-polyfill-0.1.8.tgz",
+ "integrity": "sha512-Mbah52sADS3gshUYhK5142gtUuJpHYOXlXtLFI3Ly4RqgkmPMvhX9kMZSTqDM8P7UqtSW99eHKFphhQSGXA3Cg==",
+ "license": "MIT"
+ },
"node_modules/cpu-features": {
- "version": "0.0.9",
- "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.9.tgz",
- "integrity": "sha512-AKjgn2rP2yJyfbepsmLfiYcmtNn/2eUvocUyM/09yB0YDiz39HteK/5/T4Onf0pmdYDMgkBoGvRLvEguzyL7wQ==",
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.10.tgz",
+ "integrity": "sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==",
"dev": true,
"hasInstallScript": true,
"optional": true,
"dependencies": {
"buildcheck": "~0.0.6",
- "nan": "^2.17.0"
+ "nan": "^2.19.0"
},
"engines": {
"node": ">=10.0.0"
}
},
- "node_modules/croner": {
- "version": "6.0.7",
- "resolved": "https://registry.npmjs.org/croner/-/croner-6.0.7.tgz",
- "integrity": "sha512-k3Xx3Rcclfr60Yx4TmvsF3Yscuiql8LSvYLaphTsaq5Hk8La4Z/udmUANMOTKpgGGroI2F6/XOr9cU9OFkYluQ==",
+ "node_modules/crc-32": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz",
+ "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "crc32": "bin/crc32.njs"
+ },
"engines": {
- "node": ">=6.0"
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/crc32-stream": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz",
+ "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "crc-32": "^1.2.0",
+ "readable-stream": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/crc32-stream/node_modules/buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
+ },
+ "node_modules/crc32-stream/node_modules/readable-stream": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
+ "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "abort-controller": "^3.0.0",
+ "buffer": "^6.0.3",
+ "events": "^3.3.0",
+ "process": "^0.11.10",
+ "string_decoder": "^1.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/croner": {
+ "version": "8.1.2",
+ "resolved": "https://registry.npmjs.org/croner/-/croner-8.1.2.tgz",
+ "integrity": "sha512-ypfPFcAXHuAZRCzo3vJL6ltENzniTjwe/qsLleH1V2/7SRDjgvRQyrLmumFTLmjFax4IuSxfGXEn79fozXcJog==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0"
}
},
"node_modules/cronstrue": {
@@ -6109,6 +7309,7 @@
"resolved": "https://registry.npmjs.org/cronstrue/-/cronstrue-2.24.0.tgz",
"integrity": "sha512-A1of24mAGz+OWrdGsxT9BOnDqn2ba182hie8Jx0UcEC2t+ZKtfAJxaFntKUgR7sIisU297fgHBSlNhMIfvAkSA==",
"dev": true,
+ "license": "MIT",
"bin": {
"cronstrue": "bin/cli.js"
}
@@ -6118,6 +7319,7 @@
"resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
"integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cross-spawn": "^7.0.1"
},
@@ -6132,9 +7334,10 @@
}
},
"node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "license": "MIT",
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
@@ -6148,6 +7351,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/css-color-converter/-/css-color-converter-2.0.0.tgz",
"integrity": "sha512-oLIG2soZz3wcC3aAl/7Us5RS8Hvvc6I8G8LniF/qfMmrm7fIKQ8RIDDRZeKyGL2SrWfNqYspuLShbnjBMVWm8g==",
+ "license": "MIT",
"dependencies": {
"color-convert": "^0.5.2",
"color-name": "^1.1.4",
@@ -6160,10 +7364,11 @@
"integrity": "sha512-RwBeO/B/vZR3dfKL1ye/vx8MHZ40ugzpyfeVG5GsiuGnrlMWe2o8wxBbLCpw9CsxV+wHuzYlCiWnybrIA0ling=="
},
"node_modules/css-functions-list": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.1.tgz",
- "integrity": "sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ==",
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz",
+ "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12 || >=16"
}
@@ -6172,6 +7377,7 @@
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
"integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+ "license": "BSD-2-Clause",
"dependencies": {
"boolbase": "^1.0.0",
"css-what": "^6.1.0",
@@ -6188,6 +7394,7 @@
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
"integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"mdn-data": "2.0.30",
"source-map-js": "^1.0.1"
@@ -6199,12 +7406,14 @@
"node_modules/css-unit-converter": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz",
- "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA=="
+ "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==",
+ "license": "MIT"
},
"node_modules/css-what": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
"integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "license": "BSD-2-Clause",
"engines": {
"node": ">= 6"
},
@@ -6217,6 +7426,7 @@
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
"dev": true,
+ "license": "MIT",
"bin": {
"cssesc": "bin/cssesc"
},
@@ -6228,13 +7438,69 @@
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/data-view-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz",
+ "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-length": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz",
+ "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/inspect-js"
+ }
+ },
+ "node_modules/data-view-byte-offset": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz",
+ "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/date-fns": {
"version": "2.30.0",
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
"integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.21.0"
},
@@ -6247,16 +7513,18 @@
}
},
"node_modules/dayjs": {
- "version": "1.11.10",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
- "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
+ "version": "1.11.13",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
+ "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
+ "license": "MIT"
},
"node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+ "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
+ "license": "MIT",
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -6272,6 +7540,7 @@
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz",
"integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -6284,6 +7553,7 @@
"resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz",
"integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"decamelize": "^1.1.0",
"map-obj": "^1.0.0"
@@ -6300,6 +7570,7 @@
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -6309,6 +7580,7 @@
"resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
"integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -6317,6 +7589,7 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
"integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "license": "MIT",
"dependencies": {
"mimic-response": "^3.1.0"
},
@@ -6331,6 +7604,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
"integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -6342,13 +7616,14 @@
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/default-browser": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz",
"integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"bundle-name": "^4.1.0",
"default-browser-id": "^5.0.0"
@@ -6364,7 +7639,7 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz",
"integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -6376,27 +7651,35 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
"integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
+ "license": "MIT",
"engines": {
"node": ">=10"
}
},
"node_modules/define-data-property": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
- "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "get-intrinsic": "^1.2.1",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.0"
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/define-lazy-prop": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
"integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -6405,6 +7688,8 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
"integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"define-data-property": "^1.0.1",
"has-property-descriptors": "^1.0.0",
@@ -6422,6 +7707,7 @@
"resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz",
"integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -6433,6 +7719,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "license": "MIT",
"engines": {
"node": ">=0.4.0"
}
@@ -6440,39 +7727,49 @@
"node_modules/delegates": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
+ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==",
+ "license": "MIT"
},
"node_modules/denque": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz",
"integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==",
+ "license": "Apache-2.0",
"engines": {
"node": ">=0.10"
}
},
"node_modules/depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "license": "MIT",
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8"
}
},
"node_modules/deprecation": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
"integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/destroy": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
- "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg=="
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
},
"node_modules/detect-libc": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz",
- "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
+ "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
+ "license": "Apache-2.0",
"engines": {
"node": ">=8"
}
@@ -6480,19 +7777,22 @@
"node_modules/dev-null": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/dev-null/-/dev-null-0.1.1.tgz",
- "integrity": "sha512-nMNZG0zfMgmdv8S5O0TM5cpwNbGKRGPCxVsr0SmA3NZZy9CYBbuNLL0PD3Acx9e5LIUgwONXtM9kM6RlawPxEQ=="
+ "integrity": "sha512-nMNZG0zfMgmdv8S5O0TM5cpwNbGKRGPCxVsr0SmA3NZZy9CYBbuNLL0PD3Acx9e5LIUgwONXtM9kM6RlawPxEQ==",
+ "license": "MIT"
},
"node_modules/dijkstrajs": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
"integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/dir-glob": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
"integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"path-type": "^4.0.0"
},
@@ -6504,13 +7804,153 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/dns2/-/dns2-2.0.5.tgz",
"integrity": "sha512-dznYrQU+Txcz++klGLBY9YR3WLOGHTy2vAKAqF+yYw1KaKFm5f5Y4jbbFEvohJf8YtZ0J2SzZlZx2k6LV4zJqQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/docker-compose": {
+ "version": "0.24.8",
+ "resolved": "https://registry.npmjs.org/docker-compose/-/docker-compose-0.24.8.tgz",
+ "integrity": "sha512-plizRs/Vf15H+GCVxq2EUvyPK7ei9b/cVesHvjnX4xaXjM9spHe2Ytq0BitndFgvTJ3E3NljPNUEl7BAN43iZw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "yaml": "^2.2.2"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/docker-modem": {
+ "version": "5.0.6",
+ "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-5.0.6.tgz",
+ "integrity": "sha512-ens7BiayssQz/uAxGzH8zGXCtiV24rRWXdjNha5V4zSOcxmAZsfGVm/PPFbwQdqEkDnhG+SyR9E3zSHUbOKXBQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "debug": "^4.1.1",
+ "readable-stream": "^3.5.0",
+ "split-ca": "^1.0.1",
+ "ssh2": "^1.15.0"
+ },
+ "engines": {
+ "node": ">= 8.0"
+ }
+ },
+ "node_modules/dockerode": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.5.tgz",
+ "integrity": "sha512-ZPmKSr1k1571Mrh7oIBS/j0AqAccoecY2yH420ni5j1KyNMgnoTh4Nu4FWunh0HZIJmRSmSysJjBIpa/zyWUEA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@balena/dockerignore": "^1.0.2",
+ "@grpc/grpc-js": "^1.11.1",
+ "@grpc/proto-loader": "^0.7.13",
+ "docker-modem": "^5.0.6",
+ "protobufjs": "^7.3.2",
+ "tar-fs": "~2.1.2",
+ "uuid": "^10.0.0"
+ },
+ "engines": {
+ "node": ">= 8.0"
+ }
+ },
+ "node_modules/dockerode/node_modules/@grpc/grpc-js": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.13.2.tgz",
+ "integrity": "sha512-nnR5nmL6lxF8YBqb6gWvEgLdLh/Fn+kvAdX5hUOnt48sNSb0riz/93ASd2E5gvanPA41X6Yp25bIfGRp1SMb2g==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@grpc/proto-loader": "^0.7.13",
+ "@js-sdsl/ordered-map": "^4.4.2"
+ },
+ "engines": {
+ "node": ">=12.10.0"
+ }
+ },
+ "node_modules/dockerode/node_modules/chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/dockerode/node_modules/protobufjs": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz",
+ "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@protobufjs/aspromise": "^1.1.2",
+ "@protobufjs/base64": "^1.1.2",
+ "@protobufjs/codegen": "^2.0.4",
+ "@protobufjs/eventemitter": "^1.1.0",
+ "@protobufjs/fetch": "^1.1.0",
+ "@protobufjs/float": "^1.0.2",
+ "@protobufjs/inquire": "^1.1.0",
+ "@protobufjs/path": "^1.1.2",
+ "@protobufjs/pool": "^1.1.0",
+ "@protobufjs/utf8": "^1.1.0",
+ "@types/node": ">=13.7.0",
+ "long": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/dockerode/node_modules/tar-fs": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz",
+ "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chownr": "^1.1.1",
+ "mkdirp-classic": "^0.5.2",
+ "pump": "^3.0.0",
+ "tar-stream": "^2.1.4"
+ }
+ },
+ "node_modules/dockerode/node_modules/tar-stream": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bl": "^4.0.3",
+ "end-of-stream": "^1.4.1",
+ "fs-constants": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/dockerode/node_modules/uuid": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz",
+ "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==",
+ "dev": true,
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
},
"node_modules/doctrine": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
"integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"esutils": "^2.0.2"
},
@@ -6522,6 +7962,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
"integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "license": "MIT",
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.2",
@@ -6540,12 +7981,14 @@
"type": "github",
"url": "https://github.com/sponsors/fb55"
}
- ]
+ ],
+ "license": "BSD-2-Clause"
},
"node_modules/domhandler": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
"integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.3.0"
},
@@ -6557,15 +8000,20 @@
}
},
"node_modules/dompurify": {
- "version": "2.4.7",
- "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.7.tgz",
- "integrity": "sha512-kxxKlPEDa6Nc5WJi+qRgPbOAbgTpSULL+vI3NUXsZMlkJxTqYI9wg5ZTay2sFrdZRWHPWNi+EdAhcJf81WtoMQ==",
- "dev": true
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.5.tgz",
+ "integrity": "sha512-mLPd29uoRe9HpvwP2TxClGQBzGXeEC/we/q+bFlmPPmj2p2Ugl3r6ATu/UU1v77DXNcehiBg9zsr1dREyA/dJQ==",
+ "dev": true,
+ "license": "(MPL-2.0 OR Apache-2.0)",
+ "optionalDependencies": {
+ "@types/trusted-types": "^2.0.7"
+ }
},
"node_modules/domutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
- "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
+ "license": "BSD-2-Clause",
"dependencies": {
"dom-serializer": "^2.0.0",
"domelementtype": "^2.3.0",
@@ -6579,30 +8027,48 @@
"version": "16.0.3",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz",
"integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==",
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=12"
}
},
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/duplexify": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz",
- "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==",
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz",
+ "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==",
+ "license": "MIT",
"dependencies": {
"end-of-stream": "^1.4.1",
"inherits": "^2.0.3",
"readable-stream": "^3.1.1",
- "stream-shift": "^1.0.0"
+ "stream-shift": "^1.0.2"
}
},
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "license": "MIT"
},
"node_modules/ecdsa-sig-formatter": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
"integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+ "license": "Apache-2.0",
"dependencies": {
"safe-buffer": "^5.0.1"
}
@@ -6610,29 +8076,27 @@
"node_modules/ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "license": "MIT"
},
"node_modules/electron-to-chromium": {
- "version": "1.4.677",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.677.tgz",
- "integrity": "sha512-erDa3CaDzwJOpyvfKhOiJjBVNnMM0qxHq47RheVVwsSQrgBA9ZSGV9kdaOfZDPXcHzhG7lBxhj6A7KvfLJBd6Q==",
- "dev": true
+ "version": "1.5.136",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.136.tgz",
+ "integrity": "sha512-kL4+wUTD7RSA5FHx5YwWtjDnEEkIIikFgWHR4P6fqjw1PPLlqYkxeOb++wAauAssat0YClCy8Y3C5SxgSkjibQ==",
+ "dev": true,
+ "license": "ISC"
},
"node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
- },
- "node_modules/encode-utf8": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz",
- "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==",
- "dev": true
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
},
"node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -6641,61 +8105,95 @@
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
"integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+ "license": "MIT",
"optional": true,
"dependencies": {
"iconv-lite": "^0.6.2"
}
},
+ "node_modules/encoding-sniffer": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz",
+ "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==",
+ "license": "MIT",
+ "dependencies": {
+ "iconv-lite": "^0.6.3",
+ "whatwg-encoding": "^3.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/encoding-sniffer?sponsor=1"
+ }
+ },
"node_modules/end-of-stream": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "license": "MIT",
"dependencies": {
"once": "^1.4.0"
}
},
"node_modules/engine.io": {
- "version": "6.4.2",
- "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.2.tgz",
- "integrity": "sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==",
+ "version": "6.6.4",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz",
+ "integrity": "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==",
+ "license": "MIT",
"dependencies": {
- "@types/cookie": "^0.4.1",
"@types/cors": "^2.8.12",
"@types/node": ">=10.0.0",
"accepts": "~1.3.4",
"base64id": "2.0.0",
- "cookie": "~0.4.1",
+ "cookie": "~0.7.2",
"cors": "~2.8.5",
"debug": "~4.3.1",
- "engine.io-parser": "~5.0.3",
- "ws": "~8.11.0"
+ "engine.io-parser": "~5.2.1",
+ "ws": "~8.17.1"
},
"engines": {
- "node": ">=10.0.0"
+ "node": ">=10.2.0"
}
},
"node_modules/engine.io-client": {
- "version": "6.4.0",
- "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.4.0.tgz",
- "integrity": "sha512-GyKPDyoEha+XZ7iEqam49vz6auPnNJ9ZBfy89f+rMMas8AuiMWOZ9PVzu8xb9ZC6rafUqiGHSCfu22ih66E+1g==",
+ "version": "6.6.3",
+ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.3.tgz",
+ "integrity": "sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==",
+ "license": "MIT",
"dependencies": {
"@socket.io/component-emitter": "~3.1.0",
"debug": "~4.3.1",
- "engine.io-parser": "~5.0.3",
- "ws": "~8.11.0",
- "xmlhttprequest-ssl": "~2.0.0"
+ "engine.io-parser": "~5.2.1",
+ "ws": "~8.17.1",
+ "xmlhttprequest-ssl": "~2.1.1"
+ }
+ },
+ "node_modules/engine.io-client/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
"node_modules/engine.io-client/node_modules/ws": {
- "version": "8.11.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
- "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
+ "license": "MIT",
"engines": {
"node": ">=10.0.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
+ "utf-8-validate": ">=5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
@@ -6707,23 +8205,51 @@
}
},
"node_modules/engine.io-parser": {
- "version": "5.0.7",
- "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.7.tgz",
- "integrity": "sha512-P+jDFbvK6lE3n1OL+q9KuzdOFWkkZ/cMV9gol/SbVfpyqfvrfrFTOFJ6fQm2VC3PZHlU3QPhVwmbsCnauHF2MQ==",
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz",
+ "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==",
+ "license": "MIT",
"engines": {
"node": ">=10.0.0"
}
},
+ "node_modules/engine.io/node_modules/cookie": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/engine.io/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
"node_modules/engine.io/node_modules/ws": {
- "version": "8.11.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
- "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
+ "license": "MIT",
"engines": {
"node": ">=10.0.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
+ "utf-8-validate": ">=5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
@@ -6738,6 +8264,7 @@
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
},
@@ -6749,6 +8276,7 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
"integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=6"
@@ -6758,6 +8286,7 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
"integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
+ "license": "MIT",
"optional": true
},
"node_modules/error-ex": {
@@ -6765,63 +8294,79 @@
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-arrayish": "^0.2.1"
}
},
"node_modules/error-stack-parser-es": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-0.1.1.tgz",
- "integrity": "sha512-g/9rfnvnagiNf+DRMHEVGuGuIBlCIMDFoTA616HaP2l9PlCjGjVhD98PNbVSJvmK4TttqT5mV5tInMhoFgi+aA==",
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-0.1.5.tgz",
+ "integrity": "sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==",
"dev": true,
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/es-abstract": {
- "version": "1.22.3",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz",
- "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==",
+ "version": "1.23.9",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz",
+ "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "array-buffer-byte-length": "^1.0.0",
- "arraybuffer.prototype.slice": "^1.0.2",
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.5",
- "es-set-tostringtag": "^2.0.1",
- "es-to-primitive": "^1.2.1",
- "function.prototype.name": "^1.1.6",
- "get-intrinsic": "^1.2.2",
- "get-symbol-description": "^1.0.0",
- "globalthis": "^1.0.3",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.0",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.0",
- "internal-slot": "^1.0.5",
- "is-array-buffer": "^3.0.2",
+ "array-buffer-byte-length": "^1.0.2",
+ "arraybuffer.prototype.slice": "^1.0.4",
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "data-view-buffer": "^1.0.2",
+ "data-view-byte-length": "^1.0.2",
+ "data-view-byte-offset": "^1.0.1",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-set-tostringtag": "^2.1.0",
+ "es-to-primitive": "^1.3.0",
+ "function.prototype.name": "^1.1.8",
+ "get-intrinsic": "^1.2.7",
+ "get-proto": "^1.0.0",
+ "get-symbol-description": "^1.1.0",
+ "globalthis": "^1.0.4",
+ "gopd": "^1.2.0",
+ "has-property-descriptors": "^1.0.2",
+ "has-proto": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "internal-slot": "^1.1.0",
+ "is-array-buffer": "^3.0.5",
"is-callable": "^1.2.7",
- "is-negative-zero": "^2.0.2",
- "is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.2",
- "is-string": "^1.0.7",
- "is-typed-array": "^1.1.12",
- "is-weakref": "^1.0.2",
- "object-inspect": "^1.13.1",
+ "is-data-view": "^1.0.2",
+ "is-regex": "^1.2.1",
+ "is-shared-array-buffer": "^1.0.4",
+ "is-string": "^1.1.1",
+ "is-typed-array": "^1.1.15",
+ "is-weakref": "^1.1.0",
+ "math-intrinsics": "^1.1.0",
+ "object-inspect": "^1.13.3",
"object-keys": "^1.1.1",
- "object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.5.1",
- "safe-array-concat": "^1.0.1",
- "safe-regex-test": "^1.0.0",
- "string.prototype.trim": "^1.2.8",
- "string.prototype.trimend": "^1.0.7",
- "string.prototype.trimstart": "^1.0.7",
- "typed-array-buffer": "^1.0.0",
- "typed-array-byte-length": "^1.0.0",
- "typed-array-byte-offset": "^1.0.0",
- "typed-array-length": "^1.0.4",
- "unbox-primitive": "^1.0.2",
- "which-typed-array": "^1.1.13"
+ "object.assign": "^4.1.7",
+ "own-keys": "^1.0.1",
+ "regexp.prototype.flags": "^1.5.3",
+ "safe-array-concat": "^1.1.3",
+ "safe-push-apply": "^1.0.0",
+ "safe-regex-test": "^1.1.0",
+ "set-proto": "^1.0.0",
+ "string.prototype.trim": "^1.2.10",
+ "string.prototype.trimend": "^1.0.9",
+ "string.prototype.trimstart": "^1.0.8",
+ "typed-array-buffer": "^1.0.3",
+ "typed-array-byte-length": "^1.0.3",
+ "typed-array-byte-offset": "^1.0.4",
+ "typed-array-length": "^1.0.7",
+ "unbox-primitive": "^1.1.0",
+ "which-typed-array": "^1.1.18"
},
"engines": {
"node": ">= 0.4"
@@ -6830,48 +8375,61 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/es-aggregate-error": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/es-aggregate-error/-/es-aggregate-error-1.0.11.tgz",
- "integrity": "sha512-DCiZiNlMlbvofET/cE55My387NiLvuGToBEZDdK9U2G3svDCjL8WOgO5Il6lO83nQ8qmag/R9nArdpaFQ/m3lA==",
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "license": "MIT",
"dependencies": {
- "define-data-property": "^1.1.0",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.22.1",
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.2.1",
- "globalthis": "^1.0.3",
- "has-property-descriptors": "^1.0.0",
- "set-function-name": "^2.0.1"
+ "es-errors": "^1.3.0"
},
"engines": {
"node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/es-set-tostringtag": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz",
- "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+ "license": "MIT",
"dependencies": {
- "get-intrinsic": "^1.2.2",
- "has-tostringtag": "^1.0.0",
- "hasown": "^2.0.0"
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz",
+ "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
+ "is-callable": "^1.2.7",
+ "is-date-object": "^1.0.5",
+ "is-symbol": "^1.0.4"
},
"engines": {
"node": ">= 0.4"
@@ -6881,11 +8439,12 @@
}
},
"node_modules/esbuild": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz",
- "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
+ "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"bin": {
"esbuild": "bin/esbuild"
},
@@ -6893,35 +8452,36 @@
"node": ">=12"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.19.12",
- "@esbuild/android-arm": "0.19.12",
- "@esbuild/android-arm64": "0.19.12",
- "@esbuild/android-x64": "0.19.12",
- "@esbuild/darwin-arm64": "0.19.12",
- "@esbuild/darwin-x64": "0.19.12",
- "@esbuild/freebsd-arm64": "0.19.12",
- "@esbuild/freebsd-x64": "0.19.12",
- "@esbuild/linux-arm": "0.19.12",
- "@esbuild/linux-arm64": "0.19.12",
- "@esbuild/linux-ia32": "0.19.12",
- "@esbuild/linux-loong64": "0.19.12",
- "@esbuild/linux-mips64el": "0.19.12",
- "@esbuild/linux-ppc64": "0.19.12",
- "@esbuild/linux-riscv64": "0.19.12",
- "@esbuild/linux-s390x": "0.19.12",
- "@esbuild/linux-x64": "0.19.12",
- "@esbuild/netbsd-x64": "0.19.12",
- "@esbuild/openbsd-x64": "0.19.12",
- "@esbuild/sunos-x64": "0.19.12",
- "@esbuild/win32-arm64": "0.19.12",
- "@esbuild/win32-ia32": "0.19.12",
- "@esbuild/win32-x64": "0.19.12"
+ "@esbuild/aix-ppc64": "0.21.5",
+ "@esbuild/android-arm": "0.21.5",
+ "@esbuild/android-arm64": "0.21.5",
+ "@esbuild/android-x64": "0.21.5",
+ "@esbuild/darwin-arm64": "0.21.5",
+ "@esbuild/darwin-x64": "0.21.5",
+ "@esbuild/freebsd-arm64": "0.21.5",
+ "@esbuild/freebsd-x64": "0.21.5",
+ "@esbuild/linux-arm": "0.21.5",
+ "@esbuild/linux-arm64": "0.21.5",
+ "@esbuild/linux-ia32": "0.21.5",
+ "@esbuild/linux-loong64": "0.21.5",
+ "@esbuild/linux-mips64el": "0.21.5",
+ "@esbuild/linux-ppc64": "0.21.5",
+ "@esbuild/linux-riscv64": "0.21.5",
+ "@esbuild/linux-s390x": "0.21.5",
+ "@esbuild/linux-x64": "0.21.5",
+ "@esbuild/netbsd-x64": "0.21.5",
+ "@esbuild/openbsd-x64": "0.21.5",
+ "@esbuild/sunos-x64": "0.21.5",
+ "@esbuild/win32-arm64": "0.21.5",
+ "@esbuild/win32-ia32": "0.21.5",
+ "@esbuild/win32-x64": "0.21.5"
}
},
"node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -6929,13 +8489,15 @@
"node_modules/escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "license": "MIT"
},
"node_modules/escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -6947,7 +8509,9 @@
"version": "8.14.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.14.0.tgz",
"integrity": "sha512-3/CE4aJX7LNEiE3i6FeodHmI/38GZtWCsAtsymScmzYapx8q1nVVb+eLcLSzATmCPXw5pT4TqVs1E0OmxAd9tw==",
+ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@eslint/eslintrc": "^1.2.2",
"@humanwhocodes/config-array": "^0.9.2",
@@ -7000,6 +8564,7 @@
"resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.4.6.tgz",
"integrity": "sha512-z4SWYnJfOqftZI+b3RM9AtWL1vF/sLWE/LlO9yOKDof9yN2+n3zOdOJTGX/pRE/xnPsooOLG2Rq6e4d+XW3lNw==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@es-joy/jsdoccomment": "~0.40.1",
"are-docs-informative": "^0.0.2",
@@ -7023,6 +8588,7 @@
"resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz",
"integrity": "sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"eslint-utils": "^3.0.0",
"natural-compare": "^1.4.0",
@@ -7043,6 +8609,7 @@
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
"integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^5.2.0"
@@ -7059,6 +8626,7 @@
"resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
"integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"eslint-visitor-keys": "^2.0.0"
},
@@ -7077,6 +8645,7 @@
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
"integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=10"
}
@@ -7086,6 +8655,7 @@
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
"integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
@@ -7098,6 +8668,7 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -7108,6 +8679,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -7119,6 +8691,7 @@
"version": "3.2.25",
"resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz",
"integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -7128,6 +8701,7 @@
"resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
"integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"acorn": "^8.9.0",
"acorn-jsx": "^5.3.2",
@@ -7141,10 +8715,11 @@
}
},
"node_modules/esquery": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
- "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"estraverse": "^5.1.0"
},
@@ -7157,6 +8732,7 @@
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"estraverse": "^5.2.0"
},
@@ -7169,6 +8745,7 @@
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=4.0"
}
@@ -7177,13 +8754,15 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/esutils": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=0.10.0"
}
@@ -7192,6 +8771,7 @@
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -7200,7 +8780,7 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
"integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -7209,58 +8789,83 @@
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/event-to-promise/-/event-to-promise-0.7.0.tgz",
"integrity": "sha512-VOBBfyaADfe378ZzG0tgkzmsvzUyeU5arehrFzNRt5yaASUDshgctTwSrPI17ocAwR3+YftsxRClHF+GBKFByQ==",
- "deprecated": "Use promise-toolbox/fromEvent instead"
+ "deprecated": "Use promise-toolbox/fromEvent instead",
+ "license": "MIT"
},
"node_modules/events": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
"integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "license": "MIT",
"engines": {
"node": ">=0.8.x"
}
},
"node_modules/execa": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
- "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
+ "version": "9.5.2",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz",
+ "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
+ "@sindresorhus/merge-streams": "^4.0.0",
"cross-spawn": "^7.0.3",
- "get-stream": "^8.0.1",
- "human-signals": "^5.0.0",
- "is-stream": "^3.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^5.1.0",
- "onetime": "^6.0.0",
+ "figures": "^6.1.0",
+ "get-stream": "^9.0.0",
+ "human-signals": "^8.0.0",
+ "is-plain-obj": "^4.1.0",
+ "is-stream": "^4.0.1",
+ "npm-run-path": "^6.0.0",
+ "pretty-ms": "^9.0.0",
"signal-exit": "^4.1.0",
- "strip-final-newline": "^3.0.0"
+ "strip-final-newline": "^4.0.0",
+ "yoctocolors": "^2.0.0"
},
"engines": {
- "node": ">=16.17"
+ "node": "^18.19.0 || >=20.5.0"
},
"funding": {
"url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
"node_modules/execa/node_modules/get-stream": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
- "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz",
+ "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sec-ant/readable-stream": "^0.4.1",
+ "is-stream": "^4.0.1"
+ },
"engines": {
- "node": ">=16"
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/execa/node_modules/is-plain-obj": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/execa/node_modules/is-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
- "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz",
+ "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -7271,6 +8876,7 @@
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=14"
},
@@ -7279,65 +8885,74 @@
}
},
"node_modules/express": {
- "version": "4.17.3",
- "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz",
- "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==",
+ "version": "4.21.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
+ "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
+ "license": "MIT",
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
- "body-parser": "1.19.2",
+ "body-parser": "1.20.3",
"content-disposition": "0.5.4",
"content-type": "~1.0.4",
- "cookie": "0.4.2",
+ "cookie": "0.7.1",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
- "depd": "~1.1.2",
- "encodeurl": "~1.0.2",
+ "depd": "2.0.0",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
- "finalhandler": "~1.1.2",
+ "finalhandler": "1.3.1",
"fresh": "0.5.2",
- "merge-descriptors": "1.0.1",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.3",
"methods": "~1.1.2",
- "on-finished": "~2.3.0",
+ "on-finished": "2.4.1",
"parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
+ "path-to-regexp": "0.1.12",
"proxy-addr": "~2.0.7",
- "qs": "6.9.7",
+ "qs": "6.13.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.2.1",
- "send": "0.17.2",
- "serve-static": "1.14.2",
+ "send": "0.19.0",
+ "serve-static": "1.16.2",
"setprototypeof": "1.2.0",
- "statuses": "~1.5.0",
+ "statuses": "2.0.1",
"type-is": "~1.6.18",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
},
"engines": {
"node": ">= 0.10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/express-basic-auth": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/express-basic-auth/-/express-basic-auth-1.2.1.tgz",
"integrity": "sha512-L6YQ1wQ/mNjVLAmK3AG1RK6VkokA1BIY6wmiH304Xtt/cLTps40EusZsU1Uop+v9lTDPxdtzbFmdXfFO3KEnwA==",
+ "license": "MIT",
"dependencies": {
"basic-auth": "^2.0.1"
}
},
"node_modules/express-static-gzip": {
- "version": "2.1.7",
- "resolved": "https://registry.npmjs.org/express-static-gzip/-/express-static-gzip-2.1.7.tgz",
- "integrity": "sha512-QOCZUC+lhPPCjIJKpQGu1Oa61Axg9Mq09Qvit8Of7kzpMuwDeMSqjjQteQS3OVw/GkENBoSBheuQDWPlngImvw==",
+ "version": "2.1.8",
+ "resolved": "https://registry.npmjs.org/express-static-gzip/-/express-static-gzip-2.1.8.tgz",
+ "integrity": "sha512-g8tiJuI9Y9Ffy59ehVXvqb0hhP83JwZiLxzanobPaMbkB5qBWA8nuVgd+rcd5qzH3GkgogTALlc0BaADYwnMbQ==",
+ "license": "MIT",
"dependencies": {
- "serve-static": "^1.14.1"
+ "serve-static": "^1.16.2"
}
},
"node_modules/express/node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
@@ -7345,12 +8960,17 @@
"node_modules/express/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
},
"node_modules/express/node_modules/qs": {
- "version": "6.9.7",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz",
- "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==",
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
+ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "side-channel": "^1.0.6"
+ },
"engines": {
"node": ">=0.6"
},
@@ -7358,42 +8978,32 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/express/node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-fifo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
+ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fast-glob": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
- "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3",
"glob-parent": "^5.1.2",
"merge2": "^1.3.0",
- "micromatch": "^4.0.4"
+ "micromatch": "^4.0.8"
},
"engines": {
"node": ">=8.6.0"
@@ -7404,6 +9014,7 @@
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"is-glob": "^4.0.1"
},
@@ -7415,28 +9026,48 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fast-levenshtein": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
- "node_modules/fast-xml-parser": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz",
- "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==",
+ "node_modules/fast-uri": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz",
+ "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==",
+ "dev": true,
"funding": [
{
- "type": "paypal",
- "url": "https://paypal.me/naturalintelligence"
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
},
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ],
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/fast-xml-parser": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz",
+ "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==",
+ "funding": [
{
"type": "github",
"url": "https://github.com/sponsors/NaturalIntelligence"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/naturalintelligence"
}
],
+ "license": "MIT",
"optional": true,
"dependencies": {
"strnum": "^1.0.5"
@@ -7450,6 +9081,7 @@
"resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
"integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4.9.1"
}
@@ -7459,6 +9091,7 @@
"resolved": "https://registry.npmjs.org/fastfall/-/fastfall-1.5.1.tgz",
"integrity": "sha512-KH6p+Z8AKPXnmA7+Iz2Lh8ARCMr+8WNPVludm1LGkZoD2MjY6LVnRMtTKhkdzI+jr0RzQWXKzKyBJm1zoHEL4Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"reusify": "^1.0.0"
},
@@ -7471,16 +9104,18 @@
"resolved": "https://registry.npmjs.org/fastparallel/-/fastparallel-2.4.1.tgz",
"integrity": "sha512-qUmhxPgNHmvRjZKBFUNI0oZuuH9OlSIOXmJ98lhKPxMZZ7zS/Fi0wRHOihDSz0R1YiIOjxzOY4bq65YTcdBi2Q==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"reusify": "^1.0.4",
"xtend": "^4.0.2"
}
},
"node_modules/fastq": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz",
- "integrity": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==",
+ "version": "1.19.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
+ "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"reusify": "^1.0.4"
}
@@ -7489,19 +9124,50 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fastseries/-/fastseries-2.0.0.tgz",
"integrity": "sha512-XBU9RXeoYc2/VnvMhplAxEmZLfIk7cvTBu+xwoBuTI8pL19E03cmca17QQycKIdxgwCeFA/a4u27gv1h3ya5LQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/favico.js": {
"version": "0.3.10",
"resolved": "https://registry.npmjs.org/favico.js/-/favico.js-0.3.10.tgz",
"integrity": "sha512-S5KvqAOczRjlyjQPPZPSlUEybBkfBgKosY/pzTIxkvKgigB+DkITvIEI70dxQarbv4PZ+UD77QzquCAcU/6LHQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/feed": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz",
+ "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==",
+ "license": "MIT",
+ "dependencies": {
+ "xml-js": "^1.6.11"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/figures": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz",
+ "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-unicode-supported": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"node_modules/file-entry-cache": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
"integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"flat-cache": "^3.0.4"
},
@@ -7510,10 +9176,11 @@
}
},
"node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"to-regex-range": "^5.0.1"
},
@@ -7522,16 +9189,17 @@
}
},
"node_modules/finalhandler": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
- "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
+ "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
+ "license": "MIT",
"dependencies": {
"debug": "2.6.9",
- "encodeurl": "~1.0.2",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
+ "on-finished": "2.4.1",
"parseurl": "~1.3.3",
- "statuses": "~1.5.0",
+ "statuses": "2.0.1",
"unpipe": "~1.0.0"
},
"engines": {
@@ -7542,6 +9210,7 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
@@ -7549,13 +9218,15 @@
"node_modules/finalhandler/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
},
"node_modules/find-up": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"locate-path": "^6.0.0",
"path-exists": "^4.0.0"
@@ -7572,6 +9243,7 @@
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
"integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"flatted": "^3.2.9",
"keyv": "^4.5.3",
@@ -7582,21 +9254,23 @@
}
},
"node_modules/flatted": {
- "version": "3.2.9",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
- "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
- "dev": true
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
+ "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+ "dev": true,
+ "license": "ISC"
},
"node_modules/follow-redirects": {
- "version": "1.15.5",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
- "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
+ "version": "1.15.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
+ "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
+ "license": "MIT",
"engines": {
"node": ">=4.0"
},
@@ -7607,19 +9281,28 @@
}
},
"node_modules/for-each": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
- "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
+ "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "is-callable": "^1.1.3"
+ "is-callable": "^1.2.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/foreground-child": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
- "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
+ "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
+ "license": "ISC",
"dependencies": {
- "cross-spawn": "^7.0.0",
+ "cross-spawn": "^7.0.6",
"signal-exit": "^4.0.1"
},
"engines": {
@@ -7633,6 +9316,7 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "license": "ISC",
"engines": {
"node": ">=14"
},
@@ -7641,12 +9325,14 @@
}
},
"node_modules/form-data": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
- "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
+ "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
+ "license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
+ "es-set-tostringtag": "^2.1.0",
"mime-types": "^2.1.12"
},
"engines": {
@@ -7654,17 +9340,16 @@
}
},
"node_modules/form-data-encoder": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz",
- "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==",
- "engines": {
- "node": ">= 14.17"
- }
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz",
+ "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==",
+ "license": "MIT"
},
"node_modules/forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -7673,6 +9358,7 @@
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -7682,6 +9368,7 @@
"resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
"integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.1",
"readable-stream": "^2.0.0"
@@ -7691,13 +9378,15 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/from2/node_modules/readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -7708,20 +9397,36 @@
"util-deprecate": "~1.0.1"
}
},
+ "node_modules/from2/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/from2/node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
+ "node_modules/fs-constants": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/fs-extra": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
"integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
@@ -7736,6 +9441,7 @@
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
"integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 10.0.0"
}
@@ -7744,6 +9450,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
"integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+ "license": "ISC",
"dependencies": {
"minipass": "^3.0.0"
},
@@ -7754,7 +9461,8 @@
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "license": "ISC"
},
"node_modules/fsevents": {
"version": "2.3.2",
@@ -7762,6 +9470,7 @@
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -7774,19 +9483,24 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/function.prototype.name": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
- "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz",
+ "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "functions-have-names": "^1.2.3"
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "define-properties": "^1.2.1",
+ "functions-have-names": "^1.2.3",
+ "hasown": "^2.0.2",
+ "is-callable": "^1.2.7"
},
"engines": {
"node": ">= 0.4"
@@ -7799,30 +9513,34 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
"integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/functions-have-names": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
"integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true,
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/gamedig": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/gamedig/-/gamedig-4.3.1.tgz",
- "integrity": "sha512-et9Aq4wlD0cExXEO3r3LWiEEjOzsnG5l/0YSqza7FZLoJqunNT6DedkAXAdeOqAqStkRQahQiPFjx2WCg4SOtg==",
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/gamedig/-/gamedig-4.3.2.tgz",
+ "integrity": "sha512-TjYwybvy8HNAhkv2EJccd5HROIiMeMriWmeX8vT8m5Ibat5JMzVpugzsD8L8XZVrOfiXnVg/9DhWYM8k/VG/vw==",
+ "license": "MIT",
"dependencies": {
- "cheerio": "^1.0.0-rc.10",
- "gbxremote": "^0.2.1",
- "got": "^12.1.0",
- "iconv-lite": "^0.6.3",
- "long": "^5.2.0",
- "minimist": "^1.2.6",
- "punycode": "^2.1.1",
- "seek-bzip": "^2.0.0",
- "varint": "^6.0.0"
+ "cheerio": "1.0.0-rc.10",
+ "gbxremote": "0.2.1",
+ "got": "12.1.0",
+ "iconv-lite": "0.6.3",
+ "long": "5.2.0",
+ "minimist": "1.2.6",
+ "punycode": "2.1.1",
+ "seek-bzip": "2.0.0",
+ "varint": "6.0.0"
},
"bin": {
"gamedig": "bin/gamedig.js"
@@ -7831,10 +9549,157 @@
"node": ">=14.0.0"
}
},
+ "node_modules/gamedig/node_modules/cheerio": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
+ "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
+ "license": "MIT",
+ "dependencies": {
+ "cheerio-select": "^1.5.0",
+ "dom-serializer": "^1.3.2",
+ "domhandler": "^4.2.0",
+ "htmlparser2": "^6.1.0",
+ "parse5": "^6.0.1",
+ "parse5-htmlparser2-tree-adapter": "^6.0.1",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
+ }
+ },
+ "node_modules/gamedig/node_modules/cheerio-select": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz",
+ "integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "css-select": "^4.3.0",
+ "css-what": "^6.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.3.1",
+ "domutils": "^2.8.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/gamedig/node_modules/css-select": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
+ "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.0.1",
+ "domhandler": "^4.3.1",
+ "domutils": "^2.8.0",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/gamedig/node_modules/dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/gamedig/node_modules/domhandler": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
+ "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/gamedig/node_modules/domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/gamedig/node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "license": "BSD-2-Clause",
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/gamedig/node_modules/htmlparser2": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
+ "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.0.0",
+ "domutils": "^2.5.2",
+ "entities": "^2.0.0"
+ }
+ },
+ "node_modules/gamedig/node_modules/long": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz",
+ "integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/gamedig/node_modules/parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+ "license": "MIT"
+ },
+ "node_modules/gamedig/node_modules/parse5-htmlparser2-tree-adapter": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
+ "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
+ "license": "MIT",
+ "dependencies": {
+ "parse5": "^6.0.1"
+ }
+ },
"node_modules/gauge": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
"integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
+ "deprecated": "This package is no longer supported.",
+ "license": "ISC",
"dependencies": {
"aproba": "^1.0.3 || ^2.0.0",
"color-support": "^1.1.2",
@@ -7869,6 +9734,7 @@
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
"integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
+ "license": "MIT",
"dependencies": {
"is-property": "^1.0.2"
}
@@ -7877,6 +9743,7 @@
"version": "3.9.0",
"resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz",
"integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==",
+ "license": "MIT",
"engines": {
"node": ">= 4"
}
@@ -7886,6 +9753,7 @@
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
@@ -7894,19 +9762,30 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "license": "ISC",
"engines": {
"node": "6.* || 8.* || >= 10.*"
}
},
"node_modules/get-intrinsic": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
- "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "license": "MIT",
"dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
"function-bind": "^1.1.2",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.0"
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -7916,20 +9795,49 @@
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
"integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
+ "license": "MIT",
"engines": {
"node": ">=8.0.0"
}
},
+ "node_modules/get-port": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.1.0.tgz",
+ "integrity": "sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/get-port-please": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.2.tgz",
"integrity": "sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
},
"node_modules/get-stream": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
"integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -7938,12 +9846,15 @@
}
},
"node_modules/get-symbol-description": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
- "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz",
+ "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.1"
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6"
},
"engines": {
"node": ">= 0.4"
@@ -7955,12 +9866,15 @@
"node_modules/getopts": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz",
- "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA=="
+ "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==",
+ "license": "MIT"
},
"node_modules/glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -7981,6 +9895,7 @@
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"is-glob": "^4.0.3"
},
@@ -7992,6 +9907,7 @@
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -8001,6 +9917,7 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -8013,6 +9930,7 @@
"resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
"integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"global-prefix": "^3.0.0"
},
@@ -8025,6 +9943,7 @@
"resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
"integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ini": "^1.3.5",
"kind-of": "^6.0.2",
@@ -8039,6 +9958,7 @@
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
},
@@ -8051,6 +9971,7 @@
"resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
"integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"type-fest": "^0.20.2"
},
@@ -8062,11 +9983,14 @@
}
},
"node_modules/globalthis": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
- "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "define-properties": "^1.1.3"
+ "define-properties": "^1.2.1",
+ "gopd": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
@@ -8080,6 +10004,7 @@
"resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
"integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"array-union": "^2.1.0",
"dir-glob": "^3.0.1",
@@ -8099,35 +10024,40 @@
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz",
"integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/gopd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
- "dependencies": {
- "get-intrinsic": "^1.1.3"
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/got": {
- "version": "12.6.1",
- "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz",
- "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==",
+ "version": "12.1.0",
+ "resolved": "https://registry.npmjs.org/got/-/got-12.1.0.tgz",
+ "integrity": "sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==",
+ "license": "MIT",
"dependencies": {
- "@sindresorhus/is": "^5.2.0",
+ "@sindresorhus/is": "^4.6.0",
"@szmarczak/http-timer": "^5.0.1",
- "cacheable-lookup": "^7.0.0",
- "cacheable-request": "^10.2.8",
+ "@types/cacheable-request": "^6.0.2",
+ "@types/responselike": "^1.0.0",
+ "cacheable-lookup": "^6.0.4",
+ "cacheable-request": "^7.0.2",
"decompress-response": "^6.0.0",
- "form-data-encoder": "^2.1.2",
+ "form-data-encoder": "1.7.1",
"get-stream": "^6.0.1",
"http2-wrapper": "^2.1.10",
"lowercase-keys": "^3.0.0",
"p-cancelable": "^3.0.0",
- "responselike": "^3.0.0"
+ "responselike": "^2.0.0"
},
"engines": {
"node": ">=14.16"
@@ -8140,27 +10070,35 @@
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "devOptional": true
+ "devOptional": true,
+ "license": "ISC"
},
"node_modules/graphemer": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/hard-rejection": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
"integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/has-bigints": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
- "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz",
+ "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -8170,25 +10108,33 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/has-property-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
- "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "get-intrinsic": "^1.2.2"
+ "es-define-property": "^1.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
- "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz",
+ "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.0"
+ },
"engines": {
"node": ">= 0.4"
},
@@ -8197,9 +10143,10 @@
}
},
"node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -8208,11 +10155,12 @@
}
},
"node_modules/has-tostringtag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
- "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "license": "MIT",
"dependencies": {
- "has-symbols": "^1.0.2"
+ "has-symbols": "^1.0.3"
},
"engines": {
"node": ">= 0.4"
@@ -8224,12 +10172,14 @@
"node_modules/has-unicode": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
+ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
+ "license": "ISC"
},
"node_modules/hasown": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
- "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "license": "MIT",
"dependencies": {
"function-bind": "^1.1.2"
},
@@ -8241,6 +10191,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/help-me/-/help-me-3.0.0.tgz",
"integrity": "sha512-hx73jClhyk910sidBB7ERlnhMlFsJJIBqSVMFDwPN8o2v9nmp5KgLq1Xz1Bf1fCMMZ6mPrX159iG0VLy/fPMtQ==",
+ "license": "MIT",
"dependencies": {
"glob": "^7.1.6",
"readable-stream": "^3.6.0"
@@ -8250,19 +10201,22 @@
"version": "6.1.3",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz",
"integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==",
- "deprecated": "This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues."
+ "deprecated": "This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.",
+ "license": "BSD-3-Clause"
},
"node_modules/hookable": {
"version": "5.5.3",
"resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz",
"integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/hosted-git-info": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
"integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -8273,13 +10227,15 @@
"node_modules/html-escaper": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz",
- "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ=="
+ "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==",
+ "license": "MIT"
},
"node_modules/html-tags": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
"integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
},
@@ -8288,9 +10244,9 @@
}
},
"node_modules/htmlparser2": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
- "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz",
+ "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==",
"funding": [
"https://github.com/fb55/htmlparser2?sponsor=1",
{
@@ -8298,22 +10254,25 @@
"url": "https://github.com/sponsors/fb55"
}
],
+ "license": "MIT",
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.3",
- "domutils": "^3.0.1",
- "entities": "^4.4.0"
+ "domutils": "^3.1.0",
+ "entities": "^4.5.0"
}
},
"node_modules/http-cache-semantics": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
- "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ=="
+ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
+ "license": "BSD-2-Clause"
},
"node_modules/http-cookie-agent": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/http-cookie-agent/-/http-cookie-agent-5.0.4.tgz",
"integrity": "sha512-OtvikW69RvfyP6Lsequ0fN5R49S+8QcS9zwd58k6VSr6r57T8G29BkPdyrBcSwLq6ExLs9V+rBlfxu7gDstJag==",
+ "license": "MIT",
"dependencies": {
"agent-base": "^7.1.0"
},
@@ -8338,24 +10297,26 @@
}
},
"node_modules/http-errors": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
- "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "license": "MIT",
"dependencies": {
- "depd": "~1.1.2",
+ "depd": "2.0.0",
"inherits": "2.0.4",
"setprototypeof": "1.2.0",
- "statuses": ">= 1.5.0 < 2",
+ "statuses": "2.0.1",
"toidentifier": "1.0.1"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8"
}
},
"node_modules/http-graceful-shutdown": {
- "version": "3.1.13",
- "resolved": "https://registry.npmjs.org/http-graceful-shutdown/-/http-graceful-shutdown-3.1.13.tgz",
- "integrity": "sha512-Ci5LRufQ8AtrQ1U26AevS8QoMXDOhnAHCJI3eZu1com7mZGHxREmw3dNj85ftpQokQCvak8nI2pnFS8zyM1M+Q==",
+ "version": "3.1.14",
+ "resolved": "https://registry.npmjs.org/http-graceful-shutdown/-/http-graceful-shutdown-3.1.14.tgz",
+ "integrity": "sha512-aTbGAZDUtRt7gRmU+li7rt5WbJeemULZHLNrycJ1dRBU80Giut6NvzG8h5u1TW1zGHXkPGpEtoEKhPKogIRKdA==",
+ "license": "MIT",
"dependencies": {
"debug": "^4.3.4"
},
@@ -8364,33 +10325,23 @@
}
},
"node_modules/http-proxy-agent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
- "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+ "license": "MIT",
"dependencies": {
- "@tootallnate/once": "2",
- "agent-base": "6",
- "debug": "4"
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
},
"engines": {
- "node": ">= 6"
- }
- },
- "node_modules/http-proxy-agent/node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "dependencies": {
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
+ "node": ">= 14"
}
},
"node_modules/http2-wrapper": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz",
"integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==",
+ "license": "MIT",
"dependencies": {
"quick-lru": "^5.1.1",
"resolve-alpn": "^1.2.0"
@@ -8400,51 +10351,44 @@
}
},
"node_modules/https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "license": "MIT",
"dependencies": {
- "agent-base": "6",
+ "agent-base": "^7.1.2",
"debug": "4"
},
"engines": {
- "node": ">= 6"
- }
- },
- "node_modules/https-proxy-agent/node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "dependencies": {
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
+ "node": ">= 14"
}
},
"node_modules/human-signals": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
- "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz",
+ "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
- "node": ">=16.17.0"
+ "node": ">=18.18.0"
}
},
"node_modules/humanize-ms": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
"integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
+ "license": "MIT",
"optional": true,
"dependencies": {
"ms": "^2.0.0"
}
},
"node_modules/hyperid": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/hyperid/-/hyperid-3.2.0.tgz",
- "integrity": "sha512-PdTtDo+Rmza9nEhTunaDSUKwbC69TIzLEpZUwiB6f+0oqmY0UPfhyHCPt6K1NQ4WFv5yJBTG5vELztVWP+nEVQ==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/hyperid/-/hyperid-3.3.0.tgz",
+ "integrity": "sha512-7qhCVT4MJIoEsNcbhglhdmBKb09QtcmJNiIQGq7js/Khf5FtQQ9bzcAuloeqBeee7XD7JqDeve9KNlQya5tSGQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"buffer": "^5.2.1",
"uuid": "^8.3.2",
@@ -8455,6 +10399,7 @@
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
"integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
},
@@ -8479,28 +10424,25 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "BSD-3-Clause"
},
"node_modules/ignore": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz",
- "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==",
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4"
}
},
- "node_modules/image-meta": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/image-meta/-/image-meta-0.2.0.tgz",
- "integrity": "sha512-ZBGjl0ZMEMeOC3Ns0wUF/5UdUmr3qQhBSCniT0LxOgGGIRHiNFOkMtIHB7EOznRU47V2AxPgiVP+s+0/UCU0Hg==",
- "dev": true
- },
"node_modules/import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"parent-module": "^1.0.0",
"resolve-from": "^4.0.0"
@@ -8517,6 +10459,7 @@
"resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz",
"integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -8526,6 +10469,7 @@
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
"devOptional": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8.19"
}
@@ -8534,6 +10478,7 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
"integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=8"
@@ -8543,12 +10488,15 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
"integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
+ "license": "ISC",
"optional": true
},
"node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "license": "ISC",
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
@@ -8557,22 +10505,26 @@
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "license": "ISC"
},
"node_modules/ini": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/internal-slot": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz",
- "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz",
+ "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "get-intrinsic": "^1.2.2",
- "hasown": "^2.0.0",
- "side-channel": "^1.0.4"
+ "es-errors": "^1.3.0",
+ "hasown": "^2.0.2",
+ "side-channel": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
@@ -8582,31 +10534,46 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
"integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==",
+ "license": "MIT",
"engines": {
"node": ">= 0.10"
}
},
- "node_modules/ip": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
- "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
+ "node_modules/ip-address": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
+ "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
+ "license": "MIT",
+ "dependencies": {
+ "jsbn": "1.1.0",
+ "sprintf-js": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 12"
+ }
},
"node_modules/ipaddr.js": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "license": "MIT",
"engines": {
"node": ">= 0.10"
}
},
"node_modules/is-array-buffer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
- "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz",
+ "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.0",
- "is-typed-array": "^1.1.10"
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "get-intrinsic": "^1.2.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -8616,14 +10583,40 @@
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/is-async-function": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz",
+ "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "async-function": "^1.0.0",
+ "call-bound": "^1.0.3",
+ "get-proto": "^1.0.1",
+ "has-tostringtag": "^1.0.2",
+ "safe-regex-test": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/is-bigint": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz",
+ "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "has-bigints": "^1.0.1"
+ "has-bigints": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -8634,6 +10627,7 @@
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"binary-extensions": "^2.0.0"
},
@@ -8642,12 +10636,14 @@
}
},
"node_modules/is-boolean-object": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
- "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz",
+ "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -8661,6 +10657,7 @@
"resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
"integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"builtin-modules": "^3.3.0"
},
@@ -8675,6 +10672,8 @@
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
"integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -8683,22 +10682,47 @@
}
},
"node_modules/is-core-module": {
- "version": "2.13.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
- "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
+ "license": "MIT",
"dependencies": {
- "hasown": "^2.0.0"
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-data-view": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz",
+ "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "get-intrinsic": "^1.2.6",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-date-object": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz",
+ "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "has-tostringtag": "^1.0.0"
+ "call-bound": "^1.0.2",
+ "has-tostringtag": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -8711,6 +10735,8 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
"integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "dev": true,
+ "license": "MIT",
"bin": {
"is-docker": "cli.js"
},
@@ -8726,23 +10752,61 @@
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
+ "node_modules/is-finalizationregistry": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz",
+ "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
+ "node_modules/is-generator-function": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz",
+ "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "get-proto": "^1.0.0",
+ "has-tostringtag": "^1.0.2",
+ "safe-regex-test": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-extglob": "^2.1.1"
},
@@ -8754,7 +10818,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
"integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"is-docker": "^3.0.0"
},
@@ -8772,7 +10836,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
"integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
- "dev": true,
+ "license": "MIT",
"bin": {
"is-docker": "cli.js"
},
@@ -8787,12 +10851,15 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz",
"integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==",
+ "license": "MIT",
"optional": true
},
- "node_modules/is-negative-zero": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
- "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
+ "node_modules/is-map": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
+ "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
+ "dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -8805,16 +10872,20 @@
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.12.0"
}
},
"node_modules/is-number-object": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
- "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz",
+ "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "has-tostringtag": "^1.0.0"
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -8828,6 +10899,7 @@
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
"integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -8837,6 +10909,7 @@
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
"integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -8844,15 +10917,20 @@
"node_modules/is-property": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
- "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g=="
+ "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==",
+ "license": "MIT"
},
"node_modules/is-regex": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
- "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
+ "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
+ "call-bound": "^1.0.2",
+ "gopd": "^1.2.0",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -8861,12 +10939,30 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-set": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
+ "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-shared-array-buffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
- "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz",
+ "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2"
+ "call-bound": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -8877,6 +10973,7 @@
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
},
@@ -8885,11 +10982,14 @@
}
},
"node_modules/is-string": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz",
+ "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "has-tostringtag": "^1.0.0"
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -8899,11 +10999,15 @@
}
},
"node_modules/is-symbol": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz",
+ "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "has-symbols": "^1.0.2"
+ "call-bound": "^1.0.2",
+ "has-symbols": "^1.1.0",
+ "safe-regex-test": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
@@ -8913,11 +11017,13 @@
}
},
"node_modules/is-typed-array": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz",
- "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz",
+ "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "which-typed-array": "^1.1.11"
+ "which-typed-array": "^1.1.16"
},
"engines": {
"node": ">= 0.4"
@@ -8926,21 +11032,84 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-weakref": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
- "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
- "dependencies": {
- "call-bind": "^1.0.2"
+ "node_modules/is-unicode-supported": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
+ "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-weakmap": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
+ "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-weakref": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz",
+ "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakset": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz",
+ "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "get-intrinsic": "^1.2.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-what": {
+ "version": "4.1.16",
+ "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz",
+ "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.13"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mesqueeb"
+ }
+ },
"node_modules/is-wsl": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
"integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"is-docker": "^2.0.0"
},
@@ -8951,12 +11120,15 @@
"node_modules/isarray": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/isemail": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz",
"integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==",
+ "license": "BSD-3-Clause",
"dependencies": {
"punycode": "2.x.x"
},
@@ -8967,26 +11139,26 @@
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "license": "ISC"
},
"node_modules/isomorphic-ws": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz",
"integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==",
+ "license": "MIT",
"peerDependencies": {
"ws": "*"
}
},
"node_modules/jackspeak": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
- "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "license": "BlueOak-1.0.0",
"dependencies": {
"@isaacs/cliui": "^8.0.2"
},
- "engines": {
- "node": ">=14"
- },
"funding": {
"url": "https://github.com/sponsors/isaacs"
},
@@ -8999,6 +11171,7 @@
"resolved": "https://registry.npmjs.org/joi/-/joi-14.3.1.tgz",
"integrity": "sha512-LQDdM+pkOrpAn4Lp+neNIFV3axv1Vna3j38bisbQhETPMANYRbFJFUyOZcOClYvM/hppMhGWuKSFEK9vjrB+bQ==",
"deprecated": "This module has moved and is now available at @hapi/joi. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.",
+ "license": "BSD-3-Clause",
"dependencies": {
"hoek": "6.x.x",
"isemail": "3.x.x",
@@ -9006,9 +11179,10 @@
}
},
"node_modules/jose": {
- "version": "4.15.4",
- "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.4.tgz",
- "integrity": "sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ==",
+ "version": "4.15.9",
+ "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz",
+ "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==",
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/panva"
}
@@ -9016,28 +11190,32 @@
"node_modules/js-md4": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/js-md4/-/js-md4-0.3.2.tgz",
- "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA=="
+ "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==",
+ "license": "MIT"
},
"node_modules/js-sdsl": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz",
"integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==",
+ "license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/js-sdsl"
}
},
"node_modules/js-tokens": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-8.0.2.tgz",
- "integrity": "sha512-Olnt+V7xYdvGze9YTbGFZIfQXuGV4R3nQwwl8BrtgaPE/wq8UFpUHWuTNc05saowhSr1ZO6tx+V6RjE9D5YQog==",
- "dev": true
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-8.0.3.tgz",
+ "integrity": "sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"argparse": "^2.0.1"
},
@@ -9045,16 +11223,18 @@
"js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/jsbi": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/jsbi/-/jsbi-4.3.0.tgz",
- "integrity": "sha512-SnZNcinB4RIcnEyZqFPdGPVgrg2AcnykiBy0sHVJQKHYeaLUvi3Exj+iaPpLnFVkDPZIV4U0yvgC9/R4uEAZ9g=="
+ "node_modules/jsbn": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
+ "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
+ "license": "MIT"
},
"node_modules/jsdoc-type-pratt-parser": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz",
"integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12.0.0"
}
@@ -9063,6 +11243,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
"integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
+ "license": "MIT",
"bin": {
"jsesc": "bin/jsesc"
},
@@ -9073,31 +11254,36 @@
"node_modules/json-buffer": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "license": "MIT"
},
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
"integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/json5": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true,
+ "license": "MIT",
"bin": {
"json5": "lib/cli.js"
},
@@ -9106,9 +11292,10 @@
}
},
"node_modules/jsonata": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/jsonata/-/jsonata-2.0.3.tgz",
- "integrity": "sha512-Up2H81MUtjqI/dWwWX7p4+bUMfMrQJVMN/jW6clFMTiYP528fBOBNtRu944QhKTs3+IsVWbgMeUTny5fw2VMUA==",
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/jsonata/-/jsonata-2.0.6.tgz",
+ "integrity": "sha512-WhQB5tXQ32qjkx2GYHFw2XbL90u+LLzjofAYwi+86g6SyZeXHz9F1Q0amy3dWRYczshOC3Haok9J4pOCgHtwyQ==",
+ "license": "MIT",
"engines": {
"node": ">= 8"
}
@@ -9118,6 +11305,7 @@
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"universalify": "^2.0.0"
},
@@ -9130,6 +11318,7 @@
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
"integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 10.0.0"
}
@@ -9138,6 +11327,7 @@
"version": "9.0.2",
"resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
"integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==",
+ "license": "MIT",
"dependencies": {
"jws": "^3.2.2",
"lodash.includes": "^4.3.0",
@@ -9158,12 +11348,14 @@
"node_modules/just-performance": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/just-performance/-/just-performance-4.3.0.tgz",
- "integrity": "sha512-L7RjvtJsL0QO8xFs5wEoDDzzJwoiowRw6Rn/GnvldlchS2JQr9wFYPiwZcDfrbbujEKqKN0tvENdbjXdYhDp5Q=="
+ "integrity": "sha512-L7RjvtJsL0QO8xFs5wEoDDzzJwoiowRw6Rn/GnvldlchS2JQr9wFYPiwZcDfrbbujEKqKN0tvENdbjXdYhDp5Q==",
+ "license": "MIT"
},
"node_modules/jwa": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
"integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
+ "license": "MIT",
"dependencies": {
"buffer-equal-constant-time": "1.0.1",
"ecdsa-sig-formatter": "1.0.11",
@@ -9174,6 +11366,7 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
"integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
+ "license": "MIT",
"dependencies": {
"jwa": "^1.4.1",
"safe-buffer": "^5.0.1"
@@ -9182,12 +11375,14 @@
"node_modules/jwt-decode": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz",
- "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A=="
+ "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==",
+ "license": "MIT"
},
"node_modules/kafkajs": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/kafkajs/-/kafkajs-2.2.4.tgz",
"integrity": "sha512-j/YeapB1vfPT2iOIUn/vxdyKEuhuY2PxMBvf5JWux6iSaukAccrMtXEY/Lb7OvavDhOWME589bpLrEdnVHjfjA==",
+ "license": "MIT",
"engines": {
"node": ">=14.0.0"
}
@@ -9196,6 +11391,7 @@
"version": "4.5.4",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
"integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "license": "MIT",
"dependencies": {
"json-buffer": "3.0.1"
}
@@ -9205,14 +11401,16 @@
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/knex": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/knex/-/knex-2.5.1.tgz",
- "integrity": "sha512-z78DgGKUr4SE/6cm7ku+jHvFT0X97aERh/f0MUKAKgFnwCYBEW4TFBqtHWFYiJFid7fMrtpZ/gxJthvz5mEByA==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/knex/-/knex-3.1.0.tgz",
+ "integrity": "sha512-GLoII6hR0c4ti243gMs5/1Rb3B+AjwMOfjYm97pu0FOQa7JH56hgBxYf5WK2525ceSbBY1cjeZ9yk99GPMB6Kw==",
+ "license": "MIT",
"dependencies": {
"colorette": "2.0.19",
"commander": "^10.0.0",
@@ -9223,7 +11421,7 @@
"getopts": "2.3.0",
"interpret": "^2.2.0",
"lodash": "^4.17.21",
- "pg-connection-string": "2.6.1",
+ "pg-connection-string": "2.6.2",
"rechoir": "^0.8.0",
"resolve-from": "^5.0.0",
"tarn": "^3.0.2",
@@ -9233,7 +11431,7 @@
"knex": "bin/cli.js"
},
"engines": {
- "node": ">=12"
+ "node": ">=16"
},
"peerDependenciesMeta": {
"better-sqlite3": {
@@ -9259,15 +11457,40 @@
}
}
},
+ "node_modules/knex/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/knex/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "license": "MIT"
+ },
"node_modules/knex/node_modules/pg-connection-string": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.1.tgz",
- "integrity": "sha512-w6ZzNu6oMmIzEAYVw+RLK0+nqHPt8K3ZnknKi+g48Ak2pr3dtljJW3o+D/n2zzCG07Zoe9VOX3aiKpj+BN0pjg=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz",
+ "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==",
+ "license": "MIT"
},
"node_modules/knex/node_modules/resolve-from": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
"integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -9276,18 +11499,74 @@
"version": "0.29.0",
"resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz",
"integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/kolorist": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz",
"integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lazystream": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
+ "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "readable-stream": "^2.0.5"
+ },
+ "engines": {
+ "node": ">= 0.6.3"
+ }
+ },
+ "node_modules/lazystream/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lazystream/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/lazystream/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lazystream/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
},
"node_modules/leven": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz",
"integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -9297,6 +11576,7 @@
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
"integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"prelude-ls": "^1.2.1",
"type-check": "~0.4.0"
@@ -9309,6 +11589,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/limiter/-/limiter-2.1.0.tgz",
"integrity": "sha512-361TYz6iay6n+9KvUUImqdLuFigK+K79qrUtBsXhJTLdH4rIt/r1y8r1iozwh8KbZNpujbFTSh74mJ7bwbAMOw==",
+ "license": "MIT",
"dependencies": {
"just-performance": "4.3.0"
}
@@ -9317,12 +11598,14 @@
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/liquidjs": {
- "version": "10.10.0",
- "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-10.10.0.tgz",
- "integrity": "sha512-f4gPvCq4uV4Fm5YezVUQoAMPmBMEuIE2LvgCnzyWoPRx+ZefH6b8DU2eb7znltRqATHF8zYvOsd5FD2z1spJgg==",
+ "version": "10.21.0",
+ "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-10.21.0.tgz",
+ "integrity": "sha512-DouqxNU2jfoZzb1LinVjOc/f6ssitGIxiDJT+kEKyYqPSSSd+WmGOAhtWbVm1/n75svu4aQ+FyQ3ctd3wh1bbw==",
+ "license": "MIT",
"dependencies": {
"commander": "^10.0.0"
},
@@ -9343,6 +11626,7 @@
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-locate": "^5.0.0"
},
@@ -9356,74 +11640,89 @@
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "license": "MIT"
},
"node_modules/lodash.camelcase": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
- "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
+ "license": "MIT"
},
"node_modules/lodash.get": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ=="
+ "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
+ "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.",
+ "license": "MIT"
},
"node_modules/lodash.includes": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
- "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
+ "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==",
+ "license": "MIT"
},
"node_modules/lodash.isboolean": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
- "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="
+ "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==",
+ "license": "MIT"
},
"node_modules/lodash.isinteger": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
- "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="
+ "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==",
+ "license": "MIT"
},
"node_modules/lodash.isnumber": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
- "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="
+ "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==",
+ "license": "MIT"
},
"node_modules/lodash.isplainobject": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
+ "license": "MIT"
},
"node_modules/lodash.isstring": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
- "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="
+ "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
+ "license": "MIT"
},
"node_modules/lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.once": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
- "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
+ "license": "MIT"
},
"node_modules/lodash.truncate": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
"integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/long": {
- "version": "5.2.3",
- "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
- "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q=="
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/long/-/long-5.3.1.tgz",
+ "integrity": "sha512-ka87Jz3gcx/I7Hal94xaN2tZEOPoUOEVftkQqZx2EeQRN7LGdfLlI3FvZ+7WDplm+vK2Urx9ULrvSowtdCieng==",
+ "license": "Apache-2.0"
},
"node_modules/lowercase-keys": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz",
"integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==",
+ "license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
@@ -9435,6 +11734,7 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "license": "ISC",
"dependencies": {
"yallist": "^4.0.0"
},
@@ -9442,22 +11742,36 @@
"node": ">=10"
}
},
- "node_modules/magic-string": {
- "version": "0.30.5",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz",
- "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==",
- "dev": true,
- "dependencies": {
- "@jridgewell/sourcemap-codec": "^1.4.15"
- },
+ "node_modules/lru.min": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.2.tgz",
+ "integrity": "sha512-Nv9KddBcQSlQopmBHXSsZVY5xsdlZkdH/Iey0BlcBYggMd4two7cZnKOK9vmy3nY0O5RGH99z1PCeTpPqszUYg==",
+ "license": "MIT",
"engines": {
- "node": ">=12"
+ "bun": ">=1.0.0",
+ "deno": ">=1.30.0",
+ "node": ">=8.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wellwelwel"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.17",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
+ "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0"
}
},
"node_modules/make-dir": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
"integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "license": "MIT",
"dependencies": {
"semver": "^6.0.0"
},
@@ -9472,6 +11786,7 @@
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
@@ -9480,6 +11795,7 @@
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz",
"integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==",
+ "license": "ISC",
"optional": true,
"dependencies": {
"agentkeepalive": "^4.1.3",
@@ -9503,19 +11819,11 @@
"node": ">= 10"
}
},
- "node_modules/make-fetch-happen/node_modules/@tootallnate/once": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
- "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
- "optional": true,
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/make-fetch-happen/node_modules/agent-base": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "license": "MIT",
"optional": true,
"dependencies": {
"debug": "4"
@@ -9528,6 +11836,7 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
"integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+ "license": "MIT",
"optional": true,
"dependencies": {
"@tootallnate/once": "1",
@@ -9538,11 +11847,41 @@
"node": ">= 6"
}
},
+ "node_modules/make-fetch-happen/node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/make-fetch-happen/node_modules/socks-proxy-agent": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz",
+ "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "agent-base": "^6.0.2",
+ "debug": "^4.3.3",
+ "socks": "^2.6.2"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
"node_modules/map-obj": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
"integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
},
@@ -9551,15 +11890,24 @@
}
},
"node_modules/marked": {
- "version": "4.2.12",
- "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.12.tgz",
- "integrity": "sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==",
- "dev": true,
+ "version": "14.1.4",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-14.1.4.tgz",
+ "integrity": "sha512-vkVZ8ONmUdPnjCKc5uTRvmkRbx4EAi2OkTOXmfTDhZz3OFqMNBM1oTTWwTr4HY4uAEojhzPf+Fy8F1DWa3Sndg==",
+ "license": "MIT",
"bin": {
"marked": "bin/marked.js"
},
"engines": {
- "node": ">= 12"
+ "node": ">= 18"
+ }
+ },
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
}
},
"node_modules/mathml-tag-names": {
@@ -9567,6 +11915,7 @@
"resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
"integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==",
"dev": true,
+ "license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
@@ -9576,12 +11925,14 @@
"version": "2.0.30",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
"integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
- "dev": true
+ "dev": true,
+ "license": "CC0-1.0"
},
"node_modules/media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -9590,6 +11941,7 @@
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
"integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
+ "license": "MIT",
"optional": true
},
"node_modules/meow": {
@@ -9597,6 +11949,7 @@
"resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz",
"integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/minimist": "^1.2.2",
"camelcase-keys": "^7.0.0",
@@ -9623,6 +11976,7 @@
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
"integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=10"
},
@@ -9634,24 +11988,24 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz",
"integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
- },
- "node_modules/merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
+ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"node_modules/merge2": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 8"
}
@@ -9660,17 +12014,19 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
"integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "braces": "^3.0.2",
+ "braces": "^3.0.3",
"picomatch": "^2.3.1"
},
"engines": {
@@ -9681,6 +12037,7 @@
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "license": "MIT",
"bin": {
"mime": "cli.js"
},
@@ -9689,9 +12046,10 @@
}
},
"node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "version": "1.54.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
+ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -9700,6 +12058,7 @@
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
},
@@ -9707,27 +12066,22 @@
"node": ">= 0.6"
}
},
- "node_modules/mimic-fn": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
- "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
- "dev": true,
+ "node_modules/mime-types/node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "license": "MIT",
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">= 0.6"
}
},
"node_modules/mimic-response": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz",
- "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "license": "MIT",
"engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=4"
}
},
"node_modules/min-indent": {
@@ -9735,6 +12089,7 @@
"resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
"integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -9743,6 +12098,7 @@
"version": "9.0.3",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
"integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -9754,18 +12110,17 @@
}
},
"node_modules/minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
+ "license": "MIT"
},
"node_modules/minimist-options": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
"integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"arrify": "^1.0.1",
"is-plain-obj": "^1.1.0",
@@ -9779,6 +12134,7 @@
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "license": "ISC",
"dependencies": {
"yallist": "^4.0.0"
},
@@ -9790,6 +12146,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
"integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
+ "license": "ISC",
"optional": true,
"dependencies": {
"minipass": "^3.0.0"
@@ -9802,6 +12159,7 @@
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz",
"integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==",
+ "license": "MIT",
"optional": true,
"dependencies": {
"minipass": "^3.1.0",
@@ -9819,6 +12177,7 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
"integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
+ "license": "ISC",
"optional": true,
"dependencies": {
"minipass": "^3.0.0"
@@ -9831,6 +12190,7 @@
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
"integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
+ "license": "ISC",
"optional": true,
"dependencies": {
"minipass": "^3.0.0"
@@ -9843,6 +12203,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
"integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==",
+ "license": "ISC",
"optional": true,
"dependencies": {
"minipass": "^3.0.0"
@@ -9855,6 +12216,7 @@
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
"integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "license": "MIT",
"dependencies": {
"minipass": "^3.0.0",
"yallist": "^4.0.0"
@@ -9866,12 +12228,14 @@
"node_modules/mitt": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
- "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="
+ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
+ "license": "MIT"
},
"node_modules/mkdirp": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "license": "MIT",
"bin": {
"mkdirp": "bin/cmd.js"
},
@@ -9879,10 +12243,18 @@
"node": ">=10"
}
},
+ "node_modules/mkdirp-classic": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/mongodb": {
"version": "4.17.2",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.17.2.tgz",
"integrity": "sha512-mLV7SEiov2LHleRJPMPrK2PMyhXFZt2UQLC4VD4pnth3jMjYKHhtqfwwkkvS/NXuo/Fp3vbhaNcXrIDaLRb9Tg==",
+ "license": "Apache-2.0",
"dependencies": {
"bson": "^4.7.2",
"mongodb-connection-string-url": "^2.6.0",
@@ -9900,6 +12272,7 @@
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz",
"integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==",
+ "license": "Apache-2.0",
"dependencies": {
"@types/whatwg-url": "^8.2.1",
"whatwg-url": "^11.0.0"
@@ -9909,6 +12282,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
"integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
+ "license": "MIT",
"dependencies": {
"punycode": "^2.1.1"
},
@@ -9920,6 +12294,7 @@
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
"integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
+ "license": "MIT",
"dependencies": {
"tr46": "^3.0.0",
"webidl-conversions": "^7.0.0"
@@ -9933,6 +12308,7 @@
"resolved": "https://registry.npmjs.org/mqemitter/-/mqemitter-4.5.0.tgz",
"integrity": "sha512-Mp/zytFeIv6piJQkEKnncHcP4R/ErJc5C7dfonkhkNUT2LA/nTayrfNxbipp3M5iCJUTQSUtzfQAQA3XVcKz6w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fastparallel": "^2.3.0",
"qlobber": "^5.0.0"
@@ -9945,6 +12321,7 @@
"version": "4.3.8",
"resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.3.8.tgz",
"integrity": "sha512-2xT75uYa0kiPEF/PE0VPdavmEkoBzMT/UL9moid0rAvlCtV48qBwxD62m7Ld/4j8tSkIO1E/iqRl/S72SEOhOw==",
+ "license": "MIT",
"dependencies": {
"commist": "^1.0.0",
"concat-stream": "^2.0.0",
@@ -9978,6 +12355,7 @@
"resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-7.1.2.tgz",
"integrity": "sha512-FFZbcZ2omsf4c5TxEQfcX9hI+JzDpDKPT46OmeIBpVA7+t32ey25UNqlqNXTmeZOr5BLsSIERpQQLsFWJS94SQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"bl": "^4.0.2",
"debug": "^4.1.1",
@@ -9988,6 +12366,7 @@
"version": "6.10.0",
"resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.10.0.tgz",
"integrity": "sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==",
+ "license": "MIT",
"dependencies": {
"bl": "^4.0.2",
"debug": "^4.1.1",
@@ -9995,9 +12374,10 @@
}
},
"node_modules/mqtt/node_modules/ws": {
- "version": "7.5.9",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
- "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
+ "license": "MIT",
"engines": {
"node": ">=8.3.0"
},
@@ -10015,56 +12395,62 @@
}
},
"node_modules/mrmime": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz",
- "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz",
+ "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
}
},
"node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
},
"node_modules/mssql": {
- "version": "8.1.4",
- "resolved": "https://registry.npmjs.org/mssql/-/mssql-8.1.4.tgz",
- "integrity": "sha512-nqkYYehETWVvFLB9zAGJV2kegOsdtLjUnkHA52aFhlE0ZIoOXC3BL8pLERwFicFypM4i3DX1hYeuM726EEIxjQ==",
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/mssql/-/mssql-11.0.1.tgz",
+ "integrity": "sha512-KlGNsugoT90enKlR8/G36H0kTxPthDhmtNUCwEHvgRza5Cjpjoj+P2X6eMpFUDN7pFrJZsKadL4x990G8RBE1w==",
+ "license": "MIT",
"dependencies": {
- "@tediousjs/connection-string": "^0.3.0",
- "commander": "^9.1.0",
+ "@tediousjs/connection-string": "^0.5.0",
+ "commander": "^11.0.0",
"debug": "^4.3.3",
"rfdc": "^1.3.0",
"tarn": "^3.0.2",
- "tedious": "^14.0.0"
+ "tedious": "^18.2.1"
},
"bin": {
"mssql": "bin/mssql"
},
"engines": {
- "node": ">=10"
+ "node": ">=18"
}
},
"node_modules/mssql/node_modules/commander": {
- "version": "9.5.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
- "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
+ "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
+ "license": "MIT",
"engines": {
- "node": "^12.20.0 || >=14"
+ "node": ">=16"
}
},
"node_modules/mysql2": {
- "version": "3.6.5",
- "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.6.5.tgz",
- "integrity": "sha512-pS/KqIb0xlXmtmqEuTvBXTmLoQ5LmAz5NW/r8UyQ1ldvnprNEj3P9GbmuQQ2J0A4LO+ynotGi6TbscPa8OUb+w==",
+ "version": "3.11.5",
+ "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.11.5.tgz",
+ "integrity": "sha512-0XFu8rUmFN9vC0ME36iBvCUObftiMHItrYFhlCRvFWbLgpNqtC4Br/NmZX1HNCszxT0GGy5QtP+k3Q3eCJPaYA==",
+ "license": "MIT",
"dependencies": {
+ "aws-ssl-profiles": "^1.1.1",
"denque": "^2.1.0",
"generate-function": "^2.3.1",
"iconv-lite": "^0.6.3",
"long": "^5.2.1",
- "lru-cache": "^8.0.0",
+ "lru.min": "^1.0.0",
"named-placeholders": "^1.1.3",
"seq-queue": "^0.0.5",
"sqlstring": "^2.3.2"
@@ -10073,18 +12459,11 @@
"node": ">= 8.0"
}
},
- "node_modules/mysql2/node_modules/lru-cache": {
- "version": "8.0.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz",
- "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==",
- "engines": {
- "node": ">=16.14"
- }
- },
"node_modules/named-placeholders": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz",
"integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==",
+ "license": "MIT",
"dependencies": {
"lru-cache": "^7.14.1"
},
@@ -10096,27 +12475,30 @@
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
"integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "license": "ISC",
"engines": {
"node": ">=12"
}
},
"node_modules/nan": {
- "version": "2.18.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz",
- "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==",
+ "version": "2.22.2",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz",
+ "integrity": "sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==",
"dev": true,
+ "license": "MIT",
"optional": true
},
"node_modules/nanoid": {
- "version": "3.3.7",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
- "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "version": "3.3.11",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"bin": {
"nanoid": "bin/nanoid.cjs"
},
@@ -10127,36 +12509,46 @@
"node_modules/native-duplexpair": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/native-duplexpair/-/native-duplexpair-1.0.0.tgz",
- "integrity": "sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA=="
+ "integrity": "sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA==",
+ "license": "MIT"
},
"node_modules/natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "version": "0.6.4",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
+ "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
- "node_modules/node-abort-controller": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz",
- "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ=="
+ "node_modules/net-snmp": {
+ "version": "3.20.0",
+ "resolved": "https://registry.npmjs.org/net-snmp/-/net-snmp-3.20.0.tgz",
+ "integrity": "sha512-4Cp8ODkzgVXjUrIQFfL9Vo6qVsz+8OuAjUvkRGsSZOKSpoxpy9YWjVgNs+/a9N4Hd9MilIy90Zhw3EZlUUZB6A==",
+ "license": "MIT",
+ "dependencies": {
+ "asn1-ber": "^1.2.1",
+ "smart-buffer": "^4.1.0"
+ }
},
"node_modules/node-addon-api": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
- "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ=="
+ "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==",
+ "license": "MIT"
},
"node_modules/node-cloudflared-tunnel": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/node-cloudflared-tunnel/-/node-cloudflared-tunnel-1.0.10.tgz",
"integrity": "sha512-QBTH4bcTePgiwYdK5vYZhZl7GNr3Pqnj5V3Tg1w5HvnK4VhLZe5BUuhqKvzzCA604yhoD2I1ATdnOl6axSJu/w==",
+ "license": "MIT",
"dependencies": {
"command-exists": "^1.2.9"
}
@@ -10165,6 +12557,7 @@
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
"integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "license": "MIT",
"dependencies": {
"whatwg-url": "^5.0.0"
},
@@ -10183,17 +12576,20 @@
"node_modules/node-fetch/node_modules/tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "license": "MIT"
},
"node_modules/node-fetch/node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "license": "BSD-2-Clause"
},
"node_modules/node-fetch/node_modules/whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "license": "MIT",
"dependencies": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
@@ -10203,6 +12599,7 @@
"version": "8.4.1",
"resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz",
"integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==",
+ "license": "MIT",
"optional": true,
"dependencies": {
"env-paths": "^2.2.0",
@@ -10227,6 +12624,8 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz",
"integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==",
+ "deprecated": "This package is no longer supported.",
+ "license": "ISC",
"optional": true,
"dependencies": {
"delegates": "^1.0.0",
@@ -10240,6 +12639,8 @@
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz",
"integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==",
+ "deprecated": "This package is no longer supported.",
+ "license": "ISC",
"optional": true,
"dependencies": {
"aproba": "^1.0.3 || ^2.0.0",
@@ -10259,6 +12660,8 @@
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz",
"integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==",
+ "deprecated": "This package is no longer supported.",
+ "license": "ISC",
"optional": true,
"dependencies": {
"are-we-there-yet": "^3.0.0",
@@ -10274,6 +12677,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/node-radius-client/-/node-radius-client-1.0.0.tgz",
"integrity": "sha512-FkR9cMV5hNoX+kKDUTzuagvEixlLiaEJQ1/ywOdhahsihKrGDhVZmnCvmrCStA589MT3yuC/J2eKc6z68IGdBw==",
+ "license": "MIT",
"dependencies": {
"joi": "^14.3.1",
"node-radius-utils": "^1.2.0",
@@ -10283,19 +12687,22 @@
"node_modules/node-radius-utils": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/node-radius-utils/-/node-radius-utils-1.2.0.tgz",
- "integrity": "sha512-i3Sf6khnenl0aXumo0whAlfPWTaBqHxEnVBBxpu3dZ7q69NkPPv71rvPjlDZ5wkeKCTNNUTECljerS5kcYQxRw=="
+ "integrity": "sha512-i3Sf6khnenl0aXumo0whAlfPWTaBqHxEnVBBxpu3dZ7q69NkPPv71rvPjlDZ5wkeKCTNNUTECljerS5kcYQxRw==",
+ "license": "MIT"
},
"node_modules/node-releases": {
- "version": "2.0.14",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
- "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
- "dev": true
+ "version": "2.0.19",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
+ "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/node-ssh": {
"version": "13.1.0",
"resolved": "https://registry.npmjs.org/node-ssh/-/node-ssh-13.1.0.tgz",
"integrity": "sha512-GLcw49yFd9+rUpP+FgX6wrF/N90cmuDl2n0i8d3L828b6riRjkb9w3SS+XvviRWbrAhLxuMKywFqxvQDZQ1bug==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/ssh2": "^1.11.9",
"is-stream": "^2.0.0",
@@ -10310,9 +12717,10 @@
}
},
"node_modules/nodemailer": {
- "version": "6.6.5",
- "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.6.5.tgz",
- "integrity": "sha512-C/v856DBijUzHcHIgGpQoTrfsH3suKIRAGliIzCstatM2cAa+MYX3LuyCrABiO/cdJTxgBBHXxV1ztiqUwst5A==",
+ "version": "6.9.16",
+ "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.16.tgz",
+ "integrity": "sha512-psAuZdTIRN08HKVd/E8ObdV6NO7NTBY3KsC30F7M4H1OnmLCUNaS56FpYxyb26zWLSyYF9Ozch9KYHhHegsiOQ==",
+ "license": "MIT-0",
"engines": {
"node": ">=6.0.0"
}
@@ -10321,6 +12729,7 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
"integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
+ "license": "ISC",
"dependencies": {
"abbrev": "1"
},
@@ -10336,6 +12745,7 @@
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
"integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"hosted-git-info": "^4.0.1",
"is-core-module": "^2.5.0",
@@ -10351,33 +12761,39 @@
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/normalize-url": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz",
- "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
+ "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
+ "license": "MIT",
"engines": {
- "node": ">=14.16"
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/nostr-tools": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.17.0.tgz",
- "integrity": "sha512-LZmR8GEWKZeElbFV5Xte75dOeE9EFUW/QLI1Ncn3JKn0kFddDKEfBbFN8Mu4TMs+L4HR/WTPha2l+PPuRnJcMw==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-2.12.0.tgz",
+ "integrity": "sha512-pUWEb020gTvt1XZvTa8AKNIHWFapjsv2NKyk43Ez2nnvz6WSXsrTFE0XtkNLSRBjPn6EpxumKeNiVzLz74jNSA==",
+ "license": "Unlicense",
"dependencies": {
- "@noble/ciphers": "0.2.0",
- "@noble/curves": "1.1.0",
+ "@noble/ciphers": "^0.5.1",
+ "@noble/curves": "1.2.0",
"@noble/hashes": "1.3.1",
"@scure/base": "1.1.1",
"@scure/bip32": "1.3.1",
"@scure/bip39": "1.2.1"
},
+ "optionalDependencies": {
+ "nostr-wasm": "0.1.0"
+ },
"peerDependencies": {
"typescript": ">=5.0.0"
},
@@ -10387,6 +12803,13 @@
}
}
},
+ "node_modules/nostr-wasm": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/nostr-wasm/-/nostr-wasm-0.1.0.tgz",
+ "integrity": "sha512-78BTryCLcLYv96ONU8Ws3Q1JzjlAt+43pWQhIl86xZmWeegYCNLPml7yQ+gG3vR6V5h4XGj+TxO+SS5dsThQIA==",
+ "license": "MIT",
+ "optional": true
+ },
"node_modules/notp": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/notp/-/notp-2.0.3.tgz",
@@ -10396,15 +12819,17 @@
}
},
"node_modules/npm-run-path": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz",
- "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz",
+ "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "path-key": "^4.0.0"
+ "path-key": "^4.0.0",
+ "unicorn-magic": "^0.3.0"
},
"engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -10415,6 +12840,7 @@
"resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
"integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -10426,6 +12852,8 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
"integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
+ "deprecated": "This package is no longer supported.",
+ "license": "ISC",
"dependencies": {
"are-we-there-yet": "^2.0.0",
"console-control-strings": "^1.1.0",
@@ -10437,6 +12865,7 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
"integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "license": "BSD-2-Clause",
"dependencies": {
"boolbase": "^1.0.0"
},
@@ -10448,6 +12877,7 @@
"version": "1.0.14",
"resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.14.tgz",
"integrity": "sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==",
+ "license": "MIT",
"dependencies": {
"debug": "^4.3.1",
"js-sdsl": "4.3.0"
@@ -10457,6 +12887,7 @@
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -10465,14 +12896,19 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz",
"integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==",
+ "license": "MIT",
"engines": {
"node": ">= 6"
}
},
"node_modules/object-inspect": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
- "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+ "version": "1.13.4",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -10481,18 +12917,24 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/object.assign": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
- "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz",
+ "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.5",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
"define-properties": "^1.2.1",
- "has-symbols": "^1.0.3",
+ "es-object-atoms": "^1.0.0",
+ "has-symbols": "^1.1.0",
"object-keys": "^1.1.1"
},
"engines": {
@@ -10503,17 +12945,19 @@
}
},
"node_modules/oidc-token-hash": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.3.tgz",
- "integrity": "sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.1.0.tgz",
+ "integrity": "sha512-y0W+X7Ppo7oZX6eovsRkuzcSM40Bicg2JEJkDJ4irIt1wsYAP5MLSNv+QAogO8xivMffw/9OvV3um1pxXgt1uA==",
+ "license": "MIT",
"engines": {
"node": "^10.13.0 || >=12.0.0"
}
},
"node_modules/on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "license": "MIT",
"dependencies": {
"ee-first": "1.1.1"
},
@@ -10525,6 +12969,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
"integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -10533,29 +12978,17 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "license": "ISC",
"dependencies": {
"wrappy": "1"
}
},
- "node_modules/onetime": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
- "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
- "dev": true,
- "dependencies": {
- "mimic-fn": "^4.0.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/open": {
"version": "8.4.2",
"resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
"integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"define-lazy-prop": "^2.0.0",
"is-docker": "^2.1.1",
@@ -10569,11 +13002,12 @@
}
},
"node_modules/openid-client": {
- "version": "5.6.4",
- "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.6.4.tgz",
- "integrity": "sha512-T1h3B10BRPKfcObdBklX639tVz+xh34O7GjofqrqiAQdm7eHsQ00ih18x6wuJ/E6FxdtS2u3FmUGPDeEcMwzNA==",
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.7.1.tgz",
+ "integrity": "sha512-jDBPgSVfTnkIh71Hg9pRvtJc6wTwqjRkN88+gCFtYWrlP4Yx2Dsrow8uPi3qLr/aeymPF3o2+dS+wOpglK04ew==",
+ "license": "MIT",
"dependencies": {
- "jose": "^4.15.4",
+ "jose": "^4.15.9",
"lru-cache": "^6.0.0",
"object-hash": "^2.2.0",
"oidc-token-hash": "^5.0.3"
@@ -10583,26 +13017,46 @@
}
},
"node_modules/optionator": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
- "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@aashutoshrathi/word-wrap": "^1.2.3",
"deep-is": "^0.1.3",
"fast-levenshtein": "^2.0.6",
"levn": "^0.4.1",
"prelude-ls": "^1.2.1",
- "type-check": "^0.4.0"
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
},
"engines": {
"node": ">= 0.8.0"
}
},
+ "node_modules/own-keys": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz",
+ "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.2.6",
+ "object-keys": "^1.1.1",
+ "safe-push-apply": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/p-cancelable": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz",
"integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==",
+ "license": "MIT",
"engines": {
"node": ">=12.20"
}
@@ -10612,6 +13066,7 @@
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"yocto-queue": "^0.1.0"
},
@@ -10627,6 +13082,7 @@
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-limit": "^3.0.2"
},
@@ -10641,6 +13097,7 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
"integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+ "license": "MIT",
"optional": true,
"dependencies": {
"aggregate-error": "^3.0.0"
@@ -10657,20 +13114,24 @@
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
- "node_modules/packet-reader": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz",
- "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ=="
+ "node_modules/package-json-from-dist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0"
},
"node_modules/parent-module": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"callsites": "^3.0.0"
},
@@ -10683,6 +13144,7 @@
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
"integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.0.0",
"error-ex": "^1.3.1",
@@ -10696,23 +13158,50 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/parse-ms": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz",
+ "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/parse5": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
- "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+ "version": "7.2.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz",
+ "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==",
+ "license": "MIT",
"dependencies": {
- "entities": "^4.4.0"
+ "entities": "^4.5.0"
},
"funding": {
"url": "https://github.com/inikulin/parse5?sponsor=1"
}
},
"node_modules/parse5-htmlparser2-tree-adapter": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz",
- "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz",
+ "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==",
+ "license": "MIT",
+ "dependencies": {
+ "domhandler": "^5.0.3",
+ "parse5": "^7.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/parse5-parser-stream": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz",
+ "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==",
+ "license": "MIT",
"dependencies": {
- "domhandler": "^5.0.2",
"parse5": "^7.0.0"
},
"funding": {
@@ -10723,6 +13212,7 @@
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -10743,6 +13233,7 @@
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -10751,6 +13242,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -10759,6 +13251,7 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -10766,75 +13259,79 @@
"node_modules/path-parse": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "license": "MIT"
},
"node_modules/path-scurry": {
- "version": "1.10.1",
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
- "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "license": "BlueOak-1.0.0",
"dependencies": {
- "lru-cache": "^9.1.1 || ^10.0.0",
+ "lru-cache": "^10.2.0",
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": ">=16 || 14 >=14.18"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/path-scurry/node_modules/lru-cache": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
- "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
- "engines": {
- "node": "14 || >=16.14"
- }
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "license": "ISC"
},
"node_modules/path-scurry/node_modules/minipass": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
- "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "license": "ISC",
"engines": {
"node": ">=16 || 14 >=14.17"
}
},
"node_modules/path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
+ "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==",
+ "license": "MIT"
},
"node_modules/path-type": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/pathe": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
- "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
- "dev": true
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/perfect-debounce": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz",
"integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/pg": {
- "version": "8.11.3",
- "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz",
- "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==",
+ "version": "8.11.6",
+ "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.6.tgz",
+ "integrity": "sha512-6CyL4F0j3vPmakU9rWdeRY8qF5Cjc3OE86y6YpgDI6YtKHhNyCjGEIE8U5ZRfBjKTZikwolKIFWh3I22MeRnoA==",
+ "license": "MIT",
"dependencies": {
- "buffer-writer": "2.0.0",
- "packet-reader": "1.0.0",
- "pg-connection-string": "^2.6.2",
- "pg-pool": "^3.6.1",
- "pg-protocol": "^1.6.0",
+ "pg-connection-string": "^2.6.4",
+ "pg-pool": "^3.6.2",
+ "pg-protocol": "^1.6.1",
"pg-types": "^2.1.0",
"pgpass": "1.x"
},
@@ -10857,38 +13354,44 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz",
"integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==",
+ "license": "MIT",
"optional": true
},
"node_modules/pg-connection-string": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz",
- "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA=="
+ "version": "2.6.4",
+ "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.4.tgz",
+ "integrity": "sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==",
+ "license": "MIT"
},
"node_modules/pg-int8": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
"integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==",
+ "license": "ISC",
"engines": {
"node": ">=4.0.0"
}
},
"node_modules/pg-pool": {
- "version": "3.6.1",
- "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz",
- "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==",
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.8.0.tgz",
+ "integrity": "sha512-VBw3jiVm6ZOdLBTIcXLNdSotb6Iy3uOCwDGFAksZCXmi10nyRvnP2v3jl4d+IsLYRyXf6o9hIm/ZtUzlByNUdw==",
+ "license": "MIT",
"peerDependencies": {
"pg": ">=8.0"
}
},
"node_modules/pg-protocol": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz",
- "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q=="
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.8.0.tgz",
+ "integrity": "sha512-jvuYlEkL03NRvOoyoRktBK7+qU5kOvlAwvmrH8sr3wbLrOdVWsRxQfz8mMy9sZFsqJ1hEWNfdWKI4SAmoL+j7g==",
+ "license": "MIT"
},
"node_modules/pg-types": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz",
"integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==",
+ "license": "MIT",
"dependencies": {
"pg-int8": "1.0.1",
"postgres-array": "~2.0.0",
@@ -10904,6 +13407,7 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz",
"integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==",
+ "license": "MIT",
"dependencies": {
"split2": "^4.1.0"
}
@@ -10912,21 +13416,24 @@
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
"integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
+ "license": "ISC",
"engines": {
"node": ">= 10.x"
}
},
"node_modules/picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true,
+ "license": "ISC"
},
"node_modules/picomatch": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8.6"
},
@@ -10938,6 +13445,7 @@
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz",
"integrity": "sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4.0"
}
@@ -10947,6 +13455,7 @@
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.39.0.tgz",
"integrity": "sha512-naE5QT11uC/Oiq0BwZ50gDmy8c8WLPRTEWuSSFVG2egBka/1qMoSqYQcROMT9zLwJ86oPofcTH2jBY/5wWOgIw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"playwright-core": "1.39.0"
},
@@ -10964,6 +13473,7 @@
"version": "1.39.0",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.39.0.tgz",
"integrity": "sha512-+k4pdZgs1qiM+OUkSjx96YiKsXsmb59evFoqv8SKO067qBA+Z2s/dCzJij/ZhdQcs2zlTAgRKfeiiLm8PQ2qvw==",
+ "license": "Apache-2.0",
"bin": {
"playwright-core": "cli.js"
},
@@ -10976,14 +13486,25 @@
"resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz",
"integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10.13.0"
}
},
+ "node_modules/possible-typed-array-names": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
+ "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/postcss": {
- "version": "8.4.33",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz",
- "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==",
+ "version": "8.5.3",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
+ "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
"dev": true,
"funding": [
{
@@ -10999,10 +13520,11 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
- "nanoid": "^3.3.7",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.0.2"
+ "nanoid": "^3.3.8",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
},
"engines": {
"node": "^10 || ^12 || >=14"
@@ -11013,6 +13535,7 @@
"resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-1.5.0.tgz",
"integrity": "sha512-kCMRWJRHKicpA166kc2lAVUGxDZL324bkj/pVOb6RhjB0Z5Krl7mN0AsVkBhVIRZZirY0lyQXG38HCVaoKVNoA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"htmlparser2": "^8.0.0",
"js-tokens": "^8.0.0",
@@ -11023,17 +13546,39 @@
"node": "^12 || >=14"
}
},
+ "node_modules/postcss-html/node_modules/htmlparser2": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
+ "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
+ "dev": true,
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.0.1",
+ "entities": "^4.4.0"
+ }
+ },
"node_modules/postcss-resolve-nested-selector": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz",
- "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==",
- "dev": true
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz",
+ "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/postcss-rtlcss": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/postcss-rtlcss/-/postcss-rtlcss-3.7.2.tgz",
"integrity": "sha512-GurrGedCKvOTe1QrifI+XpDKXA3bJky1v8KiOa/TYYHs1bfJOxI53GIRvVSqLJLly7e1WcNMz8KMESTN01vbZQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"rtlcss": "^3.5.0"
},
@@ -11049,6 +13594,7 @@
"resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz",
"integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12.0"
},
@@ -11079,6 +13625,7 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"engines": {
"node": ">=12.0"
},
@@ -11087,10 +13634,11 @@
}
},
"node_modules/postcss-selector-parser": {
- "version": "6.0.15",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz",
- "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==",
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -11103,12 +13651,14 @@
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/postgres-array": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz",
"integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==",
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -11117,6 +13667,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz",
"integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -11125,6 +13676,7 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz",
"integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -11133,6 +13685,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz",
"integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==",
+ "license": "MIT",
"dependencies": {
"xtend": "^4.0.0"
},
@@ -11145,15 +13698,33 @@
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.8.0"
}
},
- "node_modules/prismjs": {
- "version": "1.29.0",
- "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
- "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
+ "node_modules/pretty-ms": {
+ "version": "9.2.0",
+ "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz",
+ "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "parse-ms": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/prismjs": {
+ "version": "1.30.0",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz",
+ "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==",
+ "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -11162,7 +13733,7 @@
"version": "0.11.10",
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
"integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.6.0"
}
@@ -11170,12 +13741,14 @@
"node_modules/process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "license": "MIT"
},
"node_modules/prom-client": {
"version": "13.2.0",
"resolved": "https://registry.npmjs.org/prom-client/-/prom-client-13.2.0.tgz",
"integrity": "sha512-wGr5mlNNdRNzEhRYXgboUU2LxHWIojxscJKmtG3R8f4/KiWqyYgXTLHs0+Ted7tG3zFT7pgHJbtomzZ1L0ARaQ==",
+ "license": "Apache-2.0",
"dependencies": {
"tdigest": "^0.1.1"
},
@@ -11187,6 +13760,7 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/prometheus-api-metrics/-/prometheus-api-metrics-3.2.2.tgz",
"integrity": "sha512-5hT17HAjflPkrHSYQ7lorsKygo0PhLau/FQ6SQhw0XWAm10GwKfLQmIVP6b3LJBnc4WNOf/QKHce2RfcZMLjJQ==",
+ "license": "Apache-2.0",
"dependencies": {
"@types/express": "^4.17.13",
"@types/express-serve-static-core": "^4.17.28",
@@ -11203,6 +13777,7 @@
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "license": "MIT",
"dependencies": {
"ms": "^2.1.1"
}
@@ -11211,12 +13786,14 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
"integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
+ "license": "ISC",
"optional": true
},
"node_modules/promise-retry": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
"integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
+ "license": "MIT",
"optional": true,
"dependencies": {
"err-code": "^2.0.2",
@@ -11230,15 +13807,46 @@
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/promisify-child-process/-/promisify-child-process-4.1.2.tgz",
"integrity": "sha512-APnkIgmaHNJpkAn7k+CrJSi9WMuff5ctYFbD0CO2XIPkM8yO7d/ShouU2clywbpHV/DUsyc4bpJCsNgddNtx4g==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
+ "node_modules/proper-lockfile": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz",
+ "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "retry": "^0.12.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "node_modules/properties-reader": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/properties-reader/-/properties-reader-2.3.0.tgz",
+ "integrity": "sha512-z597WicA7nDZxK12kZqHr2TcvwNU1GCfA5UwfDY/HDp3hXPoPlb5rlEx9bwGTiJnc0OqbBTkU975jDToth8Gxw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mkdirp": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/steveukx/properties?sponsor=1"
+ }
+ },
"node_modules/protobufjs": {
"version": "7.2.6",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz",
"integrity": "sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==",
"hasInstallScript": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@protobufjs/aspromise": "^1.1.2",
"@protobufjs/base64": "^1.1.2",
@@ -11261,6 +13869,7 @@
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "license": "MIT",
"dependencies": {
"forwarded": "0.2.0",
"ipaddr.js": "1.9.1"
@@ -11272,26 +13881,45 @@
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "license": "MIT"
},
"node_modules/psl": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
- "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz",
+ "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==",
+ "license": "MIT",
+ "dependencies": {
+ "punycode": "^2.3.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/lupomontero"
+ }
+ },
+ "node_modules/psl/node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
},
"node_modules/pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz",
+ "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==",
+ "license": "MIT",
"dependencies": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
},
"node_modules/punycode": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -11301,18 +13929,19 @@
"resolved": "https://registry.npmjs.org/qlobber/-/qlobber-5.0.3.tgz",
"integrity": "sha512-wW4GTZPePyh0RgOsM18oDyOUlXfurVRgoNyJfS+y7VWPyd0GYhQp5T2tycZFZjonH+hngxIfklGJhTP/ghidgQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 8"
}
},
"node_modules/qrcode": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz",
- "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz",
+ "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"dijkstrajs": "^1.0.1",
- "encode-utf8": "^1.0.3",
"pngjs": "^5.0.0",
"yargs": "^15.3.1"
},
@@ -11328,6 +13957,7 @@
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -11337,6 +13967,7 @@
"resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
"integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
@@ -11348,6 +13979,7 @@
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -11357,6 +13989,7 @@
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"locate-path": "^5.0.0",
"path-exists": "^4.0.0"
@@ -11370,6 +14003,7 @@
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-locate": "^4.1.0"
},
@@ -11382,6 +14016,7 @@
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-try": "^2.0.0"
},
@@ -11397,6 +14032,7 @@
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-limit": "^2.2.0"
},
@@ -11409,6 +14045,7 @@
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
"integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -11422,13 +14059,15 @@
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
"integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/qrcode/node_modules/yargs": {
"version": "15.4.1",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
"integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cliui": "^6.0.0",
"decamelize": "^1.2.0",
@@ -11451,6 +14090,7 @@
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
"integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
@@ -11463,6 +14103,7 @@
"version": "6.10.4",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz",
"integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==",
+ "license": "BSD-3-Clause",
"dependencies": {
"side-channel": "^1.0.4"
},
@@ -11476,7 +14117,8 @@
"node_modules/querystringify": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
- "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+ "license": "MIT"
},
"node_modules/queue-microtask": {
"version": "1.2.3",
@@ -11496,12 +14138,14 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/quick-lru": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
"integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -11521,17 +14165,19 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/raw-body": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz",
- "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==",
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "license": "MIT",
"dependencies": {
"bytes": "3.1.2",
- "http-errors": "1.8.1",
+ "http-errors": "2.0.0",
"iconv-lite": "0.4.24",
"unpipe": "1.0.0"
},
@@ -11539,18 +14185,11 @@
"node": ">= 0.8"
}
},
- "node_modules/raw-body/node_modules/bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/raw-body/node_modules/iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
@@ -11563,6 +14202,7 @@
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz",
"integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/normalize-package-data": "^2.4.0",
"normalize-package-data": "^3.0.2",
@@ -11581,6 +14221,7 @@
"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz",
"integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"find-up": "^5.0.0",
"read-pkg": "^6.0.0",
@@ -11598,6 +14239,7 @@
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
"integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=10"
},
@@ -11610,6 +14252,7 @@
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
"integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=10"
},
@@ -11621,6 +14264,7 @@
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -11630,11 +14274,35 @@
"node": ">= 6"
}
},
+ "node_modules/readdir-glob": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz",
+ "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "minimatch": "^5.1.0"
+ }
+ },
+ "node_modules/readdir-glob/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"picomatch": "^2.2.1"
},
@@ -11646,6 +14314,7 @@
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
"integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
+ "license": "MIT",
"dependencies": {
"resolve": "^1.20.0"
},
@@ -11657,6 +14326,7 @@
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/redbean-node/-/redbean-node-0.3.3.tgz",
"integrity": "sha512-0J59/QlShdWs1h0lsFHRfb8NwjvgIYTQKwYrvq6FykRmeX1cG2u8AgHEIRVBrm56mtKLRASVy/8ykk6fSntLdw==",
+ "license": "MIT",
"dependencies": {
"@types/node": "~20.3.1",
"await-lock": "~2.2.2",
@@ -11669,32 +14339,52 @@
"node_modules/redbean-node/node_modules/@types/node": {
"version": "20.3.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.3.tgz",
- "integrity": "sha512-wheIYdr4NYML61AjC8MKj/2jrR/kDQri/CIpVoZwldwhnIrD/j9jIU5bJ8yBKuB2VhpFV7Ab6G2XkBjv9r9Zzw=="
+ "integrity": "sha512-wheIYdr4NYML61AjC8MKj/2jrR/kDQri/CIpVoZwldwhnIrD/j9jIU5bJ8yBKuB2VhpFV7Ab6G2XkBjv9r9Zzw==",
+ "license": "MIT"
},
"node_modules/redbean-node/node_modules/commander": {
"version": "9.5.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
"integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
+ "license": "MIT",
"engines": {
"node": "^12.20.0 || >=14"
}
},
+ "node_modules/redbean-node/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
"node_modules/redbean-node/node_modules/glob": {
- "version": "10.3.10",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
- "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
+ "version": "10.3.16",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.16.tgz",
+ "integrity": "sha512-JDKXl1DiuuHJ6fVS2FXjownaavciiHNUU4mOvV/B793RLh05vZL1rcPnCSaOgv1hDT6RDlY7AB7ZUvFYAtPgAw==",
+ "license": "ISC",
"dependencies": {
"foreground-child": "^3.1.0",
- "jackspeak": "^2.3.5",
+ "jackspeak": "^3.1.2",
"minimatch": "^9.0.1",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
- "path-scurry": "^1.10.1"
+ "minipass": "^7.0.4",
+ "path-scurry": "^1.11.0"
},
"bin": {
"glob": "dist/esm/bin.mjs"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": ">=16 || 14 >=14.18"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -11704,6 +14394,7 @@
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/knex/-/knex-2.4.2.tgz",
"integrity": "sha512-tMI1M7a+xwHhPxjbl/H9K1kHX+VncEYcvCx5K00M16bWvpYPKAZd6QrCu68PtHAdIZNQPWZn0GVhqVBEthGWCg==",
+ "license": "MIT",
"dependencies": {
"colorette": "2.0.19",
"commander": "^9.1.0",
@@ -11751,22 +14442,31 @@
}
},
"node_modules/redbean-node/node_modules/minipass": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
- "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "license": "ISC",
"engines": {
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/redbean-node/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "license": "MIT"
+ },
"node_modules/redbean-node/node_modules/pg-connection-string": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz",
- "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ=="
+ "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==",
+ "license": "MIT"
},
"node_modules/redbean-node/node_modules/resolve-from": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
"integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -11776,6 +14476,7 @@
"resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz",
"integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"indent-string": "^5.0.0",
"strip-indent": "^4.0.0"
@@ -11792,6 +14493,7 @@
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
"integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -11803,6 +14505,10 @@
"version": "4.5.1",
"resolved": "https://registry.npmjs.org/redis/-/redis-4.5.1.tgz",
"integrity": "sha512-oxXSoIqMJCQVBTfxP6BNTCtDMyh9G6Vi5wjdPdV/sRKkufyZslDqCScSGcOr6XGR/reAWZefz7E4leM31RgdBA==",
+ "license": "MIT",
+ "workspaces": [
+ "./packages/*"
+ ],
"dependencies": {
"@redis/bloom": "1.1.0",
"@redis/client": "1.4.2",
@@ -11812,20 +14518,49 @@
"@redis/time-series": "1.0.4"
}
},
+ "node_modules/reflect.getprototypeof": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz",
+ "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.9",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.7",
+ "get-proto": "^1.0.1",
+ "which-builtin-type": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/regenerator-runtime": {
"version": "0.14.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/regexp.prototype.flags": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz",
- "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz",
+ "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "set-function-name": "^2.0.0"
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-errors": "^1.3.0",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "set-function-name": "^2.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -11839,6 +14574,7 @@
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
"integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
},
@@ -11849,12 +14585,14 @@
"node_modules/reinterval": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz",
- "integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ=="
+ "integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ==",
+ "license": "MIT"
},
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -11864,6 +14602,7 @@
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -11872,25 +14611,31 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+ "license": "MIT"
},
"node_modules/resolve": {
- "version": "1.22.8",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
- "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "version": "1.22.10",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
+ "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
+ "license": "MIT",
"dependencies": {
- "is-core-module": "^2.13.0",
+ "is-core-module": "^2.16.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
"bin": {
"resolve": "bin/resolve"
},
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -11898,65 +14643,80 @@
"node_modules/resolve-alpn": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
- "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g=="
+ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
+ "license": "MIT"
},
"node_modules/resolve-from": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/responselike": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz",
- "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz",
+ "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==",
+ "license": "MIT",
"dependencies": {
- "lowercase-keys": "^3.0.0"
- },
- "engines": {
- "node": ">=14.16"
+ "lowercase-keys": "^2.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/responselike/node_modules/lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/retimer": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/retimer/-/retimer-3.0.0.tgz",
"integrity": "sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/retry": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
"integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
- "optional": true,
+ "devOptional": true,
+ "license": "MIT",
"engines": {
"node": ">= 4"
}
},
"node_modules/reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
"dev": true,
+ "license": "MIT",
"engines": {
"iojs": ">=1.0.0",
"node": ">=0.10.0"
}
},
"node_modules/rfdc": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz",
- "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg=="
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
+ "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==",
+ "license": "MIT"
},
"node_modules/rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "license": "ISC",
"dependencies": {
"glob": "^7.1.3"
},
@@ -11968,12 +14728,13 @@
}
},
"node_modules/rollup": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz",
- "integrity": "sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==",
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.39.0.tgz",
+ "integrity": "sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@types/estree": "1.0.5"
+ "@types/estree": "1.0.7"
},
"bin": {
"rollup": "dist/bin/rollup"
@@ -11983,30 +14744,38 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.9.6",
- "@rollup/rollup-android-arm64": "4.9.6",
- "@rollup/rollup-darwin-arm64": "4.9.6",
- "@rollup/rollup-darwin-x64": "4.9.6",
- "@rollup/rollup-linux-arm-gnueabihf": "4.9.6",
- "@rollup/rollup-linux-arm64-gnu": "4.9.6",
- "@rollup/rollup-linux-arm64-musl": "4.9.6",
- "@rollup/rollup-linux-riscv64-gnu": "4.9.6",
- "@rollup/rollup-linux-x64-gnu": "4.9.6",
- "@rollup/rollup-linux-x64-musl": "4.9.6",
- "@rollup/rollup-win32-arm64-msvc": "4.9.6",
- "@rollup/rollup-win32-ia32-msvc": "4.9.6",
- "@rollup/rollup-win32-x64-msvc": "4.9.6",
+ "@rollup/rollup-android-arm-eabi": "4.39.0",
+ "@rollup/rollup-android-arm64": "4.39.0",
+ "@rollup/rollup-darwin-arm64": "4.39.0",
+ "@rollup/rollup-darwin-x64": "4.39.0",
+ "@rollup/rollup-freebsd-arm64": "4.39.0",
+ "@rollup/rollup-freebsd-x64": "4.39.0",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.39.0",
+ "@rollup/rollup-linux-arm-musleabihf": "4.39.0",
+ "@rollup/rollup-linux-arm64-gnu": "4.39.0",
+ "@rollup/rollup-linux-arm64-musl": "4.39.0",
+ "@rollup/rollup-linux-loongarch64-gnu": "4.39.0",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.39.0",
+ "@rollup/rollup-linux-riscv64-gnu": "4.39.0",
+ "@rollup/rollup-linux-riscv64-musl": "4.39.0",
+ "@rollup/rollup-linux-s390x-gnu": "4.39.0",
+ "@rollup/rollup-linux-x64-gnu": "4.39.0",
+ "@rollup/rollup-linux-x64-musl": "4.39.0",
+ "@rollup/rollup-win32-arm64-msvc": "4.39.0",
+ "@rollup/rollup-win32-ia32-msvc": "4.39.0",
+ "@rollup/rollup-win32-x64-msvc": "4.39.0",
"fsevents": "~2.3.2"
}
},
"node_modules/rollup-plugin-visualizer": {
- "version": "5.12.0",
- "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz",
- "integrity": "sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==",
+ "version": "5.14.0",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.14.0.tgz",
+ "integrity": "sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"open": "^8.4.0",
- "picomatch": "^2.3.1",
+ "picomatch": "^4.0.2",
"source-map": "^0.7.4",
"yargs": "^17.5.1"
},
@@ -12014,22 +14783,40 @@
"rollup-plugin-visualizer": "dist/bin/cli.js"
},
"engines": {
- "node": ">=14"
+ "node": ">=18"
},
"peerDependencies": {
+ "rolldown": "1.x",
"rollup": "2.x || 3.x || 4.x"
},
"peerDependenciesMeta": {
+ "rolldown": {
+ "optional": true
+ },
"rollup": {
"optional": true
}
}
},
+ "node_modules/rollup-plugin-visualizer/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/rtlcss": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.5.0.tgz",
"integrity": "sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"find-up": "^5.0.0",
"picocolors": "^1.0.0",
@@ -12044,7 +14831,7 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz",
"integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -12071,27 +14858,32 @@
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"dependencies": {
"queue-microtask": "^1.2.2"
}
},
"node_modules/rxjs": {
- "version": "7.8.1",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
- "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
+ "version": "7.8.2",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
+ "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.1.0"
}
},
"node_modules/safe-array-concat": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz",
- "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz",
+ "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.5",
- "get-intrinsic": "^1.2.2",
- "has-symbols": "^1.0.3",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "get-intrinsic": "^1.2.6",
+ "has-symbols": "^1.1.0",
"isarray": "^2.0.5"
},
"engines": {
@@ -12102,593 +14894,6 @@
}
},
"node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/safe-regex-test": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.2.tgz",
- "integrity": "sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==",
- "dependencies": {
- "call-bind": "^1.0.5",
- "get-intrinsic": "^1.2.2",
- "is-regex": "^1.1.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "node_modules/sass": {
- "version": "1.42.1",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.42.1.tgz",
- "integrity": "sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg==",
- "dev": true,
- "dependencies": {
- "chokidar": ">=3.0.0 <4.0.0"
- },
- "bin": {
- "sass": "sass.js"
- },
- "engines": {
- "node": ">=8.9.0"
- }
- },
- "node_modules/sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
- },
- "node_modules/sb-promise-queue": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/sb-promise-queue/-/sb-promise-queue-2.1.0.tgz",
- "integrity": "sha512-zwq4YuP1FQFkGx2Q7GIkZYZ6PqWpV+bg0nIO1sJhWOyGyhqbj0MsTvK6lCFo5TQwX5pZr6SCQ75e8PCDCuNvkg==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/sb-scandir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/sb-scandir/-/sb-scandir-3.1.0.tgz",
- "integrity": "sha512-70BVm2xz9jn94zSQdpvYrEG101/UV9TVGcfWr9T5iob3QhCK4lYXeculfBqPGFv3XTeKgx4dpWyYIDeZUqo4kg==",
- "dev": true,
- "dependencies": {
- "sb-promise-queue": "^2.1.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/seek-bzip": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-2.0.0.tgz",
- "integrity": "sha512-SMguiTnYrhpLdk3PwfzHeotrcwi8bNV4iemL9tx9poR/yeaMYwB9VzR1w7b57DuWpuqR8n6oZboi0hj3AxZxQg==",
- "dependencies": {
- "commander": "^6.0.0"
- },
- "bin": {
- "seek-bunzip": "bin/seek-bunzip",
- "seek-table": "bin/seek-bzip-table"
- }
- },
- "node_modules/seek-bzip/node_modules/commander": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
- "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/send": {
- "version": "0.17.2",
- "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz",
- "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==",
- "dependencies": {
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "destroy": "~1.0.4",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "1.8.1",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "~2.3.0",
- "range-parser": "~1.2.1",
- "statuses": "~1.5.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/send/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/send/node_modules/debug/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "node_modules/send/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
- },
- "node_modules/seq-queue": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz",
- "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q=="
- },
- "node_modules/serve-static": {
- "version": "1.14.2",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz",
- "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==",
- "dependencies": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.17.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
- },
- "node_modules/set-function-length": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz",
- "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==",
- "dependencies": {
- "define-data-property": "^1.1.1",
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.2",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/set-function-name": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz",
- "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==",
- "dependencies": {
- "define-data-property": "^1.0.1",
- "functions-have-names": "^1.2.3",
- "has-property-descriptors": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
- },
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shell-escape": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/shell-escape/-/shell-escape-0.2.0.tgz",
- "integrity": "sha512-uRRBT2MfEOyxuECseCZd28jC1AJ8hmqqneWQ4VWUTgCAFvb3wKU1jLqj6egC4Exrr88ogg3dp+zroH4wJuaXzw==",
- "dev": true
- },
- "node_modules/shell-quote": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
- "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
- },
- "node_modules/sirv": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz",
- "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==",
- "dev": true,
- "dependencies": {
- "@polka/url": "^1.0.0-next.24",
- "mrmime": "^2.0.0",
- "totalist": "^3.0.0"
- },
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/slice-ansi?sponsor=1"
- }
- },
- "node_modules/smart-buffer": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
- "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
- "engines": {
- "node": ">= 6.0.0",
- "npm": ">= 3.0.0"
- }
- },
- "node_modules/socket.io": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.2.tgz",
- "integrity": "sha512-Vp+lSks5k0dewYTfwgPT9UeGGd+ht7sCpB7p0e83VgO4X/AHYWhXITMrNk/pg8syY2bpx23ptClCQuHhqi2BgQ==",
- "dependencies": {
- "accepts": "~1.3.4",
- "base64id": "~2.0.0",
- "debug": "~4.3.2",
- "engine.io": "~6.4.2",
- "socket.io-adapter": "~2.5.2",
- "socket.io-parser": "~4.2.4"
- },
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/socket.io-adapter": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz",
- "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==",
- "dependencies": {
- "ws": "~8.11.0"
- }
- },
- "node_modules/socket.io-adapter/node_modules/ws": {
- "version": "8.11.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
- "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
- "engines": {
- "node": ">=10.0.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/socket.io-client": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.6.2.tgz",
- "integrity": "sha512-OwWrMbbA8wSqhBAR0yoPK6EdQLERQAYjXb3A0zLpgxfM1ZGLKoxHx8gVmCHA6pcclRX5oA/zvQf7bghAS11jRA==",
- "dependencies": {
- "@socket.io/component-emitter": "~3.1.0",
- "debug": "~4.3.2",
- "engine.io-client": "~6.4.0",
- "socket.io-parser": "~4.2.4"
- },
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/socket.io-parser": {
- "version": "4.2.4",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
- "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
- "dependencies": {
- "@socket.io/component-emitter": "~3.1.0",
- "debug": "~4.3.1"
- },
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/socks": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz",
- "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==",
- "dependencies": {
- "ip": "^2.0.0",
- "smart-buffer": "^4.2.0"
- },
- "engines": {
- "node": ">= 10.13.0",
- "npm": ">= 3.0.0"
- }
- },
- "node_modules/socks-proxy-agent": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz",
- "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==",
- "dependencies": {
- "agent-base": "^6.0.2",
- "debug": "^4.3.1",
- "socks": "^2.6.1"
- },
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/socks-proxy-agent/node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "dependencies": {
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/sortablejs": {
- "version": "1.14.0",
- "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz",
- "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==",
- "dev": true
- },
- "node_modules/source-map": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/source-map-js": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
- "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
- "dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "node_modules/source-map-support/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sparse-bitfield": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
- "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
- "optional": true,
- "dependencies": {
- "memory-pager": "^1.0.2"
- }
- },
- "node_modules/spawn-command": {
- "version": "0.0.2-1",
- "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
- "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==",
- "dev": true
- },
- "node_modules/spdx-correct": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
- "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
- "dev": true,
- "dependencies": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-exceptions": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz",
- "integrity": "sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==",
- "dev": true
- },
- "node_modules/spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dev": true,
- "dependencies": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-license-ids": {
- "version": "3.0.16",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz",
- "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==",
- "dev": true
- },
- "node_modules/speakingurl": {
- "version": "14.0.1",
- "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz",
- "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/split2": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz",
- "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
- "dependencies": {
- "readable-stream": "^3.0.0"
- }
- },
- "node_modules/sprintf-js": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
- "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="
- },
- "node_modules/sqlstring": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz",
- "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/ssh2": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.15.0.tgz",
- "integrity": "sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw==",
- "dev": true,
- "hasInstallScript": true,
- "dependencies": {
- "asn1": "^0.2.6",
- "bcrypt-pbkdf": "^1.0.2"
- },
- "engines": {
- "node": ">=10.16.0"
- },
- "optionalDependencies": {
- "cpu-features": "~0.0.9",
- "nan": "^2.18.0"
- }
- },
- "node_modules/ssri": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
- "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
- "optional": true,
- "dependencies": {
- "minipass": "^3.1.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/statuses": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/stoppable": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz",
- "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==",
- "engines": {
- "node": ">=4",
- "npm": ">=6"
- }
- },
- "node_modules/stream-shift": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz",
- "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ=="
- },
- "node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
- "node_modules/string_decoder/node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
@@ -12705,12 +14910,853 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
+ },
+ "node_modules/safe-push-apply": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz",
+ "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-regex-test": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
+ "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "is-regex": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "license": "MIT"
+ },
+ "node_modules/sass": {
+ "version": "1.42.1",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.42.1.tgz",
+ "integrity": "sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chokidar": ">=3.0.0 <4.0.0"
+ },
+ "bin": {
+ "sass": "sass.js"
+ },
+ "engines": {
+ "node": ">=8.9.0"
+ }
+ },
+ "node_modules/sax": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz",
+ "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==",
+ "license": "ISC"
+ },
+ "node_modules/sb-promise-queue": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/sb-promise-queue/-/sb-promise-queue-2.1.1.tgz",
+ "integrity": "sha512-qXfdcJQMxMljxmPprn4Q4hl3pJmoljSCzUvvEBa9Kscewnv56n0KqrO6yWSrGLOL9E021wcGdPa39CHGKA6G0w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/sb-scandir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/sb-scandir/-/sb-scandir-3.1.0.tgz",
+ "integrity": "sha512-70BVm2xz9jn94zSQdpvYrEG101/UV9TVGcfWr9T5iob3QhCK4lYXeculfBqPGFv3XTeKgx4dpWyYIDeZUqo4kg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "sb-promise-queue": "^2.1.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/seek-bzip": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-2.0.0.tgz",
+ "integrity": "sha512-SMguiTnYrhpLdk3PwfzHeotrcwi8bNV4iemL9tx9poR/yeaMYwB9VzR1w7b57DuWpuqR8n6oZboi0hj3AxZxQg==",
+ "license": "MIT",
+ "dependencies": {
+ "commander": "^6.0.0"
+ },
+ "bin": {
+ "seek-bunzip": "bin/seek-bunzip",
+ "seek-table": "bin/seek-bzip-table"
+ }
+ },
+ "node_modules/seek-bzip/node_modules/commander": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/send": {
+ "version": "0.19.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
+ "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/send/node_modules/debug/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/send/node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/seq-queue": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz",
+ "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q=="
+ },
+ "node_modules/serve-static": {
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
+ "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
+ "license": "MIT",
+ "dependencies": {
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.19.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
+ "license": "ISC"
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-function-name": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
+ "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "functions-have-names": "^1.2.3",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-proto": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz",
+ "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "license": "ISC"
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shell-escape": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/shell-escape/-/shell-escape-0.2.0.tgz",
+ "integrity": "sha512-uRRBT2MfEOyxuECseCZd28jC1AJ8hmqqneWQ4VWUTgCAFvb3wKU1jLqj6egC4Exrr88ogg3dp+zroH4wJuaXzw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/shell-quote": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz",
+ "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3",
+ "side-channel-list": "^1.0.0",
+ "side-channel-map": "^1.0.1",
+ "side-channel-weakmap": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-list": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-weakmap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3",
+ "side-channel-map": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "license": "ISC"
+ },
+ "node_modules/sirv": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.1.tgz",
+ "integrity": "sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@polka/url": "^1.0.0-next.24",
+ "mrmime": "^2.0.0",
+ "totalist": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/slice-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ }
+ },
+ "node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socket.io": {
+ "version": "4.8.1",
+ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz",
+ "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==",
+ "license": "MIT",
+ "dependencies": {
+ "accepts": "~1.3.4",
+ "base64id": "~2.0.0",
+ "cors": "~2.8.5",
+ "debug": "~4.3.2",
+ "engine.io": "~6.6.0",
+ "socket.io-adapter": "~2.5.2",
+ "socket.io-parser": "~4.2.4"
+ },
+ "engines": {
+ "node": ">=10.2.0"
+ }
+ },
+ "node_modules/socket.io-adapter": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz",
+ "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "~4.3.4",
+ "ws": "~8.17.1"
+ }
+ },
+ "node_modules/socket.io-adapter/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socket.io-adapter/node_modules/ws": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socket.io-client": {
+ "version": "4.8.1",
+ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz",
+ "integrity": "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.2",
+ "engine.io-client": "~6.6.1",
+ "socket.io-parser": "~4.2.4"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/socket.io-client/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socket.io-parser": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
+ "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
+ "license": "MIT",
+ "dependencies": {
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.1"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/socket.io-parser/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socket.io/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socks": {
+ "version": "2.8.4",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz",
+ "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ip-address": "^9.0.5",
+ "smart-buffer": "^4.2.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks-proxy-agent": {
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz",
+ "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==",
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "^4.3.4",
+ "socks": "^2.8.3"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/sortablejs": {
+ "version": "1.14.0",
+ "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz",
+ "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/source-map-support/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sparse-bitfield": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
+ "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "memory-pager": "^1.0.2"
+ }
+ },
+ "node_modules/spawn-command": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz",
+ "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==",
+ "dev": true
+ },
+ "node_modules/spdx-correct": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+ "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-exceptions": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
+ "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
+ "dev": true,
+ "license": "CC-BY-3.0"
+ },
+ "node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-license-ids": {
+ "version": "3.0.21",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz",
+ "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==",
+ "dev": true,
+ "license": "CC0-1.0"
+ },
+ "node_modules/speakingurl": {
+ "version": "14.0.1",
+ "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz",
+ "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/split-ca": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz",
+ "integrity": "sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/split2": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz",
+ "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
+ "license": "ISC",
+ "dependencies": {
+ "readable-stream": "^3.0.0"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
+ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/sqlstring": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz",
+ "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/ssh-remote-port-forward": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/ssh-remote-port-forward/-/ssh-remote-port-forward-1.0.4.tgz",
+ "integrity": "sha512-x0LV1eVDwjf1gmG7TTnfqIzf+3VPRz7vrNIjX6oYLbeCrf/PeVY6hkT68Mg+q02qXxQhrLjB0jfgvhevoCRmLQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/ssh2": "^0.5.48",
+ "ssh2": "^1.4.0"
+ }
+ },
+ "node_modules/ssh-remote-port-forward/node_modules/@types/ssh2": {
+ "version": "0.5.52",
+ "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-0.5.52.tgz",
+ "integrity": "sha512-lbLLlXxdCZOSJMCInKH2+9V/77ET2J6NPQHpFI0kda61Dd1KglJs+fPQBchizmzYSOJBgdTajhPqBO1xxLywvg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "@types/ssh2-streams": "*"
+ }
+ },
+ "node_modules/ssh2": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.16.0.tgz",
+ "integrity": "sha512-r1X4KsBGedJqo7h8F5c4Ybpcr5RjyP+aWIG007uBPRjmdQWfEiVLzSK71Zji1B9sKxwaCvD8y8cwSkYrlLiRRg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "asn1": "^0.2.6",
+ "bcrypt-pbkdf": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=10.16.0"
+ },
+ "optionalDependencies": {
+ "cpu-features": "~0.0.10",
+ "nan": "^2.20.0"
+ }
+ },
+ "node_modules/ssri": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
+ "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
+ "license": "ISC",
+ "optional": true,
+ "dependencies": {
+ "minipass": "^3.1.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/stoppable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz",
+ "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4",
+ "npm": ">=6"
+ }
+ },
+ "node_modules/stream-shift": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz",
+ "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==",
+ "license": "MIT"
+ },
+ "node_modules/streamx": {
+ "version": "2.22.0",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz",
+ "integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-fifo": "^1.3.2",
+ "text-decoder": "^1.1.0"
+ },
+ "optionalDependencies": {
+ "bare-events": "^2.2.0"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
},
"node_modules/string-to-stream": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string-to-stream/-/string-to-stream-1.1.1.tgz",
"integrity": "sha512-QySF2+3Rwq0SdO3s7BAp4x+c3qsClpPQ6abAmb0DGViiSBAkT5kL6JT2iyzEVP+T1SmzHrQD1TwlP9QAHCc+Sw==",
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.1",
"readable-stream": "^2.1.0"
@@ -12719,12 +15765,14 @@
"node_modules/string-to-stream/node_modules/isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "license": "MIT"
},
"node_modules/string-to-stream/node_modules/readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "license": "MIT",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -12735,10 +15783,17 @@
"util-deprecate": "~1.0.1"
}
},
+ "node_modules/string-to-stream/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "license": "MIT"
+ },
"node_modules/string-to-stream/node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "license": "MIT",
"dependencies": {
"safe-buffer": "~5.1.0"
}
@@ -12747,6 +15802,7 @@
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -12761,6 +15817,7 @@
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -12771,30 +15828,42 @@
}
},
"node_modules/string.prototype.replaceall": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/string.prototype.replaceall/-/string.prototype.replaceall-1.0.8.tgz",
- "integrity": "sha512-MmCXb9980obcnmbEd3guqVl6lXTxpP28zASfgAlAhlBMw5XehQeSKsdIWlAYtLxp/1GtALwex+2HyoIQtaLQwQ==",
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/string.prototype.replaceall/-/string.prototype.replaceall-1.0.10.tgz",
+ "integrity": "sha512-PKLapcZUZmXUdfIM6rTTTMYOxaj4JiQrgl0SKEeCFug1CdMAuJq8hVZd4eek9yMXAW4ldGUq+TiZRtjLJRU96g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "get-intrinsic": "^1.2.1",
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
"has-symbols": "^1.0.3",
"is-regex": "^1.1.4"
},
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/string.prototype.trim": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz",
- "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==",
+ "version": "1.2.10",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz",
+ "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "define-data-property": "^1.1.4",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.5",
+ "es-object-atoms": "^1.0.0",
+ "has-property-descriptors": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -12804,26 +15873,37 @@
}
},
"node_modules/string.prototype.trimend": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz",
- "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==",
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz",
+ "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/string.prototype.trimstart": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz",
- "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==",
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
+ "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -12833,6 +15913,7 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -12845,6 +15926,7 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -12853,12 +15935,13 @@
}
},
"node_modules/strip-final-newline": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
- "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz",
+ "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=12"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -12869,6 +15952,7 @@
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz",
"integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"min-indent": "^1.0.1"
},
@@ -12884,6 +15968,7 @@
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
},
@@ -12892,22 +15977,31 @@
}
},
"node_modules/strnum": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
- "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz",
+ "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ }
+ ],
+ "license": "MIT",
"optional": true
},
"node_modules/style-search": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz",
"integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/stylelint": {
"version": "15.11.0",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.11.0.tgz",
"integrity": "sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@csstools/css-parser-algorithms": "^2.3.1",
"@csstools/css-tokenizer": "^2.2.0",
@@ -12966,6 +16060,7 @@
"resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-7.0.0.tgz",
"integrity": "sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q==",
"dev": true,
+ "license": "MIT",
"peerDependencies": {
"stylelint": "^14.4.0"
}
@@ -12975,6 +16070,7 @@
"resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-25.0.0.tgz",
"integrity": "sha512-21HnP3VSpaT1wFjFvv9VjvOGDtAviv47uTp3uFmzcN+3Lt+RYRv6oAplLaV51Kf792JSxJ6svCJh/G18E9VnCA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"stylelint-config-recommended": "^7.0.0"
},
@@ -12986,13 +16082,15 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz",
"integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/stylelint/node_modules/file-entry-cache": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.2.tgz",
"integrity": "sha512-TfW7/1iI4Cy7Y8L6iqNdZQVvdXn0f8B4QcIXmkIbtTIe/Okm/nSlHb4IwGzRVOd3WfSieCgvf5cMzEfySAIl0g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"flat-cache": "^3.2.0"
},
@@ -13005,15 +16103,30 @@
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
"integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
+ "node_modules/superjson": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz",
+ "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "copy-anything": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
"node_modules/supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -13025,16 +16138,20 @@
}
},
"node_modules/supports-hyperlinks": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz",
- "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz",
+ "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0",
"supports-color": "^7.0.0"
},
"engines": {
"node": ">=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1"
}
},
"node_modules/supports-hyperlinks/node_modules/supports-color": {
@@ -13042,6 +16159,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -13053,6 +16171,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -13067,10 +16186,11 @@
"dev": true
},
"node_modules/table": {
- "version": "6.8.1",
- "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz",
- "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==",
+ "version": "6.9.0",
+ "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz",
+ "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"ajv": "^8.0.1",
"lodash.truncate": "^4.4.2",
@@ -13083,15 +16203,16 @@
}
},
"node_modules/table/node_modules/ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "fast-deep-equal": "^3.1.1",
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
"json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
+ "require-from-string": "^2.0.2"
},
"funding": {
"type": "github",
@@ -13102,12 +16223,14 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/tar": {
- "version": "6.1.15",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz",
- "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
+ "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
+ "license": "ISC",
"dependencies": {
"chownr": "^2.0.0",
"fs-minipass": "^2.0.0",
@@ -13120,10 +16243,38 @@
"node": ">=10"
}
},
+ "node_modules/tar-fs": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.8.tgz",
+ "integrity": "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pump": "^3.0.0",
+ "tar-stream": "^3.1.5"
+ },
+ "optionalDependencies": {
+ "bare-fs": "^4.0.1",
+ "bare-path": "^3.0.0"
+ }
+ },
+ "node_modules/tar-stream": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
+ "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "b4a": "^1.6.4",
+ "fast-fifo": "^1.2.0",
+ "streamx": "^2.15.0"
+ }
+ },
"node_modules/tar/node_modules/minipass": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
"integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "license": "ISC",
"engines": {
"node": ">=8"
}
@@ -13132,6 +16283,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz",
"integrity": "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==",
+ "license": "MIT",
"engines": {
"node": ">=8.0.0"
}
@@ -13139,47 +16291,49 @@
"node_modules/tcp-ping": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/tcp-ping/-/tcp-ping-0.1.1.tgz",
- "integrity": "sha512-7Ed10Ds0hYnF+O1lfiZ2iSZ1bCAj+96Madctebmq7Y1ALPWlBY4YI8C6pCL+UTlshFY5YogixKLpgDP/4BlHrw=="
+ "integrity": "sha512-7Ed10Ds0hYnF+O1lfiZ2iSZ1bCAj+96Madctebmq7Y1ALPWlBY4YI8C6pCL+UTlshFY5YogixKLpgDP/4BlHrw==",
+ "license": "MIT"
},
"node_modules/tdigest": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz",
"integrity": "sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==",
+ "license": "MIT",
"dependencies": {
"bintrees": "1.0.2"
}
},
"node_modules/tedious": {
- "version": "14.7.0",
- "resolved": "https://registry.npmjs.org/tedious/-/tedious-14.7.0.tgz",
- "integrity": "sha512-d3qlmZcvZyt7akyPHiOdR+knfzObWZH3mW+gouQTSb7YTSwtpHuYHcvsQabfbY7oOvgbs51xRb7CwOahWK/t9w==",
+ "version": "18.6.1",
+ "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.6.1.tgz",
+ "integrity": "sha512-9AvErXXQTd6l7TDd5EmM+nxbOGyhnmdbp/8c3pw+tjaiSXW9usME90ET/CRG1LN1Y9tPMtz/p83z4Q97B4DDpw==",
+ "license": "MIT",
"dependencies": {
- "@azure/identity": "^2.0.4",
+ "@azure/core-auth": "^1.7.2",
+ "@azure/identity": "^4.2.1",
"@azure/keyvault-keys": "^4.4.0",
- "@js-joda/core": "^5.2.0",
- "@types/es-aggregate-error": "^1.0.2",
- "bl": "^5.0.0",
- "es-aggregate-error": "^1.0.8",
+ "@js-joda/core": "^5.6.1",
+ "@types/node": ">=18",
+ "bl": "^6.0.11",
"iconv-lite": "^0.6.3",
"js-md4": "^0.3.2",
- "jsbi": "^4.3.0",
"native-duplexpair": "^1.0.0",
- "node-abort-controller": "^3.0.1",
- "punycode": "^2.1.0",
- "sprintf-js": "^1.1.2"
+ "sprintf-js": "^1.1.3"
},
"engines": {
- "node": ">=12.3.0"
+ "node": ">=18"
}
},
"node_modules/tedious/node_modules/bl": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz",
- "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-6.1.0.tgz",
+ "integrity": "sha512-ClDyJGQkc8ZtzdAAbAwBmhMSpwN/sC9HA8jxdYm6nVUbCfZbe2mgza4qh7AuEYyEPB/c4Kznf9s66bnsKMQDjw==",
+ "license": "MIT",
"dependencies": {
+ "@types/readable-stream": "^4.0.0",
"buffer": "^6.0.3",
"inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
+ "readable-stream": "^4.2.0"
}
},
"node_modules/tedious/node_modules/buffer": {
@@ -13200,16 +16354,34 @@
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"dependencies": {
"base64-js": "^1.3.1",
"ieee754": "^1.2.1"
}
},
+ "node_modules/tedious/node_modules/readable-stream": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
+ "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
+ "license": "MIT",
+ "dependencies": {
+ "abort-controller": "^3.0.0",
+ "buffer": "^6.0.3",
+ "events": "^3.3.0",
+ "process": "^0.11.10",
+ "string_decoder": "^1.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
"node_modules/terser": {
"version": "5.15.1",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz",
"integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"@jridgewell/source-map": "^0.3.2",
"acorn": "^8.5.0",
@@ -13227,13 +16399,15 @@
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/test": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/test/-/test-3.3.0.tgz",
"integrity": "sha512-JKlEohxDIJRjwBH/+BrTcAPHljBALrAHw3Zs99RqZlaC605f6BggqXhxkdqZThbSHgaYPwpNJlf9bTSWkb/1rA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"minimist": "^1.2.6",
"readable-stream": "^4.3.0",
@@ -13265,16 +16439,18 @@
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"dependencies": {
"base64-js": "^1.3.1",
"ieee754": "^1.2.1"
}
},
"node_modules/test/node_modules/readable-stream": {
- "version": "4.5.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz",
- "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==",
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
+ "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"abort-controller": "^3.0.0",
"buffer": "^6.0.3",
@@ -13286,11 +16462,46 @@
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
+ "node_modules/testcontainers": {
+ "version": "10.24.2",
+ "resolved": "https://registry.npmjs.org/testcontainers/-/testcontainers-10.24.2.tgz",
+ "integrity": "sha512-Don3EXEQuSw14+nFG9pj48fL9ck/jXDfR9Rb0K3acOyn/gg97+gsnfZaLzpdejl9GcPJVKxACNRe3SYVC2uWqg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@balena/dockerignore": "^1.0.2",
+ "@types/dockerode": "^3.3.35",
+ "archiver": "^7.0.1",
+ "async-lock": "^1.4.1",
+ "byline": "^5.0.0",
+ "debug": "^4.3.5",
+ "docker-compose": "^0.24.8",
+ "dockerode": "^4.0.5",
+ "get-port": "^7.1.0",
+ "proper-lockfile": "^4.1.2",
+ "properties-reader": "^2.3.0",
+ "ssh-remote-port-forward": "^1.0.4",
+ "tar-fs": "^3.0.7",
+ "tmp": "^0.2.3",
+ "undici": "^5.28.5"
+ }
+ },
+ "node_modules/text-decoder": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz",
+ "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "b4a": "^1.6.4"
+ }
+ },
"node_modules/text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
"integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/thirty-two": {
"version": "1.0.2",
@@ -13304,17 +16515,19 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz",
"integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "node_modules/tmp": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz",
+ "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=4"
+ "node": ">=14.14"
}
},
"node_modules/to-regex-range": {
@@ -13322,6 +16535,7 @@
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-number": "^7.0.0"
},
@@ -13333,6 +16547,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "license": "MIT",
"engines": {
"node": ">=0.6"
}
@@ -13342,6 +16557,7 @@
"resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz",
"integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==",
"deprecated": "This module has moved and is now available at @hapi/topo. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.",
+ "license": "BSD-3-Clause",
"dependencies": {
"hoek": "6.x.x"
}
@@ -13351,14 +16567,16 @@
"resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
"integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/tough-cookie": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
- "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz",
+ "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==",
+ "license": "BSD-3-Clause",
"dependencies": {
"psl": "^1.1.33",
"punycode": "^2.1.1",
@@ -13374,6 +16592,7 @@
"resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz",
"integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"punycode": "^2.3.0"
},
@@ -13381,11 +16600,22 @@
"node": ">=14"
}
},
+ "node_modules/tr46/node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/tree-kill": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
"integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
"dev": true,
+ "license": "MIT",
"bin": {
"tree-kill": "cli.js"
}
@@ -13395,6 +16625,7 @@
"resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz",
"integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -13403,27 +16634,30 @@
}
},
"node_modules/ts-api-utils": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz",
- "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==",
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz",
+ "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=16.13.0"
+ "node": ">=16"
},
"peerDependencies": {
"typescript": ">=4.2.0"
}
},
"node_modules/tslib": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
- "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD"
},
"node_modules/tunnel": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.6.11 <=0.7.0 || >=0.7.3"
}
@@ -13432,13 +16666,15 @@
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==",
- "dev": true
+ "dev": true,
+ "license": "Unlicense"
},
"node_modules/type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
"integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"prelude-ls": "^1.2.1"
},
@@ -13451,6 +16687,7 @@
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
"integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=10"
},
@@ -13462,6 +16699,7 @@
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "license": "MIT",
"dependencies": {
"media-typer": "0.3.0",
"mime-types": "~2.1.24"
@@ -13471,27 +16709,32 @@
}
},
"node_modules/typed-array-buffer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz",
- "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.1",
- "is-typed-array": "^1.1.10"
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "is-typed-array": "^1.1.14"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/typed-array-byte-length": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz",
- "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz",
+ "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
+ "call-bind": "^1.0.8",
"for-each": "^0.3.3",
- "has-proto": "^1.0.1",
- "is-typed-array": "^1.1.10"
+ "gopd": "^1.2.0",
+ "has-proto": "^1.2.0",
+ "is-typed-array": "^1.1.14"
},
"engines": {
"node": ">= 0.4"
@@ -13501,15 +16744,19 @@
}
},
"node_modules/typed-array-byte-offset": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz",
- "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz",
+ "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.8",
"for-each": "^0.3.3",
- "has-proto": "^1.0.1",
- "is-typed-array": "^1.1.10"
+ "gopd": "^1.2.0",
+ "has-proto": "^1.2.0",
+ "is-typed-array": "^1.1.15",
+ "reflect.getprototypeof": "^1.0.9"
},
"engines": {
"node": ">= 0.4"
@@ -13519,13 +16766,21 @@
}
},
"node_modules/typed-array-length": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
- "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz",
+ "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
+ "call-bind": "^1.0.7",
"for-each": "^0.3.3",
- "is-typed-array": "^1.1.9"
+ "gopd": "^1.0.1",
+ "is-typed-array": "^1.1.13",
+ "possible-typed-array-names": "^1.0.0",
+ "reflect.getprototypeof": "^1.0.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -13534,13 +16789,15 @@
"node_modules/typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
+ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
+ "license": "MIT"
},
"node_modules/typescript": {
"version": "4.4.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz",
"integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==",
"dev": true,
+ "license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -13550,29 +16807,36 @@
}
},
"node_modules/unbox-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
- "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz",
+ "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
+ "call-bound": "^1.0.3",
"has-bigints": "^1.0.2",
- "has-symbols": "^1.0.3",
- "which-boxed-primitive": "^1.0.2"
+ "has-symbols": "^1.1.0",
+ "which-boxed-primitive": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/underscore": {
- "version": "1.13.6",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
- "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
+ "version": "1.13.7",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz",
+ "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==",
+ "license": "MIT"
},
"node_modules/undici": {
- "version": "5.28.2",
- "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.2.tgz",
- "integrity": "sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==",
+ "version": "5.29.0",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz",
+ "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@fastify/busboy": "^2.0.0"
},
@@ -13581,14 +16845,29 @@
}
},
"node_modules/undici-types": {
- "version": "5.26.5",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
+ "version": "6.19.8",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
+ "license": "MIT"
+ },
+ "node_modules/unicorn-magic": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
+ "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"node_modules/unique-filename": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
"integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+ "license": "ISC",
"optional": true,
"dependencies": {
"unique-slug": "^2.0.0"
@@ -13598,6 +16877,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
"integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
+ "license": "ISC",
"optional": true,
"dependencies": {
"imurmurhash": "^0.1.4"
@@ -13607,12 +16887,14 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz",
"integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/universalify": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
"integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
+ "license": "MIT",
"engines": {
"node": ">= 4.0.0"
}
@@ -13621,14 +16903,15 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/update-browserslist-db": {
- "version": "1.0.13",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
- "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
+ "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
"dev": true,
"funding": [
{
@@ -13644,9 +16927,10 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
},
"bin": {
"update-browserslist-db": "cli.js"
@@ -13660,6 +16944,7 @@
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"punycode": "^2.1.0"
}
@@ -13668,6 +16953,7 @@
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
"integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+ "license": "MIT",
"dependencies": {
"querystringify": "^2.1.1",
"requires-port": "^1.0.0"
@@ -13676,12 +16962,14 @@
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "license": "MIT"
},
"node_modules/utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
"integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4.0"
}
@@ -13690,6 +16978,7 @@
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "license": "MIT",
"bin": {
"uuid": "dist/bin/uuid"
}
@@ -13698,13 +16987,15 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/uuid-parse/-/uuid-parse-1.1.0.tgz",
"integrity": "sha512-OdmXxA8rDsQ7YpNVbKSJkNzTw2I+S5WsbMDnCtIWSQaosNAcWtFuI/YK1TjzUI6nbkgiqEyh8gWngfcv8Asd9A==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/v-pagination-3": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/v-pagination-3/-/v-pagination-3-0.1.7.tgz",
"integrity": "sha512-b5H+SdL+yIhkqyWI+Uj5lGk1VK3Q/hjqN44okerMa9smtk55DJX3Jg+ecU/vJAFrEhNCqgNzLsJ8pLRcHrbjrg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"babel-plugin-add-module-exports": "^0.2.1",
"merge": "^2.1.1",
@@ -13715,13 +17006,15 @@
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz",
"integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/validate-npm-package-license": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"spdx-correct": "^3.0.0",
"spdx-expression-parse": "^3.0.0"
@@ -13730,25 +17023,28 @@
"node_modules/varint": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz",
- "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg=="
+ "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==",
+ "license": "MIT"
},
"node_modules/vary": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/vite": {
- "version": "5.0.12",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.12.tgz",
- "integrity": "sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==",
+ "version": "5.4.18",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.18.tgz",
+ "integrity": "sha512-1oDcnEp3lVyHCuQ2YFelM4Alm2o91xNoMncRm1U7S+JdYfYOvbiGZ3/CxGttrOu2M/KcGz7cRC2DoNUA6urmMA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "esbuild": "^0.19.3",
- "postcss": "^8.4.32",
- "rollup": "^4.2.0"
+ "esbuild": "^0.21.3",
+ "postcss": "^8.4.43",
+ "rollup": "^4.20.0"
},
"bin": {
"vite": "bin/vite.js"
@@ -13767,6 +17063,7 @@
"less": "*",
"lightningcss": "^1.21.0",
"sass": "*",
+ "sass-embedded": "*",
"stylus": "*",
"sugarss": "*",
"terser": "^5.4.0"
@@ -13784,6 +17081,9 @@
"sass": {
"optional": true
},
+ "sass-embedded": {
+ "optional": true
+ },
"stylus": {
"optional": true
},
@@ -13795,32 +17095,17 @@
}
}
},
- "node_modules/vite-dev-rpc": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/vite-dev-rpc/-/vite-dev-rpc-0.1.4.tgz",
- "integrity": "sha512-6I/qF7EDGLQfm3DGdcbkZ7JRl3FIbaVgD1TqDWBaCosJ1QljLzNzDBmMEa7cYkEyAMxHDBqT7zJrOiuYlFYcAA==",
- "dev": true,
- "dependencies": {
- "birpc": "^0.2.14",
- "vite-hot-client": "^0.2.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- },
- "peerDependencies": {
- "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0"
- }
- },
"node_modules/vite-hot-client": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/vite-hot-client/-/vite-hot-client-0.2.3.tgz",
- "integrity": "sha512-rOGAV7rUlUHX89fP2p2v0A2WWvV3QMX2UYq0fRqsWSvFvev4atHWqjwGoKaZT1VTKyLGk533ecu3eyd0o59CAg==",
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/vite-hot-client/-/vite-hot-client-0.2.4.tgz",
+ "integrity": "sha512-a1nzURqO7DDmnXqabFOliz908FRmIppkBKsJthS8rbe8hBEXwEwe4C3Pp33Z1JoFCYfVL4kTOMLKk0ZZxREIeA==",
"dev": true,
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/antfu"
},
"peerDependencies": {
- "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0"
+ "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0"
}
},
"node_modules/vite-plugin-compression": {
@@ -13828,6 +17113,7 @@
"resolved": "https://registry.npmjs.org/vite-plugin-compression/-/vite-plugin-compression-0.5.1.tgz",
"integrity": "sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chalk": "^4.1.2",
"debug": "^4.3.3",
@@ -13838,20 +17124,21 @@
}
},
"node_modules/vite-plugin-inspect": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.8.3.tgz",
- "integrity": "sha512-SBVzOIdP/kwe6hjkt7LSW4D0+REqqe58AumcnCfRNw4Kt3mbS9pEBkch+nupu2PBxv2tQi69EQHQ1ZA1vgB/Og==",
+ "version": "0.8.9",
+ "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.8.9.tgz",
+ "integrity": "sha512-22/8qn+LYonzibb1VeFZmISdVao5kC22jmEKm24vfFE8siEn47EpVcCLYMv6iKOYMJfjSvSJfueOwcFCkUnV3A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@antfu/utils": "^0.7.7",
- "@rollup/pluginutils": "^5.1.0",
- "debug": "^4.3.4",
- "error-stack-parser-es": "^0.1.1",
+ "@antfu/utils": "^0.7.10",
+ "@rollup/pluginutils": "^5.1.3",
+ "debug": "^4.3.7",
+ "error-stack-parser-es": "^0.1.5",
"fs-extra": "^11.2.0",
- "open": "^10.0.3",
+ "open": "^10.1.0",
"perfect-debounce": "^1.0.0",
- "picocolors": "^1.0.0",
- "sirv": "^2.0.4"
+ "picocolors": "^1.1.1",
+ "sirv": "^3.0.0"
},
"engines": {
"node": ">=14"
@@ -13860,7 +17147,7 @@
"url": "https://github.com/sponsors/antfu"
},
"peerDependencies": {
- "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0"
+ "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.1"
},
"peerDependenciesMeta": {
"@nuxt/kit": {
@@ -13873,6 +17160,7 @@
"resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
"integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -13881,10 +17169,11 @@
}
},
"node_modules/vite-plugin-inspect/node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
+ "version": "11.3.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
+ "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
@@ -13899,6 +17188,7 @@
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
"integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-inside-container": "^1.0.0"
},
@@ -13910,10 +17200,11 @@
}
},
"node_modules/vite-plugin-inspect/node_modules/open": {
- "version": "10.0.3",
- "resolved": "https://registry.npmjs.org/open/-/open-10.0.3.tgz",
- "integrity": "sha512-dtbI5oW7987hwC9qjJTyABldTaa19SuyJse1QboWv3b0qCcrrLNVDqBx1XgELAjh9QTVQaP/C5b1nhQebd1H2A==",
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz",
+ "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"default-browser": "^5.2.1",
"define-lazy-prop": "^3.0.0",
@@ -13932,37 +17223,39 @@
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
"integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 10.0.0"
}
},
"node_modules/vite-plugin-vue-devtools": {
- "version": "7.0.15",
- "resolved": "https://registry.npmjs.org/vite-plugin-vue-devtools/-/vite-plugin-vue-devtools-7.0.15.tgz",
- "integrity": "sha512-EBnf0LXXm5c7aWLlFGG2dNGoKYyHD9SD3wFqpjW1ACxUqd23kqcN4pQVwbKOZHfP7TnuaFHOTj5JBsXb/OeKrQ==",
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/vite-plugin-vue-devtools/-/vite-plugin-vue-devtools-7.7.2.tgz",
+ "integrity": "sha512-5V0UijQWiSBj32blkyPEqIbzc6HO9c1bwnBhx+ay2dzU0FakH+qMdNUT8nF9BvDE+i6I1U8CqCuJiO20vKEdQw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@vue/devtools-core": "^7.0.15",
- "@vue/devtools-kit": "^7.0.15",
- "@vue/devtools-shared": "^7.0.15",
- "birpc": "^0.2.15",
- "execa": "^8.0.1",
- "sirv": "^2.0.4",
- "vite-plugin-inspect": "^0.8.3",
- "vite-plugin-vue-inspector": "^4.0.2"
+ "@vue/devtools-core": "^7.7.2",
+ "@vue/devtools-kit": "^7.7.2",
+ "@vue/devtools-shared": "^7.7.2",
+ "execa": "^9.5.1",
+ "sirv": "^3.0.0",
+ "vite-plugin-inspect": "0.8.9",
+ "vite-plugin-vue-inspector": "^5.3.1"
},
"engines": {
"node": ">=v14.21.3"
},
"peerDependencies": {
- "vite": "^3.1.0 || ^4.0.0-0 || ^5.0.0-0"
+ "vite": "^3.1.0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0"
}
},
"node_modules/vite-plugin-vue-inspector": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/vite-plugin-vue-inspector/-/vite-plugin-vue-inspector-4.0.2.tgz",
- "integrity": "sha512-KPvLEuafPG13T7JJuQbSm5PwSxKFnVS965+MP1we2xGw9BPkkc/+LPix5MMWenpKWqtjr0ws8THrR+KuoDC8hg==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/vite-plugin-vue-inspector/-/vite-plugin-vue-inspector-5.3.1.tgz",
+ "integrity": "sha512-cBk172kZKTdvGpJuzCCLg8lJ909wopwsu3Ve9FsL1XsnLBiRT9U3MePcqrgGHgCX2ZgkqZmAGR8taxw+TV6s7A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/core": "^7.23.0",
"@babel/plugin-proposal-decorators": "^7.23.0",
@@ -13975,7 +17268,7 @@
"magic-string": "^0.30.4"
},
"peerDependencies": {
- "vite": "^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0"
+ "vite": "^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0"
}
},
"node_modules/vite/node_modules/fsevents": {
@@ -13984,6 +17277,7 @@
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -13993,16 +17287,17 @@
}
},
"node_modules/vue": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.15.tgz",
- "integrity": "sha512-jC0GH4KkWLWJOEQjOpkqU1bQsBwf4R1rsFtw5GQJbjHVKWDzO6P0nWWBTmjp1xSemAioDFj1jdaK1qa3DnMQoQ==",
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.38.tgz",
+ "integrity": "sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@vue/compiler-dom": "3.4.15",
- "@vue/compiler-sfc": "3.4.15",
- "@vue/runtime-dom": "3.4.15",
- "@vue/server-renderer": "3.4.15",
- "@vue/shared": "3.4.15"
+ "@vue/compiler-dom": "3.4.38",
+ "@vue/compiler-sfc": "3.4.38",
+ "@vue/runtime-dom": "3.4.38",
+ "@vue/server-renderer": "3.4.38",
+ "@vue/shared": "3.4.38"
},
"peerDependencies": {
"typescript": "*"
@@ -14018,6 +17313,7 @@
"resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-5.2.0.tgz",
"integrity": "sha512-d3zpKmGZr2OWHQ1xmxBcAn5ShTG917+/UCLaSpaCDDqT0U7DBsvFzTs69ZnHCgKoXT55GZDW8YEj9Av+dlONLA==",
"dev": true,
+ "license": "MIT",
"peerDependencies": {
"chart.js": "^4.1.1",
"vue": "^3.0.0-0 || ^2.7.0"
@@ -14028,6 +17324,7 @@
"resolved": "https://registry.npmjs.org/vue-confirm-dialog/-/vue-confirm-dialog-1.0.2.tgz",
"integrity": "sha512-gTo1bMDWOLd/6ihmWv8VlPxhc9QaKoE5YqlsKydUOfrrQ3Q3taljF6yI+1TMtAtJLrvZ8DYrePhgBhY1VCJzbQ==",
"dev": true,
+ "license": "MIT",
"peerDependencies": {
"vue": "^2.6.10"
}
@@ -14037,6 +17334,7 @@
"resolved": "https://registry.npmjs.org/vue-contenteditable/-/vue-contenteditable-3.0.4.tgz",
"integrity": "sha512-CmtqT4zHQwLoJEyNVaXUjjUFPUVYlXXBHfSbRCHCUjODMqrn6L293LM1nc1ELx8epitZZvecTfIqOLlSzB3d+w==",
"dev": true,
+ "license": "MIT",
"peerDependencies": {
"vue": "^3.0.0"
}
@@ -14047,6 +17345,7 @@
"integrity": "sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"bin": {
"vue-demi-fix": "bin/vue-demi-fix.js",
"vue-demi-switch": "bin/vue-demi-switch.js"
@@ -14072,6 +17371,7 @@
"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz",
"integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"debug": "^4.3.2",
"eslint-scope": "^7.0.0",
@@ -14092,18 +17392,21 @@
}
},
"node_modules/vue-i18n": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.2.2.tgz",
- "integrity": "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==",
+ "version": "9.14.4",
+ "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.14.4.tgz",
+ "integrity": "sha512-B934C8yUyWLT0EMud3DySrwSUJI7ZNiWYsEEz2gknTthqKiG4dzWE/WSa8AzCuSQzwBEv4HtG1jZDhgzPfWSKQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@intlify/core-base": "9.2.2",
- "@intlify/shared": "9.2.2",
- "@intlify/vue-devtools": "9.2.2",
- "@vue/devtools-api": "^6.2.1"
+ "@intlify/core-base": "9.14.4",
+ "@intlify/shared": "9.14.4",
+ "@vue/devtools-api": "^6.5.0"
},
"engines": {
- "node": ">= 14"
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
},
"peerDependencies": {
"vue": "^3.0.0"
@@ -14114,18 +17417,20 @@
"resolved": "https://registry.npmjs.org/vue-image-crop-upload/-/vue-image-crop-upload-3.0.3.tgz",
"integrity": "sha512-VeBsU0oI1hXeCvdpnu19DM/r3KTlI8SUXTxsHsU4MhDXR0ahRziiL9tf4FbILGx+gRVNZhGbl32yuM6TiaGNhA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"babel-runtime": "^6.11.6"
}
},
"node_modules/vue-multiselect": {
- "version": "3.0.0-beta.3",
- "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-3.0.0-beta.3.tgz",
- "integrity": "sha512-P7Fx+ovVF7WMERSZ0lw6N3p4H4bnQ3NcaY3ORjzFPv0r/6lpIqvFWmK9Xnwze9mgAvmNV1foI1VWrBmjnfBTLQ==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-3.0.0.tgz",
+ "integrity": "sha512-uupKdINgz7j83lQToCL7KkgQQxvG43el++hsR39YT9pCe1DwzUGmKzPxjVP6rqskXed5P6DtUASYAlCliW740Q==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">= 4.0.0",
- "npm": ">= 3.0.0"
+ "node": ">= 14.18.1",
+ "npm": ">= 6.14.15"
}
},
"node_modules/vue-prism-editor": {
@@ -14133,6 +17438,7 @@
"resolved": "https://registry.npmjs.org/vue-prism-editor/-/vue-prism-editor-2.0.0-alpha.2.tgz",
"integrity": "sha512-Gu42ba9nosrE+gJpnAEuEkDMqG9zSUysIR8SdXUw8MQKDjBnnNR9lHC18uOr/ICz7yrA/5c7jHJr9lpElODC7w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -14145,6 +17451,7 @@
"resolved": "https://registry.npmjs.org/vue-qrcode/-/vue-qrcode-1.0.1.tgz",
"integrity": "sha512-LHEsHA8mVR+mL8REKeLrvP0h0lelwzkJjFe3ToygKjQS9Mo85m9I7/axdCnRl9ZiZIFjTWkAW1dCK+f8rq0wIg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"tslib": "^2.2.0",
"vue-demi": "^0.12.5"
@@ -14165,6 +17472,7 @@
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz",
"integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@vue/devtools-api": "^6.5.0"
},
@@ -14180,6 +17488,7 @@
"resolved": "https://registry.npmjs.org/vue-toastification/-/vue-toastification-2.0.0-rc.5.tgz",
"integrity": "sha512-q73e5jy6gucEO/U+P48hqX+/qyXDozAGmaGgLFm5tXX4wJBcVsnGp4e/iJqlm9xzHETYOilUuwOUje2Qg1JdwA==",
"dev": true,
+ "license": "MIT",
"peerDependencies": {
"vue": "^3.0.2"
}
@@ -14189,6 +17498,7 @@
"resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-4.1.0.tgz",
"integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"sortablejs": "1.14.0"
},
@@ -14201,6 +17511,7 @@
"resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.2.0.tgz",
"integrity": "sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"axios": "^1.6.1",
"joi": "^17.11.0",
@@ -14216,21 +17527,23 @@
}
},
"node_modules/wait-on/node_modules/axios": {
- "version": "1.6.7",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz",
- "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==",
+ "version": "1.8.4",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz",
+ "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "follow-redirects": "^1.15.4",
+ "follow-redirects": "^1.15.6",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
},
"node_modules/wait-on/node_modules/joi": {
- "version": "17.12.1",
- "resolved": "https://registry.npmjs.org/joi/-/joi-17.12.1.tgz",
- "integrity": "sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ==",
+ "version": "17.13.3",
+ "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz",
+ "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"@hapi/hoek": "^9.3.0",
"@hapi/topo": "^5.1.0",
@@ -14239,19 +17552,52 @@
"@sideway/pinpoint": "^2.0.0"
}
},
+ "node_modules/wait-on/node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/webidl-conversions": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
"integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=12"
}
},
+ "node_modules/whatwg-encoding": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
+ "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
+ "license": "MIT",
+ "dependencies": {
+ "iconv-lite": "0.6.3"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/whatwg-mimetype": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
+ "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/whatwg-url": {
"version": "12.0.1",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz",
"integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"tr46": "^4.1.1",
"webidl-conversions": "^7.0.0"
@@ -14264,6 +17610,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
},
@@ -14275,15 +17622,67 @@
}
},
"node_modules/which-boxed-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
- "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz",
+ "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "is-bigint": "^1.0.1",
- "is-boolean-object": "^1.1.0",
- "is-number-object": "^1.0.4",
- "is-string": "^1.0.5",
- "is-symbol": "^1.0.3"
+ "is-bigint": "^1.1.0",
+ "is-boolean-object": "^1.2.1",
+ "is-number-object": "^1.1.1",
+ "is-string": "^1.1.1",
+ "is-symbol": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-builtin-type": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz",
+ "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "function.prototype.name": "^1.1.6",
+ "has-tostringtag": "^1.0.2",
+ "is-async-function": "^2.0.0",
+ "is-date-object": "^1.1.0",
+ "is-finalizationregistry": "^1.1.0",
+ "is-generator-function": "^1.0.10",
+ "is-regex": "^1.2.1",
+ "is-weakref": "^1.0.2",
+ "isarray": "^2.0.5",
+ "which-boxed-primitive": "^1.1.0",
+ "which-collection": "^1.0.2",
+ "which-typed-array": "^1.1.16"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-collection": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
+ "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-map": "^2.0.3",
+ "is-set": "^2.0.3",
+ "is-weakmap": "^2.0.2",
+ "is-weakset": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -14293,18 +17692,23 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
"integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/which-typed-array": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz",
- "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==",
+ "version": "1.1.19",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz",
+ "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.4",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-tostringtag": "^1.0.0"
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.4",
+ "for-each": "^0.3.5",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-tostringtag": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -14317,14 +17721,26 @@
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
"integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
+ "license": "ISC",
"dependencies": {
"string-width": "^1.0.2 || 2 || 3 || 4"
}
},
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -14342,6 +17758,7 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -14357,13 +17774,15 @@
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "license": "ISC"
},
"node_modules/write-file-atomic": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
"integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"imurmurhash": "^0.1.4",
"signal-exit": "^4.0.1"
@@ -14377,6 +17796,7 @@
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=14"
},
@@ -14385,9 +17805,10 @@
}
},
"node_modules/ws": {
- "version": "8.16.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz",
- "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==",
+ "version": "8.18.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz",
+ "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==",
+ "license": "MIT",
"engines": {
"node": ">=10.0.0"
},
@@ -14404,18 +17825,31 @@
}
}
},
+ "node_modules/xml-js": {
+ "version": "1.6.11",
+ "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz",
+ "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==",
+ "license": "MIT",
+ "dependencies": {
+ "sax": "^1.2.4"
+ },
+ "bin": {
+ "xml-js": "bin/cli.js"
+ }
+ },
"node_modules/xmlbuilder": {
"version": "8.2.2",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz",
"integrity": "sha512-eKRAFz04jghooy8muekqzo8uCSVNeyRedbuJrp0fovbLIi7wlsYtdUn3vBAAPq2Y3/0xMz2WMEUQ8yhVVO9Stw==",
+ "license": "MIT",
"engines": {
"node": ">=4.0"
}
},
"node_modules/xmlhttprequest-ssl": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz",
- "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz",
+ "integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==",
"engines": {
"node": ">=0.4.0"
}
@@ -14424,6 +17858,7 @@
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/xmlrpc/-/xmlrpc-1.3.2.tgz",
"integrity": "sha512-jQf5gbrP6wvzN71fgkcPPkF4bF/Wyovd7Xdff8d6/ihxYmgETQYSuTc+Hl+tsh/jmgPLro/Aro48LMFlIyEKKQ==",
+ "license": "MIT",
"dependencies": {
"sax": "1.2.x",
"xmlbuilder": "8.2.x"
@@ -14433,10 +17868,17 @@
"npm": ">=1.0.0"
}
},
+ "node_modules/xmlrpc/node_modules/sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "license": "ISC"
+ },
"node_modules/xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "license": "MIT",
"engines": {
"node": ">=0.4"
}
@@ -14445,6 +17887,7 @@
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "license": "ISC",
"engines": {
"node": ">=10"
}
@@ -14452,12 +17895,27 @@
"node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC"
+ },
+ "node_modules/yaml": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz",
+ "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "yaml": "bin.mjs"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
},
"node_modules/yargs": {
"version": "17.7.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
"integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "license": "MIT",
"dependencies": {
"cliui": "^8.0.1",
"escalade": "^3.1.1",
@@ -14476,6 +17934,7 @@
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
"integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=10"
}
@@ -14484,6 +17943,7 @@
"version": "21.1.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "license": "ISC",
"engines": {
"node": ">=12"
}
@@ -14493,12 +17953,83 @@
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
+ },
+ "node_modules/yoctocolors": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz",
+ "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/zip-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz",
+ "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "archiver-utils": "^5.0.0",
+ "compress-commons": "^6.0.2",
+ "readable-stream": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/zip-stream/node_modules/buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
+ },
+ "node_modules/zip-stream/node_modules/readable-stream": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
+ "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "abort-controller": "^3.0.0",
+ "buffer": "^6.0.3",
+ "events": "^3.3.0",
+ "process": "^0.11.10",
+ "string_decoder": "^1.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
}
}
}
diff --git a/package.json b/package.json
index 894079cfe..4a5aefd0d 100644
--- a/package.json
+++ b/package.json
@@ -1,13 +1,13 @@
{
"name": "uptime-kuma",
- "version": "2.0.0-dev",
+ "version": "2.0.0-beta.2",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/louislam/uptime-kuma.git"
},
"engines": {
- "node": "14 || 16 || 18 || >= 20.4.0"
+ "node": "18 || >= 20.4.0"
},
"scripts": {
"lint:js": "eslint --ext \".js,.vue\" --ignore-path .gitignore .",
@@ -27,29 +27,21 @@
"build": "vite build --config ./config/vite.config.js",
"test": "npm run test-backend && npm run test-e2e",
"test-with-build": "npm run build && npm test",
- "test-backend": "node test/backend-test-entry.js",
- "test-backend:14": "cross-env TEST_BACKEND=1 NODE_OPTIONS=\"--experimental-abortcontroller --no-warnings\" node--test test/backend-test",
- "test-backend:18": "cross-env TEST_BACKEND=1 node --test test/backend-test",
+ "test-backend": "cross-env TEST_BACKEND=1 node --test test/backend-test",
"test-e2e": "playwright test --config ./config/playwright.config.js",
"test-e2e-ui": "playwright test --config ./config/playwright.config.js --ui --ui-port=51063",
"playwright-codegen": "playwright codegen localhost:3000 --save-storage=./private/e2e-auth.json",
"playwright-show-report": "playwright show-report ./private/playwright-report",
"tsc": "tsc",
"vite-preview-dist": "vite preview --host --config ./config/vite.config.js",
- "build-docker": "npm run build && npm run build-docker-full && npm run build-docker-slim",
"build-docker-base": "docker buildx build -f docker/debian-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base2 --target base2 . --push",
"build-docker-base-slim": "docker buildx build -f docker/debian-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base2-slim --target base2-slim . --push",
"build-docker-builder-go": "docker buildx build -f docker/builder-go.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:builder-go . --push",
- "build-docker-slim": "node ./extra/env2arg.js docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:2-slim -t louislam/uptime-kuma:$VERSION-slim --target release --build-arg BASE_IMAGE=louislam/uptime-kuma:base2-slim . --push",
- "build-docker-full": "node ./extra/env2arg.js docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:2 -t louislam/uptime-kuma:$VERSION --target release . --push",
- "build-docker-nightly": "node ./extra/test-docker.js && npm run build && docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly2 --target nightly . --push",
- "build-docker-slim-rootless": "node ./extra/env2arg.js docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:2-slim-rootless -t louislam/uptime-kuma:$VERSION-slim-rootless --target rootless --build-arg BASE_IMAGE=louislam/uptime-kuma:base2-slim . --push",
- "build-docker-full-rootless": "node ./extra/env2arg.js docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:2-rootless -t louislam/uptime-kuma:$VERSION-rootless --target rootless . --push",
- "build-docker-nightly-rootless": "node ./extra/test-docker.js && npm run build && docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly2-rootless --target nightly-rootless . --push",
"build-docker-nightly-local": "npm run build && docker build -f docker/dockerfile -t louislam/uptime-kuma:nightly2 --target nightly .",
"build-docker-pr-test": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64 -t louislam/uptime-kuma:pr-test2 --target pr-test2 . --push",
- "upload-artifacts": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg VERSION --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain",
- "setup": "git checkout 1.23.11 && npm ci --production && npm run download-dist",
+ "upload-artifacts": "node extra/release/upload-artifacts.mjs",
+ "upload-artifacts-beta": "node extra/release/upload-artifacts-beta.mjs",
+ "setup": "git checkout 1.23.16 && npm ci --omit dev && npm run download-dist",
"download-dist": "node extra/download-dist.js",
"mark-as-nightly": "node extra/mark-as-nightly.js",
"reset-password": "node extra/reset-password.js",
@@ -60,8 +52,9 @@
"simple-postgres": "docker run --rm -p 5432:5432 -e POSTGRES_PASSWORD=postgres postgres",
"simple-mariadb": "docker run --rm -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mariadb# mariadb",
"update-language-files": "cd extra/update-language-files && node index.js && cross-env-shell eslint ../../src/languages/$npm_config_language.js --fix",
- "release-final": "node ./extra/test-docker.js && node extra/update-version.js && npm run build-docker && node ./extra/press-any-key.js && npm run upload-artifacts && node ./extra/update-wiki-version.js",
- "release-beta": "node ./extra/test-docker.js && node extra/beta/update-version.js && npm run build && node ./extra/env2arg.js docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:$VERSION -t louislam/uptime-kuma:beta . --target release --push && node ./extra/press-any-key.js && npm run upload-artifacts",
+ "release-final": "node ./extra/release/final.mjs",
+ "release-beta": "node ./extra/release/beta.mjs",
+ "release-nightly": "node ./extra/release/nightly.mjs",
"git-remove-tag": "git tag -d",
"build-dist-and-restart": "npm run build && npm run start-server-dev",
"start-pr-test": "node extra/checkout-pr.js && npm install && npm run dev",
@@ -71,16 +64,15 @@
"quick-run-nightly": "docker run --rm --env NODE_ENV=development -p 3001:3001 louislam/uptime-kuma:nightly2",
"start-dev-container": "cd docker && docker-compose -f docker-compose-dev.yml up --force-recreate",
"rebase-pr-to-1.23.X": "node extra/rebase-pr.js 1.23.X",
- "start-server-node14-win": "private\\node14\\node.exe server/server.js"
+ "reset-migrate-aggregate-table-state": "node extra/reset-migrate-aggregate-table-state.js"
},
"dependencies": {
- "@grpc/grpc-js": "~1.7.3",
+ "@grpc/grpc-js": "~1.8.22",
"@louislam/ping": "~0.4.4-mod.1",
"@louislam/sqlite3": "15.1.6",
"@vvo/tzdb": "^6.125.0",
"args-parser": "~1.3.0",
- "axios": "~0.28.0",
- "axios-ntlm": "1.3.0",
+ "axios": "~0.30.0",
"badge-maker": "~3.3.1",
"bcryptjs": "~2.4.3",
"chardet": "~1.4.0",
@@ -90,19 +82,22 @@
"command-exists": "~1.2.9",
"compare-versions": "~3.6.0",
"compression": "~1.7.4",
- "croner": "~6.0.5",
+ "country-flag-emoji-polyfill": "^0.1.8",
+ "croner": "~8.1.0",
"dayjs": "~1.11.5",
+ "dev-null": "^0.1.1",
"dotenv": "~16.0.3",
- "express": "~4.17.3",
+ "express": "~4.21.0",
"express-basic-auth": "~1.2.1",
"express-static-gzip": "~2.1.7",
+ "feed": "^4.2.2",
"form-data": "~4.0.0",
"gamedig": "^4.2.0",
"html-escaper": "^3.0.3",
"http-cookie-agent": "~5.0.4",
"http-graceful-shutdown": "~3.1.7",
- "http-proxy-agent": "~5.0.0",
- "https-proxy-agent": "~5.0.1",
+ "http-proxy-agent": "~7.0.2",
+ "https-proxy-agent": "~7.0.6",
"iconv-lite": "~0.6.3",
"isomorphic-ws": "^5.0.0",
"jsesc": "~3.0.2",
@@ -110,19 +105,21 @@
"jsonwebtoken": "~9.0.0",
"jwt-decode": "~3.1.2",
"kafkajs": "^2.2.4",
- "knex": "^2.4.2",
+ "knex": "~3.1.0",
"limiter": "~2.1.0",
"liquidjs": "^10.7.0",
+ "marked": "^14.0.0",
"mitt": "~3.0.1",
"mongodb": "~4.17.1",
"mqtt": "~4.3.7",
- "mssql": "~8.1.4",
- "mysql2": "~3.6.2",
+ "mssql": "~11.0.0",
+ "mysql2": "~3.11.3",
"nanoid": "~3.3.4",
+ "net-snmp": "^3.11.2",
"node-cloudflared-tunnel": "~1.0.9",
"node-radius-client": "~1.0.0",
- "nodemailer": "~6.6.5",
- "nostr-tools": "^1.13.1",
+ "nodemailer": "~6.9.13",
+ "nostr-tools": "^2.10.4",
"notp": "~2.0.3",
"openid-client": "^5.4.2",
"password-hash": "~1.2.2",
@@ -137,23 +134,25 @@
"redbean-node": "~0.3.0",
"redis": "~4.5.1",
"semver": "~7.5.4",
- "socket.io": "~4.6.1",
- "socket.io-client": "~4.6.1",
- "socks-proxy-agent": "6.1.1",
- "tar": "~6.1.11",
+ "socket.io": "~4.8.0",
+ "socket.io-client": "~4.8.0",
+ "socks-proxy-agent": "~8.0.5",
+ "tar": "~6.2.1",
"tcp-ping": "~0.1.1",
"thirty-two": "~1.0.2",
"tough-cookie": "~4.1.3",
"ws": "^8.13.0"
},
"devDependencies": {
- "@actions/github": "~5.0.1",
+ "@actions/github": "~6.0.0",
"@fortawesome/fontawesome-svg-core": "~1.2.36",
"@fortawesome/free-regular-svg-icons": "~5.15.4",
"@fortawesome/free-solid-svg-icons": "~5.15.4",
"@fortawesome/vue-fontawesome": "~3.0.0-5",
"@playwright/test": "~1.39.0",
"@popperjs/core": "~2.10.2",
+ "@testcontainers/hivemq": "^10.13.1",
+ "@testcontainers/rabbitmq": "^10.13.2",
"@types/bootstrap": "~5.1.9",
"@types/node": "^20.8.6",
"@typescript-eslint/eslint-plugin": "^6.7.5",
@@ -171,18 +170,17 @@
"cross-env": "~7.0.3",
"delay": "^5.0.0",
"dns2": "~2.0.1",
- "dompurify": "~2.4.3",
+ "dompurify": "~3.2.4",
"eslint": "~8.14.0",
"eslint-plugin-jsdoc": "~46.4.6",
"eslint-plugin-vue": "~8.7.1",
"favico.js": "~0.3.10",
"get-port-please": "^3.1.1",
- "marked": "~4.2.5",
"node-ssh": "~13.1.0",
"postcss-html": "~1.5.0",
"postcss-rtlcss": "~3.7.2",
"postcss-scss": "~4.0.4",
- "prismjs": "~1.29.0",
+ "prismjs": "~1.30.0",
"qrcode": "~1.5.0",
"rollup-plugin-visualizer": "^5.6.0",
"sass": "~1.42.1",
@@ -190,16 +188,17 @@
"stylelint-config-standard": "~25.0.0",
"terser": "~5.15.0",
"test": "~3.3.0",
+ "testcontainers": "^10.13.1",
"typescript": "~4.4.4",
"v-pagination-3": "~0.1.7",
- "vite": "~5.0.10",
+ "vite": "~5.4.15",
"vite-plugin-compression": "^0.5.1",
"vite-plugin-vue-devtools": "^7.0.15",
"vue": "~3.4.2",
"vue-chartjs": "~5.2.0",
"vue-confirm-dialog": "~1.0.2",
"vue-contenteditable": "~3.0.4",
- "vue-i18n": "~9.2.2",
+ "vue-i18n": "~9.14.3",
"vue-image-crop-upload": "~3.0.3",
"vue-multiselect": "~3.0.0-alpha.2",
"vue-prism-editor": "~2.0.0-alpha.2",
diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png
index f3c5854b0..2a5638218 100644
Binary files a/public/apple-touch-icon.png and b/public/apple-touch-icon.png differ
diff --git a/public/icon-192x192.png b/public/icon-192x192.png
index 89d60d72b..03c8a4d1e 100644
Binary files a/public/icon-192x192.png and b/public/icon-192x192.png differ
diff --git a/public/icon-512x512.png b/public/icon-512x512.png
index cd3ab7718..11278c6fe 100644
Binary files a/public/icon-512x512.png and b/public/icon-512x512.png differ
diff --git a/server/client.js b/server/client.js
index 260e77a73..72f0a4e8e 100644
--- a/server/client.js
+++ b/server/client.js
@@ -8,6 +8,7 @@ const server = UptimeKumaServer.getInstance();
const io = server.io;
const { setting } = require("./util-server");
const checkVersion = require("./check-version");
+const Database = require("./database");
/**
* Send list of notification providers to client
@@ -144,17 +145,20 @@ async function sendInfo(socket, hideVersion = false) {
let version;
let latestVersion;
let isContainer;
+ let dbType;
if (!hideVersion) {
version = checkVersion.version;
latestVersion = checkVersion.latestVersion;
isContainer = (process.env.UPTIME_KUMA_IS_CONTAINER === "1");
+ dbType = Database.dbConfig.type;
}
socket.emit("info", {
version,
latestVersion,
isContainer,
+ dbType,
primaryBaseURL: await setting("primaryBaseURL"),
serverTimezone: await server.getTimezone(),
serverTimezoneOffset: server.getTimezoneOffset(),
@@ -209,6 +213,32 @@ async function sendRemoteBrowserList(socket) {
return list;
}
+/**
+ * Send list of monitor types to client
+ * @param {Socket} socket Socket.io socket instance
+ * @returns {Promise}
+ */
+async function sendMonitorTypeList(socket) {
+ const result = Object.entries(UptimeKumaServer.monitorTypeList).map(([ key, type ]) => {
+ return [ key, {
+ supportsConditions: type.supportsConditions,
+ conditionVariables: type.conditionVariables.map(v => {
+ return {
+ id: v.id,
+ operators: v.operators.map(o => {
+ return {
+ id: o.id,
+ caption: o.caption,
+ };
+ }),
+ };
+ }),
+ }];
+ });
+
+ io.to(socket.userID).emit("monitorTypeList", Object.fromEntries(result));
+}
+
module.exports = {
sendNotificationList,
sendImportantHeartbeatList,
@@ -218,4 +248,5 @@ module.exports = {
sendInfo,
sendDockerHostList,
sendRemoteBrowserList,
+ sendMonitorTypeList,
};
diff --git a/server/database.js b/server/database.js
index cfe14fe71..582f19c29 100644
--- a/server/database.js
+++ b/server/database.js
@@ -6,6 +6,11 @@ const knex = require("knex");
const path = require("path");
const { EmbeddedMariaDB } = require("./embedded-mariadb");
const mysql = require("mysql2/promise");
+const { Settings } = require("./settings");
+const { UptimeCalculator } = require("./uptime-calculator");
+const dayjs = require("dayjs");
+const { SimpleMigrationServer } = require("./utils/simple-migration-server");
+const KumaColumnCompiler = require("./utils/knex/lib/dialects/mysql2/schema/mysql2-columncompiler");
/**
* Database & App Data Folder
@@ -105,7 +110,8 @@ class Database {
"patch-add-gamedig-given-port.sql": true,
"patch-notification-config.sql": true,
"patch-fix-kafka-producer-booleans.sql": true,
- "patch-timeout.sql": true, // The last file so far converted to a knex migration file
+ "patch-timeout.sql": true,
+ "patch-monitor-tls-info-add-fk.sql": true, // The last file so far converted to a knex migration file
};
/**
@@ -193,6 +199,14 @@ class Database {
* @returns {Promise}
*/
static async connect(testMode = false, autoloadModels = true, noLog = false) {
+ // Patch "mysql2" knex client
+ // Workaround: Tried extending the ColumnCompiler class, but it didn't work for unknown reasons, so I override the function via prototype
+ const { getDialectByNameOrAlias } = require("knex/lib/dialects");
+ const mysql2 = getDialectByNameOrAlias("mysql2");
+ mysql2.prototype.columnCompiler = function () {
+ return new KumaColumnCompiler(this, ...arguments);
+ };
+
const acquireConnectionTimeout = 120 * 1000;
let dbConfig;
try {
@@ -208,9 +222,9 @@ class Database {
let config = {};
let mariadbPoolConfig = {
- afterCreate: function (conn, done) {
-
- }
+ min: 0,
+ max: 10,
+ idleTimeoutMillis: 30000,
};
log.info("db", `Database Type: ${dbConfig.type}`);
@@ -282,7 +296,7 @@ class Database {
client: "mysql2",
connection: {
socketPath: embeddedMariaDB.socketPath,
- user: "node",
+ user: embeddedMariaDB.username,
database: "kuma",
timezone: "Z",
typeCast: function (field, next) {
@@ -378,9 +392,11 @@ class Database {
/**
* Patch the database
+ * @param {number} port Start the migration server for aggregate tables on this port if provided
+ * @param {string} hostname Start the migration server for aggregate tables on this hostname if provided
* @returns {Promise}
*/
- static async patch() {
+ static async patch(port = undefined, hostname = undefined) {
// Still need to keep this for old versions of Uptime Kuma
if (Database.dbConfig.type === "sqlite") {
await this.patchSqlite();
@@ -390,9 +406,23 @@ class Database {
// https://knexjs.org/guide/migrations.html
// https://gist.github.com/NigelEarle/70db130cc040cc2868555b29a0278261
try {
+ // Disable foreign key check for SQLite
+ // Known issue of knex: https://github.com/drizzle-team/drizzle-orm/issues/1813
+ if (Database.dbConfig.type === "sqlite") {
+ await R.exec("PRAGMA foreign_keys = OFF");
+ }
+
await R.knex.migrate.latest({
directory: Database.knexMigrationsPath,
});
+
+ // Enable foreign key check for SQLite
+ if (Database.dbConfig.type === "sqlite") {
+ await R.exec("PRAGMA foreign_keys = ON");
+ }
+
+ await this.migrateAggregateTable(port, hostname);
+
} catch (e) {
// Allow missing patch files for downgrade or testing pr.
if (e.message.includes("the following files are missing:")) {
@@ -706,7 +736,176 @@ class Database {
if (Database.dbConfig.type === "sqlite") {
return "DATETIME('now', ? || ' hours')";
} else {
- return "DATE_ADD(NOW(), INTERVAL ? HOUR)";
+ return "DATE_ADD(UTC_TIMESTAMP(), INTERVAL ? HOUR)";
+ }
+ }
+
+ /**
+ * Migrate the old data in the heartbeat table to the new format (stat_daily, stat_hourly, stat_minutely)
+ * It should be run once while upgrading V1 to V2
+ *
+ * Normally, it should be in transaction, but UptimeCalculator wasn't designed to be in transaction before that.
+ * I don't want to heavily modify the UptimeCalculator, so it is not in transaction.
+ * Run `npm run reset-migrate-aggregate-table-state` to reset, in case the migration is interrupted.
+ * @param {number} port Start the migration server on this port if provided
+ * @param {string} hostname Start the migration server on this hostname if provided
+ * @returns {Promise}
+ */
+ static async migrateAggregateTable(port, hostname = undefined) {
+ log.debug("db", "Enter Migrate Aggregate Table function");
+
+ // Add a setting for 2.0.0-dev users to skip this migration
+ if (process.env.SET_MIGRATE_AGGREGATE_TABLE_TO_TRUE === "1") {
+ log.warn("db", "SET_MIGRATE_AGGREGATE_TABLE_TO_TRUE is set to 1, skipping aggregate table migration forever (for 2.0.0-dev users)");
+ await Settings.set("migrateAggregateTableState", "migrated");
+ }
+
+ let migrateState = await Settings.get("migrateAggregateTableState");
+
+ // Skip if already migrated
+ // If it is migrating, it possibly means the migration was interrupted, or the migration is in progress
+ if (migrateState === "migrated") {
+ log.debug("db", "Migrated aggregate table already, skip");
+ return;
+ } else if (migrateState === "migrating") {
+ log.warn("db", "Aggregate table migration is already in progress, or it was interrupted");
+ throw new Error("Aggregate table migration is already in progress");
+ }
+
+ /**
+ * Start migration server for displaying the migration status
+ * @type {SimpleMigrationServer}
+ */
+ let migrationServer;
+ let msg;
+
+ if (port) {
+ migrationServer = new SimpleMigrationServer();
+ await migrationServer.start(port, hostname);
+ }
+
+ log.info("db", "Migrating Aggregate Table");
+
+ log.info("db", "Getting list of unique monitors");
+
+ // Get a list of unique monitors from the heartbeat table, using raw sql
+ let monitors = await R.getAll(`
+ SELECT DISTINCT monitor_id
+ FROM heartbeat
+ ORDER BY monitor_id ASC
+ `);
+
+ // Stop if stat_* tables are not empty
+ for (let table of [ "stat_minutely", "stat_hourly", "stat_daily" ]) {
+ let countResult = await R.getRow(`SELECT COUNT(*) AS count FROM ${table}`);
+ let count = countResult.count;
+ if (count > 0) {
+ log.warn("db", `Aggregate table ${table} is not empty, migration will not be started (Maybe you were using 2.0.0-dev?)`);
+ await migrationServer?.stop();
+ return;
+ }
+ }
+
+ await Settings.set("migrateAggregateTableState", "migrating");
+
+ let progressPercent = 0;
+ let part = 100 / monitors.length;
+ let i = 1;
+ for (let monitor of monitors) {
+ // Get a list of unique dates from the heartbeat table, using raw sql
+ let dates = await R.getAll(`
+ SELECT DISTINCT DATE(time) AS date
+ FROM heartbeat
+ WHERE monitor_id = ?
+ ORDER BY date ASC
+ `, [
+ monitor.monitor_id
+ ]);
+
+ for (let date of dates) {
+ // New Uptime Calculator
+ let calculator = new UptimeCalculator();
+ calculator.monitorID = monitor.monitor_id;
+ calculator.setMigrationMode(true);
+
+ // Get all the heartbeats for this monitor and date
+ let heartbeats = await R.getAll(`
+ SELECT status, ping, time
+ FROM heartbeat
+ WHERE monitor_id = ?
+ AND DATE(time) = ?
+ ORDER BY time ASC
+ `, [ monitor.monitor_id, date.date ]);
+
+ if (heartbeats.length > 0) {
+ msg = `[DON'T STOP] Migrating monitor data ${monitor.monitor_id} - ${date.date} [${progressPercent.toFixed(2)}%][${i}/${monitors.length}]`;
+ log.info("db", msg);
+ migrationServer?.update(msg);
+ }
+
+ for (let heartbeat of heartbeats) {
+ await calculator.update(heartbeat.status, parseFloat(heartbeat.ping), dayjs(heartbeat.time));
+ }
+
+ progressPercent += (Math.round(part / dates.length * 100) / 100);
+
+ // Lazy to fix the floating point issue, it is acceptable since it is just a progress bar
+ if (progressPercent > 100) {
+ progressPercent = 100;
+ }
+ }
+
+ i++;
+ }
+
+ msg = "Clearing non-important heartbeats";
+ log.info("db", msg);
+ migrationServer?.update(msg);
+
+ await Database.clearHeartbeatData(true);
+ await Settings.set("migrateAggregateTableState", "migrated");
+ await migrationServer?.stop();
+
+ if (monitors.length > 0) {
+ log.info("db", "Aggregate Table Migration Completed");
+ } else {
+ log.info("db", "No data to migrate");
+ }
+ }
+
+ /**
+ * Remove all non-important heartbeats from heartbeat table, keep last 24-hour or {KEEP_LAST_ROWS} rows for each monitor
+ * @param {boolean} detailedLog Log detailed information
+ * @returns {Promise}
+ */
+ static async clearHeartbeatData(detailedLog = false) {
+ let monitors = await R.getAll("SELECT id FROM monitor");
+ const sqlHourOffset = Database.sqlHourOffset();
+
+ for (let monitor of monitors) {
+ if (detailedLog) {
+ log.info("db", "Deleting non-important heartbeats for monitor " + monitor.id);
+ }
+ await R.exec(`
+ DELETE FROM heartbeat
+ WHERE monitor_id = ?
+ AND important = 0
+ AND time < ${sqlHourOffset}
+ AND id NOT IN (
+ SELECT id FROM ( -- written this way for Maria's support
+ SELECT id
+ FROM heartbeat
+ WHERE monitor_id = ?
+ ORDER BY time DESC
+ LIMIT ?
+ ) AS limited_ids
+ )
+ `, [
+ monitor.id,
+ -24,
+ monitor.id,
+ 100,
+ ]);
}
}
diff --git a/server/embedded-mariadb.js b/server/embedded-mariadb.js
index 8aa7134bf..7c9630dd7 100644
--- a/server/embedded-mariadb.js
+++ b/server/embedded-mariadb.js
@@ -14,9 +14,15 @@ class EmbeddedMariaDB {
mariadbDataDir = "/app/data/mariadb";
- runDir = "/app/data/run/mariadb";
+ runDir = "/app/data/run";
- socketPath = this.runDir + "/mysqld.sock";
+ socketPath = this.runDir + "/mariadb.sock";
+
+ /**
+ * The username to connect to the MariaDB
+ * @type {string}
+ */
+ username = null;
/**
* @type {ChildProcessWithoutNullStreams}
@@ -46,16 +52,42 @@ class EmbeddedMariaDB {
/**
* Start the embedded MariaDB
+ * @throws {Error} If the current user is not "node" or "root"
* @returns {Promise|void} A promise that resolves when the MariaDB is started or void if it is already started
*/
start() {
+ // Check if the current user is "node" or "root"
+ this.username = require("os").userInfo().username;
+ if (this.username !== "node" && this.username !== "root") {
+ throw new Error("Embedded Mariadb supports only 'node' or 'root' user, but the current user is: " + this.username);
+ }
+
+ this.initDB();
+
+ this.startChildProcess();
+
+ return new Promise((resolve) => {
+ let interval = setInterval(() => {
+ if (this.started) {
+ clearInterval(interval);
+ resolve();
+ } else {
+ log.info("mariadb", "Waiting for Embedded MariaDB to start...");
+ }
+ }, 1000);
+ });
+ }
+
+ /**
+ * Start the child process
+ * @returns {void}
+ */
+ startChildProcess() {
if (this.childProcess) {
log.info("mariadb", "Already started");
return;
}
- this.initDB();
-
this.running = true;
log.info("mariadb", "Starting Embedded MariaDB");
this.childProcess = childProcess.spawn(this.exec, [
@@ -63,6 +95,8 @@ class EmbeddedMariaDB {
"--datadir=" + this.mariadbDataDir,
`--socket=${this.socketPath}`,
`--pid-file=${this.runDir}/mysqld.pid`,
+ // Don't add the following option, the mariadb will not report message to the console, which affects initDBAfterStarted()
+ // "--log-error=" + `${this.mariadbDataDir}/mariadb-error.log`,
]);
this.childProcess.on("close", (code) => {
@@ -72,8 +106,8 @@ class EmbeddedMariaDB {
log.info("mariadb", "Stopped Embedded MariaDB: " + code);
if (code !== 0) {
- log.info("mariadb", "Try to restart Embedded MariaDB as it is not stopped by user");
- this.start();
+ log.error("mariadb", "Try to restart Embedded MariaDB as it is not stopped by user");
+ this.startChildProcess();
}
});
@@ -86,7 +120,7 @@ class EmbeddedMariaDB {
});
let handler = (data) => {
- log.debug("mariadb", data.toString("utf-8"));
+ log.info("mariadb", data.toString("utf-8"));
if (data.toString("utf-8").includes("ready for connections")) {
this.initDBAfterStarted();
}
@@ -94,17 +128,6 @@ class EmbeddedMariaDB {
this.childProcess.stdout.on("data", handler);
this.childProcess.stderr.on("data", handler);
-
- return new Promise((resolve) => {
- let interval = setInterval(() => {
- if (this.started) {
- clearInterval(interval);
- resolve();
- } else {
- log.info("mariadb", "Waiting for Embedded MariaDB to start...");
- }
- }, 1000);
- });
}
/**
@@ -129,9 +152,11 @@ class EmbeddedMariaDB {
recursive: true,
});
- let result = childProcess.spawnSync("mysql_install_db", [
+ let result = childProcess.spawnSync("mariadb-install-db", [
"--user=node",
- "--ldata=" + this.mariadbDataDir,
+ "--auth-root-socket-user=node",
+ "--datadir=" + this.mariadbDataDir,
+ "--auth-root-authentication-method=socket",
]);
if (result.status !== 0) {
@@ -143,6 +168,17 @@ class EmbeddedMariaDB {
}
}
+ // Check the owner of the mariadb directory, and change it if necessary
+ let stat = fs.statSync(this.mariadbDataDir);
+ if (stat.uid !== 1000 || stat.gid !== 1000) {
+ fs.chownSync(this.mariadbDataDir, 1000, 1000);
+ }
+
+ // Check the permission of the mariadb directory, and change it if it is not 755
+ if (stat.mode !== 0o755) {
+ fs.chmodSync(this.mariadbDataDir, 0o755);
+ }
+
if (!fs.existsSync(this.runDir)) {
log.info("mariadb", `Embedded MariaDB: ${this.runDir} is not found, create one now.`);
fs.mkdirSync(this.runDir, {
@@ -150,6 +186,13 @@ class EmbeddedMariaDB {
});
}
+ stat = fs.statSync(this.runDir);
+ if (stat.uid !== 1000 || stat.gid !== 1000) {
+ fs.chownSync(this.runDir, 1000, 1000);
+ }
+ if (stat.mode !== 0o755) {
+ fs.chmodSync(this.runDir, 0o755);
+ }
}
/**
@@ -159,7 +202,7 @@ class EmbeddedMariaDB {
async initDBAfterStarted() {
const connection = mysql.createConnection({
socketPath: this.socketPath,
- user: "node",
+ user: this.username,
});
let result = await connection.execute("CREATE DATABASE IF NOT EXISTS `kuma`");
diff --git a/server/jobs/clear-old-data.js b/server/jobs/clear-old-data.js
index 248a4d409..cfd65a8a8 100644
--- a/server/jobs/clear-old-data.js
+++ b/server/jobs/clear-old-data.js
@@ -1,21 +1,22 @@
const { R } = require("redbean-node");
const { log } = require("../../src/util");
-const { setSetting, setting } = require("../util-server");
const Database = require("../database");
+const { Settings } = require("../settings");
+const dayjs = require("dayjs");
-const DEFAULT_KEEP_PERIOD = 180;
+const DEFAULT_KEEP_PERIOD = 365;
/**
- * Clears old data from the heartbeat table of the database.
+ * Clears old data from the heartbeat table and the stat_daily of the database.
* @returns {Promise} A promise that resolves when the data has been cleared.
*/
-
const clearOldData = async () => {
- let period = await setting("keepDataPeriodDays");
+ await Database.clearHeartbeatData();
+ let period = await Settings.get("keepDataPeriodDays");
// Set Default Period
if (period == null) {
- await setSetting("keepDataPeriodDays", DEFAULT_KEEP_PERIOD, "general");
+ await Settings.set("keepDataPeriodDays", DEFAULT_KEEP_PERIOD, "general");
period = DEFAULT_KEEP_PERIOD;
}
@@ -25,23 +26,28 @@ const clearOldData = async () => {
parsedPeriod = parseInt(period);
} catch (_) {
log.warn("clearOldData", "Failed to parse setting, resetting to default..");
- await setSetting("keepDataPeriodDays", DEFAULT_KEEP_PERIOD, "general");
+ await Settings.set("keepDataPeriodDays", DEFAULT_KEEP_PERIOD, "general");
parsedPeriod = DEFAULT_KEEP_PERIOD;
}
if (parsedPeriod < 1) {
log.info("clearOldData", `Data deletion has been disabled as period is less than 1. Period is ${parsedPeriod} days.`);
} else {
-
log.debug("clearOldData", `Clearing Data older than ${parsedPeriod} days...`);
-
const sqlHourOffset = Database.sqlHourOffset();
try {
- await R.exec(
- "DELETE FROM heartbeat WHERE time < " + sqlHourOffset,
- [ parsedPeriod * -24 ]
- );
+ // Heartbeat
+ await R.exec("DELETE FROM heartbeat WHERE time < " + sqlHourOffset, [
+ parsedPeriod * -24,
+ ]);
+
+ let timestamp = dayjs().subtract(parsedPeriod, "day").utc().startOf("day").unix();
+
+ // stat_daily
+ await R.exec("DELETE FROM stat_daily WHERE timestamp < ? ", [
+ timestamp,
+ ]);
if (Database.dbConfig.type === "sqlite") {
await R.exec("PRAGMA optimize;");
@@ -50,6 +56,8 @@ const clearOldData = async () => {
log.error("clearOldData", `Failed to clear old data: ${e.message}`);
}
}
+
+ log.debug("clearOldData", "Data cleared.");
};
module.exports = {
diff --git a/server/model/group.js b/server/model/group.js
index 5a8ebd4e4..1be511120 100644
--- a/server/model/group.js
+++ b/server/model/group.js
@@ -34,7 +34,7 @@ class Group extends BeanModel {
*/
async getMonitorList() {
return R.convertToBeans("monitor", await R.getAll(`
- SELECT monitor.*, monitor_group.send_url FROM monitor, monitor_group
+ SELECT monitor.*, monitor_group.send_url, monitor_group.custom_url FROM monitor, monitor_group
WHERE monitor.id = monitor_group.monitor_id
AND group_id = ?
ORDER BY monitor_group.weight
diff --git a/server/model/maintenance.js b/server/model/maintenance.js
index 516c03777..7111a18cb 100644
--- a/server/model/maintenance.js
+++ b/server/model/maintenance.js
@@ -239,19 +239,7 @@ class Maintenance extends BeanModel {
this.beanMeta.status = "under-maintenance";
clearTimeout(this.beanMeta.durationTimeout);
- // Check if duration is still in the window. If not, use the duration from the current time to the end of the window
- let duration;
-
- if (customDuration > 0) {
- duration = customDuration;
- } else if (this.end_date) {
- let d = dayjs(this.end_date).diff(dayjs(), "second");
- if (d < this.duration) {
- duration = d * 1000;
- }
- } else {
- duration = this.duration * 1000;
- }
+ let duration = this.inferDuration(customDuration);
UptimeKumaServer.getInstance().sendMaintenanceListByUserID(this.user_id);
@@ -263,9 +251,21 @@ class Maintenance extends BeanModel {
};
// Create Cron
- this.beanMeta.job = new Cron(this.cron, {
- timezone: await this.getTimezone(),
- }, startEvent);
+ if (this.strategy === "recurring-interval") {
+ // For recurring-interval, Croner needs to have interval and startAt
+ const startDate = dayjs(this.startDate);
+ const [ hour, minute ] = this.startTime.split(":");
+ const startDateTime = startDate.hour(hour).minute(minute);
+ this.beanMeta.job = new Cron(this.cron, {
+ timezone: await this.getTimezone(),
+ interval: this.interval_day * 24 * 60 * 60,
+ startAt: startDateTime.toISOString(),
+ }, startEvent);
+ } else {
+ this.beanMeta.job = new Cron(this.cron, {
+ timezone: await this.getTimezone(),
+ }, startEvent);
+ }
// Continue if the maintenance is still in the window
let runningTimeslot = this.getRunningTimeslot();
@@ -311,6 +311,24 @@ class Maintenance extends BeanModel {
}
}
+ /**
+ * Calculate the maintenance duration
+ * @param {number} customDuration - The custom duration in milliseconds.
+ * @returns {number} The inferred duration in milliseconds.
+ */
+ inferDuration(customDuration) {
+ // Check if duration is still in the window. If not, use the duration from the current time to the end of the window
+ if (customDuration > 0) {
+ return customDuration;
+ } else if (this.end_date) {
+ let d = dayjs(this.end_date).diff(dayjs(), "second");
+ if (d < this.duration) {
+ return d * 1000;
+ }
+ }
+ return this.duration * 1000;
+ }
+
/**
* Stop the maintenance
* @returns {void}
@@ -395,10 +413,8 @@ class Maintenance extends BeanModel {
} else if (!this.strategy.startsWith("recurring-")) {
this.cron = "";
} else if (this.strategy === "recurring-interval") {
- let array = this.start_time.split(":");
- let hour = parseInt(array[0]);
- let minute = parseInt(array[1]);
- this.cron = minute + " " + hour + " */" + this.interval_day + " * *";
+ // For intervals, the pattern is calculated in the run function as the interval-option is set
+ this.cron = "* * * * *";
this.duration = this.calcDuration();
log.debug("maintenance", "Cron: " + this.cron);
log.debug("maintenance", "Duration: " + this.duration);
diff --git a/server/model/monitor.js b/server/model/monitor.js
index 47660bea2..16c5bdfba 100644
--- a/server/model/monitor.js
+++ b/server/model/monitor.js
@@ -2,10 +2,10 @@ const dayjs = require("dayjs");
const axios = require("axios");
const { Prometheus } = require("../prometheus");
const { log, UP, DOWN, PENDING, MAINTENANCE, flipStatus, MAX_INTERVAL_SECOND, MIN_INTERVAL_SECOND,
- SQL_DATETIME_FORMAT
+ SQL_DATETIME_FORMAT, evaluateJsonQuery
} = require("../../src/util");
const { tcping, ping, checkCertificate, checkStatusCode, getTotalClientInRoom, setting, mssqlQuery, postgresQuery, mysqlQuery, setSetting, httpNtlm, radius, grpcQuery,
- redisPingAsync, mongodbPing, kafkaProducerAsync, getOidcTokenClientCredentials, rootCertificatesFingerprints, axiosAbortSignal
+ redisPingAsync, kafkaProducerAsync, getOidcTokenClientCredentials, rootCertificatesFingerprints, axiosAbortSignal
} = require("../util-server");
const { R } = require("redbean-node");
const { BeanModel } = require("redbean-node/dist/bean-model");
@@ -17,7 +17,6 @@ const apicache = require("../modules/apicache");
const { UptimeKumaServer } = require("../uptime-kuma-server");
const { DockerHost } = require("../docker");
const Gamedig = require("gamedig");
-const jsonata = require("jsonata");
const jwt = require("jsonwebtoken");
const crypto = require("crypto");
const { UptimeCalculator } = require("../uptime-calculator");
@@ -55,7 +54,7 @@ class Monitor extends BeanModel {
};
if (this.sendUrl) {
- obj.url = this.url;
+ obj.url = this.customUrl ?? this.url;
}
if (showTags) {
@@ -77,23 +76,12 @@ class Monitor extends BeanModel {
/**
* Return an object that ready to parse to JSON
+ * @param {object} preloadData to prevent n+1 problems, we query the data in a batch outside of this function
* @param {boolean} includeSensitiveData Include sensitive data in
* JSON
- * @returns {Promise} Object ready to parse
+ * @returns {object} Object ready to parse
*/
- async toJSON(includeSensitiveData = true) {
-
- let notificationIDList = {};
-
- let list = await R.find("monitor_notification", " monitor_id = ? ", [
- this.id,
- ]);
-
- for (let bean of list) {
- notificationIDList[bean.notification_id] = true;
- }
-
- const tags = await this.getTags();
+ toJSON(preloadData = {}, includeSensitiveData = true) {
let screenshot = null;
@@ -101,7 +89,7 @@ class Monitor extends BeanModel {
screenshot = "/screenshots/" + jwt.sign(this.id, UptimeKumaServer.getInstance().jwtSecret) + ".png";
}
- const path = await this.getPath();
+ const path = preloadData.paths.get(this.id) || [];
const pathName = path.join(" / ");
let data = {
@@ -112,15 +100,15 @@ class Monitor extends BeanModel {
path,
pathName,
parent: this.parent,
- childrenIDs: await Monitor.getAllChildrenIDs(this.id),
+ childrenIDs: preloadData.childrenIDs.get(this.id) || [],
url: this.url,
method: this.method,
hostname: this.hostname,
port: this.port,
maxretries: this.maxretries,
weight: this.weight,
- active: await this.isActive(),
- forceInactive: !await Monitor.isParentActive(this.id),
+ active: preloadData.activeStatus.get(this.id),
+ forceInactive: preloadData.forceInactive.get(this.id),
type: this.type,
timeout: this.timeout,
interval: this.interval,
@@ -140,9 +128,9 @@ class Monitor extends BeanModel {
docker_container: this.docker_container,
docker_host: this.docker_host,
proxyId: this.proxy_id,
- notificationIDList,
- tags: tags,
- maintenance: await Monitor.isUnderMaintenance(this.id),
+ notificationIDList: preloadData.notifications.get(this.id) || {},
+ tags: preloadData.tags.get(this.id) || [],
+ maintenance: preloadData.maintenanceStatus.get(this.id),
mqttTopic: this.mqttTopic,
mqttSuccessMessage: this.mqttSuccessMessage,
mqttCheckType: this.mqttCheckType,
@@ -166,7 +154,13 @@ class Monitor extends BeanModel {
kafkaProducerAllowAutoTopicCreation: this.getKafkaProducerAllowAutoTopicCreation(),
kafkaProducerMessage: this.kafkaProducerMessage,
screenshot,
+ cacheBust: this.getCacheBust(),
remote_browser: this.remote_browser,
+ snmpOid: this.snmpOid,
+ jsonPathOperator: this.jsonPathOperator,
+ snmpVersion: this.snmpVersion,
+ rabbitmqNodes: JSON.parse(this.rabbitmqNodes),
+ conditions: JSON.parse(this.conditions),
};
if (includeSensitiveData) {
@@ -196,6 +190,8 @@ class Monitor extends BeanModel {
tlsCert: this.tlsCert,
tlsKey: this.tlsKey,
kafkaProducerSaslOptions: JSON.parse(this.kafkaProducerSaslOptions),
+ rabbitmqUsername: this.rabbitmqUsername,
+ rabbitmqPassword: this.rabbitmqPassword,
};
}
@@ -203,16 +199,6 @@ class Monitor extends BeanModel {
return data;
}
- /**
- * Checks if the monitor is active based on itself and its parents
- * @returns {Promise} Is the monitor active?
- */
- async isActive() {
- const parentActive = await Monitor.isParentActive(this.id);
-
- return (this.active === 1) && parentActive;
- }
-
/**
* Get all tags applied to this monitor
* @returns {Promise[]>} List of tags on the
@@ -251,12 +237,12 @@ class Monitor extends BeanModel {
/**
* Encode user and password to Base64 encoding
* for HTTP "basic" auth, as per RFC-7617
- * @param {string} user Username to encode
- * @param {string} pass Password to encode
- * @returns {string} Encoded username:password
+ * @param {string|null} user - The username (nullable if not changed by a user)
+ * @param {string|null} pass - The password (nullable if not changed by a user)
+ * @returns {string} Encoded Base64 string
*/
encodeBase64(user, pass) {
- return Buffer.from(user + ":" + pass).toString("base64");
+ return Buffer.from(`${user || ""}:${pass || ""}`).toString("base64");
}
/**
@@ -299,6 +285,14 @@ class Monitor extends BeanModel {
return Boolean(this.grpcEnableTls);
}
+ /**
+ * Parse to boolean
+ * @returns {boolean} if cachebusting is enabled
+ */
+ getCacheBust() {
+ return Boolean(this.cacheBust);
+ }
+
/**
* Get accepted status codes
* @returns {object} Accepted status codes
@@ -392,39 +386,6 @@ class Monitor extends BeanModel {
if (await Monitor.isUnderMaintenance(this.id)) {
bean.msg = "Monitor under maintenance";
bean.status = MAINTENANCE;
- } else if (this.type === "group") {
- const children = await Monitor.getChildren(this.id);
-
- if (children.length > 0) {
- bean.status = UP;
- bean.msg = "All children up and running";
- for (const child of children) {
- if (!child.active) {
- // Ignore inactive childs
- continue;
- }
- const lastBeat = await Monitor.getPreviousHeartbeat(child.id);
-
- // Only change state if the monitor is in worse conditions then the ones before
- // lastBeat.status could be null
- if (!lastBeat) {
- bean.status = PENDING;
- } else if (bean.status === UP && (lastBeat.status === PENDING || lastBeat.status === DOWN)) {
- bean.status = lastBeat.status;
- } else if (bean.status === PENDING && lastBeat.status === DOWN) {
- bean.status = lastBeat.status;
- }
- }
-
- if (bean.status !== UP) {
- bean.msg = "Child inaccessible";
- }
- } else {
- // Set status pending if group is empty
- bean.status = PENDING;
- bean.msg = "Group empty";
- }
-
} else if (this.type === "http" || this.type === "keyword" || this.type === "json-query") {
// Do not do any queries/high loading things before the "bean.ping"
let startTime = dayjs().valueOf();
@@ -504,6 +465,14 @@ class Monitor extends BeanModel {
options.data = bodyValue;
}
+ if (this.cacheBust) {
+ const randomFloatString = Math.random().toString(36);
+ const cacheBust = randomFloatString.substring(2);
+ options.params = {
+ uptime_kuma_cachebuster: cacheBust,
+ };
+ }
+
if (this.proxy_id) {
const proxy = await R.load("proxy", this.proxy_id);
@@ -539,6 +508,18 @@ class Monitor extends BeanModel {
}
}
+ let tlsInfo = {};
+ // Store tlsInfo when secureConnect event is emitted
+ // The keylog event listener is a workaround to access the tlsSocket
+ options.httpsAgent.once("keylog", async (line, tlsSocket) => {
+ tlsSocket.once("secureConnect", async () => {
+ tlsInfo = checkCertificate(tlsSocket);
+ tlsInfo.valid = tlsSocket.authorized || false;
+
+ await this.handleTlsInfo(tlsInfo);
+ });
+ });
+
log.debug("monitor", `[${this.name}] Axios Options: ${JSON.stringify(options)}`);
log.debug("monitor", `[${this.name}] Axios Request`);
@@ -548,31 +529,19 @@ class Monitor extends BeanModel {
bean.msg = `${res.status} - ${res.statusText}`;
bean.ping = dayjs().valueOf() - startTime;
- // Check certificate if https is used
- let certInfoStartTime = dayjs().valueOf();
- if (this.getUrl()?.protocol === "https:") {
- log.debug("monitor", `[${this.name}] Check cert`);
- try {
- let tlsInfoObject = checkCertificate(res);
- tlsInfo = await this.updateTlsInfo(tlsInfoObject);
+ // fallback for if kelog event is not emitted, but we may still have tlsInfo,
+ // e.g. if the connection is made through a proxy
+ if (this.getUrl()?.protocol === "https:" && tlsInfo.valid === undefined) {
+ const tlsSocket = res.request.res.socket;
- if (!this.getIgnoreTls() && this.isEnabledExpiryNotification()) {
- log.debug("monitor", `[${this.name}] call checkCertExpiryNotifications`);
- await this.checkCertExpiryNotifications(tlsInfoObject);
- }
+ if (tlsSocket) {
+ tlsInfo = checkCertificate(tlsSocket);
+ tlsInfo.valid = tlsSocket.authorized || false;
- } catch (e) {
- if (e.message !== "No TLS certificate in response") {
- log.error("monitor", "Caught error");
- log.error("monitor", e.message);
- }
+ await this.handleTlsInfo(tlsInfo);
}
}
- if (process.env.TIMELOGGER === "1") {
- log.debug("monitor", "Cert Info Query Time: " + (dayjs().valueOf() - certInfoStartTime) + "ms");
- }
-
if (process.env.UPTIME_KUMA_LOG_RESPONSE_BODY_MONITOR_ID === this.id) {
log.info("monitor", res.data);
}
@@ -604,21 +573,15 @@ class Monitor extends BeanModel {
} else if (this.type === "json-query") {
let data = res.data;
- // convert data to object
- if (typeof data === "string") {
- data = JSON.parse(data);
- }
+ const { status, response } = await evaluateJsonQuery(data, this.jsonPath, this.jsonPathOperator, this.expectedValue);
- let expression = jsonata(this.jsonPath);
-
- let result = await expression.evaluate(data);
-
- if (result.toString() === this.expectedValue) {
- bean.msg += ", expected value is found";
+ if (status) {
bean.status = UP;
+ bean.msg = `JSON query passes (comparing ${response} ${this.jsonPathOperator} ${this.expectedValue})`;
} else {
- throw new Error(bean.msg + ", but value is not equal to expected value, value was: [" + result + "]");
+ throw new Error(`JSON query does not pass (comparing ${response} ${this.jsonPathOperator} ${this.expectedValue})`);
}
+
}
} else if (this.type === "port") {
@@ -824,15 +787,6 @@ class Monitor extends BeanModel {
bean.msg = await mysqlQuery(this.databaseConnectionString, this.databaseQuery || "SELECT 1", mysqlPassword);
bean.status = UP;
bean.ping = dayjs().valueOf() - startTime;
- } else if (this.type === "mongodb") {
- let startTime = dayjs().valueOf();
-
- await mongodbPing(this.databaseConnectionString);
-
- bean.msg = "";
- bean.status = UP;
- bean.ping = dayjs().valueOf() - startTime;
-
} else if (this.type === "radius") {
let startTime = dayjs().valueOf();
@@ -863,7 +817,7 @@ class Monitor extends BeanModel {
} else if (this.type === "redis") {
let startTime = dayjs().valueOf();
- bean.msg = await redisPingAsync(this.databaseConnectionString);
+ bean.msg = await redisPingAsync(this.databaseConnectionString, !this.ignoreTls);
bean.status = UP;
bean.ping = dayjs().valueOf() - startTime;
@@ -1197,6 +1151,18 @@ class Monitor extends BeanModel {
return checkCertificateResult;
}
+ /**
+ * Checks if the monitor is active based on itself and its parents
+ * @param {number} monitorID ID of monitor to send
+ * @param {boolean} active is active
+ * @returns {Promise} Is the monitor active?
+ */
+ static async isActive(monitorID, active) {
+ const parentActive = await Monitor.isParentActive(monitorID);
+
+ return (active === 1) && parentActive;
+ }
+
/**
* Send statistics to clients
* @param {Server} io Socket server instance
@@ -1333,7 +1299,11 @@ class Monitor extends BeanModel {
for (let notification of notificationList) {
try {
const heartbeatJSON = bean.toJSON();
-
+ const monitorData = [{ id: monitor.id,
+ active: monitor.active,
+ name: monitor.name
+ }];
+ const preloadData = await Monitor.preparePreloadData(monitorData);
// Prevent if the msg is undefined, notifications such as Discord cannot send out.
if (!heartbeatJSON["msg"]) {
heartbeatJSON["msg"] = "N/A";
@@ -1344,7 +1314,7 @@ class Monitor extends BeanModel {
heartbeatJSON["timezoneOffset"] = UptimeKumaServer.getInstance().getTimezoneOffset();
heartbeatJSON["localDateTime"] = dayjs.utc(heartbeatJSON["time"]).tz(heartbeatJSON["timezone"]).format(SQL_DATETIME_FORMAT);
- await Notification.send(JSON.parse(notification.config), msg, await monitor.toJSON(false), heartbeatJSON);
+ await Notification.send(JSON.parse(notification.config), msg, monitor.toJSON(preloadData, false), heartbeatJSON);
} catch (e) {
log.error("monitor", "Cannot send notification to " + notification.name);
log.error("monitor", e);
@@ -1438,7 +1408,7 @@ class Monitor extends BeanModel {
for (let notification of notificationList) {
try {
log.debug("monitor", "Sending to " + notification.name);
- await Notification.send(JSON.parse(notification.config), `[${this.name}][${this.url}] ${certType} certificate ${certCN} will be expired in ${daysRemaining} days`);
+ await Notification.send(JSON.parse(notification.config), `[${this.name}][${this.url}] ${certType} certificate ${certCN} will expire in ${daysRemaining} days`);
sent = true;
} catch (e) {
log.error("monitor", "Cannot send cert notification to " + notification.name);
@@ -1506,6 +1476,110 @@ class Monitor extends BeanModel {
}
}
+ /**
+ * Gets monitor notification of multiple monitor
+ * @param {Array} monitorIDs IDs of monitor to get
+ * @returns {Promise>} object
+ */
+ static async getMonitorNotification(monitorIDs) {
+ return await R.getAll(`
+ SELECT monitor_notification.monitor_id, monitor_notification.notification_id
+ FROM monitor_notification
+ WHERE monitor_notification.monitor_id IN (${monitorIDs.map((_) => "?").join(",")})
+ `, monitorIDs);
+ }
+
+ /**
+ * Gets monitor tags of multiple monitor
+ * @param {Array} monitorIDs IDs of monitor to get
+ * @returns {Promise>} object
+ */
+ static async getMonitorTag(monitorIDs) {
+ return await R.getAll(`
+ SELECT monitor_tag.monitor_id, monitor_tag.tag_id, monitor_tag.value, tag.name, tag.color
+ FROM monitor_tag
+ JOIN tag ON monitor_tag.tag_id = tag.id
+ WHERE monitor_tag.monitor_id IN (${monitorIDs.map((_) => "?").join(",")})
+ `, monitorIDs);
+ }
+
+ /**
+ * prepare preloaded data for efficient access
+ * @param {Array} monitorData IDs & active field of monitor to get
+ * @returns {Promise>} object
+ */
+ static async preparePreloadData(monitorData) {
+
+ const notificationsMap = new Map();
+ const tagsMap = new Map();
+ const maintenanceStatusMap = new Map();
+ const childrenIDsMap = new Map();
+ const activeStatusMap = new Map();
+ const forceInactiveMap = new Map();
+ const pathsMap = new Map();
+
+ if (monitorData.length > 0) {
+ const monitorIDs = monitorData.map(monitor => monitor.id);
+ const notifications = await Monitor.getMonitorNotification(monitorIDs);
+ const tags = await Monitor.getMonitorTag(monitorIDs);
+ const maintenanceStatuses = await Promise.all(monitorData.map(monitor => Monitor.isUnderMaintenance(monitor.id)));
+ const childrenIDs = await Promise.all(monitorData.map(monitor => Monitor.getAllChildrenIDs(monitor.id)));
+ const activeStatuses = await Promise.all(monitorData.map(monitor => Monitor.isActive(monitor.id, monitor.active)));
+ const forceInactiveStatuses = await Promise.all(monitorData.map(monitor => Monitor.isParentActive(monitor.id)));
+ const paths = await Promise.all(monitorData.map(monitor => Monitor.getAllPath(monitor.id, monitor.name)));
+
+ notifications.forEach(row => {
+ if (!notificationsMap.has(row.monitor_id)) {
+ notificationsMap.set(row.monitor_id, {});
+ }
+ notificationsMap.get(row.monitor_id)[row.notification_id] = true;
+ });
+
+ tags.forEach(row => {
+ if (!tagsMap.has(row.monitor_id)) {
+ tagsMap.set(row.monitor_id, []);
+ }
+ tagsMap.get(row.monitor_id).push({
+ tag_id: row.tag_id,
+ monitor_id: row.monitor_id,
+ value: row.value,
+ name: row.name,
+ color: row.color
+ });
+ });
+
+ monitorData.forEach((monitor, index) => {
+ maintenanceStatusMap.set(monitor.id, maintenanceStatuses[index]);
+ });
+
+ monitorData.forEach((monitor, index) => {
+ childrenIDsMap.set(monitor.id, childrenIDs[index]);
+ });
+
+ monitorData.forEach((monitor, index) => {
+ activeStatusMap.set(monitor.id, activeStatuses[index]);
+ });
+
+ monitorData.forEach((monitor, index) => {
+ forceInactiveMap.set(monitor.id, !forceInactiveStatuses[index]);
+ });
+
+ monitorData.forEach((monitor, index) => {
+ pathsMap.set(monitor.id, paths[index]);
+ });
+ }
+
+ return {
+ notifications: notificationsMap,
+ tags: tagsMap,
+ maintenanceStatus: maintenanceStatusMap,
+ childrenIDs: childrenIDsMap,
+ activeStatus: activeStatusMap,
+ forceInactive: forceInactiveMap,
+ paths: pathsMap,
+ };
+ }
+
/**
* Gets Parent of the monitor
* @param {number} monitorID ID of monitor to get
@@ -1525,7 +1599,7 @@ class Monitor extends BeanModel {
/**
* Gets all Children of the monitor
* @param {number} monitorID ID of monitor to get
- * @returns {Promise>} Children
+ * @returns {Promise[]>} Children
*/
static async getChildren(monitorID) {
return await R.getAll(`
@@ -1538,16 +1612,18 @@ class Monitor extends BeanModel {
/**
* Gets the full path
+ * @param {number} monitorID ID of the monitor to get
+ * @param {string} name of the monitor to get
* @returns {Promise} Full path (includes groups and the name) of the monitor
*/
- async getPath() {
- const path = [ this.name ];
+ static async getAllPath(monitorID, name) {
+ const path = [ name ];
if (this.parent === null) {
return path;
}
- let parent = await Monitor.getParent(this.id);
+ let parent = await Monitor.getParent(monitorID);
while (parent !== null) {
path.unshift(parent.name);
parent = await Monitor.getParent(parent.id);
@@ -1579,7 +1655,7 @@ class Monitor extends BeanModel {
}
/**
- * Unlinks all children of the the group monitor
+ * Unlinks all children of the group monitor
* @param {number} groupID ID of group to remove children of
* @returns {Promise}
*/
@@ -1621,6 +1697,20 @@ class Monitor extends BeanModel {
return oAuthAccessToken;
}
+ /**
+ * Store TLS certificate information and check for expiry
+ * @param {object} tlsInfo Information about the TLS connection
+ * @returns {Promise}
+ */
+ async handleTlsInfo(tlsInfo) {
+ await this.updateTlsInfo(tlsInfo);
+ this.prometheus?.update(null, tlsInfo);
+
+ if (!this.getIgnoreTls() && this.isEnabledExpiryNotification()) {
+ log.debug("monitor", `[${this.name}] call checkCertExpiryNotifications`);
+ await this.checkCertExpiryNotifications(tlsInfo);
+ }
+ }
}
module.exports = Monitor;
diff --git a/server/model/status_page.js b/server/model/status_page.js
index 3c5ed3aa4..6d1d933a2 100644
--- a/server/model/status_page.js
+++ b/server/model/status_page.js
@@ -4,6 +4,11 @@ const cheerio = require("cheerio");
const { UptimeKumaServer } = require("../uptime-kuma-server");
const jsesc = require("jsesc");
const googleAnalytics = require("../google-analytics");
+const { marked } = require("marked");
+const { Feed } = require("feed");
+const config = require("../config");
+
+const { STATUS_PAGE_ALL_DOWN, STATUS_PAGE_ALL_UP, STATUS_PAGE_MAINTENANCE, STATUS_PAGE_PARTIAL_DOWN, UP, MAINTENANCE, DOWN } = require("../../src/util");
class StatusPage extends BeanModel {
@@ -13,6 +18,24 @@ class StatusPage extends BeanModel {
*/
static domainMappingList = { };
+ /**
+ * Handle responses to RSS pages
+ * @param {Response} response Response object
+ * @param {string} slug Status page slug
+ * @returns {Promise}
+ */
+ static async handleStatusPageRSSResponse(response, slug) {
+ let statusPage = await R.findOne("status_page", " slug = ? ", [
+ slug
+ ]);
+
+ if (statusPage) {
+ response.send(await StatusPage.renderRSS(statusPage, slug));
+ } else {
+ response.status(404).send(UptimeKumaServer.getInstance().indexHTML);
+ }
+ }
+
/**
* Handle responses to status page
* @param {Response} response Response object
@@ -38,6 +61,38 @@ class StatusPage extends BeanModel {
}
}
+ /**
+ * SSR for RSS feed
+ * @param {statusPage} statusPage object
+ * @param {slug} slug from router
+ * @returns {Promise} the rendered html
+ */
+ static async renderRSS(statusPage, slug) {
+ const { heartbeats, statusDescription } = await StatusPage.getRSSPageData(statusPage);
+
+ let proto = config.isSSL ? "https" : "http";
+ let host = `${proto}://${config.hostname || "localhost"}:${config.port}/status/${slug}`;
+
+ const feed = new Feed({
+ title: "uptime kuma rss feed",
+ description: `current status: ${statusDescription}`,
+ link: host,
+ language: "en", // optional, used only in RSS 2.0, possible values: http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes
+ updated: new Date(), // optional, default = today
+ });
+
+ heartbeats.forEach(heartbeat => {
+ feed.addItem({
+ title: `${heartbeat.name} is down`,
+ description: `${heartbeat.name} has been down since ${heartbeat.time}`,
+ id: heartbeat.monitorID,
+ date: new Date(heartbeat.time),
+ });
+ });
+
+ return feed.rss2();
+ }
+
/**
* SSR for status pages
* @param {string} indexHTML HTML page to render
@@ -46,7 +101,11 @@ class StatusPage extends BeanModel {
*/
static async renderHTML(indexHTML, statusPage) {
const $ = cheerio.load(indexHTML);
- const description155 = statusPage.description?.substring(0, 155) ?? "";
+
+ const description155 = marked(statusPage.description ?? "")
+ .replace(/<[^>]+>/gm, "")
+ .trim()
+ .substring(0, 155);
$("title").text(statusPage.title);
$("meta[name=description]").attr("content", description155);
@@ -93,6 +152,109 @@ class StatusPage extends BeanModel {
return $.root().html();
}
+ /**
+ * @param {heartbeats} heartbeats from getRSSPageData
+ * @returns {number} status_page constant from util.ts
+ */
+ static overallStatus(heartbeats) {
+ if (heartbeats.length === 0) {
+ return -1;
+ }
+
+ let status = STATUS_PAGE_ALL_UP;
+ let hasUp = false;
+
+ for (let beat of heartbeats) {
+ if (beat.status === MAINTENANCE) {
+ return STATUS_PAGE_MAINTENANCE;
+ } else if (beat.status === UP) {
+ hasUp = true;
+ } else {
+ status = STATUS_PAGE_PARTIAL_DOWN;
+ }
+ }
+
+ if (! hasUp) {
+ status = STATUS_PAGE_ALL_DOWN;
+ }
+
+ return status;
+ }
+
+ /**
+ * @param {number} status from overallStatus
+ * @returns {string} description
+ */
+ static getStatusDescription(status) {
+ if (status === -1) {
+ return "No Services";
+ }
+
+ if (status === STATUS_PAGE_ALL_UP) {
+ return "All Systems Operational";
+ }
+
+ if (status === STATUS_PAGE_PARTIAL_DOWN) {
+ return "Partially Degraded Service";
+ }
+
+ if (status === STATUS_PAGE_ALL_DOWN) {
+ return "Degraded Service";
+ }
+
+ // TODO: show the real maintenance information: title, description, time
+ if (status === MAINTENANCE) {
+ return "Under maintenance";
+ }
+
+ return "?";
+ }
+
+ /**
+ * Get all data required for RSS
+ * @param {StatusPage} statusPage Status page to get data for
+ * @returns {object} Status page data
+ */
+ static async getRSSPageData(statusPage) {
+ // get all heartbeats that correspond to this statusPage
+ const config = await statusPage.toPublicJSON();
+
+ // Public Group List
+ const showTags = !!statusPage.show_tags;
+
+ const list = await R.find("group", " public = 1 AND status_page_id = ? ORDER BY weight ", [
+ statusPage.id
+ ]);
+
+ let heartbeats = [];
+
+ for (let groupBean of list) {
+ let monitorGroup = await groupBean.toPublicJSON(showTags, config?.showCertificateExpiry);
+ for (const monitor of monitorGroup.monitorList) {
+ const heartbeat = await R.findOne("heartbeat", "monitor_id = ? ORDER BY time DESC", [ monitor.id ]);
+ if (heartbeat) {
+ heartbeats.push({
+ ...monitor,
+ status: heartbeat.status,
+ time: heartbeat.time
+ });
+ }
+ }
+ }
+
+ // calculate RSS feed description
+ let status = StatusPage.overallStatus(heartbeats);
+ let statusDescription = StatusPage.getStatusDescription(status);
+
+ // keep only DOWN heartbeats in the RSS feed
+ heartbeats = heartbeats.filter(heartbeat => heartbeat.status === DOWN);
+
+ return {
+ heartbeats,
+ statusDescription
+ };
+ }
+
/**
* Get all status page data in one call
* @param {StatusPage} statusPage Status page to get data for
@@ -239,6 +401,7 @@ class StatusPage extends BeanModel {
description: this.description,
icon: this.getIcon(),
theme: this.theme,
+ autoRefreshInterval: this.autoRefreshInterval,
published: !!this.published,
showTags: !!this.show_tags,
showDescriptions: !!this.show_descriptions,
@@ -262,6 +425,7 @@ class StatusPage extends BeanModel {
title: this.title,
description: this.description,
icon: this.getIcon(),
+ autoRefreshInterval: this.autoRefreshInterval,
theme: this.theme,
published: !!this.published,
showTags: !!this.show_tags,
diff --git a/server/modules/apicache/apicache.js b/server/modules/apicache/apicache.js
index 41930b24d..95a04d9e3 100644
--- a/server/modules/apicache/apicache.js
+++ b/server/modules/apicache/apicache.js
@@ -485,7 +485,7 @@ function ApiCache() {
}
if (typeof duration === "string") {
- let split = duration.match(/^([\d\.,]+)\s?(\w+)$/);
+ let split = duration.match(/^([\d\.,]+)\s?([a-zA-Z]+)$/);
if (split.length === 3) {
let len = parseFloat(split[1]);
diff --git a/server/modules/axios-ntlm/LICENSE b/server/modules/axios-ntlm/LICENSE
new file mode 100644
index 000000000..1744ee42c
--- /dev/null
+++ b/server/modules/axios-ntlm/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2021 CatButtes
+
+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.
diff --git a/server/modules/axios-ntlm/lib/flags.js b/server/modules/axios-ntlm/lib/flags.js
new file mode 100644
index 000000000..c16028cad
--- /dev/null
+++ b/server/modules/axios-ntlm/lib/flags.js
@@ -0,0 +1,77 @@
+'use strict';
+// Original file https://raw.githubusercontent.com/elasticio/node-ntlm-client/master/lib/flags.js
+module.exports.NTLMFLAG_NEGOTIATE_UNICODE = 1 << 0;
+/* Indicates that Unicode strings are supported for use in security buffer
+ data. */
+module.exports.NTLMFLAG_NEGOTIATE_OEM = 1 << 1;
+/* Indicates that OEM strings are supported for use in security buffer data. */
+module.exports.NTLMFLAG_REQUEST_TARGET = 1 << 2;
+/* Requests that the server's authentication realm be included in the Type 2
+ message. */
+/* unknown (1<<3) */
+module.exports.NTLMFLAG_NEGOTIATE_SIGN = 1 << 4;
+/* Specifies that authenticated communication between the client and server
+ should carry a digital signature (message integrity). */
+module.exports.NTLMFLAG_NEGOTIATE_SEAL = 1 << 5;
+/* Specifies that authenticated communication between the client and server
+ should be encrypted (message confidentiality). */
+module.exports.NTLMFLAG_NEGOTIATE_DATAGRAM_STYLE = 1 << 6;
+/* Indicates that datagram authentication is being used. */
+module.exports.NTLMFLAG_NEGOTIATE_LM_KEY = 1 << 7;
+/* Indicates that the LAN Manager session key should be used for signing and
+ sealing authenticated communications. */
+module.exports.NTLMFLAG_NEGOTIATE_NETWARE = 1 << 8;
+/* unknown purpose */
+module.exports.NTLMFLAG_NEGOTIATE_NTLM_KEY = 1 << 9;
+/* Indicates that NTLM authentication is being used. */
+/* unknown (1<<10) */
+module.exports.NTLMFLAG_NEGOTIATE_ANONYMOUS = 1 << 11;
+/* Sent by the client in the Type 3 message to indicate that an anonymous
+ context has been established. This also affects the response fields. */
+module.exports.NTLMFLAG_NEGOTIATE_DOMAIN_SUPPLIED = 1 << 12;
+/* Sent by the client in the Type 1 message to indicate that a desired
+ authentication realm is included in the message. */
+module.exports.NTLMFLAG_NEGOTIATE_WORKSTATION_SUPPLIED = 1 << 13;
+/* Sent by the client in the Type 1 message to indicate that the client
+ workstation's name is included in the message. */
+module.exports.NTLMFLAG_NEGOTIATE_LOCAL_CALL = 1 << 14;
+/* Sent by the server to indicate that the server and client are on the same
+ machine. Implies that the client may use a pre-established local security
+ context rather than responding to the challenge. */
+module.exports.NTLMFLAG_NEGOTIATE_ALWAYS_SIGN = 1 << 15;
+/* Indicates that authenticated communication between the client and server
+ should be signed with a "dummy" signature. */
+module.exports.NTLMFLAG_TARGET_TYPE_DOMAIN = 1 << 16;
+/* Sent by the server in the Type 2 message to indicate that the target
+ authentication realm is a domain. */
+module.exports.NTLMFLAG_TARGET_TYPE_SERVER = 1 << 17;
+/* Sent by the server in the Type 2 message to indicate that the target
+ authentication realm is a server. */
+module.exports.NTLMFLAG_TARGET_TYPE_SHARE = 1 << 18;
+/* Sent by the server in the Type 2 message to indicate that the target
+ authentication realm is a share. Presumably, this is for share-level
+ authentication. Usage is unclear. */
+module.exports.NTLMFLAG_NEGOTIATE_NTLM2_KEY = 1 << 19;
+/* Indicates that the NTLM2 signing and sealing scheme should be used for
+ protecting authenticated communications. */
+module.exports.NTLMFLAG_REQUEST_INIT_RESPONSE = 1 << 20;
+/* unknown purpose */
+module.exports.NTLMFLAG_REQUEST_ACCEPT_RESPONSE = 1 << 21;
+/* unknown purpose */
+module.exports.NTLMFLAG_REQUEST_NONNT_SESSION_KEY = 1 << 22;
+/* unknown purpose */
+module.exports.NTLMFLAG_NEGOTIATE_TARGET_INFO = 1 << 23;
+/* Sent by the server in the Type 2 message to indicate that it is including a
+ Target Information block in the message. */
+/* unknown (1<24) */
+/* unknown (1<25) */
+/* unknown (1<26) */
+/* unknown (1<27) */
+/* unknown (1<28) */
+module.exports.NTLMFLAG_NEGOTIATE_128 = 1 << 29;
+/* Indicates that 128-bit encryption is supported. */
+module.exports.NTLMFLAG_NEGOTIATE_KEY_EXCHANGE = 1 << 30;
+/* Indicates that the client will provide an encrypted master key in
+ the "Session Key" field of the Type 3 message. */
+module.exports.NTLMFLAG_NEGOTIATE_56 = 1 << 31;
+//# sourceMappingURL=flags.js.map
\ No newline at end of file
diff --git a/server/modules/axios-ntlm/lib/hash.js b/server/modules/axios-ntlm/lib/hash.js
new file mode 100644
index 000000000..4e5aa26b4
--- /dev/null
+++ b/server/modules/axios-ntlm/lib/hash.js
@@ -0,0 +1,122 @@
+'use strict';
+// Original source at https://github.com/elasticio/node-ntlm-client/blob/master/lib/hash.js
+var crypto = require('crypto');
+function createLMResponse(challenge, lmhash) {
+ var buf = new Buffer.alloc(24), pwBuffer = new Buffer.alloc(21).fill(0);
+ lmhash.copy(pwBuffer);
+ calculateDES(pwBuffer.slice(0, 7), challenge).copy(buf);
+ calculateDES(pwBuffer.slice(7, 14), challenge).copy(buf, 8);
+ calculateDES(pwBuffer.slice(14), challenge).copy(buf, 16);
+ return buf;
+}
+function createLMHash(password) {
+ var buf = new Buffer.alloc(16), pwBuffer = new Buffer.alloc(14), magicKey = new Buffer.from('KGS!@#$%', 'ascii');
+ if (password.length > 14) {
+ buf.fill(0);
+ return buf;
+ }
+ pwBuffer.fill(0);
+ pwBuffer.write(password.toUpperCase(), 0, 'ascii');
+ return Buffer.concat([
+ calculateDES(pwBuffer.slice(0, 7), magicKey),
+ calculateDES(pwBuffer.slice(7), magicKey)
+ ]);
+}
+function calculateDES(key, message) {
+ var desKey = new Buffer.alloc(8);
+ desKey[0] = key[0] & 0xFE;
+ desKey[1] = ((key[0] << 7) & 0xFF) | (key[1] >> 1);
+ desKey[2] = ((key[1] << 6) & 0xFF) | (key[2] >> 2);
+ desKey[3] = ((key[2] << 5) & 0xFF) | (key[3] >> 3);
+ desKey[4] = ((key[3] << 4) & 0xFF) | (key[4] >> 4);
+ desKey[5] = ((key[4] << 3) & 0xFF) | (key[5] >> 5);
+ desKey[6] = ((key[5] << 2) & 0xFF) | (key[6] >> 6);
+ desKey[7] = (key[6] << 1) & 0xFF;
+ for (var i = 0; i < 8; i++) {
+ var parity = 0;
+ for (var j = 1; j < 8; j++) {
+ parity += (desKey[i] >> j) % 2;
+ }
+ desKey[i] |= (parity % 2) === 0 ? 1 : 0;
+ }
+ var des = crypto.createCipheriv('DES-ECB', desKey, '');
+ return des.update(message);
+}
+function createNTLMResponse(challenge, ntlmhash) {
+ var buf = new Buffer.alloc(24), ntlmBuffer = new Buffer.alloc(21).fill(0);
+ ntlmhash.copy(ntlmBuffer);
+ calculateDES(ntlmBuffer.slice(0, 7), challenge).copy(buf);
+ calculateDES(ntlmBuffer.slice(7, 14), challenge).copy(buf, 8);
+ calculateDES(ntlmBuffer.slice(14), challenge).copy(buf, 16);
+ return buf;
+}
+function createNTLMHash(password) {
+ var md4sum = crypto.createHash('md4');
+ md4sum.update(new Buffer.from(password, 'ucs2'));
+ return md4sum.digest();
+}
+function createNTLMv2Hash(ntlmhash, username, authTargetName) {
+ var hmac = crypto.createHmac('md5', ntlmhash);
+ hmac.update(new Buffer.from(username.toUpperCase() + authTargetName, 'ucs2'));
+ return hmac.digest();
+}
+function createLMv2Response(type2message, username, ntlmhash, nonce, targetName) {
+ var buf = new Buffer.alloc(24), ntlm2hash = createNTLMv2Hash(ntlmhash, username, targetName), hmac = crypto.createHmac('md5', ntlm2hash);
+ //server challenge
+ type2message.challenge.copy(buf, 8);
+ //client nonce
+ buf.write(nonce || createPseudoRandomValue(16), 16, 'hex');
+ //create hash
+ hmac.update(buf.slice(8));
+ var hashedBuffer = hmac.digest();
+ hashedBuffer.copy(buf);
+ return buf;
+}
+function createNTLMv2Response(type2message, username, ntlmhash, nonce, targetName) {
+ var buf = new Buffer.alloc(48 + type2message.targetInfo.buffer.length), ntlm2hash = createNTLMv2Hash(ntlmhash, username, targetName), hmac = crypto.createHmac('md5', ntlm2hash);
+ //the first 8 bytes are spare to store the hashed value before the blob
+ //server challenge
+ type2message.challenge.copy(buf, 8);
+ //blob signature
+ buf.writeUInt32BE(0x01010000, 16);
+ //reserved
+ buf.writeUInt32LE(0, 20);
+ //timestamp
+ //TODO: we are loosing precision here since js is not able to handle those large integers
+ // maybe think about a different solution here
+ // 11644473600000 = diff between 1970 and 1601
+ var timestamp = ((Date.now() + 11644473600000) * 10000).toString(16);
+ var timestampLow = Number('0x' + timestamp.substring(Math.max(0, timestamp.length - 8)));
+ var timestampHigh = Number('0x' + timestamp.substring(0, Math.max(0, timestamp.length - 8)));
+ buf.writeUInt32LE(timestampLow, 24, false);
+ buf.writeUInt32LE(timestampHigh, 28, false);
+ //random client nonce
+ buf.write(nonce || createPseudoRandomValue(16), 32, 'hex');
+ //zero
+ buf.writeUInt32LE(0, 40);
+ //complete target information block from type 2 message
+ type2message.targetInfo.buffer.copy(buf, 44);
+ //zero
+ buf.writeUInt32LE(0, 44 + type2message.targetInfo.buffer.length);
+ hmac.update(buf.slice(8));
+ var hashedBuffer = hmac.digest();
+ hashedBuffer.copy(buf);
+ return buf;
+}
+function createPseudoRandomValue(length) {
+ var str = '';
+ while (str.length < length) {
+ str += Math.floor(Math.random() * 16).toString(16);
+ }
+ return str;
+}
+module.exports = {
+ createLMHash: createLMHash,
+ createNTLMHash: createNTLMHash,
+ createLMResponse: createLMResponse,
+ createNTLMResponse: createNTLMResponse,
+ createLMv2Response: createLMv2Response,
+ createNTLMv2Response: createNTLMv2Response,
+ createPseudoRandomValue: createPseudoRandomValue
+};
+//# sourceMappingURL=hash.js.map
\ No newline at end of file
diff --git a/server/modules/axios-ntlm/lib/ntlm.js b/server/modules/axios-ntlm/lib/ntlm.js
new file mode 100644
index 000000000..54490c0a6
--- /dev/null
+++ b/server/modules/axios-ntlm/lib/ntlm.js
@@ -0,0 +1,220 @@
+'use strict';
+// Original file https://raw.githubusercontent.com/elasticio/node-ntlm-client/master/lib/ntlm.js
+var os = require('os'), flags = require('./flags'), hash = require('./hash');
+var NTLMSIGNATURE = "NTLMSSP\0";
+function createType1Message(workstation, target) {
+ var dataPos = 32, pos = 0, buf = new Buffer.alloc(1024);
+ workstation = workstation === undefined ? os.hostname() : workstation;
+ target = target === undefined ? '' : target;
+ //signature
+ buf.write(NTLMSIGNATURE, pos, NTLMSIGNATURE.length, 'ascii');
+ pos += NTLMSIGNATURE.length;
+ //message type
+ buf.writeUInt32LE(1, pos);
+ pos += 4;
+ //flags
+ buf.writeUInt32LE(flags.NTLMFLAG_NEGOTIATE_OEM |
+ flags.NTLMFLAG_REQUEST_TARGET |
+ flags.NTLMFLAG_NEGOTIATE_NTLM_KEY |
+ flags.NTLMFLAG_NEGOTIATE_NTLM2_KEY |
+ flags.NTLMFLAG_NEGOTIATE_ALWAYS_SIGN, pos);
+ pos += 4;
+ //domain security buffer
+ buf.writeUInt16LE(target.length, pos);
+ pos += 2;
+ buf.writeUInt16LE(target.length, pos);
+ pos += 2;
+ buf.writeUInt32LE(target.length === 0 ? 0 : dataPos, pos);
+ pos += 4;
+ if (target.length > 0) {
+ dataPos += buf.write(target, dataPos, 'ascii');
+ }
+ //workstation security buffer
+ buf.writeUInt16LE(workstation.length, pos);
+ pos += 2;
+ buf.writeUInt16LE(workstation.length, pos);
+ pos += 2;
+ buf.writeUInt32LE(workstation.length === 0 ? 0 : dataPos, pos);
+ pos += 4;
+ if (workstation.length > 0) {
+ dataPos += buf.write(workstation, dataPos, 'ascii');
+ }
+ return 'NTLM ' + buf.toString('base64', 0, dataPos);
+}
+function decodeType2Message(str) {
+ if (str === undefined) {
+ throw new Error('Invalid argument');
+ }
+ //convenience
+ if (Object.prototype.toString.call(str) !== '[object String]') {
+ if (str.hasOwnProperty('headers') && str.headers.hasOwnProperty('www-authenticate')) {
+ str = str.headers['www-authenticate'];
+ }
+ else {
+ throw new Error('Invalid argument');
+ }
+ }
+ var ntlmMatch = /^NTLM ([^,\s]+)/.exec(str);
+ if (ntlmMatch) {
+ str = ntlmMatch[1];
+ }
+ var buf = new Buffer.from(str, 'base64'), obj = {};
+ //check signature
+ if (buf.toString('ascii', 0, NTLMSIGNATURE.length) !== NTLMSIGNATURE) {
+ throw new Error('Invalid message signature: ' + str);
+ }
+ //check message type
+ if (buf.readUInt32LE(NTLMSIGNATURE.length) !== 2) {
+ throw new Error('Invalid message type (no type 2)');
+ }
+ //read flags
+ obj.flags = buf.readUInt32LE(20);
+ obj.encoding = (obj.flags & flags.NTLMFLAG_NEGOTIATE_OEM) ? 'ascii' : 'ucs2';
+ obj.version = (obj.flags & flags.NTLMFLAG_NEGOTIATE_NTLM2_KEY) ? 2 : 1;
+ obj.challenge = buf.slice(24, 32);
+ //read target name
+ obj.targetName = (function () {
+ var length = buf.readUInt16LE(12);
+ //skipping allocated space
+ var offset = buf.readUInt32LE(16);
+ if (length === 0) {
+ return '';
+ }
+ if ((offset + length) > buf.length || offset < 32) {
+ throw new Error('Bad type 2 message');
+ }
+ return buf.toString(obj.encoding, offset, offset + length);
+ })();
+ //read target info
+ if (obj.flags & flags.NTLMFLAG_NEGOTIATE_TARGET_INFO) {
+ obj.targetInfo = (function () {
+ var info = {};
+ var length = buf.readUInt16LE(40);
+ //skipping allocated space
+ var offset = buf.readUInt32LE(44);
+ var targetInfoBuffer = new Buffer.alloc(length);
+ buf.copy(targetInfoBuffer, 0, offset, offset + length);
+ if (length === 0) {
+ return info;
+ }
+ if ((offset + length) > buf.length || offset < 32) {
+ throw new Error('Bad type 2 message');
+ }
+ var pos = offset;
+ while (pos < (offset + length)) {
+ var blockType = buf.readUInt16LE(pos);
+ pos += 2;
+ var blockLength = buf.readUInt16LE(pos);
+ pos += 2;
+ if (blockType === 0) {
+ //reached the terminator subblock
+ break;
+ }
+ var blockTypeStr = void 0;
+ switch (blockType) {
+ case 1:
+ blockTypeStr = 'SERVER';
+ break;
+ case 2:
+ blockTypeStr = 'DOMAIN';
+ break;
+ case 3:
+ blockTypeStr = 'FQDN';
+ break;
+ case 4:
+ blockTypeStr = 'DNS';
+ break;
+ case 5:
+ blockTypeStr = 'PARENT_DNS';
+ break;
+ default:
+ blockTypeStr = '';
+ break;
+ }
+ if (blockTypeStr) {
+ info[blockTypeStr] = buf.toString('ucs2', pos, pos + blockLength);
+ }
+ pos += blockLength;
+ }
+ return {
+ parsed: info,
+ buffer: targetInfoBuffer
+ };
+ })();
+ }
+ return obj;
+}
+function createType3Message(type2Message, username, password, workstation, target) {
+ var dataPos = 52, buf = new Buffer.alloc(1024);
+ if (workstation === undefined) {
+ workstation = os.hostname();
+ }
+ if (target === undefined) {
+ target = type2Message.targetName;
+ }
+ //signature
+ buf.write(NTLMSIGNATURE, 0, NTLMSIGNATURE.length, 'ascii');
+ //message type
+ buf.writeUInt32LE(3, 8);
+ if (type2Message.version === 2) {
+ dataPos = 64;
+ var ntlmHash = hash.createNTLMHash(password), nonce = hash.createPseudoRandomValue(16), lmv2 = hash.createLMv2Response(type2Message, username, ntlmHash, nonce, target), ntlmv2 = hash.createNTLMv2Response(type2Message, username, ntlmHash, nonce, target);
+ //lmv2 security buffer
+ buf.writeUInt16LE(lmv2.length, 12);
+ buf.writeUInt16LE(lmv2.length, 14);
+ buf.writeUInt32LE(dataPos, 16);
+ lmv2.copy(buf, dataPos);
+ dataPos += lmv2.length;
+ //ntlmv2 security buffer
+ buf.writeUInt16LE(ntlmv2.length, 20);
+ buf.writeUInt16LE(ntlmv2.length, 22);
+ buf.writeUInt32LE(dataPos, 24);
+ ntlmv2.copy(buf, dataPos);
+ dataPos += ntlmv2.length;
+ }
+ else {
+ var lmHash = hash.createLMHash(password), ntlmHash = hash.createNTLMHash(password), lm = hash.createLMResponse(type2Message.challenge, lmHash), ntlm = hash.createNTLMResponse(type2Message.challenge, ntlmHash);
+ //lm security buffer
+ buf.writeUInt16LE(lm.length, 12);
+ buf.writeUInt16LE(lm.length, 14);
+ buf.writeUInt32LE(dataPos, 16);
+ lm.copy(buf, dataPos);
+ dataPos += lm.length;
+ //ntlm security buffer
+ buf.writeUInt16LE(ntlm.length, 20);
+ buf.writeUInt16LE(ntlm.length, 22);
+ buf.writeUInt32LE(dataPos, 24);
+ ntlm.copy(buf, dataPos);
+ dataPos += ntlm.length;
+ }
+ //target name security buffer
+ buf.writeUInt16LE(type2Message.encoding === 'ascii' ? target.length : target.length * 2, 28);
+ buf.writeUInt16LE(type2Message.encoding === 'ascii' ? target.length : target.length * 2, 30);
+ buf.writeUInt32LE(dataPos, 32);
+ dataPos += buf.write(target, dataPos, type2Message.encoding);
+ //user name security buffer
+ buf.writeUInt16LE(type2Message.encoding === 'ascii' ? username.length : username.length * 2, 36);
+ buf.writeUInt16LE(type2Message.encoding === 'ascii' ? username.length : username.length * 2, 38);
+ buf.writeUInt32LE(dataPos, 40);
+ dataPos += buf.write(username, dataPos, type2Message.encoding);
+ //workstation name security buffer
+ buf.writeUInt16LE(type2Message.encoding === 'ascii' ? workstation.length : workstation.length * 2, 44);
+ buf.writeUInt16LE(type2Message.encoding === 'ascii' ? workstation.length : workstation.length * 2, 46);
+ buf.writeUInt32LE(dataPos, 48);
+ dataPos += buf.write(workstation, dataPos, type2Message.encoding);
+ if (type2Message.version === 2) {
+ //session key security buffer
+ buf.writeUInt16LE(0, 52);
+ buf.writeUInt16LE(0, 54);
+ buf.writeUInt32LE(0, 56);
+ //flags
+ buf.writeUInt32LE(type2Message.flags, 60);
+ }
+ return 'NTLM ' + buf.toString('base64', 0, dataPos);
+}
+module.exports = {
+ createType1Message: createType1Message,
+ decodeType2Message: decodeType2Message,
+ createType3Message: createType3Message
+};
+//# sourceMappingURL=ntlm.js.map
\ No newline at end of file
diff --git a/server/modules/axios-ntlm/lib/ntlmClient.js b/server/modules/axios-ntlm/lib/ntlmClient.js
new file mode 100644
index 000000000..682de5f9a
--- /dev/null
+++ b/server/modules/axios-ntlm/lib/ntlmClient.js
@@ -0,0 +1,127 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+var __generator = (this && this.__generator) || function (thisArg, body) {
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ function verb(n) { return function (v) { return step([n, v]); }; }
+ function step(op) {
+ if (f) throw new TypeError("Generator is already executing.");
+ while (_) try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+ if (y = 0, t) op = [op[0] & 2, t.value];
+ switch (op[0]) {
+ case 0: case 1: t = op; break;
+ case 4: _.label++; return { value: op[1], done: false };
+ case 5: _.label++; y = op[1]; op = [0]; continue;
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+ if (t[2]) _.ops.pop();
+ _.trys.pop(); continue;
+ }
+ op = body.call(thisArg, _);
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+ }
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.NtlmClient = void 0;
+var axios_1 = __importDefault(require("axios"));
+var ntlm = __importStar(require("./ntlm"));
+var https = __importStar(require("https"));
+var http = __importStar(require("http"));
+var dev_null_1 = __importDefault(require("dev-null"));
+/**
+* @param credentials An NtlmCredentials object containing the username and password
+* @param AxiosConfig The Axios config for the instance you wish to create
+*
+* @returns This function returns an axios instance configured to use the provided credentials
+*/
+function NtlmClient(credentials, AxiosConfig) {
+ var _this = this;
+ var config = AxiosConfig !== null && AxiosConfig !== void 0 ? AxiosConfig : {};
+ if (!config.httpAgent) {
+ config.httpAgent = new http.Agent({ keepAlive: true });
+ }
+ if (!config.httpsAgent) {
+ config.httpsAgent = new https.Agent({ keepAlive: true });
+ }
+ var client = axios_1.default.create(config);
+ client.interceptors.response.use(function (response) {
+ return response;
+ }, function (err) { return __awaiter(_this, void 0, void 0, function () {
+ var error, t1Msg, t2Msg, t3Msg, stream_1;
+ var _a;
+ return __generator(this, function (_b) {
+ switch (_b.label) {
+ case 0:
+ error = err.response;
+ if (!(error && error.status === 401
+ && error.headers['www-authenticate']
+ && error.headers['www-authenticate'].includes('NTLM'))) return [3 /*break*/, 3];
+ // This length check is a hack because SharePoint is awkward and will
+ // include the Negotiate option when responding with the T2 message
+ // There is nore we could do to ensure we are processing correctly,
+ // but this is the easiest option for now
+ if (error.headers['www-authenticate'].length < 50) {
+ t1Msg = ntlm.createType1Message(credentials.workstation, credentials.domain);
+ error.config.headers["Authorization"] = t1Msg;
+ }
+ else {
+ t2Msg = ntlm.decodeType2Message((error.headers['www-authenticate'].match(/^NTLM\s+(.+?)(,|\s+|$)/) || [])[1]);
+ t3Msg = ntlm.createType3Message(t2Msg, credentials.username, credentials.password, credentials.workstation, credentials.domain);
+ error.config.headers["X-retry"] = "false";
+ error.config.headers["Authorization"] = t3Msg;
+ }
+ if (!(error.config.responseType === "stream")) return [3 /*break*/, 2];
+ stream_1 = (_a = err.response) === null || _a === void 0 ? void 0 : _a.data;
+ if (!(stream_1 && !stream_1.readableEnded)) return [3 /*break*/, 2];
+ return [4 /*yield*/, new Promise(function (resolve) {
+ stream_1.pipe((0, dev_null_1.default)());
+ stream_1.once('close', resolve);
+ })];
+ case 1:
+ _b.sent();
+ _b.label = 2;
+ case 2: return [2 /*return*/, client(error.config)];
+ case 3: throw err;
+ }
+ });
+ }); });
+ return client;
+}
+exports.NtlmClient = NtlmClient;
+//# sourceMappingURL=ntlmClient.js.map
\ No newline at end of file
diff --git a/server/monitor-conditions/evaluator.js b/server/monitor-conditions/evaluator.js
new file mode 100644
index 000000000..3860a3325
--- /dev/null
+++ b/server/monitor-conditions/evaluator.js
@@ -0,0 +1,71 @@
+const { ConditionExpressionGroup, ConditionExpression, LOGICAL } = require("./expression");
+const { operatorMap } = require("./operators");
+
+/**
+ * @param {ConditionExpression} expression Expression to evaluate
+ * @param {object} context Context to evaluate against; These are values for variables in the expression
+ * @returns {boolean} Whether the expression evaluates true or false
+ * @throws {Error}
+ */
+function evaluateExpression(expression, context) {
+ /**
+ * @type {import("./operators").ConditionOperator|null}
+ */
+ const operator = operatorMap.get(expression.operator) || null;
+ if (operator === null) {
+ throw new Error("Unexpected expression operator ID '" + expression.operator + "'. Expected one of [" + operatorMap.keys().join(",") + "]");
+ }
+
+ if (!Object.prototype.hasOwnProperty.call(context, expression.variable)) {
+ throw new Error("Variable missing in context: " + expression.variable);
+ }
+
+ return operator.test(context[expression.variable], expression.value);
+}
+
+/**
+ * @param {ConditionExpressionGroup} group Group of expressions to evaluate
+ * @param {object} context Context to evaluate against; These are values for variables in the expression
+ * @returns {boolean} Whether the group evaluates true or false
+ * @throws {Error}
+ */
+function evaluateExpressionGroup(group, context) {
+ if (!group.children.length) {
+ throw new Error("ConditionExpressionGroup must contain at least one child.");
+ }
+
+ let result = null;
+
+ for (const child of group.children) {
+ let childResult;
+
+ if (child instanceof ConditionExpression) {
+ childResult = evaluateExpression(child, context);
+ } else if (child instanceof ConditionExpressionGroup) {
+ childResult = evaluateExpressionGroup(child, context);
+ } else {
+ throw new Error("Invalid child type in ConditionExpressionGroup. Expected ConditionExpression or ConditionExpressionGroup");
+ }
+
+ if (result === null) {
+ result = childResult; // Initialize result with the first child's result
+ } else if (child.andOr === LOGICAL.OR) {
+ result = result || childResult;
+ } else if (child.andOr === LOGICAL.AND) {
+ result = result && childResult;
+ } else {
+ throw new Error("Invalid logical operator in child of ConditionExpressionGroup. Expected 'and' or 'or'. Got '" + group.andOr + "'");
+ }
+ }
+
+ if (result === null) {
+ throw new Error("ConditionExpressionGroup did not result in a boolean.");
+ }
+
+ return result;
+}
+
+module.exports = {
+ evaluateExpression,
+ evaluateExpressionGroup,
+};
diff --git a/server/monitor-conditions/expression.js b/server/monitor-conditions/expression.js
new file mode 100644
index 000000000..1e7036959
--- /dev/null
+++ b/server/monitor-conditions/expression.js
@@ -0,0 +1,111 @@
+/**
+ * @readonly
+ * @enum {string}
+ */
+const LOGICAL = {
+ AND: "and",
+ OR: "or",
+};
+
+/**
+ * Recursively processes an array of raw condition objects and populates the given parent group with
+ * corresponding ConditionExpression or ConditionExpressionGroup instances.
+ * @param {Array} conditions Array of raw condition objects, where each object represents either a group or an expression.
+ * @param {ConditionExpressionGroup} parentGroup The parent group to which the instantiated ConditionExpression or ConditionExpressionGroup objects will be added.
+ * @returns {void}
+ */
+function processMonitorConditions(conditions, parentGroup) {
+ conditions.forEach(condition => {
+ const andOr = condition.andOr === LOGICAL.OR ? LOGICAL.OR : LOGICAL.AND;
+
+ if (condition.type === "group") {
+ const group = new ConditionExpressionGroup([], andOr);
+
+ // Recursively process the group's children
+ processMonitorConditions(condition.children, group);
+
+ parentGroup.children.push(group);
+ } else if (condition.type === "expression") {
+ const expression = new ConditionExpression(condition.variable, condition.operator, condition.value, andOr);
+ parentGroup.children.push(expression);
+ }
+ });
+}
+
+class ConditionExpressionGroup {
+ /**
+ * @type {ConditionExpressionGroup[]|ConditionExpression[]} Groups and/or expressions to test
+ */
+ children = [];
+
+ /**
+ * @type {LOGICAL} Connects group result with previous group/expression results
+ */
+ andOr;
+
+ /**
+ * @param {ConditionExpressionGroup[]|ConditionExpression[]} children Groups and/or expressions to test
+ * @param {LOGICAL} andOr Connects group result with previous group/expression results
+ */
+ constructor(children = [], andOr = LOGICAL.AND) {
+ this.children = children;
+ this.andOr = andOr;
+ }
+
+ /**
+ * @param {Monitor} monitor Monitor instance
+ * @returns {ConditionExpressionGroup|null} A ConditionExpressionGroup with the Monitor's conditions
+ */
+ static fromMonitor(monitor) {
+ const conditions = JSON.parse(monitor.conditions);
+ if (conditions.length === 0) {
+ return null;
+ }
+
+ const root = new ConditionExpressionGroup();
+ processMonitorConditions(conditions, root);
+
+ return root;
+ }
+}
+
+class ConditionExpression {
+ /**
+ * @type {string} ID of variable
+ */
+ variable;
+
+ /**
+ * @type {string} ID of operator
+ */
+ operator;
+
+ /**
+ * @type {string} Value to test with the operator
+ */
+ value;
+
+ /**
+ * @type {LOGICAL} Connects expression result with previous group/expression results
+ */
+ andOr;
+
+ /**
+ * @param {string} variable ID of variable to test against
+ * @param {string} operator ID of operator to test the variable with
+ * @param {string} value Value to test with the operator
+ * @param {LOGICAL} andOr Connects expression result with previous group/expression results
+ */
+ constructor(variable, operator, value, andOr = LOGICAL.AND) {
+ this.variable = variable;
+ this.operator = operator;
+ this.value = value;
+ this.andOr = andOr;
+ }
+}
+
+module.exports = {
+ LOGICAL,
+ ConditionExpressionGroup,
+ ConditionExpression,
+};
diff --git a/server/monitor-conditions/operators.js b/server/monitor-conditions/operators.js
new file mode 100644
index 000000000..d900dff9d
--- /dev/null
+++ b/server/monitor-conditions/operators.js
@@ -0,0 +1,318 @@
+class ConditionOperator {
+ id = undefined;
+ caption = undefined;
+
+ /**
+ * @type {mixed} variable
+ * @type {mixed} value
+ */
+ test(variable, value) {
+ throw new Error("You need to override test()");
+ }
+}
+
+const OP_STR_EQUALS = "equals";
+
+const OP_STR_NOT_EQUALS = "not_equals";
+
+const OP_CONTAINS = "contains";
+
+const OP_NOT_CONTAINS = "not_contains";
+
+const OP_STARTS_WITH = "starts_with";
+
+const OP_NOT_STARTS_WITH = "not_starts_with";
+
+const OP_ENDS_WITH = "ends_with";
+
+const OP_NOT_ENDS_WITH = "not_ends_with";
+
+const OP_NUM_EQUALS = "num_equals";
+
+const OP_NUM_NOT_EQUALS = "num_not_equals";
+
+const OP_LT = "lt";
+
+const OP_GT = "gt";
+
+const OP_LTE = "lte";
+
+const OP_GTE = "gte";
+
+/**
+ * Asserts a variable is equal to a value.
+ */
+class StringEqualsOperator extends ConditionOperator {
+ id = OP_STR_EQUALS;
+ caption = "equals";
+
+ /**
+ * @inheritdoc
+ */
+ test(variable, value) {
+ return variable === value;
+ }
+}
+
+/**
+ * Asserts a variable is not equal to a value.
+ */
+class StringNotEqualsOperator extends ConditionOperator {
+ id = OP_STR_NOT_EQUALS;
+ caption = "not equals";
+
+ /**
+ * @inheritdoc
+ */
+ test(variable, value) {
+ return variable !== value;
+ }
+}
+
+/**
+ * Asserts a variable contains a value.
+ * Handles both Array and String variable types.
+ */
+class ContainsOperator extends ConditionOperator {
+ id = OP_CONTAINS;
+ caption = "contains";
+
+ /**
+ * @inheritdoc
+ */
+ test(variable, value) {
+ if (Array.isArray(variable)) {
+ return variable.includes(value);
+ }
+
+ return variable.indexOf(value) !== -1;
+ }
+}
+
+/**
+ * Asserts a variable does not contain a value.
+ * Handles both Array and String variable types.
+ */
+class NotContainsOperator extends ConditionOperator {
+ id = OP_NOT_CONTAINS;
+ caption = "not contains";
+
+ /**
+ * @inheritdoc
+ */
+ test(variable, value) {
+ if (Array.isArray(variable)) {
+ return !variable.includes(value);
+ }
+
+ return variable.indexOf(value) === -1;
+ }
+}
+
+/**
+ * Asserts a variable starts with a value.
+ */
+class StartsWithOperator extends ConditionOperator {
+ id = OP_STARTS_WITH;
+ caption = "starts with";
+
+ /**
+ * @inheritdoc
+ */
+ test(variable, value) {
+ return variable.startsWith(value);
+ }
+}
+
+/**
+ * Asserts a variable does not start with a value.
+ */
+class NotStartsWithOperator extends ConditionOperator {
+ id = OP_NOT_STARTS_WITH;
+ caption = "not starts with";
+
+ /**
+ * @inheritdoc
+ */
+ test(variable, value) {
+ return !variable.startsWith(value);
+ }
+}
+
+/**
+ * Asserts a variable ends with a value.
+ */
+class EndsWithOperator extends ConditionOperator {
+ id = OP_ENDS_WITH;
+ caption = "ends with";
+
+ /**
+ * @inheritdoc
+ */
+ test(variable, value) {
+ return variable.endsWith(value);
+ }
+}
+
+/**
+ * Asserts a variable does not end with a value.
+ */
+class NotEndsWithOperator extends ConditionOperator {
+ id = OP_NOT_ENDS_WITH;
+ caption = "not ends with";
+
+ /**
+ * @inheritdoc
+ */
+ test(variable, value) {
+ return !variable.endsWith(value);
+ }
+}
+
+/**
+ * Asserts a numeric variable is equal to a value.
+ */
+class NumberEqualsOperator extends ConditionOperator {
+ id = OP_NUM_EQUALS;
+ caption = "equals";
+
+ /**
+ * @inheritdoc
+ */
+ test(variable, value) {
+ return variable === Number(value);
+ }
+}
+
+/**
+ * Asserts a numeric variable is not equal to a value.
+ */
+class NumberNotEqualsOperator extends ConditionOperator {
+ id = OP_NUM_NOT_EQUALS;
+ caption = "not equals";
+
+ /**
+ * @inheritdoc
+ */
+ test(variable, value) {
+ return variable !== Number(value);
+ }
+}
+
+/**
+ * Asserts a variable is less than a value.
+ */
+class LessThanOperator extends ConditionOperator {
+ id = OP_LT;
+ caption = "less than";
+
+ /**
+ * @inheritdoc
+ */
+ test(variable, value) {
+ return variable < Number(value);
+ }
+}
+
+/**
+ * Asserts a variable is greater than a value.
+ */
+class GreaterThanOperator extends ConditionOperator {
+ id = OP_GT;
+ caption = "greater than";
+
+ /**
+ * @inheritdoc
+ */
+ test(variable, value) {
+ return variable > Number(value);
+ }
+}
+
+/**
+ * Asserts a variable is less than or equal to a value.
+ */
+class LessThanOrEqualToOperator extends ConditionOperator {
+ id = OP_LTE;
+ caption = "less than or equal to";
+
+ /**
+ * @inheritdoc
+ */
+ test(variable, value) {
+ return variable <= Number(value);
+ }
+}
+
+/**
+ * Asserts a variable is greater than or equal to a value.
+ */
+class GreaterThanOrEqualToOperator extends ConditionOperator {
+ id = OP_GTE;
+ caption = "greater than or equal to";
+
+ /**
+ * @inheritdoc
+ */
+ test(variable, value) {
+ return variable >= Number(value);
+ }
+}
+
+const operatorMap = new Map([
+ [ OP_STR_EQUALS, new StringEqualsOperator ],
+ [ OP_STR_NOT_EQUALS, new StringNotEqualsOperator ],
+ [ OP_CONTAINS, new ContainsOperator ],
+ [ OP_NOT_CONTAINS, new NotContainsOperator ],
+ [ OP_STARTS_WITH, new StartsWithOperator ],
+ [ OP_NOT_STARTS_WITH, new NotStartsWithOperator ],
+ [ OP_ENDS_WITH, new EndsWithOperator ],
+ [ OP_NOT_ENDS_WITH, new NotEndsWithOperator ],
+ [ OP_NUM_EQUALS, new NumberEqualsOperator ],
+ [ OP_NUM_NOT_EQUALS, new NumberNotEqualsOperator ],
+ [ OP_LT, new LessThanOperator ],
+ [ OP_GT, new GreaterThanOperator ],
+ [ OP_LTE, new LessThanOrEqualToOperator ],
+ [ OP_GTE, new GreaterThanOrEqualToOperator ],
+]);
+
+const defaultStringOperators = [
+ operatorMap.get(OP_STR_EQUALS),
+ operatorMap.get(OP_STR_NOT_EQUALS),
+ operatorMap.get(OP_CONTAINS),
+ operatorMap.get(OP_NOT_CONTAINS),
+ operatorMap.get(OP_STARTS_WITH),
+ operatorMap.get(OP_NOT_STARTS_WITH),
+ operatorMap.get(OP_ENDS_WITH),
+ operatorMap.get(OP_NOT_ENDS_WITH)
+];
+
+const defaultNumberOperators = [
+ operatorMap.get(OP_NUM_EQUALS),
+ operatorMap.get(OP_NUM_NOT_EQUALS),
+ operatorMap.get(OP_LT),
+ operatorMap.get(OP_GT),
+ operatorMap.get(OP_LTE),
+ operatorMap.get(OP_GTE)
+];
+
+module.exports = {
+ OP_STR_EQUALS,
+ OP_STR_NOT_EQUALS,
+ OP_CONTAINS,
+ OP_NOT_CONTAINS,
+ OP_STARTS_WITH,
+ OP_NOT_STARTS_WITH,
+ OP_ENDS_WITH,
+ OP_NOT_ENDS_WITH,
+ OP_NUM_EQUALS,
+ OP_NUM_NOT_EQUALS,
+ OP_LT,
+ OP_GT,
+ OP_LTE,
+ OP_GTE,
+ operatorMap,
+ defaultStringOperators,
+ defaultNumberOperators,
+ ConditionOperator,
+};
diff --git a/server/monitor-conditions/variables.js b/server/monitor-conditions/variables.js
new file mode 100644
index 000000000..af98d2f29
--- /dev/null
+++ b/server/monitor-conditions/variables.js
@@ -0,0 +1,31 @@
+/**
+ * Represents a variable used in a condition and the set of operators that can be applied to this variable.
+ *
+ * A `ConditionVariable` holds the ID of the variable and a list of operators that define how this variable can be evaluated
+ * in conditions. For example, if the variable is a request body or a specific field in a request, the operators can include
+ * operations such as equality checks, comparisons, or other custom evaluations.
+ */
+class ConditionVariable {
+ /**
+ * @type {string}
+ */
+ id;
+
+ /**
+ * @type {import("./operators").ConditionOperator[]}
+ */
+ operators = {};
+
+ /**
+ * @param {string} id ID of variable
+ * @param {import("./operators").ConditionOperator[]} operators Operators the condition supports
+ */
+ constructor(id, operators = []) {
+ this.id = id;
+ this.operators = operators;
+ }
+}
+
+module.exports = {
+ ConditionVariable,
+};
diff --git a/server/monitor-types/dns.js b/server/monitor-types/dns.js
index d4cd02ab5..5a47e4591 100644
--- a/server/monitor-types/dns.js
+++ b/server/monitor-types/dns.js
@@ -1,13 +1,22 @@
const { MonitorType } = require("./monitor-type");
-const { UP } = require("../../src/util");
+const { UP, DOWN } = require("../../src/util");
const dayjs = require("dayjs");
const { dnsResolve } = require("../util-server");
const { R } = require("redbean-node");
+const { ConditionVariable } = require("../monitor-conditions/variables");
+const { defaultStringOperators } = require("../monitor-conditions/operators");
+const { ConditionExpressionGroup } = require("../monitor-conditions/expression");
+const { evaluateExpressionGroup } = require("../monitor-conditions/evaluator");
class DnsMonitorType extends MonitorType {
-
name = "dns";
+ supportsConditions = true;
+
+ conditionVariables = [
+ new ConditionVariable("record", defaultStringOperators ),
+ ];
+
/**
* @inheritdoc
*/
@@ -18,28 +27,52 @@ class DnsMonitorType extends MonitorType {
let dnsRes = await dnsResolve(monitor.hostname, monitor.dns_resolve_server, monitor.port, monitor.dns_resolve_type);
heartbeat.ping = dayjs().valueOf() - startTime;
- if (monitor.dns_resolve_type === "A" || monitor.dns_resolve_type === "AAAA" || monitor.dns_resolve_type === "TXT" || monitor.dns_resolve_type === "PTR") {
- dnsMessage += "Records: ";
- dnsMessage += dnsRes.join(" | ");
- } else if (monitor.dns_resolve_type === "CNAME" || monitor.dns_resolve_type === "PTR") {
- dnsMessage += dnsRes[0];
- } else if (monitor.dns_resolve_type === "CAA") {
- dnsMessage += dnsRes[0].issue;
- } else if (monitor.dns_resolve_type === "MX") {
- dnsRes.forEach(record => {
- dnsMessage += `Hostname: ${record.exchange} - Priority: ${record.priority} | `;
- });
- dnsMessage = dnsMessage.slice(0, -2);
- } else if (monitor.dns_resolve_type === "NS") {
- dnsMessage += "Servers: ";
- dnsMessage += dnsRes.join(" | ");
- } else if (monitor.dns_resolve_type === "SOA") {
- dnsMessage += `NS-Name: ${dnsRes.nsname} | Hostmaster: ${dnsRes.hostmaster} | Serial: ${dnsRes.serial} | Refresh: ${dnsRes.refresh} | Retry: ${dnsRes.retry} | Expire: ${dnsRes.expire} | MinTTL: ${dnsRes.minttl}`;
- } else if (monitor.dns_resolve_type === "SRV") {
- dnsRes.forEach(record => {
- dnsMessage += `Name: ${record.name} | Port: ${record.port} | Priority: ${record.priority} | Weight: ${record.weight} | `;
- });
- dnsMessage = dnsMessage.slice(0, -2);
+ const conditions = ConditionExpressionGroup.fromMonitor(monitor);
+ let conditionsResult = true;
+ const handleConditions = (data) => conditions ? evaluateExpressionGroup(conditions, data) : true;
+
+ switch (monitor.dns_resolve_type) {
+ case "A":
+ case "AAAA":
+ case "PTR":
+ dnsMessage = `Records: ${dnsRes.join(" | ")}`;
+ conditionsResult = dnsRes.some(record => handleConditions({ record }));
+ break;
+
+ case "TXT":
+ dnsMessage = `Records: ${dnsRes.join(" | ")}`;
+ conditionsResult = dnsRes.flat().some(record => handleConditions({ record }));
+ break;
+
+ case "CNAME":
+ dnsMessage = dnsRes[0];
+ conditionsResult = handleConditions({ record: dnsRes[0] });
+ break;
+
+ case "CAA":
+ dnsMessage = dnsRes[0].issue;
+ conditionsResult = handleConditions({ record: dnsRes[0].issue });
+ break;
+
+ case "MX":
+ dnsMessage = dnsRes.map(record => `Hostname: ${record.exchange} - Priority: ${record.priority}`).join(" | ");
+ conditionsResult = dnsRes.some(record => handleConditions({ record: record.exchange }));
+ break;
+
+ case "NS":
+ dnsMessage = `Servers: ${dnsRes.join(" | ")}`;
+ conditionsResult = dnsRes.some(record => handleConditions({ record }));
+ break;
+
+ case "SOA":
+ dnsMessage = `NS-Name: ${dnsRes.nsname} | Hostmaster: ${dnsRes.hostmaster} | Serial: ${dnsRes.serial} | Refresh: ${dnsRes.refresh} | Retry: ${dnsRes.retry} | Expire: ${dnsRes.expire} | MinTTL: ${dnsRes.minttl}`;
+ conditionsResult = handleConditions({ record: dnsRes.nsname });
+ break;
+
+ case "SRV":
+ dnsMessage = dnsRes.map(record => `Name: ${record.name} | Port: ${record.port} | Priority: ${record.priority} | Weight: ${record.weight}`).join(" | ");
+ conditionsResult = dnsRes.some(record => handleConditions({ record: record.name }));
+ break;
}
if (monitor.dns_last_result !== dnsMessage && dnsMessage !== undefined) {
@@ -47,7 +80,7 @@ class DnsMonitorType extends MonitorType {
}
heartbeat.msg = dnsMessage;
- heartbeat.status = UP;
+ heartbeat.status = conditionsResult ? UP : DOWN;
}
}
diff --git a/server/monitor-types/group.js b/server/monitor-types/group.js
new file mode 100644
index 000000000..28d0443d4
--- /dev/null
+++ b/server/monitor-types/group.js
@@ -0,0 +1,49 @@
+const { UP, PENDING, DOWN } = require("../../src/util");
+const { MonitorType } = require("./monitor-type");
+const Monitor = require("../model/monitor");
+
+class GroupMonitorType extends MonitorType {
+ name = "group";
+
+ /**
+ * @inheritdoc
+ */
+ async check(monitor, heartbeat, _server) {
+ const children = await Monitor.getChildren(monitor.id);
+
+ if (children.length > 0) {
+ heartbeat.status = UP;
+ heartbeat.msg = "All children up and running";
+ for (const child of children) {
+ if (!child.active) {
+ // Ignore inactive childs
+ continue;
+ }
+ const lastBeat = await Monitor.getPreviousHeartbeat(child.id);
+
+ // Only change state if the monitor is in worse conditions then the ones before
+ // lastBeat.status could be null
+ if (!lastBeat) {
+ heartbeat.status = PENDING;
+ } else if (heartbeat.status === UP && (lastBeat.status === PENDING || lastBeat.status === DOWN)) {
+ heartbeat.status = lastBeat.status;
+ } else if (heartbeat.status === PENDING && lastBeat.status === DOWN) {
+ heartbeat.status = lastBeat.status;
+ }
+ }
+
+ if (heartbeat.status !== UP) {
+ heartbeat.msg = "Child inaccessible";
+ }
+ } else {
+ // Set status pending if group is empty
+ heartbeat.status = PENDING;
+ heartbeat.msg = "Group empty";
+ }
+ }
+}
+
+module.exports = {
+ GroupMonitorType,
+};
+
diff --git a/server/monitor-types/mongodb.js b/server/monitor-types/mongodb.js
new file mode 100644
index 000000000..73747db9c
--- /dev/null
+++ b/server/monitor-types/mongodb.js
@@ -0,0 +1,63 @@
+const { MonitorType } = require("./monitor-type");
+const { UP } = require("../../src/util");
+const { MongoClient } = require("mongodb");
+const jsonata = require("jsonata");
+
+class MongodbMonitorType extends MonitorType {
+ name = "mongodb";
+
+ /**
+ * @inheritdoc
+ */
+ async check(monitor, heartbeat, _server) {
+ let command = { "ping": 1 };
+ if (monitor.databaseQuery) {
+ command = JSON.parse(monitor.databaseQuery);
+ }
+
+ let result = await this.runMongodbCommand(monitor.databaseConnectionString, command);
+
+ if (result["ok"] !== 1) {
+ throw new Error("MongoDB command failed");
+ } else {
+ heartbeat.msg = "Command executed successfully";
+ }
+
+ if (monitor.jsonPath) {
+ let expression = jsonata(monitor.jsonPath);
+ result = await expression.evaluate(result);
+ if (result) {
+ heartbeat.msg = "Command executed successfully and the jsonata expression produces a result.";
+ } else {
+ throw new Error("Queried value not found.");
+ }
+ }
+
+ if (monitor.expectedValue) {
+ if (result.toString() === monitor.expectedValue) {
+ heartbeat.msg = "Command executed successfully and expected value was found";
+ } else {
+ throw new Error("Query executed, but value is not equal to expected value, value was: [" + JSON.stringify(result) + "]");
+ }
+ }
+
+ heartbeat.status = UP;
+ }
+
+ /**
+ * Connect to and run MongoDB command on a MongoDB database
+ * @param {string} connectionString The database connection string
+ * @param {object} command MongoDB command to run on the database
+ * @returns {Promise<(string[] | object[] | object)>} Response from server
+ */
+ async runMongodbCommand(connectionString, command) {
+ let client = await MongoClient.connect(connectionString);
+ let result = await client.db().command(command);
+ await client.close();
+ return result;
+ }
+}
+
+module.exports = {
+ MongodbMonitorType,
+};
diff --git a/server/monitor-types/monitor-type.js b/server/monitor-types/monitor-type.js
index eb75307b2..8f3cbcac4 100644
--- a/server/monitor-types/monitor-type.js
+++ b/server/monitor-types/monitor-type.js
@@ -1,6 +1,19 @@
class MonitorType {
name = undefined;
+ /**
+ * Whether or not this type supports monitor conditions. Controls UI visibility in monitor form.
+ * @type {boolean}
+ */
+ supportsConditions = false;
+
+ /**
+ * Variables supported by this type. e.g. an HTTP type could have a "response_code" variable to test against.
+ * This property controls the choices displayed in the monitor edit form.
+ * @type {import("../monitor-conditions/variables").ConditionVariable[]}
+ */
+ conditionVariables = [];
+
/**
* Run the monitoring check on the given monitor
* @param {Monitor} monitor Monitor to check
@@ -11,7 +24,6 @@ class MonitorType {
async check(monitor, heartbeat, server) {
throw new Error("You need to override check()");
}
-
}
module.exports = {
diff --git a/server/monitor-types/mqtt.js b/server/monitor-types/mqtt.js
index 9b2db43d0..ad734ce8e 100644
--- a/server/monitor-types/mqtt.js
+++ b/server/monitor-types/mqtt.js
@@ -4,15 +4,10 @@ const mqtt = require("mqtt");
const jsonata = require("jsonata");
class MqttMonitorType extends MonitorType {
-
name = "mqtt";
/**
- * Run the monitoring check on the MQTT monitor
- * @param {Monitor} monitor Monitor to check
- * @param {Heartbeat} heartbeat Monitor heartbeat to update
- * @param {UptimeKumaServer} server Uptime Kuma server
- * @returns {Promise}
+ * @inheritdoc
*/
async check(monitor, heartbeat, server) {
const receivedMessage = await this.mqttAsync(monitor.hostname, monitor.mqttTopic, {
diff --git a/server/monitor-types/rabbitmq.js b/server/monitor-types/rabbitmq.js
new file mode 100644
index 000000000..165a0ed91
--- /dev/null
+++ b/server/monitor-types/rabbitmq.js
@@ -0,0 +1,67 @@
+const { MonitorType } = require("./monitor-type");
+const { log, UP, DOWN } = require("../../src/util");
+const { axiosAbortSignal } = require("../util-server");
+const axios = require("axios");
+
+class RabbitMqMonitorType extends MonitorType {
+ name = "rabbitmq";
+
+ /**
+ * @inheritdoc
+ */
+ async check(monitor, heartbeat, server) {
+ let baseUrls = [];
+ try {
+ baseUrls = JSON.parse(monitor.rabbitmqNodes);
+ } catch (error) {
+ throw new Error("Invalid RabbitMQ Nodes");
+ }
+
+ heartbeat.status = DOWN;
+ for (let baseUrl of baseUrls) {
+ try {
+ // Without a trailing slash, path in baseUrl will be removed. https://example.com/api -> https://example.com
+ if ( !baseUrl.endsWith("/") ) {
+ baseUrl += "/";
+ }
+ const options = {
+ // Do not start with slash, it will strip the trailing slash from baseUrl
+ url: new URL("api/health/checks/alarms/", baseUrl).href,
+ method: "get",
+ timeout: monitor.timeout * 1000,
+ headers: {
+ "Accept": "application/json",
+ "Authorization": "Basic " + Buffer.from(`${monitor.rabbitmqUsername || ""}:${monitor.rabbitmqPassword || ""}`).toString("base64"),
+ },
+ signal: axiosAbortSignal((monitor.timeout + 10) * 1000),
+ // Capture reason for 503 status
+ validateStatus: (status) => status === 200 || status === 503,
+ };
+ log.debug("monitor", `[${monitor.name}] Axios Request: ${JSON.stringify(options)}`);
+ const res = await axios.request(options);
+ log.debug("monitor", `[${monitor.name}] Axios Response: status=${res.status} body=${JSON.stringify(res.data)}`);
+ if (res.status === 200) {
+ heartbeat.status = UP;
+ heartbeat.msg = "OK";
+ break;
+ } else if (res.status === 503) {
+ heartbeat.msg = res.data.reason;
+ } else {
+ heartbeat.msg = `${res.status} - ${res.statusText}`;
+ }
+ } catch (error) {
+ if (axios.isCancel(error)) {
+ heartbeat.msg = "Request timed out";
+ log.debug("monitor", `[${monitor.name}] Request timed out`);
+ } else {
+ log.debug("monitor", `[${monitor.name}] Axios Error: ${JSON.stringify(error.message)}`);
+ heartbeat.msg = error.message;
+ }
+ }
+ }
+ }
+}
+
+module.exports = {
+ RabbitMqMonitorType,
+};
diff --git a/server/monitor-types/real-browser-monitor-type.js b/server/monitor-types/real-browser-monitor-type.js
index 23493b7cb..2a2871d2c 100644
--- a/server/monitor-types/real-browser-monitor-type.js
+++ b/server/monitor-types/real-browser-monitor-type.js
@@ -10,6 +10,10 @@ const jwt = require("jsonwebtoken");
const config = require("../config");
const { RemoteBrowser } = require("../remote-browser");
+/**
+ * Cached instance of a browser
+ * @type {import ("playwright-core").Browser}
+ */
let browser = null;
let allowedList = [];
@@ -71,10 +75,12 @@ async function isAllowedChromeExecutable(executablePath) {
/**
* Get the current instance of the browser. If there isn't one, create
* it.
- * @returns {Promise} The browser
+ * @returns {Promise} The browser
*/
async function getBrowser() {
- if (!browser) {
+ if (browser && browser.isConnected()) {
+ return browser;
+ } else {
let executablePath = await Settings.get("chromeExecutable");
executablePath = await prepareChromeExecutable(executablePath);
@@ -83,8 +89,9 @@ async function getBrowser() {
//headless: false,
executablePath,
});
+
+ return browser;
}
- return browser;
}
/**
@@ -233,6 +240,14 @@ class RealBrowserMonitorType extends MonitorType {
const context = await browser.newContext();
const page = await context.newPage();
+ // Prevent Local File Inclusion
+ // Accept only http:// and https://
+ // https://github.com/louislam/uptime-kuma/security/advisories/GHSA-2qgm-m29m-cj2h
+ let url = new URL(monitor.url);
+ if (url.protocol !== "http:" && url.protocol !== "https:") {
+ throw new Error("Invalid url protocol, only http and https are allowed.");
+ }
+
const res = await page.goto(monitor.url, {
waitUntil: "networkidle",
timeout: monitor.interval * 1000 * 0.8,
diff --git a/server/monitor-types/snmp.js b/server/monitor-types/snmp.js
new file mode 100644
index 000000000..a1760fa3d
--- /dev/null
+++ b/server/monitor-types/snmp.js
@@ -0,0 +1,63 @@
+const { MonitorType } = require("./monitor-type");
+const { UP, log, evaluateJsonQuery } = require("../../src/util");
+const snmp = require("net-snmp");
+
+class SNMPMonitorType extends MonitorType {
+ name = "snmp";
+
+ /**
+ * @inheritdoc
+ */
+ async check(monitor, heartbeat, _server) {
+ let session;
+ try {
+ const sessionOptions = {
+ port: monitor.port || "161",
+ retries: monitor.maxretries,
+ timeout: monitor.timeout * 1000,
+ version: snmp.Version[monitor.snmpVersion],
+ };
+ session = snmp.createSession(monitor.hostname, monitor.radiusPassword, sessionOptions);
+
+ // Handle errors during session creation
+ session.on("error", (error) => {
+ throw new Error(`Error creating SNMP session: ${error.message}`);
+ });
+
+ const varbinds = await new Promise((resolve, reject) => {
+ session.get([ monitor.snmpOid ], (error, varbinds) => {
+ error ? reject(error) : resolve(varbinds);
+ });
+ });
+ log.debug("monitor", `SNMP: Received varbinds (Type: ${snmp.ObjectType[varbinds[0].type]} Value: ${varbinds[0].value})`);
+
+ if (varbinds.length === 0) {
+ throw new Error(`No varbinds returned from SNMP session (OID: ${monitor.snmpOid})`);
+ }
+
+ if (varbinds[0].type === snmp.ObjectType.NoSuchInstance) {
+ throw new Error(`The SNMP query returned that no instance exists for OID ${monitor.snmpOid}`);
+ }
+
+ // We restrict querying to one OID per monitor, therefore `varbinds[0]` will always contain the value we're interested in.
+ const value = varbinds[0].value;
+
+ const { status, response } = await evaluateJsonQuery(value, monitor.jsonPath, monitor.jsonPathOperator, monitor.expectedValue);
+
+ if (status) {
+ heartbeat.status = UP;
+ heartbeat.msg = `JSON query passes (comparing ${response} ${monitor.jsonPathOperator} ${monitor.expectedValue})`;
+ } else {
+ throw new Error(`JSON query does not pass (comparing ${response} ${monitor.jsonPathOperator} ${monitor.expectedValue})`);
+ }
+ } finally {
+ if (session) {
+ session.close();
+ }
+ }
+ }
+}
+
+module.exports = {
+ SNMPMonitorType,
+};
diff --git a/server/monitor-types/tailscale-ping.js b/server/monitor-types/tailscale-ping.js
index 5950cc21c..8537651cd 100644
--- a/server/monitor-types/tailscale-ping.js
+++ b/server/monitor-types/tailscale-ping.js
@@ -2,23 +2,13 @@ const { MonitorType } = require("./monitor-type");
const { UP } = require("../../src/util");
const childProcessAsync = require("promisify-child-process");
-/**
- * A TailscalePing class extends the MonitorType.
- * It runs Tailscale ping to monitor the status of a specific node.
- */
class TailscalePing extends MonitorType {
-
name = "tailscale-ping";
/**
- * Checks the ping status of the URL associated with the monitor.
- * It then parses the Tailscale ping command output to update the heatrbeat.
- * @param {object} monitor The monitor object associated with the check.
- * @param {object} heartbeat The heartbeat object to update.
- * @returns {Promise}
- * @throws Error if checking Tailscale ping encounters any error
+ * @inheritdoc
*/
- async check(monitor, heartbeat) {
+ async check(monitor, heartbeat, _server) {
try {
let tailscaleOutput = await this.runTailscalePing(monitor.hostname, monitor.interval);
this.parseTailscaleOutput(tailscaleOutput, heartbeat);
diff --git a/server/notification-providers/46elks.js b/server/notification-providers/46elks.js
new file mode 100644
index 000000000..4b15e9fad
--- /dev/null
+++ b/server/notification-providers/46elks.js
@@ -0,0 +1,35 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+
+class Elks extends NotificationProvider {
+ name = "Elks";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ const okMsg = "Sent Successfully.";
+ const url = "https://api.46elks.com/a1/sms";
+
+ try {
+ let data = new URLSearchParams();
+ data.append("from", notification.elksFromNumber);
+ data.append("to", notification.elksToNumber );
+ data.append("message", msg);
+
+ const config = {
+ headers: {
+ "Authorization": "Basic " + Buffer.from(`${notification.elksUsername}:${notification.elksAuthToken}`).toString("base64")
+ }
+ };
+
+ await axios.post(url, data, config);
+
+ return okMsg;
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+}
+
+module.exports = Elks;
diff --git a/server/notification-providers/aliyun-sms.js b/server/notification-providers/aliyun-sms.js
index ff38bd0d9..e18602bdc 100644
--- a/server/notification-providers/aliyun-sms.js
+++ b/server/notification-providers/aliyun-sms.js
@@ -17,7 +17,7 @@ class AliyunSMS extends NotificationProvider {
if (heartbeatJSON != null) {
let msgBody = JSON.stringify({
name: monitorJSON["name"],
- time: heartbeatJSON["time"],
+ time: heartbeatJSON["localDateTime"],
status: this.statusToString(heartbeatJSON["status"]),
msg: heartbeatJSON["msg"],
});
diff --git a/server/notification-providers/bitrix24.js b/server/notification-providers/bitrix24.js
new file mode 100644
index 000000000..ba12126c5
--- /dev/null
+++ b/server/notification-providers/bitrix24.js
@@ -0,0 +1,31 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+const { UP } = require("../../src/util");
+
+class Bitrix24 extends NotificationProvider {
+ name = "Bitrix24";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ const okMsg = "Sent Successfully.";
+
+ try {
+ const params = {
+ user_id: notification.bitrix24UserID,
+ message: "[B]Uptime Kuma[/B]",
+ "ATTACH[COLOR]": (heartbeatJSON ?? {})["status"] === UP ? "#b73419" : "#67b518",
+ "ATTACH[BLOCKS][0][MESSAGE]": msg
+ };
+
+ await axios.get(`${notification.bitrix24WebhookURL}/im.notify.system.add.json`, { params });
+ return okMsg;
+
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+}
+
+module.exports = Bitrix24;
diff --git a/server/notification-providers/call-me-bot.js b/server/notification-providers/call-me-bot.js
new file mode 100644
index 000000000..daa9ccdeb
--- /dev/null
+++ b/server/notification-providers/call-me-bot.js
@@ -0,0 +1,23 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+
+class CallMeBot extends NotificationProvider {
+ name = "CallMeBot";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ const okMsg = "Sent Successfully.";
+ try {
+ const url = new URL(notification.callMeBotEndpoint);
+ url.searchParams.set("text", msg);
+ await axios.get(url.toString());
+ return okMsg;
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+}
+
+module.exports = CallMeBot;
diff --git a/server/notification-providers/cellsynt.js b/server/notification-providers/cellsynt.js
new file mode 100644
index 000000000..e842237b6
--- /dev/null
+++ b/server/notification-providers/cellsynt.js
@@ -0,0 +1,39 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+
+class Cellsynt extends NotificationProvider {
+ name = "Cellsynt";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ const okMsg = "Sent Successfully.";
+ const data = {
+ // docs at https://www.cellsynt.com/en/sms/api-integration
+ params: {
+ "username": notification.cellsyntLogin,
+ "password": notification.cellsyntPassword,
+ "destination": notification.cellsyntDestination,
+ "text": msg.replace(/[^\x00-\x7F]/g, ""),
+ "originatortype": notification.cellsyntOriginatortype,
+ "originator": notification.cellsyntOriginator,
+ "allowconcat": notification.cellsyntAllowLongSMS ? 6 : 1
+ }
+ };
+ try {
+ const resp = await axios.post("https://se-1.cellsynt.net/sms.php", null, data);
+ if (resp.data == null ) {
+ throw new Error("Could not connect to Cellsynt, please try again.");
+ } else if (resp.data.includes("Error:")) {
+ resp.data = resp.data.replaceAll("Error:", "");
+ throw new Error(resp.data);
+ }
+ return okMsg;
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+}
+
+module.exports = Cellsynt;
diff --git a/server/notification-providers/dingding.js b/server/notification-providers/dingding.js
index 5e7f030b5..c66f270a7 100644
--- a/server/notification-providers/dingding.js
+++ b/server/notification-providers/dingding.js
@@ -19,6 +19,9 @@ class DingDing extends NotificationProvider {
markdown: {
title: `[${this.statusToString(heartbeatJSON["status"])}] ${monitorJSON["name"]}`,
text: `## [${this.statusToString(heartbeatJSON["status"])}] ${monitorJSON["name"]} \n> ${heartbeatJSON["msg"]}\n> Time (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`,
+ },
+ "at": {
+ "isAtAll": notification.mentioning === "everyone"
}
};
if (await this.sendToDingDing(notification, params)) {
@@ -62,7 +65,7 @@ class DingDing extends NotificationProvider {
if (result.data.errmsg === "ok") {
return true;
}
- return false;
+ throw new Error(result.data.errmsg);
}
/**
@@ -84,7 +87,6 @@ class DingDing extends NotificationProvider {
* @returns {string} Status
*/
statusToString(status) {
- // TODO: Move to notification-provider.js to avoid repetition in classes
switch (status) {
case DOWN:
return "DOWN";
diff --git a/server/notification-providers/discord.js b/server/notification-providers/discord.js
index f24d47252..9ea260410 100644
--- a/server/notification-providers/discord.js
+++ b/server/notification-providers/discord.js
@@ -13,6 +13,10 @@ class Discord extends NotificationProvider {
try {
const discordDisplayName = notification.discordUsername || "Uptime Kuma";
+ const webhookUrl = new URL(notification.discordWebhookUrl);
+ if (notification.discordChannelType === "postToThread") {
+ webhookUrl.searchParams.append("thread_id", notification.threadId);
+ }
// If heartbeatJSON is null, assume we're testing.
if (heartbeatJSON == null) {
@@ -20,30 +24,15 @@ class Discord extends NotificationProvider {
username: discordDisplayName,
content: msg,
};
- await axios.post(notification.discordWebhookUrl, discordtestdata);
+
+ if (notification.discordChannelType === "createNewForumPost") {
+ discordtestdata.thread_name = notification.postName;
+ }
+
+ await axios.post(webhookUrl.toString(), discordtestdata);
return okMsg;
}
- let address;
-
- switch (monitorJSON["type"]) {
- case "ping":
- address = monitorJSON["hostname"];
- break;
- case "port":
- case "dns":
- case "gamedig":
- case "steam":
- address = monitorJSON["hostname"];
- if (monitorJSON["port"]) {
- address += ":" + monitorJSON["port"];
- }
- break;
- default:
- address = monitorJSON["url"];
- break;
- }
-
// If heartbeatJSON is not null, we go into the normal alerting loop.
if (heartbeatJSON["status"] === DOWN) {
let discorddowndata = {
@@ -57,10 +46,10 @@ class Discord extends NotificationProvider {
name: "Service Name",
value: monitorJSON["name"],
},
- {
+ ...(!notification.disableUrl ? [{
name: monitorJSON["type"] === "push" ? "Service Type" : "Service URL",
- value: monitorJSON["type"] === "push" ? "Heartbeat" : address,
- },
+ value: this.extractAddress(monitorJSON),
+ }] : []),
{
name: `Time (${heartbeatJSON["timezone"]})`,
value: heartbeatJSON["localDateTime"],
@@ -72,12 +61,14 @@ class Discord extends NotificationProvider {
],
}],
};
-
+ if (notification.discordChannelType === "createNewForumPost") {
+ discorddowndata.thread_name = notification.postName;
+ }
if (notification.discordPrefixMessage) {
discorddowndata.content = notification.discordPrefixMessage;
}
- await axios.post(notification.discordWebhookUrl, discorddowndata);
+ await axios.post(webhookUrl.toString(), discorddowndata);
return okMsg;
} else if (heartbeatJSON["status"] === UP) {
@@ -92,10 +83,10 @@ class Discord extends NotificationProvider {
name: "Service Name",
value: monitorJSON["name"],
},
- {
+ ...(!notification.disableUrl ? [{
name: monitorJSON["type"] === "push" ? "Service Type" : "Service URL",
- value: monitorJSON["type"] === "push" ? "Heartbeat" : address,
- },
+ value: this.extractAddress(monitorJSON),
+ }] : []),
{
name: `Time (${heartbeatJSON["timezone"]})`,
value: heartbeatJSON["localDateTime"],
@@ -108,11 +99,15 @@ class Discord extends NotificationProvider {
}],
};
+ if (notification.discordChannelType === "createNewForumPost") {
+ discordupdata.thread_name = notification.postName;
+ }
+
if (notification.discordPrefixMessage) {
discordupdata.content = notification.discordPrefixMessage;
}
- await axios.post(notification.discordWebhookUrl, discordupdata);
+ await axios.post(webhookUrl.toString(), discordupdata);
return okMsg;
}
} catch (error) {
diff --git a/server/notification-providers/feishu.js b/server/notification-providers/feishu.js
index 23af69118..cd5331d2a 100644
--- a/server/notification-providers/feishu.js
+++ b/server/notification-providers/feishu.js
@@ -25,25 +25,29 @@ class Feishu extends NotificationProvider {
if (heartbeatJSON["status"] === DOWN) {
let downdata = {
- msg_type: "post",
- content: {
- post: {
- zh_cn: {
- title: "UptimeKuma Alert: [Down] " + monitorJSON["name"],
- content: [
- [
- {
- tag: "text",
- text:
- "[Down] " +
- heartbeatJSON["msg"] +
- `\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`
- },
- ],
- ],
- },
+ msg_type: "interactive",
+ card: {
+ config: {
+ update_multi: false,
+ wide_screen_mode: true,
},
- },
+ header: {
+ title: {
+ tag: "plain_text",
+ content: "UptimeKuma Alert: [Down] " + monitorJSON["name"],
+ },
+ template: "red",
+ },
+ elements: [
+ {
+ tag: "div",
+ text: {
+ tag: "lark_md",
+ content: getContent(heartbeatJSON),
+ },
+ }
+ ]
+ }
};
await axios.post(notification.feishuWebHookUrl, downdata);
return okMsg;
@@ -51,25 +55,29 @@ class Feishu extends NotificationProvider {
if (heartbeatJSON["status"] === UP) {
let updata = {
- msg_type: "post",
- content: {
- post: {
- zh_cn: {
- title: "UptimeKuma Alert: [Up] " + monitorJSON["name"],
- content: [
- [
- {
- tag: "text",
- text:
- "[Up] " +
- heartbeatJSON["msg"] +
- `\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`,
- },
- ],
- ],
- },
+ msg_type: "interactive",
+ card: {
+ config: {
+ update_multi: false,
+ wide_screen_mode: true,
},
- },
+ header: {
+ title: {
+ tag: "plain_text",
+ content: "UptimeKuma Alert: [UP] " + monitorJSON["name"],
+ },
+ template: "green",
+ },
+ elements: [
+ {
+ tag: "div",
+ text: {
+ tag: "lark_md",
+ content: getContent(heartbeatJSON),
+ },
+ },
+ ]
+ }
};
await axios.post(notification.feishuWebHookUrl, updata);
return okMsg;
@@ -80,4 +88,17 @@ class Feishu extends NotificationProvider {
}
}
+/**
+ * Get content
+ * @param {?object} heartbeatJSON Heartbeat details (For Up/Down only)
+ * @returns {string} Return Successful Message
+ */
+function getContent(heartbeatJSON) {
+ return [
+ "**Message**: " + heartbeatJSON["msg"],
+ "**Ping**: " + (heartbeatJSON["ping"] == null ? "N/A" : heartbeatJSON["ping"] + " ms"),
+ `**Time (${heartbeatJSON["timezone"]})**: ${heartbeatJSON["localDateTime"]}`
+ ].join("\n");
+}
+
module.exports = Feishu;
diff --git a/server/notification-providers/flashduty.js b/server/notification-providers/flashduty.js
index 83ef27b5c..c340ed06f 100644
--- a/server/notification-providers/flashduty.js
+++ b/server/notification-providers/flashduty.js
@@ -62,6 +62,15 @@ class FlashDuty extends NotificationProvider {
* @returns {string} Success message
*/
async postNotification(notification, title, body, monitorInfo, eventStatus) {
+ let labels = {
+ resource: this.genMonitorUrl(monitorInfo),
+ check: monitorInfo.name,
+ };
+ if (monitorInfo.tags && monitorInfo.tags.length > 0) {
+ for (let tag of monitorInfo.tags) {
+ labels[tag.name] = tag.value;
+ }
+ }
const options = {
method: "POST",
url: "https://api.flashcat.cloud/event/push/alert/standard?integration_key=" + notification.flashdutyIntegrationKey,
@@ -71,9 +80,7 @@ class FlashDuty extends NotificationProvider {
title,
event_status: eventStatus || "Info",
alert_key: String(monitorInfo.id) || Math.random().toString(36).substring(7),
- labels: monitorInfo?.tags?.reduce((acc, item) => ({ ...acc,
- [item.name]: item.value
- }), { resource: this.genMonitorUrl(monitorInfo) }),
+ labels,
}
};
diff --git a/server/notification-providers/google-chat.js b/server/notification-providers/google-chat.js
index 0b72fea95..9e94844d7 100644
--- a/server/notification-providers/google-chat.js
+++ b/server/notification-providers/google-chat.js
@@ -72,6 +72,7 @@ class GoogleChat extends NotificationProvider {
// construct json data
let data = {
+ fallbackText: chatHeader["title"],
cardsV2: [
{
card: {
diff --git a/server/notification-providers/gtx-messaging.js b/server/notification-providers/gtx-messaging.js
new file mode 100644
index 000000000..1ff97d11f
--- /dev/null
+++ b/server/notification-providers/gtx-messaging.js
@@ -0,0 +1,33 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+
+class GtxMessaging extends NotificationProvider {
+ name = "gtxmessaging";
+
+ /**
+ * @inheritDoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ const okMsg = "Sent Successfully.";
+
+ // The UP/DOWN symbols will be replaced with `???` by gtx-messaging
+ const text = msg.replaceAll("🔴 ", "").replaceAll("✅ ", "");
+
+ try {
+ const data = new URLSearchParams();
+ data.append("from", notification.gtxMessagingFrom.trim());
+ data.append("to", notification.gtxMessagingTo.trim());
+ data.append("text", text);
+
+ const url = `https://rest.gtx-messaging.net/smsc/sendsms/${notification.gtxMessagingApiKey}/json`;
+
+ await axios.post(url, data);
+
+ return okMsg;
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+}
+
+module.exports = GtxMessaging;
diff --git a/server/notification-providers/keep.js b/server/notification-providers/keep.js
new file mode 100644
index 000000000..aa65a867b
--- /dev/null
+++ b/server/notification-providers/keep.js
@@ -0,0 +1,42 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+
+class Keep extends NotificationProvider {
+ name = "Keep";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ const okMsg = "Sent Successfully.";
+
+ try {
+ let data = {
+ heartbeat: heartbeatJSON,
+ monitor: monitorJSON,
+ msg,
+ };
+ let config = {
+ headers: {
+ "x-api-key": notification.webhookAPIKey,
+ "content-type": "application/json",
+ },
+ };
+
+ let url = notification.webhookURL;
+
+ if (url.endsWith("/")) {
+ url = url.slice(0, -1);
+ }
+
+ let webhookURL = url + "/alerts/event/uptimekuma";
+
+ await axios.post(webhookURL, data, config);
+ return okMsg;
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+}
+
+module.exports = Keep;
diff --git a/server/notification-providers/nostr.js b/server/notification-providers/nostr.js
index 453b86d0a..72f0bb621 100644
--- a/server/notification-providers/nostr.js
+++ b/server/notification-providers/nostr.js
@@ -1,27 +1,16 @@
-const { log } = require("../../src/util");
const NotificationProvider = require("./notification-provider");
const {
- relayInit,
- getPublicKey,
- getEventHash,
- getSignature,
+ finalizeEvent,
+ Relay,
+ kinds,
nip04,
- nip19
+ nip19,
} = require("nostr-tools");
// polyfills for node versions
const semver = require("semver");
const nodeVersion = process.version;
-if (semver.lt(nodeVersion, "16.0.0")) {
- log.warn("monitor", "Node <= 16 is unsupported for nostr, sorry :(");
-} else if (semver.lt(nodeVersion, "18.0.0")) {
- // polyfills for node 16
- global.crypto = require("crypto");
- global.WebSocket = require("isomorphic-ws");
- if (typeof crypto !== "undefined" && !crypto.subtle && crypto.webcrypto) {
- crypto.subtle = crypto.webcrypto.subtle;
- }
-} else if (semver.lt(nodeVersion, "20.0.0")) {
+if (semver.lt(nodeVersion, "20.0.0")) {
// polyfills for node 18
global.crypto = require("crypto");
global.WebSocket = require("isomorphic-ws");
@@ -41,7 +30,6 @@ class Nostr extends NotificationProvider {
const createdAt = Math.floor(Date.now() / 1000);
const senderPrivateKey = await this.getPrivateKey(notification.sender);
- const senderPublicKey = getPublicKey(senderPrivateKey);
const recipientsPublicKeys = await this.getPublicKeys(notification.recipients);
// Create NIP-04 encrypted direct message event for each recipient
@@ -49,34 +37,41 @@ class Nostr extends NotificationProvider {
for (const recipientPublicKey of recipientsPublicKeys) {
const ciphertext = await nip04.encrypt(senderPrivateKey, recipientPublicKey, msg);
let event = {
- kind: 4,
- pubkey: senderPublicKey,
+ kind: kinds.EncryptedDirectMessage,
created_at: createdAt,
tags: [[ "p", recipientPublicKey ]],
content: ciphertext,
};
- event.id = getEventHash(event);
- event.sig = getSignature(event, senderPrivateKey);
- events.push(event);
+ const signedEvent = finalizeEvent(event, senderPrivateKey);
+ events.push(signedEvent);
}
// Publish events to each relay
const relays = notification.relays.split("\n");
let successfulRelays = 0;
-
- // Connect to each relay
for (const relayUrl of relays) {
- const relay = relayInit(relayUrl);
- try {
- await relay.connect();
- successfulRelays++;
+ const relay = await Relay.connect(relayUrl);
+ let eventIndex = 0;
- // Publish events
- for (const event of events) {
- relay.publish(event);
- }
+ // Authenticate to the relay, if required
+ try {
+ await relay.publish(events[0]);
+ eventIndex = 1;
} catch (error) {
- continue;
+ if (relay.challenge) {
+ await relay.auth(async (evt) => {
+ return finalizeEvent(evt, senderPrivateKey);
+ });
+ }
+ }
+
+ try {
+ for (let i = eventIndex; i < events.length; i++) {
+ await relay.publish(events[i]);
+ }
+ successfulRelays++;
+ } catch (error) {
+ console.error(`Failed to publish event to ${relayUrl}:`, error);
} finally {
relay.close();
}
@@ -100,7 +95,7 @@ class Nostr extends NotificationProvider {
const { data } = senderDecodeResult;
return data;
} catch (error) {
- throw new Error(`Failed to get private key: ${error.message}`);
+ throw new Error(`Failed to decode private key for sender ${sender}: ${error.message}`);
}
}
@@ -119,10 +114,10 @@ class Nostr extends NotificationProvider {
if (type === "npub") {
publicKeys.push(data);
} else {
- throw new Error("not an npub");
+ throw new Error(`Recipient ${recipient} is not an npub`);
}
} catch (error) {
- throw new Error(`Error decoding recipient: ${error}`);
+ throw new Error(`Error decoding recipient ${recipient}: ${error}`);
}
}
return publicKeys;
diff --git a/server/notification-providers/notifery.js b/server/notification-providers/notifery.js
new file mode 100644
index 000000000..772556497
--- /dev/null
+++ b/server/notification-providers/notifery.js
@@ -0,0 +1,53 @@
+const { getMonitorRelativeURL, UP } = require("../../src/util");
+const { setting } = require("../util-server");
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+
+class Notifery extends NotificationProvider {
+ name = "notifery";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ const okMsg = "Sent Successfully.";
+ const url = "https://api.notifery.com/event";
+
+ let data = {
+ title: notification.notiferyTitle || "Uptime Kuma Alert",
+ message: msg,
+ };
+
+ if (notification.notiferyGroup) {
+ data.group = notification.notiferyGroup;
+ }
+
+ // Link to the monitor
+ const baseURL = await setting("primaryBaseURL");
+ if (baseURL && monitorJSON) {
+ data.message += `\n\nMonitor: ${baseURL}${getMonitorRelativeURL(monitorJSON.id)}`;
+ }
+
+ if (heartbeatJSON) {
+ data.code = heartbeatJSON.status === UP ? 0 : 1;
+
+ if (heartbeatJSON.ping) {
+ data.duration = heartbeatJSON.ping;
+ }
+ }
+
+ try {
+ const headers = {
+ "Content-Type": "application/json",
+ "x-api-key": notification.notiferyApiKey,
+ };
+
+ await axios.post(url, data, { headers });
+ return okMsg;
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+}
+
+module.exports = Notifery;
diff --git a/server/notification-providers/notification-provider.js b/server/notification-providers/notification-provider.js
index 9b4f0bb05..42e8e616d 100644
--- a/server/notification-providers/notification-provider.js
+++ b/server/notification-providers/notification-provider.js
@@ -1,3 +1,6 @@
+const { Liquid } = require("liquidjs");
+const { DOWN } = require("../../src/util");
+
class NotificationProvider {
/**
@@ -19,6 +22,80 @@ class NotificationProvider {
throw new Error("Have to override Notification.send(...)");
}
+ /**
+ * Extracts the address from a monitor JSON object based on its type.
+ * @param {?object} monitorJSON Monitor details (For Up/Down only)
+ * @returns {string} The extracted address based on the monitor type.
+ */
+ extractAddress(monitorJSON) {
+ if (!monitorJSON) {
+ return "";
+ }
+ switch (monitorJSON["type"]) {
+ case "push":
+ return "Heartbeat";
+ case "ping":
+ return monitorJSON["hostname"];
+ case "port":
+ case "dns":
+ case "gamedig":
+ case "steam":
+ if (monitorJSON["port"]) {
+ return monitorJSON["hostname"] + ":" + monitorJSON["port"];
+ }
+ return monitorJSON["hostname"];
+ default:
+ if (![ "https://", "http://", "" ].includes(monitorJSON["url"])) {
+ return monitorJSON["url"];
+ }
+ return "";
+ }
+ }
+
+ /**
+ * Renders a message template with notification context
+ * @param {string} template the template
+ * @param {string} msg the message that will be included in the context
+ * @param {?object} monitorJSON Monitor details (For Up/Down/Cert-Expiry only)
+ * @param {?object} heartbeatJSON Heartbeat details (For Up/Down only)
+ * @returns {Promise} rendered template
+ */
+ async renderTemplate(template, msg, monitorJSON, heartbeatJSON) {
+ const engine = new Liquid();
+ const parsedTpl = engine.parse(template);
+
+ // Let's start with dummy values to simplify code
+ let monitorName = "Monitor Name not available";
+ let monitorHostnameOrURL = "testing.hostname";
+
+ if (monitorJSON !== null) {
+ monitorName = monitorJSON["name"];
+ monitorHostnameOrURL = this.extractAddress(monitorJSON);
+ }
+
+ let serviceStatus = "⚠️ Test";
+ if (heartbeatJSON !== null) {
+ serviceStatus = (heartbeatJSON["status"] === DOWN) ? "🔴 Down" : "✅ Up";
+ }
+
+ const context = {
+ // for v1 compatibility, to be removed in v3
+ "STATUS": serviceStatus,
+ "NAME": monitorName,
+ "HOSTNAME_OR_URL": monitorHostnameOrURL,
+
+ // variables which are officially supported
+ "status": serviceStatus,
+ "name": monitorName,
+ "hostnameOrURL": monitorHostnameOrURL,
+ monitorJSON,
+ heartbeatJSON,
+ msg,
+ };
+
+ return engine.render(parsedTpl, context);
+ }
+
/**
* Throws an error
* @param {any} error The error to throw
diff --git a/server/notification-providers/onechat.js b/server/notification-providers/onechat.js
new file mode 100644
index 000000000..2d6ea1d5b
--- /dev/null
+++ b/server/notification-providers/onechat.js
@@ -0,0 +1,73 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+const { DOWN, UP } = require("../../src/util");
+
+class OneChat extends NotificationProvider {
+ name = "OneChat";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ const okMsg = "Sent Successfully.";
+ const url = "https://chat-api.one.th/message/api/v1/push_message";
+
+ try {
+ const config = {
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: "Bearer " + notification.accessToken,
+ },
+ };
+ if (heartbeatJSON == null) {
+ const testMessage = {
+ to: notification.recieverId,
+ bot_id: notification.botId,
+ type: "text",
+ message: "Test Successful!",
+ };
+ await axios.post(url, testMessage, config);
+ } else if (heartbeatJSON["status"] === DOWN) {
+ const downMessage = {
+ to: notification.recieverId,
+ bot_id: notification.botId,
+ type: "text",
+ message:
+ `UptimeKuma Alert:
+[🔴 Down]
+Name: ${monitorJSON["name"]}
+${heartbeatJSON["msg"]}
+Time (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`,
+ };
+ await axios.post(url, downMessage, config);
+ } else if (heartbeatJSON["status"] === UP) {
+ const upMessage = {
+ to: notification.recieverId,
+ bot_id: notification.botId,
+ type: "text",
+ message:
+ `UptimeKuma Alert:
+[🟢 Up]
+Name: ${monitorJSON["name"]}
+${heartbeatJSON["msg"]}
+Time (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`,
+ };
+ await axios.post(url, upMessage, config);
+ }
+
+ return okMsg;
+ } catch (error) {
+ // Handle errors and throw a descriptive message
+ if (error.response) {
+ const errorMessage =
+ error.response.data?.message ||
+ "Unknown API error occurred.";
+ throw new Error(`OneChat API Error: ${errorMessage}`);
+ } else {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+ }
+}
+
+module.exports = OneChat;
diff --git a/server/notification-providers/onesender.js b/server/notification-providers/onesender.js
new file mode 100644
index 000000000..4a33931a2
--- /dev/null
+++ b/server/notification-providers/onesender.js
@@ -0,0 +1,47 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+
+class Onesender extends NotificationProvider {
+ name = "Onesender";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ const okMsg = "Sent Successfully.";
+
+ try {
+ let data = {
+ heartbeat: heartbeatJSON,
+ monitor: monitorJSON,
+ msg,
+ to: notification.onesenderReceiver,
+ type: "text",
+ recipient_type: "individual",
+ text: {
+ body: msg
+ }
+ };
+ if (notification.onesenderTypeReceiver === "private") {
+ data.to = notification.onesenderReceiver + "@s.whatsapp.net";
+ } else {
+ data.recipient_type = "group";
+ data.to = notification.onesenderReceiver + "@g.us";
+ }
+ let config = {
+ headers: {
+ "Authorization": "Bearer " + notification.onesenderToken,
+ }
+ };
+ await axios.post(notification.onesenderURL, data, config);
+ return okMsg;
+
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+
+ }
+
+}
+
+module.exports = Onesender;
diff --git a/server/notification-providers/pumble.js b/server/notification-providers/pumble.js
new file mode 100644
index 000000000..e1731c0ab
--- /dev/null
+++ b/server/notification-providers/pumble.js
@@ -0,0 +1,48 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+const { UP } = require("../../src/util");
+
+class Pumble extends NotificationProvider {
+ name = "pumble";
+
+ /**
+ * @inheritDoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ const okMsg = "Sent Successfully.";
+
+ try {
+ if (heartbeatJSON === null && monitorJSON === null) {
+ let data = {
+ "attachments": [
+ {
+ "title": "Uptime Kuma Alert",
+ "text": msg,
+ "color": "#5BDD8B"
+ }
+ ]
+ };
+
+ await axios.post(notification.webhookURL, data);
+ return okMsg;
+ }
+
+ let data = {
+ "attachments": [
+ {
+ "title": `${monitorJSON["name"]} is ${heartbeatJSON["status"] === UP ? "up" : "down"}`,
+ "text": heartbeatJSON["msg"],
+ "color": (heartbeatJSON["status"] === UP ? "#5BDD8B" : "#DC3645"),
+ }
+ ]
+ };
+
+ await axios.post(notification.webhookURL, data);
+ return okMsg;
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+}
+
+module.exports = Pumble;
diff --git a/server/notification-providers/pushdeer.js b/server/notification-providers/pushdeer.js
index 276c2f476..b1f675957 100644
--- a/server/notification-providers/pushdeer.js
+++ b/server/notification-providers/pushdeer.js
@@ -11,7 +11,8 @@ class PushDeer extends NotificationProvider {
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
const okMsg = "Sent Successfully.";
const serverUrl = notification.pushdeerServer || "https://api2.pushdeer.com";
- const url = `${serverUrl.trim().replace(/\/*$/, "")}/message/push`;
+ // capture group below is nessesary to prevent an ReDOS-attack
+ const url = `${serverUrl.trim().replace(/([^/])\/+$/, "$1")}/message/push`;
let valid = msg != null && monitorJSON != null && heartbeatJSON != null;
diff --git a/server/notification-providers/pushover.js b/server/notification-providers/pushover.js
index 304aa3519..fdceeaa44 100644
--- a/server/notification-providers/pushover.js
+++ b/server/notification-providers/pushover.js
@@ -1,3 +1,7 @@
+const { getMonitorRelativeURL } = require("../../src/util");
+const { setting } = require("../util-server");
+const { UP } = require("../../src/util");
+
const NotificationProvider = require("./notification-provider");
const axios = require("axios");
@@ -23,6 +27,12 @@ class Pushover extends NotificationProvider {
"html": 1,
};
+ const baseURL = await setting("primaryBaseURL");
+ if (baseURL && monitorJSON) {
+ data["url"] = baseURL + getMonitorRelativeURL(monitorJSON.id);
+ data["url_title"] = "Link to Monitor";
+ }
+
if (notification.pushoverdevice) {
data.device = notification.pushoverdevice;
}
@@ -34,15 +44,20 @@ class Pushover extends NotificationProvider {
if (heartbeatJSON == null) {
await axios.post(url, data);
return okMsg;
- } else {
- data.message += `\nTime (${heartbeatJSON["timezone"]}) :${heartbeatJSON["localDateTime"]}`;
- await axios.post(url, data);
- return okMsg;
}
+
+ if (heartbeatJSON.status === UP && notification.pushoversounds_up) {
+ // default = DOWN => DOWN-sound is also played for non-UP/DOWN notiifcations
+ data.sound = notification.pushoversounds_up;
+ }
+
+ data.message += `\nTime (${heartbeatJSON["timezone"]}) : ${heartbeatJSON["localDateTime"]}`;
+ await axios.post(url, data);
+ return okMsg;
+
} catch (error) {
this.throwGeneralAxiosError(error);
}
-
}
}
diff --git a/server/notification-providers/pushplus.js b/server/notification-providers/pushplus.js
new file mode 100644
index 000000000..a26ba176f
--- /dev/null
+++ b/server/notification-providers/pushplus.js
@@ -0,0 +1,56 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+const { DOWN, UP } = require("../../src/util");
+
+class PushPlus extends NotificationProvider {
+ name = "PushPlus";
+
+ /**
+ * @inheritdoc
+ * @param {BeanModel} notification Notification object
+ * @param {string} msg Message content
+ * @param {?object} monitorJSON Monitor details
+ * @param {?object} heartbeatJSON Heartbeat details
+ * @returns {Promise} Success message
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ const okMsg = "Sent Successfully.";
+ const url = "https://www.pushplus.plus/send";
+ try {
+ const config = {
+ headers: {
+ "Content-Type": "application/json",
+ },
+ };
+ const params = {
+ "token": notification.pushPlusSendKey,
+ "title": this.checkStatus(heartbeatJSON, monitorJSON),
+ "content": msg,
+ "template": "html"
+ };
+ await axios.post(url, params, config);
+ return okMsg;
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+
+ /**
+ * Get the formatted title for message
+ * @param {?object} heartbeatJSON Heartbeat details (For Up/Down only)
+ * @param {?object} monitorJSON Monitor details (For Up/Down only)
+ * @returns {string} Formatted title
+ */
+ checkStatus(heartbeatJSON, monitorJSON) {
+ let title = "UptimeKuma Message";
+ if (heartbeatJSON != null && heartbeatJSON["status"] === UP) {
+ title = "UptimeKuma Monitor Up " + monitorJSON["name"];
+ }
+ if (heartbeatJSON != null && heartbeatJSON["status"] === DOWN) {
+ title = "UptimeKuma Monitor Down " + monitorJSON["name"];
+ }
+ return title;
+ }
+}
+
+module.exports = PushPlus;
diff --git a/server/notification-providers/send-grid.js b/server/notification-providers/send-grid.js
new file mode 100644
index 000000000..3489f6385
--- /dev/null
+++ b/server/notification-providers/send-grid.js
@@ -0,0 +1,65 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+
+class SendGrid extends NotificationProvider {
+ name = "SendGrid";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ const okMsg = "Sent Successfully.";
+
+ try {
+ let config = {
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${notification.sendgridApiKey}`,
+ },
+ };
+
+ let personalizations = {
+ to: [{ email: notification.sendgridToEmail }],
+ };
+
+ // Add CC recipients if provided
+ if (notification.sendgridCcEmail) {
+ personalizations.cc = notification.sendgridCcEmail
+ .split(",")
+ .map((email) => ({ email: email.trim() }));
+ }
+
+ // Add BCC recipients if provided
+ if (notification.sendgridBccEmail) {
+ personalizations.bcc = notification.sendgridBccEmail
+ .split(",")
+ .map((email) => ({ email: email.trim() }));
+ }
+
+ let data = {
+ personalizations: [ personalizations ],
+ from: { email: notification.sendgridFromEmail.trim() },
+ subject:
+ notification.sendgridSubject ||
+ "Notification from Your Uptime Kuma",
+ content: [
+ {
+ type: "text/plain",
+ value: msg,
+ },
+ ],
+ };
+
+ await axios.post(
+ "https://api.sendgrid.com/v3/mail/send",
+ data,
+ config
+ );
+ return okMsg;
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+}
+
+module.exports = SendGrid;
diff --git a/server/notification-providers/serverchan.js b/server/notification-providers/serverchan.js
index cefe61f14..aee22f83f 100644
--- a/server/notification-providers/serverchan.js
+++ b/server/notification-providers/serverchan.js
@@ -11,8 +11,14 @@ class ServerChan extends NotificationProvider {
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
const okMsg = "Sent Successfully.";
+ // serverchan3 requires sending via ft07.com
+ const matchResult = String(notification.serverChanSendKey).match(/^sctp(\d+)t/i);
+ const url = matchResult && matchResult[1]
+ ? `https://${matchResult[1]}.push.ft07.com/send/${notification.serverChanSendKey}.send`
+ : `https://sctapi.ftqq.com/${notification.serverChanSendKey}.send`;
+
try {
- await axios.post(`https://sctapi.ftqq.com/${notification.serverChanSendKey}.send`, {
+ await axios.post(url, {
"title": this.checkStatus(heartbeatJSON, monitorJSON),
"desp": msg,
});
diff --git a/server/notification-providers/sevenio.js b/server/notification-providers/sevenio.js
new file mode 100644
index 000000000..eac38a26e
--- /dev/null
+++ b/server/notification-providers/sevenio.js
@@ -0,0 +1,57 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+const { DOWN, UP } = require("../../src/util");
+
+class SevenIO extends NotificationProvider {
+ name = "SevenIO";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ const okMsg = "Sent Successfully.";
+
+ const data = {
+ to: notification.sevenioTo,
+ from: notification.sevenioSender || "Uptime Kuma",
+ text: msg,
+ };
+
+ const config = {
+ baseURL: "https://gateway.seven.io/api/",
+ headers: {
+ "Content-Type": "application/json",
+ "X-API-Key": notification.sevenioApiKey,
+ },
+ };
+
+ try {
+ // testing or certificate expiry notification
+ if (heartbeatJSON == null) {
+ await axios.post("sms", data, config);
+ return okMsg;
+ }
+
+ let address = this.extractAddress(monitorJSON);
+ if (address !== "") {
+ address = `(${address}) `;
+ }
+
+ // If heartbeatJSON is not null, we go into the normal alerting loop.
+ if (heartbeatJSON["status"] === DOWN) {
+ data.text = `Your service ${monitorJSON["name"]} ${address}went down at ${heartbeatJSON["localDateTime"]} ` +
+ `(${heartbeatJSON["timezone"]}). Error: ${heartbeatJSON["msg"]}`;
+ } else if (heartbeatJSON["status"] === UP) {
+ data.text = `Your service ${monitorJSON["name"]} ${address}went back up at ${heartbeatJSON["localDateTime"]} ` +
+ `(${heartbeatJSON["timezone"]}).`;
+ }
+ await axios.post("sms", data, config);
+ return okMsg;
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+
+}
+
+module.exports = SevenIO;
diff --git a/server/notification-providers/signl4.js b/server/notification-providers/signl4.js
new file mode 100644
index 000000000..8261a73f3
--- /dev/null
+++ b/server/notification-providers/signl4.js
@@ -0,0 +1,52 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+const { UP, DOWN } = require("../../src/util");
+
+class SIGNL4 extends NotificationProvider {
+ name = "SIGNL4";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ const okMsg = "Sent Successfully.";
+
+ try {
+ let data = {
+ heartbeat: heartbeatJSON,
+ monitor: monitorJSON,
+ msg,
+ // Source system
+ "X-S4-SourceSystem": "UptimeKuma",
+ monitorUrl: this.extractAddress(monitorJSON),
+ };
+
+ const config = {
+ headers: {
+ "Content-Type": "application/json"
+ }
+ };
+
+ if (heartbeatJSON == null) {
+ // Test alert
+ data.title = "Uptime Kuma Alert";
+ data.message = msg;
+ } else if (heartbeatJSON.status === UP) {
+ data.title = "Uptime Kuma Monitor ✅ Up";
+ data["X-S4-ExternalID"] = "UptimeKuma-" + monitorJSON.monitorID;
+ data["X-S4-Status"] = "resolved";
+ } else if (heartbeatJSON.status === DOWN) {
+ data.title = "Uptime Kuma Monitor 🔴 Down";
+ data["X-S4-ExternalID"] = "UptimeKuma-" + monitorJSON.monitorID;
+ data["X-S4-Status"] = "new";
+ }
+
+ await axios.post(notification.webhookURL, data, config);
+ return okMsg;
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+}
+
+module.exports = SIGNL4;
diff --git a/server/notification-providers/slack.js b/server/notification-providers/slack.js
index 9347b07c9..455d787c7 100644
--- a/server/notification-providers/slack.js
+++ b/server/notification-providers/slack.js
@@ -1,7 +1,7 @@
const NotificationProvider = require("./notification-provider");
const axios = require("axios");
const { setSettings, setting } = require("../util-server");
-const { getMonitorRelativeURL, UP } = require("../../src/util");
+const { getMonitorRelativeURL, UP, log } = require("../../src/util");
class Slack extends NotificationProvider {
name = "slack";
@@ -26,6 +26,99 @@ class Slack extends NotificationProvider {
}
}
+ /**
+ * Builds the actions available in the slack message
+ * @param {string} baseURL Uptime Kuma base URL
+ * @param {object} monitorJSON The monitor config
+ * @returns {Array} The relevant action objects
+ */
+ buildActions(baseURL, monitorJSON) {
+ const actions = [];
+
+ if (baseURL) {
+ actions.push({
+ "type": "button",
+ "text": {
+ "type": "plain_text",
+ "text": "Visit Uptime Kuma",
+ },
+ "value": "Uptime-Kuma",
+ "url": baseURL + getMonitorRelativeURL(monitorJSON.id),
+ });
+
+ }
+
+ const address = this.extractAddress(monitorJSON);
+ if (address) {
+ try {
+ actions.push({
+ "type": "button",
+ "text": {
+ "type": "plain_text",
+ "text": "Visit site",
+ },
+ "value": "Site",
+ "url": new URL(address),
+ });
+
+ } catch (e) {
+ log.debug("slack", `Failed to parse address ${address} as URL`);
+ }
+ }
+
+ return actions;
+ }
+
+ /**
+ * Builds the different blocks the Slack message consists of.
+ * @param {string} baseURL Uptime Kuma base URL
+ * @param {object} monitorJSON The monitor object
+ * @param {object} heartbeatJSON The heartbeat object
+ * @param {string} title The message title
+ * @param {string} msg The message body
+ * @returns {Array} The rich content blocks for the Slack message
+ */
+ buildBlocks(baseURL, monitorJSON, heartbeatJSON, title, msg) {
+
+ //create an array to dynamically add blocks
+ const blocks = [];
+
+ // the header block
+ blocks.push({
+ "type": "header",
+ "text": {
+ "type": "plain_text",
+ "text": title,
+ },
+ });
+
+ // the body block, containing the details
+ blocks.push({
+ "type": "section",
+ "fields": [
+ {
+ "type": "mrkdwn",
+ "text": "*Message*\n" + msg,
+ },
+ {
+ "type": "mrkdwn",
+ "text": `*Time (${heartbeatJSON["timezone"]})*\n${heartbeatJSON["localDateTime"]}`,
+ }
+ ],
+ });
+
+ const actions = this.buildActions(baseURL, monitorJSON);
+ if (actions.length > 0) {
+ //the actions block, containing buttons
+ blocks.push({
+ "type": "actions",
+ "elements": actions,
+ });
+ }
+
+ return blocks;
+ }
+
/**
* @inheritdoc
*/
@@ -48,63 +141,32 @@ class Slack extends NotificationProvider {
return okMsg;
}
- const textMsg = "Uptime Kuma Alert";
+ const baseURL = await setting("primaryBaseURL");
+
+ const title = "Uptime Kuma Alert";
let data = {
- "text": `${textMsg}\n${msg}`,
+ "text": msg,
"channel": notification.slackchannel,
"username": notification.slackusername,
"icon_emoji": notification.slackiconemo,
- "attachments": [
+ "attachments": [],
+ };
+
+ if (notification.slackrichmessage) {
+ data.attachments.push(
{
"color": (heartbeatJSON["status"] === UP) ? "#2eb886" : "#e01e5a",
- "blocks": [
- {
- "type": "header",
- "text": {
- "type": "plain_text",
- "text": textMsg,
- },
- },
- {
- "type": "section",
- "fields": [{
- "type": "mrkdwn",
- "text": "*Message*\n" + msg,
- },
- {
- "type": "mrkdwn",
- "text": `*Time (${heartbeatJSON["timezone"]})*\n${heartbeatJSON["localDateTime"]}`,
- }],
- }
- ],
+ "blocks": this.buildBlocks(baseURL, monitorJSON, heartbeatJSON, title, msg),
}
- ]
- };
+ );
+ } else {
+ data.text = `${title}\n${msg}`;
+ }
if (notification.slackbutton) {
await Slack.deprecateURL(notification.slackbutton);
}
- const baseURL = await setting("primaryBaseURL");
-
- // Button
- if (baseURL) {
- data.attachments.forEach(element => {
- element.blocks.push({
- "type": "actions",
- "elements": [{
- "type": "button",
- "text": {
- "type": "plain_text",
- "text": "Visit Uptime Kuma",
- },
- "value": "Uptime-Kuma",
- "url": baseURL + getMonitorRelativeURL(monitorJSON.id),
- }],
- });
- });
- }
-
await axios.post(notification.slackwebhookURL, data);
return okMsg;
} catch (error) {
diff --git a/server/notification-providers/sms-planet.js b/server/notification-providers/sms-planet.js
new file mode 100644
index 000000000..97e9e715e
--- /dev/null
+++ b/server/notification-providers/sms-planet.js
@@ -0,0 +1,40 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+
+class SMSPlanet extends NotificationProvider {
+ name = "SMSPlanet";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ const okMsg = "Sent Successfully.";
+ const url = "https://api2.smsplanet.pl/sms";
+
+ try {
+ let config = {
+ headers: {
+ "Authorization": "Bearer " + notification.smsplanetApiToken,
+ "content-type": "multipart/form-data"
+ }
+ };
+
+ let data = {
+ "from": notification.smsplanetSenderName,
+ "to": notification.smsplanetPhoneNumbers,
+ "msg": msg.replace(/🔴/, "❌")
+ };
+
+ let response = await axios.post(url, data, config);
+ if (!response.data?.messageId) {
+ throw new Error(response.data?.errorMsg ?? "SMSPlanet server did not respond with the expected result");
+ }
+
+ return okMsg;
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+}
+
+module.exports = SMSPlanet;
diff --git a/server/notification-providers/smseagle.js b/server/notification-providers/smseagle.js
index 4e897006c..a123243a4 100644
--- a/server/notification-providers/smseagle.js
+++ b/server/notification-providers/smseagle.js
@@ -11,59 +11,127 @@ class SMSEagle extends NotificationProvider {
const okMsg = "Sent Successfully.";
try {
- let config = {
- headers: {
- "Content-Type": "application/json",
+ if (notification.smseagleApiType === "smseagle-apiv1") { // according to https://www.smseagle.eu/apiv1/
+ let config = {
+ headers: {
+ "Content-Type": "application/x-www-form-urlencoded",
+ }
+ };
+
+ let sendMethod;
+ let recipientType;
+ let duration;
+ let voiceId;
+
+ if (notification.smseagleRecipientType === "smseagle-contact") {
+ recipientType = "contactname";
+ sendMethod = "/send_tocontact";
+ } else if (notification.smseagleRecipientType === "smseagle-group") {
+ recipientType = "groupname";
+ sendMethod = "/send_togroup";
+ } else if (notification.smseagleRecipientType === "smseagle-to") {
+ recipientType = "to";
+ sendMethod = "/send_sms";
+ if (notification.smseagleMsgType !== "smseagle-sms") {
+ duration = notification.smseagleDuration ?? 10;
+
+ if (notification.smseagleMsgType === "smseagle-ring") {
+ sendMethod = "/ring_call";
+ } else if (notification.smseagleMsgType === "smseagle-tts") {
+ sendMethod = "/tts_call";
+ } else if (notification.smseagleMsgType === "smseagle-tts-advanced") {
+ sendMethod = "/tts_adv_call";
+ voiceId = notification.smseagleTtsModel ? notification.smseagleTtsModel : 1;
+ }
+ }
}
- };
- let postData;
- let sendMethod;
- let recipientType;
+ const url = new URL(notification.smseagleUrl + "/http_api" + sendMethod);
- let encoding = (notification.smseagleEncoding) ? "1" : "0";
- let priority = (notification.smseaglePriority) ? notification.smseaglePriority : "0";
-
- if (notification.smseagleRecipientType === "smseagle-contact") {
- recipientType = "contactname";
- sendMethod = "sms.send_tocontact";
- }
- if (notification.smseagleRecipientType === "smseagle-group") {
- recipientType = "groupname";
- sendMethod = "sms.send_togroup";
- }
- if (notification.smseagleRecipientType === "smseagle-to") {
- recipientType = "to";
- sendMethod = "sms.send_sms";
- }
-
- let params = {
- access_token: notification.smseagleToken,
- [recipientType]: notification.smseagleRecipient,
- message: msg,
- responsetype: "extended",
- unicode: encoding,
- highpriority: priority
- };
-
- postData = {
- method: sendMethod,
- params: params
- };
-
- let resp = await axios.post(notification.smseagleUrl + "/jsonrpc/sms", postData, config);
-
- if ((JSON.stringify(resp.data)).indexOf("message_id") === -1) {
- let error = "";
- if (resp.data.result && resp.data.result.error_text) {
- error = `SMSEagle API returned error: ${JSON.stringify(resp.data.result.error_text)}`;
+ url.searchParams.append("access_token", notification.smseagleToken);
+ url.searchParams.append(recipientType, notification.smseagleRecipient);
+ if (!notification.smseagleRecipientType || notification.smseagleRecipientType === "smseagle-sms") {
+ url.searchParams.append("unicode", (notification.smseagleEncoding) ? "1" : "0");
+ url.searchParams.append("highpriority", notification.smseaglePriority ?? "0");
} else {
- error = "SMSEagle API returned an unexpected response";
+ url.searchParams.append("duration", duration);
+ }
+ if (notification.smseagleRecipientType !== "smseagle-ring") {
+ url.searchParams.append("message", msg);
+ }
+ if (voiceId) {
+ url.searchParams.append("voice_id", voiceId);
}
- throw new Error(error);
- }
- return okMsg;
+ let resp = await axios.get(url.toString(), config);
+
+ if (resp.data.indexOf("OK") === -1) {
+ let error = `SMSEagle API returned error: ${resp.data}`;
+ throw new Error(error);
+ }
+
+ return okMsg;
+ } else if (notification.smseagleApiType === "smseagle-apiv2") { // according to https://www.smseagle.eu/docs/apiv2/
+ let config = {
+ headers: {
+ "access-token": notification.smseagleToken,
+ "Content-Type": "application/json",
+ }
+ };
+
+ let encoding = (notification.smseagleEncoding) ? "unicode" : "standard";
+ let priority = (notification.smseaglePriority) ?? 0;
+
+ let postData = {
+ text: msg,
+ encoding: encoding,
+ priority: priority
+ };
+
+ if (notification.smseagleRecipientContact) {
+ postData["contacts"] = notification.smseagleRecipientContact.split(",").map(Number);
+ }
+ if (notification.smseagleRecipientGroup) {
+ postData["groups"] = notification.smseagleRecipientGroup.split(",").map(Number);
+ }
+ if (notification.smseagleRecipientTo) {
+ postData["to"] = notification.smseagleRecipientTo.split(",");
+ }
+
+ let endpoint = "/messages/sms";
+
+ if (notification.smseagleMsgType !== "smseagle-sms") {
+
+ postData["duration"] = notification.smseagleDuration ?? 10;
+
+ if (notification.smseagleMsgType === "smseagle-ring") {
+ endpoint = "/calls/ring";
+ } else if (notification.smseagleMsgType === "smseagle-tts") {
+ endpoint = "/calls/tts";
+ } else if (notification.smseagleMsgType === "smseagle-tts-advanced") {
+ endpoint = "/calls/tts_advanced";
+ postData["voice_id"] = notification.smseagleTtsModel ?? 1;
+ }
+ }
+
+ let resp = await axios.post(notification.smseagleUrl + "/api/v2" + endpoint, postData, config);
+
+ const queuedCount = resp.data.filter(x => x.status === "queued").length;
+ const unqueuedCount = resp.data.length - queuedCount;
+
+ if (resp.status !== 200 || queuedCount === 0) {
+ if (!resp.data.length) {
+ throw new Error("SMSEagle API returned an empty response");
+ }
+ throw new Error(`SMSEagle API returned error: ${JSON.stringify(resp.data)}`);
+ }
+
+ if (unqueuedCount) {
+ return `Sent ${queuedCount}/${resp.data.length} Messages Successfully.`;
+ }
+
+ return okMsg;
+ }
} catch (error) {
this.throwGeneralAxiosError(error);
}
diff --git a/server/notification-providers/smspartner.js b/server/notification-providers/smspartner.js
new file mode 100644
index 000000000..5595217a4
--- /dev/null
+++ b/server/notification-providers/smspartner.js
@@ -0,0 +1,46 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+
+class SMSPartner extends NotificationProvider {
+ name = "SMSPartner";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ const okMsg = "Sent Successfully.";
+ const url = "https://api.smspartner.fr/v1/send";
+
+ try {
+ // smspartner does not support non ascii characters and only a maximum 639 characters
+ let cleanMsg = msg.replace(/[^\x00-\x7F]/g, "").substring(0, 639);
+
+ let data = {
+ "apiKey": notification.smspartnerApikey,
+ "sender": notification.smspartnerSenderName.substring(0, 11),
+ "phoneNumbers": notification.smspartnerPhoneNumber,
+ "message": cleanMsg,
+ };
+
+ let config = {
+ headers: {
+ "Content-Type": "application/json",
+ "cache-control": "no-cache",
+ "Accept": "application/json",
+ }
+ };
+
+ let resp = await axios.post(url, data, config);
+
+ if (resp.data.success !== true) {
+ throw Error(`Api returned ${resp.data.response.status}.`);
+ }
+
+ return okMsg;
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+}
+
+module.exports = SMSPartner;
diff --git a/server/notification-providers/smtp.js b/server/notification-providers/smtp.js
index b403117b4..d0ad5b728 100644
--- a/server/notification-providers/smtp.js
+++ b/server/notification-providers/smtp.js
@@ -1,7 +1,5 @@
const nodemailer = require("nodemailer");
const NotificationProvider = require("./notification-provider");
-const { DOWN } = require("../../src/util");
-const { Liquid } = require("liquidjs");
class SMTP extends NotificationProvider {
name = "smtp";
@@ -44,6 +42,7 @@ class SMTP extends NotificationProvider {
// default values in case the user does not want to template
let subject = msg;
let body = msg;
+ let useHTMLBody = false;
if (heartbeatJSON) {
body = `${msg}\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`;
}
@@ -52,16 +51,12 @@ class SMTP extends NotificationProvider {
// cannot end with whitespace as this often raises spam scores
const customSubject = notification.customSubject?.trim() || "";
const customBody = notification.customBody?.trim() || "";
-
- const context = this.generateContext(msg, monitorJSON, heartbeatJSON);
- const engine = new Liquid();
if (customSubject !== "") {
- const tpl = engine.parse(customSubject);
- subject = await engine.render(tpl, context);
+ subject = await this.renderTemplate(customSubject, msg, monitorJSON, heartbeatJSON);
}
if (customBody !== "") {
- const tpl = engine.parse(customBody);
- body = await engine.render(tpl, context);
+ useHTMLBody = notification.htmlBody || false;
+ body = await this.renderTemplate(customBody, msg, monitorJSON, heartbeatJSON);
}
}
@@ -73,53 +68,12 @@ class SMTP extends NotificationProvider {
bcc: notification.smtpBCC,
to: notification.smtpTo,
subject: subject,
- text: body,
+ // If the email body is custom, and the user wants it, set the email body as HTML
+ [useHTMLBody ? "html" : "text"]: body
});
return okMsg;
}
-
- /**
- * Generate context for LiquidJS
- * @param {string} msg the message that will be included in the context
- * @param {?object} monitorJSON Monitor details (For Up/Down/Cert-Expiry only)
- * @param {?object} heartbeatJSON Heartbeat details (For Up/Down only)
- * @returns {{STATUS: string, status: string, HOSTNAME_OR_URL: string, hostnameOrUrl: string, NAME: string, name: string, monitorJSON: ?object, heartbeatJSON: ?object, msg: string}} the context
- */
- generateContext(msg, monitorJSON, heartbeatJSON) {
- // Let's start with dummy values to simplify code
- let monitorName = "Monitor Name not available";
- let monitorHostnameOrURL = "testing.hostname";
-
- if (monitorJSON !== null) {
- monitorName = monitorJSON["name"];
-
- if (monitorJSON["type"] === "http" || monitorJSON["type"] === "keyword" || monitorJSON["type"] === "json-query") {
- monitorHostnameOrURL = monitorJSON["url"];
- } else {
- monitorHostnameOrURL = monitorJSON["hostname"];
- }
- }
-
- let serviceStatus = "⚠️ Test";
- if (heartbeatJSON !== null) {
- serviceStatus = (heartbeatJSON["status"] === DOWN) ? "🔴 Down" : "✅ Up";
- }
- return {
- // for v1 compatibility, to be removed in v3
- "STATUS": serviceStatus,
- "NAME": monitorName,
- "HOSTNAME_OR_URL": monitorHostnameOrURL,
-
- // variables which are officially supported
- "status": serviceStatus,
- "name": monitorName,
- "hostnameOrURL": monitorHostnameOrURL,
- monitorJSON,
- heartbeatJSON,
- msg,
- };
- }
}
module.exports = SMTP;
diff --git a/server/notification-providers/spugpush.js b/server/notification-providers/spugpush.js
new file mode 100644
index 000000000..b04a20cac
--- /dev/null
+++ b/server/notification-providers/spugpush.js
@@ -0,0 +1,37 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+const { DOWN, UP } = require("../../src/util");
+
+class SpugPush extends NotificationProvider {
+
+ name = "SpugPush";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ let okMsg = "Sent Successfully.";
+ try {
+ let formData = {
+ title: "Uptime Kuma Message",
+ content: msg
+ };
+ if (heartbeatJSON) {
+ if (heartbeatJSON["status"] === UP) {
+ formData.title = `UptimeKuma 「${monitorJSON["name"]}」 is Up`;
+ formData.content = `[✅ Up] ${heartbeatJSON["msg"]}`;
+ } else if (heartbeatJSON["status"] === DOWN) {
+ formData.title = `UptimeKuma 「${monitorJSON["name"]}」 is Down`;
+ formData.content = `[🔴 Down] ${heartbeatJSON["msg"]}`;
+ }
+ }
+ const apiUrl = `https://push.spug.cc/send/${notification.templateKey}`;
+ await axios.post(apiUrl, formData);
+ return okMsg;
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+}
+
+module.exports = SpugPush;
diff --git a/server/notification-providers/squadcast.js b/server/notification-providers/squadcast.js
index 1c653d141..5713783c0 100644
--- a/server/notification-providers/squadcast.js
+++ b/server/notification-providers/squadcast.js
@@ -34,25 +34,7 @@ class Squadcast extends NotificationProvider {
data.status = "resolve";
}
- let address;
- switch (monitorJSON["type"]) {
- case "ping":
- address = monitorJSON["hostname"];
- break;
- case "port":
- case "dns":
- case "steam":
- address = monitorJSON["hostname"];
- if (monitorJSON["port"]) {
- address += ":" + monitorJSON["port"];
- }
- break;
- default:
- address = monitorJSON["url"];
- break;
- }
-
- data.tags["AlertAddress"] = address;
+ data.tags["AlertAddress"] = this.extractAddress(monitorJSON);
monitorJSON["tags"].forEach(tag => {
data.tags[tag["name"]] = {
diff --git a/server/notification-providers/teams.js b/server/notification-providers/teams.js
index f34ba1ced..2793604cc 100644
--- a/server/notification-providers/teams.js
+++ b/server/notification-providers/teams.js
@@ -216,21 +216,6 @@ class Teams extends NotificationProvider {
return okMsg;
}
- let monitorUrl;
-
- switch (monitorJSON["type"]) {
- case "http":
- case "keywork":
- monitorUrl = monitorJSON["url"];
- break;
- case "docker":
- monitorUrl = monitorJSON["docker_host"];
- break;
- default:
- monitorUrl = monitorJSON["hostname"];
- break;
- }
-
const baseURL = await setting("primaryBaseURL");
let dashboardUrl;
if (baseURL) {
@@ -240,7 +225,7 @@ class Teams extends NotificationProvider {
const payload = this._notificationPayloadFactory({
heartbeatJSON: heartbeatJSON,
monitorName: monitorJSON.name,
- monitorUrl: monitorUrl,
+ monitorUrl: this.extractAddress(monitorJSON),
dashboardUrl: dashboardUrl,
});
diff --git a/server/notification-providers/techulus-push.js b/server/notification-providers/techulus-push.js
index 230897f3c..bf688b194 100644
--- a/server/notification-providers/techulus-push.js
+++ b/server/notification-providers/techulus-push.js
@@ -10,11 +10,22 @@ class TechulusPush extends NotificationProvider {
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
const okMsg = "Sent Successfully.";
+ let data = {
+ "title": notification?.pushTitle?.length ? notification.pushTitle : "Uptime-Kuma",
+ "body": msg,
+ "timeSensitive": notification.pushTimeSensitive ?? true,
+ };
+
+ if (notification.pushChannel) {
+ data.channel = notification.pushChannel;
+ }
+
+ if (notification.pushSound) {
+ data.sound = notification.pushSound;
+ }
+
try {
- await axios.post(`https://push.techulus.com/api/v1/notify/${notification.pushAPIKey}`, {
- "title": "Uptime-Kuma",
- "body": msg,
- });
+ await axios.post(`https://push.techulus.com/api/v1/notify/${notification.pushAPIKey}`, data);
return okMsg;
} catch (error) {
this.throwGeneralAxiosError(error);
diff --git a/server/notification-providers/telegram.js b/server/notification-providers/telegram.js
index c5bbb1909..04117e65a 100644
--- a/server/notification-providers/telegram.js
+++ b/server/notification-providers/telegram.js
@@ -9,7 +9,7 @@ class Telegram extends NotificationProvider {
*/
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
const okMsg = "Sent Successfully.";
- const url = "https://api.telegram.org";
+ const url = notification.telegramServerUrl ?? "https://api.telegram.org";
try {
let params = {
@@ -22,6 +22,14 @@ class Telegram extends NotificationProvider {
params.message_thread_id = notification.telegramMessageThreadID;
}
+ if (notification.telegramUseTemplate) {
+ params.text = await this.renderTemplate(notification.telegramTemplate, msg, monitorJSON, heartbeatJSON);
+
+ if (notification.telegramTemplateParseMode !== "plain") {
+ params.parse_mode = notification.telegramTemplateParseMode;
+ }
+ }
+
await axios.get(`${url}/bot${notification.telegramBotToken}/sendMessage`, {
params: params,
});
diff --git a/server/notification-providers/threema.js b/server/notification-providers/threema.js
new file mode 100644
index 000000000..07a54ab6e
--- /dev/null
+++ b/server/notification-providers/threema.js
@@ -0,0 +1,77 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+
+class Threema extends NotificationProvider {
+ name = "threema";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ const url = "https://msgapi.threema.ch/send_simple";
+
+ const config = {
+ headers: {
+ "Accept": "*/*",
+ "Content-Type": "application/x-www-form-urlencoded; charset=utf-8"
+ }
+ };
+
+ const data = {
+ from: notification.threemaSenderIdentity,
+ secret: notification.threemaSecret,
+ text: msg
+ };
+
+ switch (notification.threemaRecipientType) {
+ case "identity":
+ data.to = notification.threemaRecipient;
+ break;
+ case "phone":
+ data.phone = notification.threemaRecipient;
+ break;
+ case "email":
+ data.email = notification.threemaRecipient;
+ break;
+ default:
+ throw new Error(`Unsupported recipient type: ${notification.threemaRecipientType}`);
+ }
+
+ try {
+ await axios.post(url, new URLSearchParams(data), config);
+ return "Threema notification sent successfully.";
+ } catch (error) {
+ const errorMessage = this.handleApiError(error);
+ this.throwGeneralAxiosError(errorMessage);
+ }
+ }
+
+ /**
+ * Handle Threema API errors
+ * @param {any} error The error to handle
+ * @returns {string} Additional error context
+ */
+ handleApiError(error) {
+ if (!error.response) {
+ return error.message;
+ }
+ switch (error.response.status) {
+ case 400:
+ return "Invalid recipient identity or account not set up for basic mode (400).";
+ case 401:
+ return "Incorrect API identity or secret (401).";
+ case 402:
+ return "No credits remaining (402).";
+ case 404:
+ return "Recipient not found (404).";
+ case 413:
+ return "Message is too long (413).";
+ case 500:
+ return "Temporary internal server error (500).";
+ default:
+ return error.message;
+ }
+ }
+}
+
+module.exports = Threema;
diff --git a/server/notification-providers/waha.js b/server/notification-providers/waha.js
new file mode 100644
index 000000000..b075f33f0
--- /dev/null
+++ b/server/notification-providers/waha.js
@@ -0,0 +1,40 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+
+class WAHA extends NotificationProvider {
+ name = "waha";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ const okMsg = "Sent Successfully.";
+
+ try {
+ const config = {
+ headers: {
+ "Accept": "application/json",
+ "Content-Type": "application/json",
+ "X-Api-Key": notification.wahaApiKey,
+ }
+ };
+
+ let data = {
+ "session": notification.wahaSession,
+ "chatId": notification.wahaChatId,
+ "text": msg,
+ };
+
+ let url = notification.wahaApiUrl.replace(/([^/])\/+$/, "$1") + "/api/sendText";
+
+ await axios.post(url, data, config);
+
+ return okMsg;
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+
+}
+
+module.exports = WAHA;
diff --git a/server/notification-providers/webhook.js b/server/notification-providers/webhook.js
index 986986d44..537f94bd5 100644
--- a/server/notification-providers/webhook.js
+++ b/server/notification-providers/webhook.js
@@ -1,7 +1,6 @@
const NotificationProvider = require("./notification-provider");
const axios = require("axios");
const FormData = require("form-data");
-const { Liquid } = require("liquidjs");
class Webhook extends NotificationProvider {
name = "webhook";
@@ -28,17 +27,7 @@ class Webhook extends NotificationProvider {
config.headers = formData.getHeaders();
data = formData;
} else if (notification.webhookContentType === "custom") {
- // Initialize LiquidJS and parse the custom Body Template
- const engine = new Liquid();
- const tpl = engine.parse(notification.webhookCustomBody);
-
- // Insert templated values into Body
- data = await engine.render(tpl,
- {
- msg,
- heartbeatJSON,
- monitorJSON
- });
+ data = await this.renderTemplate(notification.webhookCustomBody, msg, monitorJSON, heartbeatJSON);
}
if (notification.webhookAdditionalHeaders) {
diff --git a/server/notification-providers/wecom.js b/server/notification-providers/wecom.js
index 03fa7c186..1eb069095 100644
--- a/server/notification-providers/wecom.js
+++ b/server/notification-providers/wecom.js
@@ -32,20 +32,17 @@ class WeCom extends NotificationProvider {
* @returns {object} Message
*/
composeMessage(heartbeatJSON, msg) {
- let title;
+ let title = "UptimeKuma Message";
if (msg != null && heartbeatJSON != null && heartbeatJSON["status"] === UP) {
title = "UptimeKuma Monitor Up";
}
if (msg != null && heartbeatJSON != null && heartbeatJSON["status"] === DOWN) {
title = "UptimeKuma Monitor Down";
}
- if (msg != null) {
- title = "UptimeKuma Message";
- }
return {
msgtype: "text",
text: {
- content: title + msg
+ content: title + "\n" + msg
}
};
}
diff --git a/server/notification-providers/whapi.js b/server/notification-providers/whapi.js
new file mode 100644
index 000000000..d83dc470f
--- /dev/null
+++ b/server/notification-providers/whapi.js
@@ -0,0 +1,39 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+
+class Whapi extends NotificationProvider {
+ name = "whapi";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ const okMsg = "Sent Successfully.";
+
+ try {
+ const config = {
+ headers: {
+ "Accept": "application/json",
+ "Content-Type": "application/json",
+ "Authorization": "Bearer " + notification.whapiAuthToken,
+ }
+ };
+
+ let data = {
+ "to": notification.whapiRecipient,
+ "body": msg,
+ };
+
+ let url = (notification.whapiApiUrl || "https://gate.whapi.cloud/").replace(/([^/])\/+$/, "$1") + "/messages/text";
+
+ await axios.post(url, data, config);
+
+ return okMsg;
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+
+}
+
+module.exports = Whapi;
diff --git a/server/notification-providers/wpush.js b/server/notification-providers/wpush.js
new file mode 100644
index 000000000..db043f9c5
--- /dev/null
+++ b/server/notification-providers/wpush.js
@@ -0,0 +1,51 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+const { DOWN, UP } = require("../../src/util");
+
+class WPush extends NotificationProvider {
+ name = "WPush";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ const okMsg = "Sent Successfully.";
+
+ try {
+ const context = {
+ "title": this.checkStatus(heartbeatJSON, monitorJSON),
+ "content": msg,
+ "apikey": notification.wpushAPIkey,
+ "channel": notification.wpushChannel
+ };
+ const result = await axios.post("https://api.wpush.cn/api/v1/send", context);
+ if (result.data.code !== 0) {
+ throw result.data.message;
+ }
+
+ return okMsg;
+
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+
+ /**
+ * Get the formatted title for message
+ * @param {?object} heartbeatJSON Heartbeat details (For Up/Down only)
+ * @param {?object} monitorJSON Monitor details (For Up/Down only)
+ * @returns {string} Formatted title
+ */
+ checkStatus(heartbeatJSON, monitorJSON) {
+ let title = "UptimeKuma Message";
+ if (heartbeatJSON != null && heartbeatJSON["status"] === UP) {
+ title = "UptimeKuma Monitor Up " + monitorJSON["name"];
+ }
+ if (heartbeatJSON != null && heartbeatJSON["status"] === DOWN) {
+ title = "UptimeKuma Monitor Down " + monitorJSON["name"];
+ }
+ return title;
+ }
+}
+
+module.exports = WPush;
diff --git a/server/notification-providers/yzj.js b/server/notification-providers/yzj.js
new file mode 100644
index 000000000..6bd3cba51
--- /dev/null
+++ b/server/notification-providers/yzj.js
@@ -0,0 +1,57 @@
+const NotificationProvider = require("./notification-provider");
+const { DOWN, UP } = require("../../src/util");
+const { default: axios } = require("axios");
+
+class YZJ extends NotificationProvider {
+ name = "YZJ";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ let okMsg = "Sent Successfully.";
+
+ try {
+ if (heartbeatJSON !== null) {
+ msg = `${this.statusToString(heartbeatJSON["status"])} ${monitorJSON["name"]} \n> ${heartbeatJSON["msg"]}\n> Time (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`;
+ }
+
+ const config = {
+ headers: {
+ "Content-Type": "application/json",
+ },
+ };
+ const params = {
+ content: msg
+ };
+ // yzjtype=0 => general robot
+ const url = `${notification.yzjWebHookUrl}?yzjtype=0&yzjtoken=${notification.yzjToken}`;
+
+ const result = await axios.post(url, params, config);
+ if (!result.data?.success) {
+ throw new Error(result.data?.errmsg ?? "yzj's server did not respond with the expected result");
+ }
+ return okMsg;
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+
+ /**
+ * Convert status constant to string
+ * @param {string} status The status constant
+ * @returns {string} status
+ */
+ statusToString(status) {
+ switch (status) {
+ case DOWN:
+ return "❌";
+ case UP:
+ return "✅";
+ default:
+ return status;
+ }
+ }
+}
+
+module.exports = YZJ;
diff --git a/server/notification-providers/zoho-cliq.js b/server/notification-providers/zoho-cliq.js
index 10381c81f..3a504de8c 100644
--- a/server/notification-providers/zoho-cliq.js
+++ b/server/notification-providers/zoho-cliq.js
@@ -13,9 +13,9 @@ class ZohoCliq extends NotificationProvider {
*/
_statusMessageFactory = (status, monitorName) => {
if (status === DOWN) {
- return `🔴 Application [${monitorName}] went down\n`;
+ return `🔴 [${monitorName}] went down\n`;
} else if (status === UP) {
- return `✅ Application [${monitorName}] is back online\n`;
+ return `### ✅ [${monitorName}] is back online\n`;
}
return "Notification\n";
};
@@ -46,16 +46,11 @@ class ZohoCliq extends NotificationProvider {
monitorUrl,
}) => {
const payload = [];
- payload.push("### Uptime Kuma\n");
payload.push(this._statusMessageFactory(status, monitorName));
payload.push(`*Description:* ${monitorMessage}`);
- if (monitorName) {
- payload.push(`*Monitor:* ${monitorName}`);
- }
-
if (monitorUrl && monitorUrl !== "https://") {
- payload.push(`*URL:* [${monitorUrl}](${monitorUrl})`);
+ payload.push(`*URL:* ${monitorUrl}`);
}
return payload;
@@ -87,24 +82,10 @@ class ZohoCliq extends NotificationProvider {
return okMsg;
}
- let url;
- switch (monitorJSON["type"]) {
- case "http":
- case "keywork":
- url = monitorJSON["url"];
- break;
- case "docker":
- url = monitorJSON["docker_host"];
- break;
- default:
- url = monitorJSON["hostname"];
- break;
- }
-
const payload = this._notificationPayloadFactory({
monitorMessage: heartbeatJSON.msg,
monitorName: monitorJSON.name,
- monitorUrl: url,
+ monitorUrl: this.extractAddress(monitorJSON),
status: heartbeatJSON.status
});
diff --git a/server/notification.js b/server/notification.js
index 5a412c6e6..fd8c23d67 100644
--- a/server/notification.js
+++ b/server/notification.js
@@ -5,11 +5,15 @@ const AlertNow = require("./notification-providers/alertnow");
const AliyunSms = require("./notification-providers/aliyun-sms");
const Apprise = require("./notification-providers/apprise");
const Bark = require("./notification-providers/bark");
+const Bitrix24 = require("./notification-providers/bitrix24");
const ClickSendSMS = require("./notification-providers/clicksendsms");
+const CallMeBot = require("./notification-providers/call-me-bot");
const SMSC = require("./notification-providers/smsc");
const DingDing = require("./notification-providers/dingding");
const Discord = require("./notification-providers/discord");
+const Elks = require("./notification-providers/46elks");
const Feishu = require("./notification-providers/feishu");
+const Notifery = require("./notification-providers/notifery");
const FreeMobile = require("./notification-providers/freemobile");
const GoogleChat = require("./notification-providers/google-chat");
const Gorush = require("./notification-providers/gorush");
@@ -17,6 +21,7 @@ const Gotify = require("./notification-providers/gotify");
const GrafanaOncall = require("./notification-providers/grafana-oncall");
const HomeAssistant = require("./notification-providers/home-assistant");
const HeiiOnCall = require("./notification-providers/heii-oncall");
+const Keep = require("./notification-providers/keep");
const Kook = require("./notification-providers/kook");
const Line = require("./notification-providers/line");
const LineNotify = require("./notification-providers/linenotify");
@@ -26,20 +31,25 @@ const Mattermost = require("./notification-providers/mattermost");
const Nostr = require("./notification-providers/nostr");
const Ntfy = require("./notification-providers/ntfy");
const Octopush = require("./notification-providers/octopush");
+const OneChat = require("./notification-providers/onechat");
const OneBot = require("./notification-providers/onebot");
const Opsgenie = require("./notification-providers/opsgenie");
const PagerDuty = require("./notification-providers/pagerduty");
+const Pumble = require("./notification-providers/pumble");
const FlashDuty = require("./notification-providers/flashduty");
const PagerTree = require("./notification-providers/pagertree");
const PromoSMS = require("./notification-providers/promosms");
const Pushbullet = require("./notification-providers/pushbullet");
const PushDeer = require("./notification-providers/pushdeer");
const Pushover = require("./notification-providers/pushover");
+const PushPlus = require("./notification-providers/pushplus");
const Pushy = require("./notification-providers/pushy");
const RocketChat = require("./notification-providers/rocket-chat");
const SerwerSMS = require("./notification-providers/serwersms");
const Signal = require("./notification-providers/signal");
+const SIGNL4 = require("./notification-providers/signl4");
const Slack = require("./notification-providers/slack");
+const SMSPartner = require("./notification-providers/smspartner");
const SMSEagle = require("./notification-providers/smseagle");
const SMTP = require("./notification-providers/smtp");
const Squadcast = require("./notification-providers/squadcast");
@@ -47,6 +57,7 @@ const Stackfield = require("./notification-providers/stackfield");
const Teams = require("./notification-providers/teams");
const TechulusPush = require("./notification-providers/techulus-push");
const Telegram = require("./notification-providers/telegram");
+const Threema = require("./notification-providers/threema");
const Twilio = require("./notification-providers/twilio");
const Splunk = require("./notification-providers/splunk");
const Webhook = require("./notification-providers/webhook");
@@ -55,6 +66,17 @@ const GoAlert = require("./notification-providers/goalert");
const SMSManager = require("./notification-providers/smsmanager");
const ServerChan = require("./notification-providers/serverchan");
const ZohoCliq = require("./notification-providers/zoho-cliq");
+const SevenIO = require("./notification-providers/sevenio");
+const Whapi = require("./notification-providers/whapi");
+const WAHA = require("./notification-providers/waha");
+const GtxMessaging = require("./notification-providers/gtx-messaging");
+const Cellsynt = require("./notification-providers/cellsynt");
+const Onesender = require("./notification-providers/onesender");
+const Wpush = require("./notification-providers/wpush");
+const SendGrid = require("./notification-providers/send-grid");
+const YZJ = require("./notification-providers/yzj");
+const SMSPlanet = require("./notification-providers/sms-planet");
+const SpugPush = require("./notification-providers/spugpush");
class Notification {
@@ -77,10 +99,13 @@ class Notification {
new AliyunSms(),
new Apprise(),
new Bark(),
+ new Bitrix24(),
new ClickSendSMS(),
+ new CallMeBot(),
new SMSC(),
new DingDing(),
new Discord(),
+ new Elks(),
new Feishu(),
new FreeMobile(),
new GoogleChat(),
@@ -89,6 +114,7 @@ class Notification {
new GrafanaOncall(),
new HomeAssistant(),
new HeiiOnCall(),
+ new Keep(),
new Kook(),
new Line(),
new LineNotify(),
@@ -98,21 +124,27 @@ class Notification {
new Nostr(),
new Ntfy(),
new Octopush(),
+ new OneChat(),
new OneBot(),
+ new Onesender(),
new Opsgenie(),
new PagerDuty(),
new FlashDuty(),
new PagerTree(),
new PromoSMS(),
+ new Pumble(),
new Pushbullet(),
new PushDeer(),
new Pushover(),
+ new PushPlus(),
new Pushy(),
new RocketChat(),
new ServerChan(),
new SerwerSMS(),
new Signal(),
+ new SIGNL4(),
new SMSManager(),
+ new SMSPartner(),
new Slack(),
new SMSEagle(),
new SMTP(),
@@ -121,12 +153,24 @@ class Notification {
new Teams(),
new TechulusPush(),
new Telegram(),
+ new Threema(),
new Twilio(),
new Splunk(),
new Webhook(),
new WeCom(),
new GoAlert(),
- new ZohoCliq()
+ new ZohoCliq(),
+ new SevenIO(),
+ new Whapi(),
+ new WAHA(),
+ new GtxMessaging(),
+ new Cellsynt(),
+ new Wpush(),
+ new SendGrid(),
+ new YZJ(),
+ new SMSPlanet(),
+ new SpugPush(),
+ new Notifery(),
];
for (let item of list) {
if (! item.name) {
diff --git a/server/prometheus.js b/server/prometheus.js
index f44af6c1c..f26125d2c 100644
--- a/server/prometheus.js
+++ b/server/prometheus.js
@@ -80,23 +80,25 @@ class Prometheus {
}
}
- try {
- monitorStatus.set(this.monitorLabelValues, heartbeat.status);
- } catch (e) {
- log.error("prometheus", "Caught error");
- log.error("prometheus", e);
- }
-
- try {
- if (typeof heartbeat.ping === "number") {
- monitorResponseTime.set(this.monitorLabelValues, heartbeat.ping);
- } else {
- // Is it good?
- monitorResponseTime.set(this.monitorLabelValues, -1);
+ if (heartbeat) {
+ try {
+ monitorStatus.set(this.monitorLabelValues, heartbeat.status);
+ } catch (e) {
+ log.error("prometheus", "Caught error");
+ log.error("prometheus", e);
+ }
+
+ try {
+ if (typeof heartbeat.ping === "number") {
+ monitorResponseTime.set(this.monitorLabelValues, heartbeat.ping);
+ } else {
+ // Is it good?
+ monitorResponseTime.set(this.monitorLabelValues, -1);
+ }
+ } catch (e) {
+ log.error("prometheus", "Caught error");
+ log.error("prometheus", e);
}
- } catch (e) {
- log.error("prometheus", "Caught error");
- log.error("prometheus", e);
}
}
diff --git a/server/proxy.js b/server/proxy.js
index 3f3771ab9..d38e3e4f1 100644
--- a/server/proxy.js
+++ b/server/proxy.js
@@ -1,7 +1,7 @@
const { R } = require("redbean-node");
-const HttpProxyAgent = require("http-proxy-agent");
-const HttpsProxyAgent = require("https-proxy-agent");
-const SocksProxyAgent = require("socks-proxy-agent");
+const { HttpProxyAgent } = require("http-proxy-agent");
+const { HttpsProxyAgent } = require("https-proxy-agent");
+const { SocksProxyAgent } = require("socks-proxy-agent");
const { debug } = require("../src/util");
const { UptimeKumaServer } = require("./uptime-kuma-server");
const { CookieJar } = require("tough-cookie");
@@ -100,17 +100,17 @@ class Proxy {
let jar = new CookieJar();
const proxyOptions = {
- protocol: proxy.protocol,
- host: proxy.host,
- port: proxy.port,
cookies: { jar },
};
+ const proxyUrl = new URL(`${proxy.protocol}://${proxy.host}:${proxy.port}`);
+
if (proxy.auth) {
- proxyOptions.auth = `${proxy.username}:${proxy.password}`;
+ proxyUrl.username = proxy.username;
+ proxyUrl.password = proxy.password;
}
- debug(`Proxy Options: ${JSON.stringify(proxyOptions)}`);
+ debug(`Proxy URL: ${proxyUrl.toString()}`);
debug(`HTTP Agent Options: ${JSON.stringify(httpAgentOptions)}`);
debug(`HTTPS Agent Options: ${JSON.stringify(httpsAgentOptions)}`);
@@ -122,15 +122,15 @@ class Proxy {
// eslint-disable-next-line no-case-declarations
const HttpsCookieProxyAgent = createCookieAgent(HttpsProxyAgent);
- httpAgent = new HttpCookieProxyAgent({
- ...httpAgentOptions || {},
+ httpAgent = new HttpCookieProxyAgent(proxyUrl.toString(), {
+ ...(httpAgentOptions || {}),
+ ...proxyOptions,
+ });
+ httpsAgent = new HttpsCookieProxyAgent(proxyUrl.toString(), {
+ ...(httpsAgentOptions || {}),
...proxyOptions,
});
- httpsAgent = new HttpsCookieProxyAgent({
- ...httpsAgentOptions || {},
- ...proxyOptions,
- });
break;
case "socks":
case "socks5":
@@ -138,10 +138,9 @@ class Proxy {
case "socks4":
// eslint-disable-next-line no-case-declarations
const SocksCookieProxyAgent = createCookieAgent(SocksProxyAgent);
- agent = new SocksCookieProxyAgent({
+ agent = new SocksCookieProxyAgent(proxyUrl.toString(), {
...httpAgentOptions,
...httpsAgentOptions,
- ...proxyOptions,
tls: {
rejectUnauthorized: httpsAgentOptions.rejectUnauthorized,
},
diff --git a/server/routers/api-router.js b/server/routers/api-router.js
index b63b5123b..3568f2abf 100644
--- a/server/routers/api-router.js
+++ b/server/routers/api-router.js
@@ -44,9 +44,8 @@ router.get("/api/entry-page", async (request, response) => {
response.json(result);
});
-router.get("/api/push/:pushToken", async (request, response) => {
+router.all("/api/push/:pushToken", async (request, response) => {
try {
-
let pushToken = request.params.pushToken;
let msg = request.query.msg || "OK";
let ping = parseFloat(request.query.ping) || null;
@@ -99,15 +98,15 @@ router.get("/api/push/:pushToken", async (request, response) => {
// Reset down count
bean.downCount = 0;
- log.debug("monitor", `[${this.name}] sendNotification`);
+ log.debug("monitor", `[${monitor.name}] sendNotification`);
await Monitor.sendNotification(isFirstBeat, monitor, bean);
} else {
- if (bean.status === DOWN && this.resendInterval > 0) {
+ if (bean.status === DOWN && monitor.resendInterval > 0) {
++bean.downCount;
- if (bean.downCount >= this.resendInterval) {
+ if (bean.downCount >= monitor.resendInterval) {
// Send notification again, because we are still DOWN
- log.debug("monitor", `[${this.name}] sendNotification again: Down Count: ${bean.downCount} | Resend Interval: ${this.resendInterval}`);
- await Monitor.sendNotification(isFirstBeat, this, bean);
+ log.debug("monitor", `[${monitor.name}] sendNotification again: Down Count: ${bean.downCount} | Resend Interval: ${monitor.resendInterval}`);
+ await Monitor.sendNotification(isFirstBeat, monitor, bean);
// Reset down count
bean.downCount = 0;
@@ -233,8 +232,8 @@ router.get("/api/badge/:id/uptime/:duration?", cache("5 minutes"), async (reques
let requestedDuration = request.params.duration !== undefined ? request.params.duration : "24h";
const overrideValue = value && parseFloat(value);
- if (requestedDuration === "24") {
- requestedDuration = "24h";
+ if (/^[0-9]+$/.test(requestedDuration)) {
+ requestedDuration = `${requestedDuration}h`;
}
let publicMonitor = await R.getRow(`
@@ -266,7 +265,7 @@ router.get("/api/badge/:id/uptime/:duration?", cache("5 minutes"), async (reques
// build a label string. If a custom label is given, override the default one (requestedDuration)
badgeValues.label = filterAndJoin([
labelPrefix,
- label ?? `Uptime (${requestedDuration}${labelSuffix})`,
+ label ?? `Uptime (${requestedDuration.slice(0, -1)}${labelSuffix})`,
]);
badgeValues.message = filterAndJoin([ prefix, cleanUptime, suffix ]);
}
@@ -303,8 +302,8 @@ router.get("/api/badge/:id/ping/:duration?", cache("5 minutes"), async (request,
let requestedDuration = request.params.duration !== undefined ? request.params.duration : "24h";
const overrideValue = value && parseFloat(value);
- if (requestedDuration === "24") {
- requestedDuration = "24h";
+ if (/^[0-9]+$/.test(requestedDuration)) {
+ requestedDuration = `${requestedDuration}h`;
}
// Check if monitor is public
@@ -326,7 +325,7 @@ router.get("/api/badge/:id/ping/:duration?", cache("5 minutes"), async (request,
// use a given, custom labelColor or use the default badge label color (defined by badge-maker)
badgeValues.labelColor = labelColor ?? "";
// build a lable string. If a custom label is given, override the default one (requestedDuration)
- badgeValues.label = filterAndJoin([ labelPrefix, label ?? `Avg. Ping (${requestedDuration}${labelSuffix})` ]);
+ badgeValues.label = filterAndJoin([ labelPrefix, label ?? `Avg. Ping (${requestedDuration.slice(0, -1)}${labelSuffix})` ]);
badgeValues.message = filterAndJoin([ prefix, avgPing, suffix ]);
}
diff --git a/server/routers/status-page-router.js b/server/routers/status-page-router.js
index 42cccc942..6e57451f1 100644
--- a/server/routers/status-page-router.js
+++ b/server/routers/status-page-router.js
@@ -15,9 +15,16 @@ const server = UptimeKumaServer.getInstance();
router.get("/status/:slug", cache("5 minutes"), async (request, response) => {
let slug = request.params.slug;
+ slug = slug.toLowerCase();
await StatusPage.handleStatusPageResponse(response, server.indexHTML, slug);
});
+router.get("/status/:slug/rss", cache("5 minutes"), async (request, response) => {
+ let slug = request.params.slug;
+ slug = slug.toLowerCase();
+ await StatusPage.handleStatusPageRSSResponse(response, slug);
+});
+
router.get("/status", cache("5 minutes"), async (request, response) => {
let slug = "default";
await StatusPage.handleStatusPageResponse(response, server.indexHTML, slug);
@@ -32,6 +39,7 @@ router.get("/status-page", cache("5 minutes"), async (request, response) => {
router.get("/api/status-page/:slug", cache("5 minutes"), async (request, response) => {
allowDevAllOrigin(response);
let slug = request.params.slug;
+ slug = slug.toLowerCase();
try {
// Get Status Page
@@ -64,6 +72,7 @@ router.get("/api/status-page/heartbeat/:slug", cache("1 minutes"), async (reques
let uptimeList = {};
let slug = request.params.slug;
+ slug = slug.toLowerCase();
let statusPageID = await StatusPage.slugToID(slug);
let monitorIDList = await R.getCol(`
@@ -80,7 +89,7 @@ router.get("/api/status-page/heartbeat/:slug", cache("1 minutes"), async (reques
SELECT * FROM heartbeat
WHERE monitor_id = ?
ORDER BY time DESC
- LIMIT 50
+ LIMIT 100
`, [
monitorID,
]);
@@ -106,6 +115,7 @@ router.get("/api/status-page/heartbeat/:slug", cache("1 minutes"), async (reques
router.get("/api/status-page/:slug/manifest.json", cache("1440 minutes"), async (request, response) => {
allowDevAllOrigin(response);
let slug = request.params.slug;
+ slug = slug.toLowerCase();
try {
// Get Status Page
@@ -140,7 +150,8 @@ router.get("/api/status-page/:slug/manifest.json", cache("1440 minutes"), async
// overall status-page status badge
router.get("/api/status-page/:slug/badge", cache("5 minutes"), async (request, response) => {
allowDevAllOrigin(response);
- const slug = request.params.slug;
+ let slug = request.params.slug;
+ slug = slug.toLowerCase();
const statusPageID = await StatusPage.slugToID(slug);
const {
label,
diff --git a/server/server.js b/server/server.js
index 944504898..919010480 100644
--- a/server/server.js
+++ b/server/server.js
@@ -19,7 +19,7 @@ const nodeVersion = process.versions.node;
// Get the required Node.js version from package.json
const requiredNodeVersions = require("../package.json").engines.node;
-const bannedNodeVersions = " < 14 || 20.0.* || 20.1.* || 20.2.* || 20.3.* ";
+const bannedNodeVersions = " < 18 || 20.0.* || 20.1.* || 20.2.* || 20.3.* ";
console.log(`Your Node.js version: ${nodeVersion}`);
const semver = require("semver");
@@ -132,9 +132,9 @@ const twoFAVerifyOptions = {
const testMode = !!args["test"] || false;
// Must be after io instantiation
-const { sendNotificationList, sendHeartbeatList, sendInfo, sendProxyList, sendDockerHostList, sendAPIKeyList, sendRemoteBrowserList } = require("./client");
+const { sendNotificationList, sendHeartbeatList, sendInfo, sendProxyList, sendDockerHostList, sendAPIKeyList, sendRemoteBrowserList, sendMonitorTypeList } = require("./client");
const { statusPageSocketHandler } = require("./socket-handlers/status-page-socket-handler");
-const databaseSocketHandler = require("./socket-handlers/database-socket-handler");
+const { databaseSocketHandler } = require("./socket-handlers/database-socket-handler");
const { remoteBrowserSocketHandler } = require("./socket-handlers/remote-browser-socket-handler");
const TwoFA = require("./2fa");
const StatusPage = require("./model/status_page");
@@ -149,6 +149,7 @@ const apicache = require("./modules/apicache");
const { resetChrome } = require("./monitor-types/real-browser-monitor-type");
const { EmbeddedMariaDB } = require("./embedded-mariadb");
const { SetupDatabase } = require("./setup-database");
+const { chartSocketHandler } = require("./socket-handlers/chart-socket-handler");
app.use(express.json());
@@ -245,6 +246,36 @@ let needSetup = false;
log.debug("test", request.body);
response.send("OK");
});
+
+ const fs = require("fs");
+
+ app.get("/_e2e/take-sqlite-snapshot", async (request, response) => {
+ await Database.close();
+ try {
+ fs.cpSync(Database.sqlitePath, `${Database.sqlitePath}.e2e-snapshot`);
+ } catch (err) {
+ throw new Error("Unable to copy SQLite DB.");
+ }
+ await Database.connect();
+
+ response.send("Snapshot taken.");
+ });
+
+ app.get("/_e2e/restore-sqlite-snapshot", async (request, response) => {
+ if (!fs.existsSync(`${Database.sqlitePath}.e2e-snapshot`)) {
+ throw new Error("Snapshot doesn't exist.");
+ }
+
+ await Database.close();
+ try {
+ fs.cpSync(`${Database.sqlitePath}.e2e-snapshot`, Database.sqlitePath);
+ } catch (err) {
+ throw new Error("Unable to copy snapshot file.");
+ }
+ await Database.connect();
+
+ response.send("Snapshot restored.");
+ });
}
// Robots.txt
@@ -685,6 +716,10 @@ let needSetup = false;
monitor.kafkaProducerBrokers = JSON.stringify(monitor.kafkaProducerBrokers);
monitor.kafkaProducerSaslOptions = JSON.stringify(monitor.kafkaProducerSaslOptions);
+ monitor.conditions = JSON.stringify(monitor.conditions);
+
+ monitor.rabbitmqNodes = JSON.stringify(monitor.rabbitmqNodes);
+
bean.import(monitor);
bean.user_id = socket.userID;
@@ -694,13 +729,13 @@ let needSetup = false;
await updateMonitorNotification(bean.id, notificationIDList);
- await server.sendMonitorList(socket);
+ await server.sendUpdateMonitorIntoList(socket, bean.id);
if (monitor.active !== false) {
await startMonitor(socket.userID, bean.id);
}
- log.info("monitor", `Added Monitor: ${monitor.id} User ID: ${socket.userID}`);
+ log.info("monitor", `Added Monitor: ${bean.id} User ID: ${socket.userID}`);
callback({
ok: true,
@@ -826,11 +861,20 @@ let needSetup = false;
bean.kafkaProducerAllowAutoTopicCreation = monitor.kafkaProducerAllowAutoTopicCreation;
bean.kafkaProducerSaslOptions = JSON.stringify(monitor.kafkaProducerSaslOptions);
bean.kafkaProducerMessage = monitor.kafkaProducerMessage;
+ bean.cacheBust = monitor.cacheBust;
bean.kafkaProducerSsl = monitor.kafkaProducerSsl;
bean.kafkaProducerAllowAutoTopicCreation =
monitor.kafkaProducerAllowAutoTopicCreation;
bean.gamedigGivenPortOnly = monitor.gamedigGivenPortOnly;
bean.remote_browser = monitor.remote_browser;
+ bean.snmpVersion = monitor.snmpVersion;
+ bean.snmpOid = monitor.snmpOid;
+ bean.jsonPathOperator = monitor.jsonPathOperator;
+ bean.timeout = monitor.timeout;
+ bean.rabbitmqNodes = JSON.stringify(monitor.rabbitmqNodes);
+ bean.rabbitmqUsername = monitor.rabbitmqUsername;
+ bean.rabbitmqPassword = monitor.rabbitmqPassword;
+ bean.conditions = JSON.stringify(monitor.conditions);
bean.validate();
@@ -842,11 +886,11 @@ let needSetup = false;
await updateMonitorNotification(bean.id, monitor.notificationIDList);
- if (await bean.isActive()) {
+ if (await Monitor.isActive(bean.id, bean.active)) {
await restartMonitor(socket.userID, bean.id);
}
- await server.sendMonitorList(socket);
+ await server.sendUpdateMonitorIntoList(socket, bean.id);
callback({
ok: true,
@@ -886,14 +930,17 @@ let needSetup = false;
log.info("monitor", `Get Monitor: ${monitorID} User ID: ${socket.userID}`);
- let bean = await R.findOne("monitor", " id = ? AND user_id = ? ", [
+ let monitor = await R.findOne("monitor", " id = ? AND user_id = ? ", [
monitorID,
socket.userID,
]);
-
+ const monitorData = [{ id: monitor.id,
+ active: monitor.active
+ }];
+ const preloadData = await Monitor.preparePreloadData(monitorData);
callback({
ok: true,
- monitor: await bean.toJSON(),
+ monitor: monitor.toJSON(preloadData),
});
} catch (e) {
@@ -944,7 +991,7 @@ let needSetup = false;
try {
checkLogin(socket);
await startMonitor(socket.userID, monitorID);
- await server.sendMonitorList(socket);
+ await server.sendUpdateMonitorIntoList(socket, monitorID);
callback({
ok: true,
@@ -964,7 +1011,7 @@ let needSetup = false;
try {
checkLogin(socket);
await pauseMonitor(socket.userID, monitorID);
- await server.sendMonitorList(socket);
+ await server.sendUpdateMonitorIntoList(socket, monitorID);
callback({
ok: true,
@@ -1010,8 +1057,7 @@ let needSetup = false;
msg: "successDeleted",
msgi18n: true,
});
-
- await server.sendMonitorList(socket);
+ await server.sendDeleteMonitorFromList(socket, monitorID);
} catch (e) {
callback({
@@ -1320,6 +1366,12 @@ let needSetup = false;
await doubleCheckPassword(socket, currentPassword);
}
+ // Log out all clients if enabling auth
+ // GHSA-23q2-5gf8-gjpp
+ if (currentDisabledAuth && !data.disableAuth) {
+ server.disconnectAllSocketClients(socket.userID, socket.id);
+ }
+
const previousChromeExecutable = await Settings.get("chromeExecutable");
const previousNSCDStatus = await Settings.get("nscd");
@@ -1523,6 +1575,7 @@ let needSetup = false;
apiKeySocketHandler(socket);
remoteBrowserSocketHandler(socket);
generalSocketHandler(socket, server);
+ chartSocketHandler(socket);
log.debug("server", "added all socket handlers");
@@ -1536,6 +1589,7 @@ let needSetup = false;
await afterLogin(socket, await R.findOne("user"));
socket.emit("autoLogin");
} else {
+ socket.emit("loginRequired");
log.debug("auth", "need auth");
}
@@ -1551,18 +1605,20 @@ let needSetup = false;
await server.start();
- server.httpServer.listen(port, hostname, () => {
+ server.httpServer.listen(port, hostname, async () => {
if (hostname) {
log.info("server", `Listening on ${hostname}:${port}`);
} else {
log.info("server", `Listening on ${port}`);
}
- startMonitors();
+ await startMonitors();
+
+ // Put this here. Start background jobs after the db and server is ready to prevent clear up during db migration.
+ await initBackgroundJobs();
+
checkVersion.startInterval();
});
- await initBackgroundJobs();
-
// Start cloudflared at the end if configured
await cloudflaredAutoStart(cloudflaredToken);
@@ -1628,17 +1684,18 @@ async function afterLogin(socket, user) {
sendDockerHostList(socket),
sendAPIKeyList(socket),
sendRemoteBrowserList(socket),
+ sendMonitorTypeList(socket),
]);
await StatusPage.sendStatusPageList(io, socket);
+ const monitorPromises = [];
for (let monitorID in monitorList) {
- await sendHeartbeatList(socket, monitorID);
+ monitorPromises.push(sendHeartbeatList(socket, monitorID));
+ monitorPromises.push(Monitor.sendStats(io, monitorID, user.id));
}
- for (let monitorID in monitorList) {
- await Monitor.sendStats(io, monitorID, user.id);
- }
+ await Promise.all(monitorPromises);
// Set server timezone from client browser if not set
// It should be run once only
@@ -1660,7 +1717,7 @@ async function initDatabase(testMode = false) {
log.info("server", "Connected to the database");
// Patch the database
- await Database.patch();
+ await Database.patch(port, hostname);
let jwtSecretBean = await R.findOne("setting", " `key` = ? ", [
"jwtSecret",
@@ -1755,7 +1812,11 @@ async function startMonitors() {
}
for (let monitor of list) {
- await monitor.start(io);
+ try {
+ await monitor.start(io);
+ } catch (e) {
+ log.error("monitor", e);
+ }
// Give some delays, so all monitors won't make request at the same moment when just start the server.
await sleep(getRandomInt(300, 1000));
}
diff --git a/server/socket-handlers/chart-socket-handler.js b/server/socket-handlers/chart-socket-handler.js
new file mode 100644
index 000000000..654db0e73
--- /dev/null
+++ b/server/socket-handlers/chart-socket-handler.js
@@ -0,0 +1,38 @@
+const { checkLogin } = require("../util-server");
+const { UptimeCalculator } = require("../uptime-calculator");
+const { log } = require("../../src/util");
+
+module.exports.chartSocketHandler = (socket) => {
+ socket.on("getMonitorChartData", async (monitorID, period, callback) => {
+ try {
+ checkLogin(socket);
+
+ log.debug("monitor", `Get Monitor Chart Data: ${monitorID} User ID: ${socket.userID}`);
+
+ if (period == null) {
+ throw new Error("Invalid period.");
+ }
+
+ let uptimeCalculator = await UptimeCalculator.getUptimeCalculator(monitorID);
+
+ let data;
+ if (period <= 24) {
+ data = uptimeCalculator.getDataArray(period * 60, "minute");
+ } else if (period <= 720) {
+ data = uptimeCalculator.getDataArray(period, "hour");
+ } else {
+ data = uptimeCalculator.getDataArray(period / 24, "day");
+ }
+
+ callback({
+ ok: true,
+ data,
+ });
+ } catch (e) {
+ callback({
+ ok: false,
+ msg: e.message,
+ });
+ }
+ });
+};
diff --git a/server/socket-handlers/database-socket-handler.js b/server/socket-handlers/database-socket-handler.js
index bcf34c906..ee2394bf6 100644
--- a/server/socket-handlers/database-socket-handler.js
+++ b/server/socket-handlers/database-socket-handler.js
@@ -6,7 +6,7 @@ const Database = require("../database");
* @param {Socket} socket Socket.io instance
* @returns {void}
*/
-module.exports = (socket) => {
+module.exports.databaseSocketHandler = (socket) => {
// Post or edit incident
socket.on("getDatabaseSize", async (callback) => {
diff --git a/server/socket-handlers/general-socket-handler.js b/server/socket-handlers/general-socket-handler.js
index 68e1f814c..50dcd946e 100644
--- a/server/socket-handlers/general-socket-handler.js
+++ b/server/socket-handlers/general-socket-handler.js
@@ -29,8 +29,13 @@ function getGameList() {
return gameList;
}
+/**
+ * Handler for general events
+ * @param {Socket} socket Socket.io instance
+ * @param {UptimeKumaServer} server Uptime Kuma server
+ * @returns {void}
+ */
module.exports.generalSocketHandler = (socket, server) => {
-
socket.on("initServerTimezone", async (timezone) => {
try {
checkLogin(socket);
diff --git a/server/socket-handlers/status-page-socket-handler.js b/server/socket-handlers/status-page-socket-handler.js
index 29cdb5d4b..be02ef731 100644
--- a/server/socket-handlers/status-page-socket-handler.js
+++ b/server/socket-handlers/status-page-socket-handler.js
@@ -148,13 +148,14 @@ module.exports.statusPageSocketHandler = (socket) => {
config.logo = `/upload/${filename}?t=` + Date.now();
} else {
- config.icon = imgDataUrl;
+ config.logo = imgDataUrl;
}
statusPage.slug = config.slug;
statusPage.title = config.title;
statusPage.description = config.description;
statusPage.icon = config.logo;
+ statusPage.autoRefreshInterval = config.autoRefreshInterval,
statusPage.theme = config.theme;
//statusPage.published = ;
//statusPage.search_engine_index = ;
@@ -211,6 +212,10 @@ module.exports.statusPageSocketHandler = (socket) => {
relationBean.send_url = monitor.sendUrl;
}
+ if (monitor.url !== undefined) {
+ relationBean.custom_url = monitor.url;
+ }
+
await R.store(relationBean);
}
@@ -220,13 +225,17 @@ module.exports.statusPageSocketHandler = (socket) => {
// Delete groups that are not in the list
log.debug("socket", "Delete groups that are not in the list");
- const slots = groupIDList.map(() => "?").join(",");
+ if (groupIDList.length === 0) {
+ await R.exec("DELETE FROM `group` WHERE status_page_id = ?", [ statusPage.id ]);
+ } else {
+ const slots = groupIDList.map(() => "?").join(",");
- const data = [
- ...groupIDList,
- statusPage.id
- ];
- await R.exec(`DELETE FROM \`group\` WHERE id NOT IN (${slots}) AND status_page_id = ?`, data);
+ const data = [
+ ...groupIDList,
+ statusPage.id
+ ];
+ await R.exec(`DELETE FROM \`group\` WHERE id NOT IN (${slots}) AND status_page_id = ?`, data);
+ }
const server = UptimeKumaServer.getInstance();
@@ -281,12 +290,14 @@ module.exports.statusPageSocketHandler = (socket) => {
statusPage.title = title;
statusPage.theme = "auto";
statusPage.icon = "";
+ statusPage.autoRefreshInterval = 300;
await R.store(statusPage);
callback({
ok: true,
msg: "successAdded",
msgi18n: true,
+ slug: slug
});
} catch (error) {
diff --git a/server/uptime-calculator.js b/server/uptime-calculator.js
index 9632e6eac..71d1d458c 100644
--- a/server/uptime-calculator.js
+++ b/server/uptime-calculator.js
@@ -12,7 +12,6 @@ class UptimeCalculator {
* @private
* @type {{string:UptimeCalculator}}
*/
-
static list = {};
/**
@@ -55,6 +54,15 @@ class UptimeCalculator {
lastHourlyStatBean = null;
lastMinutelyStatBean = null;
+ /**
+ * For migration purposes.
+ * @type {boolean}
+ */
+ migrationMode = false;
+
+ statMinutelyKeepHour = 24;
+ statHourlyKeepDay = 30;
+
/**
* Get the uptime calculator for a monitor
* Initializes and returns the monitor if it does not exist
@@ -116,14 +124,23 @@ class UptimeCalculator {
]);
for (let bean of minutelyStatBeans) {
- let key = bean.timestamp;
- this.minutelyUptimeDataList.push(key, {
+ let data = {
up: bean.up,
down: bean.down,
avgPing: bean.ping,
minPing: bean.pingMin,
maxPing: bean.pingMax,
- });
+ };
+
+ if (bean.extras != null) {
+ data = {
+ ...data,
+ ...JSON.parse(bean.extras),
+ };
+ }
+
+ let key = bean.timestamp;
+ this.minutelyUptimeDataList.push(key, data);
}
// Load hourly data from database (recent 30 days only)
@@ -133,14 +150,22 @@ class UptimeCalculator {
]);
for (let bean of hourlyStatBeans) {
- let key = bean.timestamp;
- this.hourlyUptimeDataList.push(key, {
+ let data = {
up: bean.up,
down: bean.down,
avgPing: bean.ping,
minPing: bean.pingMin,
maxPing: bean.pingMax,
- });
+ };
+
+ if (bean.extras != null) {
+ data = {
+ ...data,
+ ...JSON.parse(bean.extras),
+ };
+ }
+
+ this.hourlyUptimeDataList.push(bean.timestamp, data);
}
// Load daily data from database (recent 365 days only)
@@ -150,35 +175,41 @@ class UptimeCalculator {
]);
for (let bean of dailyStatBeans) {
- let key = bean.timestamp;
- this.dailyUptimeDataList.push(key, {
+ let data = {
up: bean.up,
down: bean.down,
avgPing: bean.ping,
minPing: bean.pingMin,
maxPing: bean.pingMax,
- });
+ };
+
+ if (bean.extras != null) {
+ data = {
+ ...data,
+ ...JSON.parse(bean.extras),
+ };
+ }
+
+ this.dailyUptimeDataList.push(bean.timestamp, data);
}
}
/**
* @param {number} status status
* @param {number} ping Ping
+ * @param {dayjs.Dayjs} date Date (Only for migration)
* @returns {dayjs.Dayjs} date
* @throws {Error} Invalid status
*/
- async update(status, ping = 0) {
- let date = this.getCurrentDate();
-
- // Don't count MAINTENANCE into uptime
- if (status === MAINTENANCE) {
- return date;
+ async update(status, ping = 0, date) {
+ if (!date) {
+ date = this.getCurrentDate();
}
let flatStatus = this.flatStatus(status);
if (flatStatus === DOWN && ping > 0) {
- log.warn("uptime-calc", "The ping is not effective when the status is DOWN");
+ log.debug("uptime-calc", "The ping is not effective when the status is DOWN");
}
let divisionKey = this.getMinutelyKey(date);
@@ -189,7 +220,12 @@ class UptimeCalculator {
let hourlyData = this.hourlyUptimeDataList[hourlyKey];
let dailyData = this.dailyUptimeDataList[dailyKey];
- if (flatStatus === UP) {
+ if (status === MAINTENANCE) {
+ minutelyData.maintenance = minutelyData.maintenance ? minutelyData.maintenance + 1 : 1;
+ hourlyData.maintenance = hourlyData.maintenance ? hourlyData.maintenance + 1 : 1;
+ dailyData.maintenance = dailyData.maintenance ? dailyData.maintenance + 1 : 1;
+
+ } else if (flatStatus === UP) {
minutelyData.up += 1;
hourlyData.up += 1;
dailyData.up += 1;
@@ -233,7 +269,7 @@ class UptimeCalculator {
}
}
- } else {
+ } else if (flatStatus === DOWN) {
minutelyData.down += 1;
hourlyData.down += 1;
dailyData.down += 1;
@@ -263,35 +299,70 @@ class UptimeCalculator {
dailyStatBean.ping = dailyData.avgPing;
dailyStatBean.pingMin = dailyData.minPing;
dailyStatBean.pingMax = dailyData.maxPing;
+ {
+ // eslint-disable-next-line no-unused-vars
+ const { up, down, avgPing, minPing, maxPing, timestamp, ...extras } = dailyData;
+ if (Object.keys(extras).length > 0) {
+ dailyStatBean.extras = JSON.stringify(extras);
+ }
+ }
await R.store(dailyStatBean);
- let hourlyStatBean = await this.getHourlyStatBean(hourlyKey);
- hourlyStatBean.up = hourlyData.up;
- hourlyStatBean.down = hourlyData.down;
- hourlyStatBean.ping = hourlyData.avgPing;
- hourlyStatBean.pingMin = hourlyData.minPing;
- hourlyStatBean.pingMax = hourlyData.maxPing;
- await R.store(hourlyStatBean);
+ let currentDate = this.getCurrentDate();
- let minutelyStatBean = await this.getMinutelyStatBean(divisionKey);
- minutelyStatBean.up = minutelyData.up;
- minutelyStatBean.down = minutelyData.down;
- minutelyStatBean.ping = minutelyData.avgPing;
- minutelyStatBean.pingMin = minutelyData.minPing;
- minutelyStatBean.pingMax = minutelyData.maxPing;
- await R.store(minutelyStatBean);
+ // For migration mode, we don't need to store old hourly and minutely data, but we need 30-day's hourly data
+ // Run anyway for non-migration mode
+ if (!this.migrationMode || date.isAfter(currentDate.subtract(this.statHourlyKeepDay, "day"))) {
+ let hourlyStatBean = await this.getHourlyStatBean(hourlyKey);
+ hourlyStatBean.up = hourlyData.up;
+ hourlyStatBean.down = hourlyData.down;
+ hourlyStatBean.ping = hourlyData.avgPing;
+ hourlyStatBean.pingMin = hourlyData.minPing;
+ hourlyStatBean.pingMax = hourlyData.maxPing;
+ {
+ // eslint-disable-next-line no-unused-vars
+ const { up, down, avgPing, minPing, maxPing, timestamp, ...extras } = hourlyData;
+ if (Object.keys(extras).length > 0) {
+ hourlyStatBean.extras = JSON.stringify(extras);
+ }
+ }
+ await R.store(hourlyStatBean);
+ }
- // Remove the old data
- log.debug("uptime-calc", "Remove old data");
- await R.exec("DELETE FROM stat_minutely WHERE monitor_id = ? AND timestamp < ?", [
- this.monitorID,
- this.getMinutelyKey(date.subtract(24, "hour")),
- ]);
+ // For migration mode, we don't need to store old hourly and minutely data, but we need 24-hour's minutely data
+ // Run anyway for non-migration mode
+ if (!this.migrationMode || date.isAfter(currentDate.subtract(this.statMinutelyKeepHour, "hour"))) {
+ let minutelyStatBean = await this.getMinutelyStatBean(divisionKey);
+ minutelyStatBean.up = minutelyData.up;
+ minutelyStatBean.down = minutelyData.down;
+ minutelyStatBean.ping = minutelyData.avgPing;
+ minutelyStatBean.pingMin = minutelyData.minPing;
+ minutelyStatBean.pingMax = minutelyData.maxPing;
+ {
+ // eslint-disable-next-line no-unused-vars
+ const { up, down, avgPing, minPing, maxPing, timestamp, ...extras } = minutelyData;
+ if (Object.keys(extras).length > 0) {
+ minutelyStatBean.extras = JSON.stringify(extras);
+ }
+ }
+ await R.store(minutelyStatBean);
+ }
- await R.exec("DELETE FROM stat_hourly WHERE monitor_id = ? AND timestamp < ?", [
- this.monitorID,
- this.getHourlyKey(date.subtract(30, "day")),
- ]);
+ // No need to remove old data in migration mode
+ if (!this.migrationMode) {
+ // Remove the old data
+ // TODO: Improvement: Convert it to a job?
+ log.debug("uptime-calc", "Remove old data");
+ await R.exec("DELETE FROM stat_minutely WHERE monitor_id = ? AND timestamp < ?", [
+ this.monitorID,
+ this.getMinutelyKey(currentDate.subtract(this.statMinutelyKeepHour, "hour")),
+ ]);
+
+ await R.exec("DELETE FROM stat_hourly WHERE monitor_id = ? AND timestamp < ?", [
+ this.monitorID,
+ this.getHourlyKey(currentDate.subtract(this.statHourlyKeepDay, "day")),
+ ]);
+ }
return date;
}
@@ -467,14 +538,14 @@ class UptimeCalculator {
/**
* Flat status to UP or DOWN
- * @param {number} status the status which schould be turned into a flat status
+ * @param {number} status the status which should be turned into a flat status
* @returns {UP|DOWN|PENDING} The flat status
* @throws {Error} Invalid status
*/
flatStatus(status) {
switch (status) {
case UP:
- // case MAINTENANCE:
+ case MAINTENANCE:
return UP;
case DOWN:
case PENDING:
@@ -497,7 +568,9 @@ class UptimeCalculator {
if (type === "minute" && num > 24 * 60) {
throw new Error("The maximum number of minutes is 1440");
}
-
+ if (type === "day" && num > 365) {
+ throw new Error("The maximum number of days is 365");
+ }
// Get the current time period key based on the type
let key = this.getKey(this.getCurrentDate(), type);
@@ -548,7 +621,7 @@ class UptimeCalculator {
totalPing += data.avgPing * data.up;
}
- // Set key to the pervious time period
+ // Set key to the previous time period
switch (type) {
case "day":
key -= 86400;
@@ -606,7 +679,11 @@ class UptimeCalculator {
avgPing = totalPing / total.up;
}
- uptimeData.uptime = total.up / (total.up + total.down);
+ if (total.up + total.down === 0) {
+ uptimeData.uptime = 0;
+ } else {
+ uptimeData.uptime = total.up / (total.up + total.down);
+ }
uptimeData.avgPing = avgPing;
return uptimeData;
}
@@ -671,7 +748,7 @@ class UptimeCalculator {
result.push(data);
}
- // Set key to the pervious time period
+ // Set key to the previous time period
switch (type) {
case "day":
key -= 86400;
@@ -691,20 +768,36 @@ class UptimeCalculator {
}
/**
- * Get the uptime data by duration
- * @param {'24h'|'30d'|'1y'} duration Only accept 24h, 30d, 1y
+ * Get the uptime data for given duration.
+ * @param {string} duration A string with a number and a unit (m,h,d,w,M,y), such as 24h, 30d, 1y.
* @returns {UptimeDataResult} UptimeDataResult
- * @throws {Error} Invalid duration
+ * @throws {Error} Invalid duration / Unsupported unit
*/
getDataByDuration(duration) {
- if (duration === "24h") {
- return this.get24Hour();
- } else if (duration === "30d") {
- return this.get30Day();
- } else if (duration === "1y") {
- return this.get1Year();
- } else {
- throw new Error("Invalid duration");
+ const durationNumStr = duration.slice(0, -1);
+
+ if (!/^[0-9]+$/.test(durationNumStr)) {
+ throw new Error(`Invalid duration: ${duration}`);
+ }
+ const num = Number(durationNumStr);
+ const unit = duration.slice(-1);
+
+ switch (unit) {
+ case "m":
+ return this.getData(num, "minute");
+ case "h":
+ return this.getData(num, "hour");
+ case "d":
+ return this.getData(num, "day");
+ case "w":
+ return this.getData(7 * num, "day");
+ case "M":
+ return this.getData(30 * num, "day");
+ case "y":
+ return this.getData(365 * num, "day");
+ default:
+ throw new Error(`Unsupported unit (${unit}) for badge duration ${duration}`
+ );
}
}
@@ -744,6 +837,14 @@ class UptimeCalculator {
return dayjs.utc();
}
+ /**
+ * For migration purposes.
+ * @param {boolean} value Migration mode on/off
+ * @returns {void}
+ */
+ setMigrationMode(value) {
+ this.migrationMode = value;
+ }
}
class UptimeDataResult {
diff --git a/server/uptime-kuma-server.js b/server/uptime-kuma-server.js
index bcf497b58..cdaa83dfc 100644
--- a/server/uptime-kuma-server.js
+++ b/server/uptime-kuma-server.js
@@ -113,6 +113,10 @@ class UptimeKumaServer {
UptimeKumaServer.monitorTypeList["tailscale-ping"] = new TailscalePing();
UptimeKumaServer.monitorTypeList["dns"] = new DnsMonitorType();
UptimeKumaServer.monitorTypeList["mqtt"] = new MqttMonitorType();
+ UptimeKumaServer.monitorTypeList["group"] = new GroupMonitorType();
+ UptimeKumaServer.monitorTypeList["snmp"] = new SNMPMonitorType();
+ UptimeKumaServer.monitorTypeList["mongodb"] = new MongodbMonitorType();
+ UptimeKumaServer.monitorTypeList["rabbitmq"] = new RabbitMqMonitorType();
// Allow all CORS origins (polling) in development
let cors = undefined;
@@ -203,24 +207,56 @@ class UptimeKumaServer {
return list;
}
+ /**
+ * Update Monitor into list
+ * @param {Socket} socket Socket to send list on
+ * @param {number} monitorID update or deleted monitor id
+ * @returns {Promise}
+ */
+ async sendUpdateMonitorIntoList(socket, monitorID) {
+ let list = await this.getMonitorJSONList(socket.userID, monitorID);
+ this.io.to(socket.userID).emit("updateMonitorIntoList", list);
+ }
+
+ /**
+ * Delete Monitor from list
+ * @param {Socket} socket Socket to send list on
+ * @param {number} monitorID update or deleted monitor id
+ * @returns {Promise}
+ */
+ async sendDeleteMonitorFromList(socket, monitorID) {
+ this.io.to(socket.userID).emit("deleteMonitorFromList", monitorID);
+ }
+
/**
* Get a list of monitors for the given user.
* @param {string} userID - The ID of the user to get monitors for.
+ * @param {number} monitorID - The ID of monitor for.
* @returns {Promise} A promise that resolves to an object with monitor IDs as keys and monitor objects as values.
*
* Generated by Trelent
*/
- async getMonitorJSONList(userID) {
- let result = {};
+ async getMonitorJSONList(userID, monitorID = null) {
- let monitorList = await R.find("monitor", " user_id = ? ORDER BY weight DESC, name", [
- userID,
- ]);
+ let query = " user_id = ? ";
+ let queryParams = [ userID ];
- for (let monitor of monitorList) {
- result[monitor.id] = await monitor.toJSON();
+ if (monitorID) {
+ query += "AND id = ? ";
+ queryParams.push(monitorID);
}
+ let monitorList = await R.find("monitor", query + "ORDER BY weight DESC, name", queryParams);
+
+ const monitorData = monitorList.map(monitor => ({
+ id: monitor.id,
+ active: monitor.active,
+ name: monitor.name,
+ }));
+ const preloadData = await Monitor.preparePreloadData(monitorData);
+
+ const result = {};
+ monitorList.forEach(monitor => result[monitor.id] = monitor.toJSON(preloadData));
return result;
}
@@ -516,3 +552,8 @@ const { RealBrowserMonitorType } = require("./monitor-types/real-browser-monitor
const { TailscalePing } = require("./monitor-types/tailscale-ping");
const { DnsMonitorType } = require("./monitor-types/dns");
const { MqttMonitorType } = require("./monitor-types/mqtt");
+const { GroupMonitorType } = require("./monitor-types/group");
+const { SNMPMonitorType } = require("./monitor-types/snmp");
+const { MongodbMonitorType } = require("./monitor-types/mongodb");
+const { RabbitMqMonitorType } = require("./monitor-types/rabbitmq");
+const Monitor = require("./model/monitor");
diff --git a/server/util-server.js b/server/util-server.js
index 8add5bc56..5ebc62ac5 100644
--- a/server/util-server.js
+++ b/server/util-server.js
@@ -11,8 +11,7 @@ const mssql = require("mssql");
const { Client } = require("pg");
const postgresConParse = require("pg-connection-string").parse;
const mysql = require("mysql2");
-const { MongoClient } = require("mongodb");
-const { NtlmClient } = require("axios-ntlm");
+const { NtlmClient } = require("./modules/axios-ntlm/lib/ntlmClient.js");
const { Settings } = require("./settings");
const grpc = require("@grpc/grpc-js");
const protojs = require("protobufjs");
@@ -437,24 +436,6 @@ exports.mysqlQuery = function (connectionString, query, password = undefined) {
});
};
-/**
- * Connect to and ping a MongoDB database
- * @param {string} connectionString The database connection string
- * @returns {Promise<(string[] | object[] | object)>} Response from
- * server
- */
-exports.mongodbPing = async function (connectionString) {
- let client = await MongoClient.connect(connectionString);
- let dbPing = await client.db().command({ ping: 1 });
- await client.close();
-
- if (dbPing["ok"] === 1) {
- return "UP";
- } else {
- throw Error("failed");
- }
-};
-
/**
* Query radius server
* @param {string} hostname Hostname of radius server
@@ -505,12 +486,16 @@ exports.radius = function (
/**
* Redis server ping
* @param {string} dsn The redis connection string
- * @returns {Promise} Response from redis server
+ * @param {boolean} rejectUnauthorized If false, allows unverified server certificates.
+ * @returns {Promise} Response from server
*/
-exports.redisPingAsync = function (dsn) {
+exports.redisPingAsync = function (dsn, rejectUnauthorized) {
return new Promise((resolve, reject) => {
const client = redis.createClient({
- url: dsn
+ url: dsn,
+ socket: {
+ rejectUnauthorized
+ }
});
client.on("error", (err) => {
if (client.isOpen) {
@@ -653,21 +638,27 @@ const parseCertificateInfo = function (info) {
/**
* Check if certificate is valid
- * @param {object} res Response object from axios
+ * @param {tls.TLSSocket} socket TLSSocket, which may or may not be connected
* @returns {object} Object containing certificate information
- * @throws No socket was found to check certificate for
*/
-exports.checkCertificate = function (res) {
- if (!res.request.res.socket) {
- throw new Error("No socket found");
+exports.checkCertificate = function (socket) {
+ let certInfoStartTime = dayjs().valueOf();
+
+ // Return null if there is no socket
+ if (socket === undefined || socket == null) {
+ return null;
}
- const info = res.request.res.socket.getPeerCertificate(true);
- const valid = res.request.res.socket.authorized || false;
+ const info = socket.getPeerCertificate(true);
+ const valid = socket.authorized || false;
log.debug("cert", "Parsing Certificate Info");
const parsedInfo = parseCertificateInfo(info);
+ if (process.env.TIMELOGGER === "1") {
+ log.debug("monitor", "Cert Info Query Time: " + (dayjs().valueOf() - certInfoStartTime) + "ms");
+ }
+
return {
valid: valid,
certInfo: parsedInfo
diff --git a/server/utils/knex/lib/dialects/mysql2/schema/mysql2-columncompiler.js b/server/utils/knex/lib/dialects/mysql2/schema/mysql2-columncompiler.js
new file mode 100644
index 000000000..d05a6bc8c
--- /dev/null
+++ b/server/utils/knex/lib/dialects/mysql2/schema/mysql2-columncompiler.js
@@ -0,0 +1,22 @@
+const ColumnCompilerMySQL = require("knex/lib/dialects/mysql/schema/mysql-columncompiler");
+const { formatDefault } = require("knex/lib/formatter/formatterUtils");
+const { log } = require("../../../../../../../src/util");
+
+class KumaColumnCompiler extends ColumnCompilerMySQL {
+ /**
+ * Override defaultTo method to handle default value for TEXT fields
+ * @param {any} value Value
+ * @returns {string|void} Default value (Don't understand why it can return void or string, but it's the original code, lol)
+ */
+ defaultTo(value) {
+ if (this.type === "text" && typeof value === "string") {
+ log.debug("defaultTo", `${this.args[0]}: ${this.type} ${value} ${typeof value}`);
+ // MySQL 8.0 is required and only if the value is written as an expression: https://dev.mysql.com/doc/refman/8.0/en/data-type-defaults.html
+ // MariaDB 10.2 is required: https://mariadb.com/kb/en/text/
+ return `default (${formatDefault(value, this.type, this.client)})`;
+ }
+ return super.defaultTo.apply(this, arguments);
+ }
+}
+
+module.exports = KumaColumnCompiler;
diff --git a/server/utils/simple-migration-server.js b/server/utils/simple-migration-server.js
new file mode 100644
index 000000000..680f8df24
--- /dev/null
+++ b/server/utils/simple-migration-server.js
@@ -0,0 +1,84 @@
+const express = require("express");
+const http = require("node:http");
+const { log } = require("../../src/util");
+
+/**
+ * SimpleMigrationServer
+ * For displaying the migration status of the server
+ * Also, it is used to let Docker healthcheck know the status of the server, as the main server is not started yet, healthcheck will think the server is down incorrectly.
+ */
+class SimpleMigrationServer {
+ /**
+ * Express app instance
+ * @type {?Express}
+ */
+ app;
+
+ /**
+ * Server instance
+ * @type {?Server}
+ */
+ server;
+
+ /**
+ * Response object
+ * @type {?Response}
+ */
+ response;
+
+ /**
+ * Start the server
+ * @param {number} port Port
+ * @param {string} hostname Hostname
+ * @returns {Promise}
+ */
+ start(port, hostname) {
+ this.app = express();
+ this.server = http.createServer(this.app);
+
+ this.app.get("/", (req, res) => {
+ res.set("Content-Type", "text/plain");
+ res.write("Migration is in progress, listening message...\n");
+ if (this.response) {
+ this.response.write("Disconnected\n");
+ this.response.end();
+ }
+ this.response = res;
+ // never ending response
+ });
+
+ return new Promise((resolve) => {
+ this.server.listen(port, hostname, () => {
+ if (hostname) {
+ log.info("migration", `Migration server is running on http://${hostname}:${port}`);
+ } else {
+ log.info("migration", `Migration server is running on http://localhost:${port}`);
+ }
+ resolve();
+ });
+ });
+ }
+
+ /**
+ * Update the message
+ * @param {string} msg Message to update
+ * @returns {void}
+ */
+ update(msg) {
+ this.response?.write(msg + "\n");
+ }
+
+ /**
+ * Stop the server
+ * @returns {Promise}
+ */
+ async stop() {
+ this.response?.write("Finished, please refresh this page.\n");
+ this.response?.end();
+ await this.server?.close();
+ }
+}
+
+module.exports = {
+ SimpleMigrationServer,
+};
diff --git a/src/App.vue b/src/App.vue
index f102360c1..a7bb69b42 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -4,9 +4,11 @@
diff --git a/src/assets/app.scss b/src/assets/app.scss
index c7e56ba74..fd43a7bee 100644
--- a/src/assets/app.scss
+++ b/src/assets/app.scss
@@ -3,7 +3,7 @@
@import "node_modules/bootstrap/scss/bootstrap";
#app {
- font-family: BlinkMacSystemFont, segoe ui, Roboto, helvetica neue, Arial, noto sans, sans-serif, apple color emoji, segoe ui emoji, segoe ui symbol, noto color emoji;
+ font-family: "Twemoji Country Flags", BlinkMacSystemFont, segoe ui, Roboto, helvetica neue, Arial, noto sans, sans-serif, apple color emoji, segoe ui emoji, segoe ui symbol, noto color emoji;
}
h1 {
@@ -576,6 +576,12 @@ optgroup {
outline: none !important;
}
+.prism-editor__container {
+ .important {
+ font-weight: var(--bs-body-font-weight) !important;
+ }
+}
+
h5.settings-subheading::after {
content: "";
display: block;
@@ -613,7 +619,7 @@ $shadow-box-padding: 20px;
bottom: 0;
margin-left: -$shadow-box-padding;
margin-right: -$shadow-box-padding;
- z-index: 100;
+ z-index: 10;
background-color: rgba(white, 0.2);
backdrop-filter: blur(2px);
border-radius: 0 0 10px 10px;
diff --git a/src/components/CreateGroupDialog.vue b/src/components/CreateGroupDialog.vue
index ba7fe6eb7..8bac1ccd0 100644
--- a/src/components/CreateGroupDialog.vue
+++ b/src/components/CreateGroupDialog.vue
@@ -42,6 +42,9 @@ export default {
mounted() {
this.modal = new Modal(this.$refs.modal);
},
+ beforeUnmount() {
+ this.cleanupModal();
+ },
methods: {
/**
* Show the confirm dialog
@@ -58,6 +61,19 @@ export default {
this.$emit("added", this.groupName);
this.modal.hide();
},
+ /**
+ * Clean up modal and restore scroll behavior
+ * @returns {void}
+ */
+ cleanupModal() {
+ if (this.modal) {
+ try {
+ this.modal.hide();
+ } catch (e) {
+ console.warn("Modal hide failed:", e);
+ }
+ }
+ }
},
};
diff --git a/src/components/EditMonitorCondition.vue b/src/components/EditMonitorCondition.vue
new file mode 100644
index 000000000..ac1b02dd2
--- /dev/null
+++ b/src/components/EditMonitorCondition.vue
@@ -0,0 +1,152 @@
+
+
+
+
+
+
+
+ {{ $t("and") }}
+ {{ $t("or") }}
+
+
+
+
+ {{ $t(variable.id) }}
+
+
+
+
+
+ {{ $t(operator.caption) }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/EditMonitorConditionGroup.vue b/src/components/EditMonitorConditionGroup.vue
new file mode 100644
index 000000000..910b41508
--- /dev/null
+++ b/src/components/EditMonitorConditionGroup.vue
@@ -0,0 +1,189 @@
+
+
+
+
+ {{ $t("and") }}
+ {{ $t("or") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t("conditionAdd") }}
+
+
+ {{ $t("conditionAddGroup") }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/EditMonitorConditions.vue b/src/components/EditMonitorConditions.vue
new file mode 100644
index 000000000..1827cfe27
--- /dev/null
+++ b/src/components/EditMonitorConditions.vue
@@ -0,0 +1,143 @@
+
+
+
{{ $t("Conditions") }}
+
+
+
+
+
+
+
+
+ {{ $t("conditionAdd") }}
+
+
+ {{ $t("conditionAddGroup") }}
+
+
+
+
+
+
+
+
diff --git a/src/components/HeartbeatBar.vue b/src/components/HeartbeatBar.vue
index fc044fe54..429ca9f91 100644
--- a/src/components/HeartbeatBar.vue
+++ b/src/components/HeartbeatBar.vue
@@ -4,17 +4,23 @@
+ >
+
+
-
{{ timeSinceFirstBeat }} ago
+
{{ timeSinceFirstBeat }}
{{ timeSinceLastBeat }}
@@ -47,7 +53,7 @@ export default {
beatWidth: 10,
beatHeight: 30,
hoverScale: 1.5,
- beatMargin: 4,
+ beatHoverAreaPadding: 4,
move: false,
maxBeat: -1,
};
@@ -123,7 +129,7 @@ export default {
barStyle() {
if (this.move && this.shortBeatList.length > this.maxBeat) {
- let width = -(this.beatWidth + this.beatMargin * 2);
+ let width = -(this.beatWidth + this.beatHoverAreaPadding * 2);
return {
transition: "all ease-in-out 0.25s",
@@ -137,12 +143,17 @@ export default {
},
+ beatHoverAreaStyle() {
+ return {
+ padding: this.beatHoverAreaPadding + "px",
+ "--hover-scale": this.hoverScale,
+ };
+ },
+
beatStyle() {
return {
width: this.beatWidth + "px",
height: this.beatHeight + "px",
- margin: this.beatMargin + "px",
- "--hover-scale": this.hoverScale,
};
},
@@ -152,7 +163,7 @@ export default {
*/
timeStyle() {
return {
- "margin-left": this.numPadding * (this.beatWidth + this.beatMargin * 2) + "px",
+ "margin-left": this.numPadding * (this.beatWidth + this.beatHoverAreaPadding * 2) + "px",
};
},
@@ -184,11 +195,11 @@ export default {
}
if (seconds < tolerance) {
- return "now";
+ return this.$t("now");
} else if (seconds < 60 * 60) {
- return (seconds / 60).toFixed(0) + "m ago";
+ return this.$t("time ago", [ (seconds / 60).toFixed(0) + "m" ]);
} else {
- return (seconds / 60 / 60).toFixed(0) + "h ago";
+ return this.$t("time ago", [ (seconds / 60 / 60).toFixed(0) + "h" ]);
}
}
},
@@ -219,20 +230,20 @@ export default {
if (this.size !== "big") {
this.beatWidth = 5;
this.beatHeight = 16;
- this.beatMargin = 2;
+ this.beatHoverAreaPadding = 2;
}
// Suddenly, have an idea how to handle it universally.
// If the pixel * ratio != Integer, then it causes render issue, round it to solve it!!
const actualWidth = this.beatWidth * window.devicePixelRatio;
- const actualMargin = this.beatMargin * window.devicePixelRatio;
+ const actualHoverAreaPadding = this.beatHoverAreaPadding * window.devicePixelRatio;
if (!Number.isInteger(actualWidth)) {
this.beatWidth = Math.round(actualWidth) / window.devicePixelRatio;
}
- if (!Number.isInteger(actualMargin)) {
- this.beatMargin = Math.round(actualMargin) / window.devicePixelRatio;
+ if (!Number.isInteger(actualHoverAreaPadding)) {
+ this.beatHoverAreaPadding = Math.round(actualHoverAreaPadding) / window.devicePixelRatio;
}
window.addEventListener("resize", this.resize);
@@ -245,7 +256,7 @@ export default {
*/
resize() {
if (this.$refs.wrap) {
- this.maxBeat = Math.floor(this.$refs.wrap.clientWidth / (this.beatWidth + this.beatMargin * 2));
+ this.maxBeat = Math.floor(this.$refs.wrap.clientWidth / (this.beatWidth + this.beatHoverAreaPadding * 2));
}
},
@@ -273,32 +284,41 @@ export default {
}
.hp-bar-big {
- .beat {
+ .beat-hover-area {
display: inline-block;
- background-color: $primary;
- border-radius: $border-radius;
-
- &.empty {
- background-color: aliceblue;
- }
-
- &.down {
- background-color: $danger;
- }
-
- &.pending {
- background-color: $warning;
- }
-
- &.maintenance {
- background-color: $maintenance;
- }
&:not(.empty):hover {
transition: all ease-in-out 0.15s;
opacity: 0.8;
transform: scale(var(--hover-scale));
}
+
+ .beat {
+ background-color: $primary;
+ border-radius: $border-radius;
+
+ /*
+ pointer-events needs to be changed because
+ tooltip momentarily disappears when crossing between .beat-hover-area and .beat
+ */
+ pointer-events: none;
+
+ &.empty {
+ background-color: aliceblue;
+ }
+
+ &.down {
+ background-color: $danger;
+ }
+
+ &.pending {
+ background-color: $warning;
+ }
+
+ &.maintenance {
+ background-color: $maintenance;
+ }
+ }
}
}
diff --git a/src/components/MonitorList.vue b/src/components/MonitorList.vue
index b9d42048b..a579316b3 100644
--- a/src/components/MonitorList.vue
+++ b/src/components/MonitorList.vue
@@ -45,7 +45,7 @@
-
+
{{ $t("No Monitors, please") }} {{ $t("add one") }}
diff --git a/src/components/MonitorListItem.vue b/src/components/MonitorListItem.vue
index 9b45ae9f2..ce38086b9 100644
--- a/src/components/MonitorListItem.vue
+++ b/src/components/MonitorListItem.vue
@@ -14,7 +14,7 @@
-
+
@@ -22,11 +22,11 @@
{{ monitor.name }}
-
-
@@ -43,12 +43,15 @@
diff --git a/src/components/MonitorSettingDialog.vue b/src/components/MonitorSettingDialog.vue
index e6b2cd1ef..8723c4862 100644
--- a/src/components/MonitorSettingDialog.vue
+++ b/src/components/MonitorSettingDialog.vue
@@ -10,7 +10,7 @@
+
+
+ {{ $t("Custom URL") }}
+ changeUrl(monitor.group_index, monitor.monitor_index, e.target!.value)">
+
+
+ {{ $t("customUrlDescription") }}
+
+
+
@@ -78,6 +88,7 @@ export default {
monitor_index: monitor.index,
group_index: group.index,
isClickAble: this.showLink(monitor),
+ url: monitor.element.url,
};
this.MonitorSettingDialog.show();
@@ -110,6 +121,17 @@ export default {
}
return monitor.element.sendUrl && monitor.element.url && monitor.element.url !== "https://" && !this.editMode;
},
+
+ /**
+ * Toggle the value of sendUrl
+ * @param {number} groupIndex Index of group monitor is member of
+ * @param {number} index Index of monitor within group
+ * @param {string} value The new value of the url
+ * @returns {void}
+ */
+ changeUrl(groupIndex, index, value) {
+ this.$root.publicGroupList[groupIndex].monitorList[index].url = value;
+ },
},
};
diff --git a/src/components/NotificationDialog.vue b/src/components/NotificationDialog.vue
index 56580fbf0..acfcde6a2 100644
--- a/src/components/NotificationDialog.vue
+++ b/src/components/NotificationDialog.vue
@@ -114,14 +114,18 @@ export default {
"AlertNow": "AlertNow",
"apprise": this.$t("apprise"),
"Bark": "Bark",
+ "Bitrix24": "Bitrix24",
"clicksendsms": "ClickSend SMS",
+ "CallMeBot": "CallMeBot (WhatsApp, Telegram Call, Facebook Messanger)",
"discord": "Discord",
+ "Elks": "46elks",
"GoogleChat": "Google Chat (Google Workspace)",
"gorush": "Gorush",
"gotify": "Gotify",
"GrafanaOncall": "Grafana Oncall",
"HeiiOnCall": "Heii On-Call",
"HomeAssistant": "Home Assistant",
+ "Keep": "Keep",
"Kook": "Kook",
"line": "LINE Messenger",
"LineNotify": "LINE Notify",
@@ -131,28 +135,41 @@ export default {
"nostr": "Nostr",
"ntfy": "Ntfy",
"octopush": "Octopush",
+ "OneChat": "OneChat",
"OneBot": "OneBot",
+ "Onesender": "Onesender",
"Opsgenie": "Opsgenie",
"PagerDuty": "PagerDuty",
"PagerTree": "PagerTree",
+ "pumble": "Pumble",
"pushbullet": "Pushbullet",
"PushByTechulus": "Push by Techulus",
"pushover": "Pushover",
"pushy": "Pushy",
"rocket.chat": "Rocket.Chat",
"signal": "Signal",
+ "SIGNL4": "SIGNL4",
"slack": "Slack",
"squadcast": "SquadCast",
"SMSEagle": "SMSEagle",
+ "SMSPartner": "SMS Partner",
"smtp": this.$t("smtp"),
"stackfield": "Stackfield",
"teams": "Microsoft Teams",
"telegram": "Telegram",
+ "threema": "Threema",
"twilio": "Twilio",
"Splunk": "Splunk",
"webhook": "Webhook",
"GoAlert": "GoAlert",
- "ZohoCliq": "ZohoCliq"
+ "ZohoCliq": "ZohoCliq",
+ "SevenIO": "SevenIO",
+ "whapi": "WhatsApp (Whapi)",
+ "waha": "WhatsApp (WAHA)",
+ "gtxmessaging": "GtxMessaging",
+ "Cellsynt": "Cellsynt",
+ "SendGrid": "SendGrid",
+ "notifery": "Notifery"
};
// Put notifications here if it's not supported in most regions or its documentation is not in English
@@ -168,7 +185,12 @@ export default {
"SMSManager": "SmsManager (smsmanager.cz)",
"WeCom": "WeCom (企业微信群机器人)",
"ServerChan": "ServerChan (Server酱)",
+ "PushPlus": "PushPlus (推送加)",
+ "SpugPush": "SpugPush(Spug推送助手)",
"smsc": "SMSC",
+ "WPush": "WPush(wpush.cn)",
+ "YZJ": "YZJ (云之家自定义机器人)",
+ "SMSPlanet": "SMSPlanet.pl"
};
// Sort by notification name
@@ -218,6 +240,9 @@ export default {
mounted() {
this.modal = new Modal(this.$refs.modal);
},
+ beforeUnmount() {
+ this.cleanupModal();
+ },
methods: {
/**
@@ -322,6 +347,20 @@ export default {
});
} while (this.$root.notificationList.find(it => it.name === name));
return name;
+ },
+
+ /**
+ * Clean up modal and restore scroll behavior
+ * @returns {void}
+ */
+ cleanupModal() {
+ if (this.modal) {
+ try {
+ this.modal.hide();
+ } catch (e) {
+ console.warn("Modal hide failed:", e);
+ }
+ }
}
},
};
diff --git a/src/components/PingChart.vue b/src/components/PingChart.vue
index c550b4b4f..60b0d3c9c 100644
--- a/src/components/PingChart.vue
+++ b/src/components/PingChart.vue
@@ -1,16 +1,24 @@
-
+
{{ chartPeriodOptions[chartPeriodHrs] }}
-
@@ -19,9 +27,8 @@
@@ -296,6 +567,7 @@ export default {
.dark & {
background: $dark-bg;
+ color: $dark-font-color;
}
.dark &:hover {
diff --git a/src/components/ProxyDialog.vue b/src/components/ProxyDialog.vue
index fc92359b9..2f7ed7b61 100644
--- a/src/components/ProxyDialog.vue
+++ b/src/components/ProxyDialog.vue
@@ -125,11 +125,12 @@ export default {
}
};
},
-
mounted() {
this.modal = new Modal(this.$refs.modal);
},
-
+ beforeUnmount() {
+ this.cleanupModal();
+ },
methods: {
/**
* Show dialog to confirm deletion
@@ -209,6 +210,20 @@ export default {
}
});
},
+
+ /**
+ * Clean up modal and restore scroll behavior
+ * @returns {void}
+ */
+ cleanupModal() {
+ if (this.modal) {
+ try {
+ this.modal.hide();
+ } catch (e) {
+ console.warn("Modal hide failed:", e);
+ }
+ }
+ }
},
};
diff --git a/src/components/PublicGroupList.vue b/src/components/PublicGroupList.vue
index a38a4ba4c..296778637 100644
--- a/src/components/PublicGroupList.vue
+++ b/src/components/PublicGroupList.vue
@@ -7,12 +7,12 @@
:animation="100"
>
-
+
-
+
@@ -31,9 +31,9 @@
item-key="id"
>
-
+
-
+
@@ -45,10 +45,11 @@
class="item-name"
target="_blank"
rel="noopener noreferrer"
+ data-testid="monitor-name"
>
{{ monitor.element.name }}
-
{{ monitor.element.name }}
+
{{ monitor.element.name }}
@@ -68,12 +70,12 @@
-
+
-
diff --git a/src/components/Tag.vue b/src/components/Tag.vue
index 6c2ff8c9b..ceccce8a6 100644
--- a/src/components/Tag.vue
+++ b/src/components/Tag.vue
@@ -6,7 +6,6 @@
'm-2': size == 'normal',
'px-2': size == 'sm',
'py-0': size == 'sm',
- 'mx-1': size == 'sm',
}"
:style="{ backgroundColor: item.color, fontSize: size == 'sm' ? '0.7em' : '1em' }"
>
@@ -48,7 +47,7 @@ export default {
},
computed: {
displayText() {
- if (this.item.value === "" || this.item.value === undefined) {
+ if (this.item.value === "" || this.item.value === undefined || this.item.value === null) {
return this.item.name;
} else {
return `${this.item.name}: ${this.item.value}`;
diff --git a/src/components/TagsManager.vue b/src/components/TagsManager.vue
index 6b77b1c39..aa8f93a83 100644
--- a/src/components/TagsManager.vue
+++ b/src/components/TagsManager.vue
@@ -14,6 +14,7 @@
type="button"
class="btn btn-outline-secondary btn-add"
:disabled="processing"
+ data-testid="add-tag-button"
@click.stop="showAddDialog"
>
{{ $t("Add") }}
@@ -59,6 +60,7 @@
v-model="newDraftTag.name" class="form-control"
:class="{'is-invalid': validateDraftTag.nameInvalid}"
:placeholder="$t('Name')"
+ data-testid="tag-name-input"
@keydown.enter.prevent="onEnter"
/>
@@ -76,6 +78,7 @@
label="name"
select-label=""
deselect-label=""
+ data-testid="tag-color-select"
>
@@ -114,6 +118,7 @@
type="button"
class="btn btn-secondary float-end"
:disabled="processing || validateDraftTag.invalid"
+ data-testid="tag-submit-button"
@click.stop="addDraftTag"
>
{{ $t("Add") }}
@@ -192,7 +197,7 @@ export default {
return tagOptions;
},
selectedTags() {
- return this.preSelectedTags.concat(this.newTags).filter(tag => !this.deleteTags.find(monitorTag => monitorTag.id === tag.id));
+ return this.preSelectedTags.concat(this.newTags).filter(tag => !this.deleteTags.find(monitorTag => monitorTag.tag_id === tag.tag_id));
},
colorOptions() {
return colorOptions(this);
@@ -243,6 +248,9 @@ export default {
this.modal = new Modal(this.$refs.modal);
this.getExistingTags();
},
+ beforeUnmount() {
+ this.cleanupModal();
+ },
methods: {
/**
* Show the add tag dialog
@@ -454,6 +462,19 @@ export default {
this.newTags = [];
this.deleteTags = [];
this.processing = false;
+ },
+ /**
+ * Clean up modal and restore scroll behavior
+ * @returns {void}
+ */
+ cleanupModal() {
+ if (this.modal) {
+ try {
+ this.modal.hide();
+ } catch (e) {
+ console.warn("Modal hide failed:", e);
+ }
+ }
}
},
};
diff --git a/src/components/TemplatedInput.vue b/src/components/TemplatedInput.vue
new file mode 100644
index 000000000..43c5382e0
--- /dev/null
+++ b/src/components/TemplatedInput.vue
@@ -0,0 +1,75 @@
+
+
+
+ {{ $t("documentation") }}
+
+
+
{{ msg }}
: {{ $t("templateMsg") }}
+
{{ name }}
: {{ $t("templateServiceName") }}
+
{{ status }}
: {{ $t("templateStatus") }}
+
{{ hostnameOrURL }}
: {{ $t("templateHostnameOrURL") }}
+
{{ heartbeatJSON }}
: {{ $t("templateHeartbeatJSON") }}
({{ $t("templateLimitedToUpDownNotifications") }})
+
{{ monitorJSON }}
: {{ $t("templateMonitorJSON") }}
({{ $t("templateLimitedToUpDownCertNotifications") }})
+
+
+
+
+
+
diff --git a/src/components/TemplatedTextarea.vue b/src/components/TemplatedTextarea.vue
new file mode 100644
index 000000000..ff0c0f9fb
--- /dev/null
+++ b/src/components/TemplatedTextarea.vue
@@ -0,0 +1,80 @@
+
+
+
+ {{ $t("documentation") }}
+
+
+
{{ msg }}
: {{ $t("templateMsg") }}
+
{{ name }}
: {{ $t("templateServiceName") }}
+
{{ status }}
: {{ $t("templateStatus") }}
+
{{ hostnameOrURL }}
: {{ $t("templateHostnameOrURL") }}
+
{{ heartbeatJSON }}
: {{ $t("templateHeartbeatJSON") }}
({{ $t("templateLimitedToUpDownNotifications") }})
+
{{ monitorJSON }}
: {{ $t("templateMonitorJSON") }}
({{ $t("templateLimitedToUpDownCertNotifications") }})
+
+
+
+
+
+
+
+
diff --git a/src/components/notifications/46elks.vue b/src/components/notifications/46elks.vue
new file mode 100644
index 000000000..d29655bd5
--- /dev/null
+++ b/src/components/notifications/46elks.vue
@@ -0,0 +1,48 @@
+
+
+ {{ $t("Username") }}
+
+ {{ $t("Password") }}
+
+
+
+
+
+
{{ $t("To Number") }}
+
+
+
+
+
+ https://46elks.com/docs/send-sms
+
+
+
+
diff --git a/src/components/notifications/Bitrix24.vue b/src/components/notifications/Bitrix24.vue
new file mode 100644
index 000000000..ac3dc3121
--- /dev/null
+++ b/src/components/notifications/Bitrix24.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
{{ $t("User ID") }}
+
+
{{ $t("bitrix24SupportUserID") }}
+
+
+
diff --git a/src/components/notifications/CallMeBot.vue b/src/components/notifications/CallMeBot.vue
new file mode 100644
index 000000000..74c69ea35
--- /dev/null
+++ b/src/components/notifications/CallMeBot.vue
@@ -0,0 +1,13 @@
+
+
+
diff --git a/src/components/notifications/Cellsynt.vue b/src/components/notifications/Cellsynt.vue
new file mode 100644
index 000000000..2e8a6de71
--- /dev/null
+++ b/src/components/notifications/Cellsynt.vue
@@ -0,0 +1,54 @@
+
+
+ {{ $t("Username") }}
+
+
+
+ {{ $t("Password") }}
+
+
+
+
{{ $t("Originator type") }}
+
+ {{ $t("Alphanumeric (recommended)") }}
+ {{ $t("Telephone number") }}
+
+
+
{{ $t("Alphanumeric (recommended)") }}: {{ $t("Alphanumeric string (max 11 alphanumeric characters). Recipients can not reply to the message.") }}
+
{{ $t("Telephone number") }}: {{ $t("Numeric value (max 15 digits) with telephone number on international format without leading 00 (example UK number 07920 110 000 should be set as 447920110000). Recipients can reply to the message.") }}
+
+
+
+
{{ $t("Originator") }} ({{ $parent.notification.cellsyntOriginatortype === 'alpha' ? $t("max 11 alphanumeric characters") : $t("max 15 digits") }})
+
+
+
{{ $t("Visible on recipient's mobile phone as originator of the message. Allowed values and function depends on parameter originatortype.") }}
+
+
+
{{ $t("Destination") }}
+
+
{{ $t("Recipient's telephone number using international format with leading 00 followed by country code, e.g. 00447920110000 for the UK number 07920 110 000 (max 17 digits in total). Max 25000 comma separated recipients per HTTP request.") }}
+
+
+
+ https://www.cellsynt.com/en/
+
+
+
+
diff --git a/src/components/notifications/DingDing.vue b/src/components/notifications/DingDing.vue
index 79d8d837d..710677fd7 100644
--- a/src/components/notifications/DingDing.vue
+++ b/src/components/notifications/DingDing.vue
@@ -2,9 +2,10 @@
{{ $t("WebHookUrl") }}*
-
+
+
{{ $t("SecretKey") }}*
-
+
{{ $t("For safety, must use secret key") }}
@@ -13,4 +14,24 @@
+
+ {{ $t("Mentioning") }}*
+
+ {{ $t("Don't mention people") }}
+ {{ $t("Mention group", { group: "@everyone" }) }}
+
+
+
+
diff --git a/src/components/notifications/Discord.vue b/src/components/notifications/Discord.vue
index 99389d29e..40d2f204e 100644
--- a/src/components/notifications/Discord.vue
+++ b/src/components/notifications/Discord.vue
@@ -16,4 +16,60 @@
{{ $t("Prefix Custom Message") }}
+
+
+ {{ $t("Select message type") }}
+
+ {{ $t("Send to channel") }}
+ {{ $t("Create new forum post") }}
+ {{ $t("postToExistingThread") }}
+
+
+
+
+
+
+ {{ $t("forumPostName") }}
+
+
+
+ {{ $t("whatHappensAtForumPost", { option: $t("postToExistingThread") }) }}
+
+
+
+
+
+
+ {{ $t("threadForumPostID") }}
+
+
+
+
+
+
+
+
+
+ {{ $t("Disable URL in Notification") }}
+
+
+
diff --git a/src/components/notifications/GtxMessaging.vue b/src/components/notifications/GtxMessaging.vue
new file mode 100644
index 000000000..24118fefe
--- /dev/null
+++ b/src/components/notifications/GtxMessaging.vue
@@ -0,0 +1,49 @@
+
+
+
{{ $t("API Key") }}
+
+
+ {{ $t("gtxMessagingApiKeyHint") }}
+
+
+
+
{{ $t("From Phone Number / Transmission Path Originating Address (TPOA)") }}
+
+
+
+ E.164
+
+
+ E.212
+
+
+ E.214
+
+
+
+
+
+
+
diff --git a/src/components/notifications/Keep.vue b/src/components/notifications/Keep.vue
new file mode 100644
index 000000000..f0c856ee8
--- /dev/null
+++ b/src/components/notifications/Keep.vue
@@ -0,0 +1,42 @@
+
+
+
{{ $t("Host URL") }}
+
+
+
+
+
+ {{
+ $t("API Key")
+ }}
+
+
+
+
+
diff --git a/src/components/notifications/Matrix.vue b/src/components/notifications/Matrix.vue
index a9fd63403..60d43cf17 100644
--- a/src/components/notifications/Matrix.vue
+++ b/src/components/notifications/Matrix.vue
@@ -18,7 +18,7 @@
{{ $t("matrixDesc1") }}
- curl -XPOST -d '{"type": "m.login.password", "identifier": {"user": "botusername", "type": "m.id.user"}, "password": "passwordforuser"}' "https://home.server/_matrix/client/r0/login"
.
+ curl -XPOST -d '{"type": "m.login.password", "identifier": {"user": "botusername", "type": "m.id.user"}, "password": "passwordforuser"}' "https://home.server/_matrix/client/v3/login"
.
diff --git a/src/components/notifications/Notifery.vue b/src/components/notifications/Notifery.vue
new file mode 100644
index 000000000..ce204dc6a
--- /dev/null
+++ b/src/components/notifications/Notifery.vue
@@ -0,0 +1,49 @@
+
+
+ {{
+ $t("API Key")
+ }}
+
+
+
+
+ {{ $t("Title") }}
+
+
+
+
+ {{ $t("Group") }}
+
+
+
+
+ https://docs.notifery.com/api/event/
+
+
+
+
diff --git a/src/components/notifications/OneChat.vue b/src/components/notifications/OneChat.vue
new file mode 100644
index 000000000..b954d338b
--- /dev/null
+++ b/src/components/notifications/OneChat.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+ OneChat Access Token*
+
+
+
+
+
{{ $t("OneChatAccessToken") }}
+
+
+
+
+
+
+ {{ $t("OneChatUserIdOrGroupId") }}*
+
+
+
+
+
+
+
+ {{ $t("OneChatBotId") }}*
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/notifications/Onesender.vue b/src/components/notifications/Onesender.vue
new file mode 100644
index 000000000..81dbe7f0a
--- /dev/null
+++ b/src/components/notifications/Onesender.vue
@@ -0,0 +1,81 @@
+
+
+ {{ $t("Host Onesender") }}
+
+
+
+
+
+
+ {{ $t("Recipient Type") }}
+
+ {{ $t("Private Number") }}
+ {{ $t("Group ID") }}
+
+
+ {{ $t("privateOnesenderDesc", ['"application/json"']) }}
+ {{ $t("groupOnesenderDesc") }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/notifications/Pumble.vue b/src/components/notifications/Pumble.vue
new file mode 100644
index 000000000..c577e0404
--- /dev/null
+++ b/src/components/notifications/Pumble.vue
@@ -0,0 +1,9 @@
+
+
+ {{ $t("Webhook URL") }} *
+
+
+
+
diff --git a/src/components/notifications/PushPlus.vue b/src/components/notifications/PushPlus.vue
new file mode 100644
index 000000000..80e47cea0
--- /dev/null
+++ b/src/components/notifications/PushPlus.vue
@@ -0,0 +1,19 @@
+
+
+ {{ $t("SendKey") }}
+
+
+
+ https://www.pushplus.plus/
+
+
+
+
diff --git a/src/components/notifications/Pushover.vue b/src/components/notifications/Pushover.vue
index 7ee0eafb6..e2fecd29f 100644
--- a/src/components/notifications/Pushover.vue
+++ b/src/components/notifications/Pushover.vue
@@ -16,34 +16,24 @@
1
2
-
{{ $t("Notification Sound") }}
-
- {{ $t("pushoversounds pushover") }}
- {{ $t("pushoversounds bike") }}
- {{ $t("pushoversounds bugle") }}
- {{ $t("pushoversounds cashregister") }}
- {{ $t("pushoversounds classical") }}
- {{ $t("pushoversounds cosmic") }}
- {{ $t("pushoversounds falling") }}
- {{ $t("pushoversounds gamelan") }}
- {{ $t("pushoversounds incoming") }}
- {{ $t("pushoversounds intermission") }}
- {{ $t("pushoversounds magic") }}
- {{ $t("pushoversounds mechanical") }}
- {{ $t("pushoversounds pianobar") }}
- {{ $t("pushoversounds siren") }}
- {{ $t("pushoversounds spacealarm") }}
- {{ $t("pushoversounds tugboat") }}
- {{ $t("pushoversounds alien") }}
- {{ $t("pushoversounds climb") }}
- {{ $t("pushoversounds persistent") }}
- {{ $t("pushoversounds echo") }}
- {{ $t("pushoversounds updown") }}
- {{ $t("pushoversounds vibrate") }}
- {{ $t("pushoversounds none") }}
+
+ {{ $t("Notification Sound") }} - Up
+
+
+ {{ $t(`pushoversounds ${sound}`) }}
+
+
+ {{ $t("Notification Sound") }} - Down
+
+
+ {{ $t(`pushoversounds ${sound}`) }}
+
+
+
{{ $t("pushoverMessageTtl") }}
+
* {{ $t("Required") }}
@@ -66,5 +56,34 @@ export default {
components: {
HiddenInput,
},
+ data() {
+ return {
+ soundOptions: [
+ "pushover",
+ "bike",
+ "bugle",
+ "cashregister",
+ "classical",
+ "cosmic",
+ "falling",
+ "gamelan",
+ "incoming",
+ "intermission",
+ "magic",
+ "mechanical",
+ "pianobar",
+ "siren",
+ "spacealarm",
+ "tugboat",
+ "alien",
+ "climb",
+ "persistent",
+ "echo",
+ "updown",
+ "vibrate",
+ "none",
+ ],
+ };
+ },
};
diff --git a/src/components/notifications/SIGNL4.vue b/src/components/notifications/SIGNL4.vue
new file mode 100644
index 000000000..d557c2d38
--- /dev/null
+++ b/src/components/notifications/SIGNL4.vue
@@ -0,0 +1,16 @@
+
+
+
diff --git a/src/components/notifications/SMSEagle.vue b/src/components/notifications/SMSEagle.vue
index ec781313a..16277a6ef 100644
--- a/src/components/notifications/SMSEagle.vue
+++ b/src/components/notifications/SMSEagle.vue
@@ -1,31 +1,123 @@
{{ $t("smseagleUrl") }}
-
+
{{ $t("smseagleToken") }}
-
{{ $t("smseagleRecipientType") }}
-
- {{ $t("smseagleTo") }}
- {{ $t("smseagleGroup") }}
- {{ $t("smseagleContact") }}
+ {{ $t("smseagleApiType") }}
+
+ {{ $t("smseagleApiv1") }}
+ {{ $t("smseagleApiv2") }}
+
+ https://www.smseagle.eu/api/
+
-
-
{{ $t("smseagleRecipient") }}
-
+
+
+ {{ $t("smseagleRecipientType") }}
+
+
+ {{ $t("smseagleTo") }}
+ {{ $t("smseagleGroup") }}
+ {{ $t("smseagleContact") }}
+
+
+
+ {{ $t("smseagleRecipient") }}
+
+
+
+ {{ $t("smseaglePriority") }}
+
+
+
+ {{ $t("smseagleEncoding") }}
+
+
+
+
+ {{ $t("smseagleMsgType") }}
+
+ {{ $t("smseagleMsgSms") }}
+ {{ $t("smseagleMsgRing") }}
+ {{ $t("smseagleMsgTts") }}
+ {{ $t("smseagleMsgTtsAdvanced") }}
+
+
+
+ {{ $t("smseagleDuration") }}
+
+
+
+ {{ $t("smseagleTtsModel") }}
+
+
+
-
- {{ $t("smseaglePriority") }}
-
-
-
+
+
+ localhost
+
+
+ {{ $t("locally configured mail transfer agent") }}
+
+
{{ $t("Port") }}
@@ -59,28 +67,27 @@
-
-
- {{ $t("documentation") }}
-
- {{name}}
: {{ $t("emailTemplateServiceName") }}
- {{msg}}
: {{ $t("emailTemplateMsg") }}
- {{status}}
: {{ $t("emailTemplateStatus") }}
- {{heartbeatJSON}}
: {{ $t("emailTemplateHeartbeatJSON") }}{{ $t("emailTemplateLimitedToUpDownNotification") }}
- {{monitorJSON}}
: {{ $t("emailTemplateMonitorJSON") }} {{ $t("emailTemplateLimitedToUpDownNotification") }}
- {{hostnameOrURL}}
: {{ $t("emailTemplateHostnameOrURL") }}
-
{{ $t("emailCustomSubject") }}
-
+
{{ $t("leave blank for default subject") }}
+
{{ $t("emailCustomBody") }}
-
+
{{ $t("leave blank for default body") }}
+
+
+
+
+ {{ $t("Use HTML for custom E-mail body") }}
+
+
+
+
{{ $t("documentation") }}
@@ -116,11 +123,15 @@
diff --git a/src/components/notifications/SevenIO.vue b/src/components/notifications/SevenIO.vue
new file mode 100644
index 000000000..fcf746ec8
--- /dev/null
+++ b/src/components/notifications/SevenIO.vue
@@ -0,0 +1,31 @@
+
+
+
{{ $t("apiKeySevenIO") }}
+
+
+ {{ $t("wayToGetSevenIOApiKey") }}
+
+
+
+
+ {{ $t("senderSevenIO") }}
+
+
+
+
+
{{ $t("receiverSevenIO") }}
+
+
+ {{ $t("receiverInfoSevenIO") }}
+
+
+
+
+
diff --git a/src/components/notifications/Slack.vue b/src/components/notifications/Slack.vue
index dead709ce..9fa9f34be 100644
--- a/src/components/notifications/Slack.vue
+++ b/src/components/notifications/Slack.vue
@@ -4,11 +4,20 @@
{{ $t("Username") }}
+
+ {{ $t("aboutSlackUsername") }}
+
{{ $t("Icon Emoji") }}
{{ $t("Channel Name") }}
+ {{ $t("Message format") }}
+
+
+ {{ $t("Send rich messages") }}
+
+
* {{ $t("Required") }}
diff --git a/src/components/notifications/SpugPush.vue b/src/components/notifications/SpugPush.vue
new file mode 100644
index 000000000..37dffccf3
--- /dev/null
+++ b/src/components/notifications/SpugPush.vue
@@ -0,0 +1,19 @@
+
+
+ {{ $t("SpugPush Template Code") }}
+
+
+
+ https://push.spug.cc
+
+
+
+
diff --git a/src/components/notifications/TechulusPush.vue b/src/components/notifications/TechulusPush.vue
index bece17e27..bb2c27ad8 100644
--- a/src/components/notifications/TechulusPush.vue
+++ b/src/components/notifications/TechulusPush.vue
@@ -4,6 +4,53 @@
+
+ {{ $t("Title") }}
+
+
+
+
+
{{ $t("Notification Channel") }}
+
+
+ {{ $t("Alphanumerical string and hyphens only") }}
+
+
+
+
+
{{ $t("Sound") }}
+
+ {{ $t("Default") }}
+ {{ $t("Arcade") }}
+ {{ $t("Correct") }}
+ {{ $t("Fail") }}
+ {{ $t("Harp") }}
+ {{ $t("Reveal") }}
+ {{ $t("Bubble") }}
+ {{ $t("Doorbell") }}
+ {{ $t("Flute") }}
+ {{ $t("Money") }}
+ {{ $t("Scifi") }}
+ {{ $t("Clear") }}
+ {{ $t("Elevator") }}
+ {{ $t("Guitar") }}
+ {{ $t("Pop") }}
+
+
+ {{ $t("Custom sound to override default notification sound") }}
+
+
+
+
+
+
+ {{ $t("Time Sensitive (iOS Only)") }}
+
+
+ {{ $t("Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.") }}
+
+
+
https://docs.push.techulus.com
@@ -16,5 +63,19 @@ export default {
components: {
HiddenInput,
},
+ mounted() {
+ if (typeof this.$parent.notification.pushTitle === "undefined") {
+ this.$parent.notification.pushTitle = "Uptime-Kuma";
+ }
+ if (typeof this.$parent.notification.pushChannel === "undefined") {
+ this.$parent.notification.pushChannel = "uptime-kuma";
+ }
+ if (typeof this.$parent.notification.pushSound === "undefined") {
+ this.$parent.notification.pushSound = "default";
+ }
+ if (typeof this.$parent.notification.pushTimeSensitive === "undefined") {
+ this.$parent.notification.pushTimeSensitive = true;
+ }
+ },
};
diff --git a/src/components/notifications/Telegram.vue b/src/components/notifications/Telegram.vue
index a072c3ed3..145a5c94e 100644
--- a/src/components/notifications/Telegram.vue
+++ b/src/components/notifications/Telegram.vue
@@ -33,6 +33,56 @@
{{ $t("telegramMessageThreadIDDescription") }}
+ {{ $t("telegramServerUrl") }}
+
+
+
+
+
+
+
+ {{ $t("telegramUseTemplate") }}
+
+
+
+ {{ $t("telegramUseTemplateDescription") }}
+
+
+
+
+
+
{{ $t("Message Format") }}
+
+ {{ $t("Plain Text") }}
+ HTML
+ MarkdownV2
+
+
+ {{ $t("documentation") }}
+
+
+
{{ $t('Message Template') }}
+
+
+
+
+
@@ -67,7 +54,12 @@
diff --git a/src/components/notifications/YZJ.vue b/src/components/notifications/YZJ.vue
new file mode 100644
index 000000000..63bc4c530
--- /dev/null
+++ b/src/components/notifications/YZJ.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js
index 6cb0c9fd9..933139a4a 100644
--- a/src/components/notifications/index.js
+++ b/src/components/notifications/index.js
@@ -3,18 +3,24 @@ import AlertNow from "./AlertNow.vue";
import AliyunSMS from "./AliyunSms.vue";
import Apprise from "./Apprise.vue";
import Bark from "./Bark.vue";
+import Bitrix24 from "./Bitrix24.vue";
+import Notifery from "./Notifery.vue";
import ClickSendSMS from "./ClickSendSMS.vue";
+import CallMeBot from "./CallMeBot.vue";
import SMSC from "./SMSC.vue";
import DingDing from "./DingDing.vue";
import Discord from "./Discord.vue";
+import Elks from "./46elks.vue";
import Feishu from "./Feishu.vue";
import FreeMobile from "./FreeMobile.vue";
import GoogleChat from "./GoogleChat.vue";
import Gorush from "./Gorush.vue";
import Gotify from "./Gotify.vue";
import GrafanaOncall from "./GrafanaOncall.vue";
+import GtxMessaging from "./GtxMessaging.vue";
import HomeAssistant from "./HomeAssistant.vue";
import HeiiOnCall from "./HeiiOnCall.vue";
+import Keep from "./Keep.vue";
import Kook from "./Kook.vue";
import Line from "./Line.vue";
import LineNotify from "./LineNotify.vue";
@@ -24,21 +30,26 @@ import Mattermost from "./Mattermost.vue";
import Nostr from "./Nostr.vue";
import Ntfy from "./Ntfy.vue";
import Octopush from "./Octopush.vue";
+import OneChat from "./OneChat.vue";
import OneBot from "./OneBot.vue";
+import Onesender from "./Onesender.vue";
import Opsgenie from "./Opsgenie.vue";
import PagerDuty from "./PagerDuty.vue";
import FlashDuty from "./FlashDuty.vue";
import PagerTree from "./PagerTree.vue";
import PromoSMS from "./PromoSMS.vue";
+import Pumble from "./Pumble.vue";
import Pushbullet from "./Pushbullet.vue";
import PushDeer from "./PushDeer.vue";
import Pushover from "./Pushover.vue";
+import PushPlus from "./PushPlus.vue";
import Pushy from "./Pushy.vue";
import RocketChat from "./RocketChat.vue";
import ServerChan from "./ServerChan.vue";
import SerwerSMS from "./SerwerSMS.vue";
import Signal from "./Signal.vue";
import SMSManager from "./SMSManager.vue";
+import SMSPartner from "./SMSPartner.vue";
import Slack from "./Slack.vue";
import Squadcast from "./Squadcast.vue";
import SMSEagle from "./SMSEagle.vue";
@@ -47,12 +58,23 @@ import STMP from "./SMTP.vue";
import Teams from "./Teams.vue";
import TechulusPush from "./TechulusPush.vue";
import Telegram from "./Telegram.vue";
+import Threema from "./Threema.vue";
import Twilio from "./Twilio.vue";
import Webhook from "./Webhook.vue";
import WeCom from "./WeCom.vue";
import GoAlert from "./GoAlert.vue";
import ZohoCliq from "./ZohoCliq.vue";
import Splunk from "./Splunk.vue";
+import SpugPush from "./SpugPush.vue";
+import SevenIO from "./SevenIO.vue";
+import Whapi from "./Whapi.vue";
+import WAHA from "./WAHA.vue";
+import Cellsynt from "./Cellsynt.vue";
+import WPush from "./WPush.vue";
+import SIGNL4 from "./SIGNL4.vue";
+import SendGrid from "./SendGrid.vue";
+import YZJ from "./YZJ.vue";
+import SMSPlanet from "./SMSPlanet.vue";
/**
* Manage all notification form.
@@ -64,10 +86,13 @@ const NotificationFormList = {
"AliyunSMS": AliyunSMS,
"apprise": Apprise,
"Bark": Bark,
+ "Bitrix24": Bitrix24,
"clicksendsms": ClickSendSMS,
+ "CallMeBot": CallMeBot,
"smsc": SMSC,
"DingDing": DingDing,
"discord": Discord,
+ "Elks": Elks,
"Feishu": Feishu,
"FreeMobile": FreeMobile,
"GoogleChat": GoogleChat,
@@ -76,6 +101,7 @@ const NotificationFormList = {
"GrafanaOncall": GrafanaOncall,
"HomeAssistant": HomeAssistant,
"HeiiOnCall": HeiiOnCall,
+ "Keep": Keep,
"Kook": Kook,
"line": Line,
"LineNotify": LineNotify,
@@ -85,21 +111,27 @@ const NotificationFormList = {
"nostr": Nostr,
"ntfy": Ntfy,
"octopush": Octopush,
+ "OneChat": OneChat,
"OneBot": OneBot,
+ "Onesender": Onesender,
"Opsgenie": Opsgenie,
"PagerDuty": PagerDuty,
"FlashDuty": FlashDuty,
"PagerTree": PagerTree,
"promosms": PromoSMS,
+ "pumble": Pumble,
"pushbullet": Pushbullet,
"PushByTechulus": TechulusPush,
"PushDeer": PushDeer,
"pushover": Pushover,
+ "PushPlus": PushPlus,
"pushy": Pushy,
"rocket.chat": RocketChat,
"serwersms": SerwerSMS,
"signal": Signal,
+ "SIGNL4": SIGNL4,
"SMSManager": SMSManager,
+ "SMSPartner": SMSPartner,
"slack": Slack,
"squadcast": Squadcast,
"SMSEagle": SMSEagle,
@@ -107,13 +139,25 @@ const NotificationFormList = {
"stackfield": Stackfield,
"teams": Teams,
"telegram": Telegram,
+ "threema": Threema,
"twilio": Twilio,
"Splunk": Splunk,
+ "SpugPush": SpugPush,
"webhook": Webhook,
"WeCom": WeCom,
"GoAlert": GoAlert,
"ServerChan": ServerChan,
- "ZohoCliq": ZohoCliq
+ "ZohoCliq": ZohoCliq,
+ "SevenIO": SevenIO,
+ "whapi": Whapi,
+ "notifery": Notifery,
+ "waha": WAHA,
+ "gtxmessaging": GtxMessaging,
+ "Cellsynt": Cellsynt,
+ "WPush": WPush,
+ "SendGrid": SendGrid,
+ "YZJ": YZJ,
+ "SMSPlanet": SMSPlanet,
};
export default NotificationFormList;
diff --git a/src/components/settings/APIKeys.vue b/src/components/settings/APIKeys.vue
index 13ee10436..d31645b60 100644
--- a/src/components/settings/APIKeys.vue
+++ b/src/components/settings/APIKeys.vue
@@ -1,53 +1,63 @@
-
-
- {{ $t("Add API Key") }}
-
+
+ {{ $t("apiKeysDisabledMsg") }}
+
+
+
+ {{ $t("Add API Key") }}
+
+
-
-
- {{ $t("No API Keys") }}
-
+
+
+ {{ $t("No API Keys") }}
+
-
-
-
-
-
{{ item.name }}
-
- {{ $t("apiKey-" + item.status) }}
-
-
- {{ $t("Created") }}: {{ item.createdDate }}
-
-
- {{ $t("Expires") }}: {{ item.expires || $t("Never") }}
+
+
+
+
+
{{ item.name }}
+
+ {{ $t("apiKey-" + item.status) }}
+
+
+ {{ $t("Created") }}: {{ item.createdDate }}
+
+
+ {{ $t("Expires") }}:
+ {{ item.expires || $t("Never") }}
+
-
-
@@ -88,6 +98,9 @@ export default {
let result = Object.values(this.$root.apiKeyList);
return result;
},
+ settings() {
+ return this.$parent.$parent.$parent.settings;
+ },
},
methods: {
@@ -126,9 +139,11 @@ export default {
* @returns {void}
*/
disableKey() {
- this.$root.getSocket().emit("disableAPIKey", this.selectedKeyID, (res) => {
- this.$root.toastRes(res);
- });
+ this.$root
+ .getSocket()
+ .emit("disableAPIKey", this.selectedKeyID, (res) => {
+ this.$root.toastRes(res);
+ });
},
/**
@@ -146,113 +161,113 @@ export default {
diff --git a/src/components/settings/About.vue b/src/components/settings/About.vue
index 3ef9e6d78..b8049d8bd 100644
--- a/src/components/settings/About.vue
+++ b/src/components/settings/About.vue
@@ -21,6 +21,9 @@
{{ $t("Also check beta release") }}
+
+
{{ $t("Font Twemoji by Twitter licensed under") }} CC-BY 4.0
+
diff --git a/src/components/settings/MonitorHistory.vue b/src/components/settings/MonitorHistory.vue
index eaf6fab25..25e3e1559 100644
--- a/src/components/settings/MonitorHistory.vue
+++ b/src/components/settings/MonitorHistory.vue
@@ -28,11 +28,18 @@
-
+
{{ $t("Shrink Database") }} ({{ databaseSizeDisplay }})
-
{{ $t("shrinkDatabaseDescription") }}
+
+
+ VACUUM
+
+
+ AUTO_VACUUM
+
+
localStorage.locale
- || languageList[navigator.language] && navigator.language
- || languageList[navigator.language.substring(0, 2)] && navigator.language.substring(0, 2)
- || "en";
+/**
+ * Find the best matching locale to display
+ * If no locale can be matched, the default is "en"
+ * @returns {string} the locale that should be displayed
+ */
+export function currentLocale() {
+ for (const locale of [ localStorage.locale, navigator.language, ...navigator.languages ]) {
+ // localstorage might not have a value or there might not be a language in `navigator.language`
+ if (!locale) {
+ continue;
+ }
+ if (locale in messages) {
+ return locale;
+ }
+ // some locales are further specified such as "en-US".
+ // If we only have a generic locale for this, we can use it too
+ const genericLocale = locale.split("-")[0];
+ if (genericLocale in messages) {
+ return genericLocale;
+ }
+ }
+ return "en";
+}
export const localeDirection = () => {
return rtlLangs.includes(currentLocale()) ? "rtl" : "ltr";
diff --git a/src/lang/ab.json b/src/lang/ab.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/src/lang/ab.json
@@ -0,0 +1 @@
+{}
diff --git a/src/lang/af.json b/src/lang/af.json
new file mode 100644
index 000000000..26d23136b
--- /dev/null
+++ b/src/lang/af.json
@@ -0,0 +1,66 @@
+{
+ "languageName": "Afrikaans",
+ "setupDatabaseChooseDatabase": "Watter databasis wil u gebruik?",
+ "setupDatabaseMariaDB": "Konnekteer aan eksterne MariaDB databasis. U sal die databasis konneksie informasie moet insleutel.",
+ "settingUpDatabaseMSG": "Besig om die databasis op te stel. Dit mag n rukkie neem, so wees asseblief geduldig.",
+ "dbName": "Databasis Naam",
+ "Settings": "Verstellings",
+ "Dashboard": "Paneelbord",
+ "Help": "Hulp",
+ "New Update": "Nuwe Weergawe",
+ "Language": "Taal",
+ "Appearance": "Voorkoms",
+ "Theme": "Tema",
+ "General": "Algemeen",
+ "Game": "Spel",
+ "Version": "Weergawe",
+ "Check Update On GitHub": "Sien GitHub vir opdateering",
+ "List": "Lys",
+ "Home": "Tuis",
+ "Add": "Voeg By",
+ "Add New Monitor": "Voeg Nuwe Monitor by",
+ "Quick Stats": "Vinnige Statistiek",
+ "Up": "Op",
+ "Down": "Af",
+ "Pending": "Hangend (or) Besig",
+ "Maintenance": "Onderhoud",
+ "Unknown": "Onseker",
+ "Cannot connect to the socket server": "Kan nie konnekteer aan die sok-bediener nie",
+ "Reconnecting...": "Besig om te konnekteer...",
+ "General Monitor Type": "Algemene Monitor Tipe",
+ "Specific Monitor Type": "Spesifieke Monitor Tipe",
+ "pauseDashboardHome": "Pouse",
+ "Pause": "Pouse",
+ "Name": "Naam",
+ "Status": "Status",
+ "DateTime": "DatumTyd",
+ "Message": "Boodskap",
+ "No important events": "Geen belangrike gebeurtenisse nie",
+ "Resume": "Gaan Voort",
+ "Edit": "Verstel",
+ "Delete": "Skrap",
+ "Current": "Huidig(e)",
+ "Uptime": "Tyd Op",
+ "Cert Exp.": "Sertifikaat Verval",
+ "Monitor": "Monitor | Monitors",
+ "day": "dag | dae",
+ "-day": "-dag",
+ "hour": "uur",
+ "-hour": "-uur",
+ "Response": "Terugvoer(ing)",
+ "Ping": "Ping",
+ "Monitor Type": "Monitor Tipe",
+ "Keyword": "Sleutelwoord",
+ "Invert Keyword": "Omkeer Sleutelwoord",
+ "Expected Value": "Verwagte Waarde",
+ "Json Query": "JSon Navraag",
+ "Friendly Name": "Vriendelike Naam",
+ "URL": "URL",
+ "Hostname": "Gasheernaam",
+ "Port": "Poort",
+ "setupDatabaseEmbeddedMariaDB": "U hoef niks te stel nie. Hierdie docker beeld het MariaDB ingebou en vooraf opgestel vir u. Uptime Kuma sal aan hierdie databasis konnekteer via unix sok verbinding.",
+ "setupDatabaseSQLite": "'n Eenvoudige databasis leêr, aanbeveel vir klein-skaalse ontploiings. Voor weergawe 2.0.0 het Uptime Kuma SQLite as die verstekopsie.",
+ "Primary Base URL": "Primêre Basis URL",
+ "statusMaintenance": "Onderhoud",
+ "Passive Monitor Type": "Passiewe Monitor Tipe"
+}
diff --git a/src/lang/ar-SY.json b/src/lang/ar-SY.json
index 25dd5bf6a..456a91fbb 100644
--- a/src/lang/ar-SY.json
+++ b/src/lang/ar-SY.json
@@ -1,5 +1,5 @@
{
- "languageName": "إنجليزي",
+ "languageName": "العربية",
"checkEverySecond": "تحقق من كل {0} ثانية",
"retryCheckEverySecond": "أعد محاولة كل {0} ثانية",
"resendEveryXTimes": "إعادة تقديم كل {0} مرات",
@@ -388,7 +388,6 @@
"Discard": "تجاهل",
"Cancel": "يلغي",
"Powered by": "مشغل بواسطة",
- "shrinkDatabaseDescription": "تشغيل فراغ قاعدة البيانات لـ SQLite. إذا تم إنشاء قاعدة البيانات الخاصة بك بعد تمكين 1.10.0 AUTO_VACUUM بالفعل ولا يلزم هذا الإجراء.",
"serwersms": "Serwersms.pl",
"serwersmsAPIUser": "اسم مستخدم API (بما في ذلك بادئة WebAPI_)",
"serwersmsAPIPassword": "كلمة مرور API",
@@ -712,5 +711,8 @@
"More info on:": "مزيد من المعلومات حول: {0}",
"What you can try:": "ماذا تستطيع أن تجرب:",
"Packet Size": "حجم الحزمة",
- "confirmUninstallPlugin": "هل أنت متأكد من أنك تريد إلغاء تثبيت هذا المكون الإضافي؟"
+ "confirmUninstallPlugin": "هل أنت متأكد من أنك تريد إلغاء تثبيت هذا المكون الإضافي؟",
+ "settingUpDatabaseMSG": "يرجى الإنتظار ، نقوم بإعداد قاعدة البيانات و قد يستغرق الأمر بعض الوقت.",
+ "setupDatabaseChooseDatabase": "ما هي قاعدة البيانات التي تريد استخدامها؟",
+ "dbName": "إسم قاعدة البيانات"
}
diff --git a/src/lang/ar.json b/src/lang/ar.json
index 46568ffde..4199bbb83 100644
--- a/src/lang/ar.json
+++ b/src/lang/ar.json
@@ -3,14 +3,14 @@
"Delete": "حذف",
"Current": "حالي",
"Uptime": "مدة التشغيل",
- "Monitor": "مراقب | مراقبات",
+ "Monitor": "مراقبة | مراقبات",
"day": "يوم | أيام",
"-day": "-يوم",
"hour": "ساعة",
"-hour": "-ساعة",
"Response": "استجاية",
"Ping": "بينغ",
- "Monitor Type": "نوع المراقب",
+ "Monitor Type": "نوع المراقبة",
"Cert Exp.": "انتهاء صلاحية شهادة الأمان SSL.",
"Theme - Heartbeat Bar": "موضوع - بار نبضات",
"Normal": "طبيعي",
@@ -37,20 +37,20 @@
"Password": "كلمة المرور",
"Remember me": "تذكرنى",
"Login": "تسجيل الدخول",
- "No Monitors, please": "لا شاشات من فضلك",
+ "No Monitors, please": "بدون مراقبة من فضلك",
"alertNoFile": "الرجاء تحديد ملف للاستيراد.",
"Skip existing": "تخطي الموجود",
"Search...": "يبحث…",
"Avg. Ping": "متوسط. بينغ",
"Avg. Response": "متوسط. إجابة",
"Entry Page": "صفحة الدخول",
- "statusPageNothing": "لا شيء هنا الرجاء إضافة مجموعة أو شاشة.",
+ "statusPageNothing": "لا شيء هنا الرجاء إضافة مجموعة أو مراقبة.",
"No Services": "لا توجد خدمات",
- "All Systems Operational": "جميع الأنظمة التشغيلية",
+ "All Systems Operational": "جميع الأنظمة نشطة",
"Partially Degraded Service": "الخدمة المتدهورة جزئيا",
"Degraded Service": "خدمة متدهورة",
"Add Group": "أضف مجموعة",
- "Add a monitor": "إضافة شاشة",
+ "Add a monitor": "إضافة مراقبة",
"Edit Status Page": "تحرير صفحة الحالة",
"Go to Dashboard": "الذهاب إلى لوحة القيادة",
"Status Page": "صفحة الحالة",
@@ -73,7 +73,7 @@
"notificationRegional": "إقليمي",
"Clone": "استنسخ",
"cloneOf": "مُستنسَخ من {0}",
- "grpcMethodDescription": "يتم تحويل اسم الطريقة إلى تنسيق Cammelcase مثل Sayhello Check وما إلى ذلك.",
+ "grpcMethodDescription": "إسم الدالة يتم تحويله إلى تنسيق الجمل السفلي مثل sayHello, check, etc.",
"acceptedStatusCodesDescription": "حدد رموز الحالة التي تعتبر استجابة ناجحة.",
"deleteNotificationMsg": "هل أنت متأكد من حذف هذا الإشعار لجميع الشاشات؟",
"dnsPortDescription": "منفذ خادم DNS. الافتراضيات إلى 53. يمكنك تغيير المنفذ في أي وقت.",
@@ -98,12 +98,12 @@
"Version": "الإصدار",
"Primary Base URL": "الرابط التشعبي الأساسي",
"Check Update On GitHub": "التحقق من التحديث على GitHub",
- "Add New Monitor": "أضف شاشة جديدة",
+ "Add New Monitor": "أضف مراقبة جديدة",
"Quick Stats": "إحصائيات سريعة",
"Pending": "قيد الانتظار",
- "General Monitor Type": "نوع الشاشة العامة",
- "Passive Monitor Type": "نوع الشاشة السلبي",
- "Specific Monitor Type": "نوع شاشة محدد",
+ "General Monitor Type": "نوع المراقبة العامة",
+ "Passive Monitor Type": "نوع المراقبة السلبي",
+ "Specific Monitor Type": "نوع المراقبة المحدد",
"markdownSupported": "دعم صيغة Markdown",
"pauseDashboardHome": "وقفة",
"Pause": "إيقاف مؤقت",
@@ -171,14 +171,14 @@
"respTime": "resp. الوقت (MS)",
"notAvailableShort": "ن/أ",
"Default enabled": "التمكين الافتراضي",
- "Apply on all existing monitors": "تنطبق على جميع الشاشات الحالية",
+ "Apply on all existing monitors": "تنطبق على جميع المراقبات الحالية",
"Create": "خلق",
"Clear Data": "امسح البيانات",
"Events": "الأحداث",
"Heartbeats": "نبضات القلب",
"Schedule maintenance": "جدولة الصيانة",
- "Affected Monitors": "الشاشات المتأثرة",
- "Pick Affected Monitors...": "اختر الشاشات المتأثرة …",
+ "Affected Monitors": "المراقبات المتأثرة",
+ "Pick Affected Monitors...": "اختر المراقبات المتأثرة …",
"Start of maintenance": "بداية الصيانة",
"All Status Pages": "جميع صفحات الحالة",
"Select status pages...": "حدد صفحات الحالة …",
@@ -232,14 +232,14 @@
"PushUrl": "دفع عنوان URL",
"HeadersInvalidFormat": "رؤوس الطلبات غير صالحة JSON ",
"BodyInvalidFormat": "هيئة الطلب غير صالحة JSON ",
- "Monitor History": "مراقبة التاريخ",
- "clearDataOlderThan": "الحفاظ على بيانات سجل المراقبة للأيام {0}.",
+ "Monitor History": "تاريخ المراقبة",
+ "clearDataOlderThan": "الحفاظ على بيانات سجل المراقبة لـ{0} أيام.",
"PasswordsDoNotMatch": "كلمة المرور غير مطابقة.",
"records": "السجلات",
"One record": "سجل واحد",
"steamApiKeyDescription": "لمراقبة خادم لعبة Steam ، تحتاج إلى مفتاح Steam Web-API. يمكنك تسجيل مفتاح API الخاص بك هنا ",
"Current User": "المستخدم الحالي",
- "topicExplanation": "موضوع MQTT لرصد",
+ "topicExplanation": "موضوع MQTT للمراقبة",
"successMessage": "نجاح رسالة",
"successMessageExplanation": "رسالة MQTT التي ستعتبر نجاحًا",
"recent": "الأخيرة",
@@ -271,14 +271,13 @@
"Switch to Dark Theme": "التبديل إلى موضوع الظلام",
"Hide Tags": "إخفاء العلامات",
"Description": "وصف",
- "No monitors available.": "لا شاشات المتاحة.",
- "No Monitors": "لا شاشات",
+ "No monitors available.": "لا يوجد مراقبات متاحة.",
+ "No Monitors": "لا يوجد مراقبات",
"Untitled Group": "مجموعة بلا عنوان",
"Services": "خدمات",
"Discard": "تجاهل",
"Cancel": "يلغي",
"Powered by": "مشغل بواسطة",
- "shrinkDatabaseDescription": "تشغيل فراغ قاعدة البيانات لـ SQLite. إذا تم إنشاء قاعدة البيانات الخاصة بك بعد تمكين 1.10.0 AUTO_VACUUM بالفعل ولا يلزم هذا الإجراء.",
"Customize": "يعدل أو يكيف",
"Custom Footer": "تذييل مخصص",
"Custom CSS": "لغة تنسيق ويب حسب الطلب",
@@ -287,10 +286,10 @@
"default": "تقصير",
"enabled": "تمكين",
"setAsDefault": "تعيين كافتراضي",
- "deleteProxyMsg": "هل أنت متأكد من حذف هذا الوكيل لجميع الشاشات؟",
- "proxyDescription": "يجب تعيين الوكلاء إلى شاشة للعمل.",
- "enableProxyDescription": "لن يؤثر هذا الوكيل على طلبات الشاشة حتى يتم تنشيطه. يمكنك التحكم مؤقتًا في تعطيل الوكيل من جميع الشاشات حسب حالة التنشيط.",
- "setAsDefaultProxyDescription": "سيتم تمكين هذا الوكيل افتراضيًا للشاشات الجديدة. لا يزال بإمكانك تعطيل الوكيل بشكل منفصل لكل شاشة.",
+ "deleteProxyMsg": "هل أنت متأكد من حذف هذا الوكيل لجميع المراقبات؟",
+ "proxyDescription": "يجب تعيين وكيل للمراقبة من أجل أن تعمل.",
+ "enableProxyDescription": "لن يؤثر هذا الوكيل على طلبات المراقبة حتى يتم تنشيطه. يمكنك التحكم مؤقتًا في تعطيل الوكيل من جميع المراقبات حسب حالة التنشيط.",
+ "setAsDefaultProxyDescription": "سيتم تمكين هذا الوكيل افتراضيًا للمراقبات الجديدة. لا يزال بإمكانك تعطيل الوكيل بشكل منفصل لكل مراقبة.",
"Certificate Chain": "سلسلة الشهادة",
"Valid": "صالح",
"Invalid": "غير صالح",
@@ -365,7 +364,7 @@
"Setup Docker Host": "إعداد مضيف Docker",
"Connection Type": "نوع الاتصال",
"Docker Daemon": "دُوكر Daemon",
- "deleteDockerHostMsg": "هل أنت متأكد من حذف مضيف Docker لجميع الشاشات؟",
+ "deleteDockerHostMsg": "هل أنت متأكد من حذف مضيف Docker لجميع المراقبات؟",
"socket": "قابس كهرباء",
"tcp": "TCP / HTTP",
"Docker Container": "حاوية Docker",
@@ -433,7 +432,7 @@
"Server Timezone": "المنطقة الزمنية الخادم",
"statusPageMaintenanceEndDate": "نهاية",
"IconUrl": "عنوان URL للرمز",
- "Enable DNS Cache": "(مهمل) تمكين ذاكرة التخزين المؤقت لنظام أسماء النطاقات لمراقب HTTP(s)",
+ "Enable DNS Cache": "(مُهمَل) تمكين ذاكرة التخزين المؤقت لنظام أسماء النطاقات لمراقب HTTP(s)",
"Disable": "إبطال",
"dnsCacheDescription": "قد لا يعمل في بعض بيئات IPv6 تعطيله إذا واجهت أي مشكلات.",
"Single Maintenance Window": "نافذة صيانة واحدة",
@@ -484,7 +483,7 @@
"aboutMattermostChannelName": "يمكنك تجاوز القناة الافتراضية التي تنشرها WebHook من خلال إدخال اسم القناة في \"Channel Name\" الحقل. يجب تمكين هذا في إعدادات Webhook Mattern. السابق",
"dataRetentionTimeError": "يجب أن تكون فترة الاستبقاء 0 أو أكبر",
"infiniteRetention": "ضبط على 0 للاحتفاظ لا نهائي.",
- "confirmDeleteTagMsg": "هل أنت متأكد من أنك تريد حذف هذه العلامة؟ لن يتم حذف الشاشات المرتبطة بهذه العلامة.",
+ "confirmDeleteTagMsg": "هل أنت متأكد من أنك تريد حذف هذه العلامة؟ لن يتم حذف المراقبات المرتبطة بهذه العلامة.",
"enableGRPCTls": "السماح لإرسال طلب GRPC مع اتصال TLS",
"deleteMonitorMsg": "هل أنت متأكد من حذف هذا الشاشة؟",
"deleteMaintenanceMsg": "هل أنت متأكد من حذف هذه الصيانة؟",
@@ -690,16 +689,16 @@
"setupDatabaseChooseDatabase": "ما هي قاعدة البيانات التي تريد استخدامها؟",
"setupDatabaseEmbeddedMariaDB": "لا تحتاج إلى تعيين أي شيء. قامت نسخة دُوكر بتضمين MariaDB لك تلقائيًا. سيتصل (آب تايم كوما) بقاعدة البيانات هذه عبر مقبس Unix.",
"setupDatabaseMariaDB": "للاتصال بقاعدة بيانات MariaDB خارجية. تحتاج إلى تعيين معلومات اتصال قاعدة البيانات.",
- "pushViewCode": "كيف يتم إرسال",
+ "pushViewCode": "كيف يتم إستخدام مراقبة Push؟ (عرض المصدر)",
"pushOthers": "أخرى",
"programmingLanguages": "لغات البرمجة",
"Reset Token": "إعادة تعيين الرمز الخاص",
"noDockerHostMsg": "غير متوفر. قم بإعداد مضيف Docker أولاً.",
- "DockerHostRequired": "الرجاء تعيين مضيف Docker لهذا المراقب.",
+ "DockerHostRequired": "الرجاء تعيين مضيف Docker لهذة المراقبة.",
"liquidIntroduction": "يتم تحقيق قابلية القولبة من خلال لغة القوالب السائلة. يرجى الرجوع إلى {0} للحصول على تعليمات الاستخدام. هذه هي المتغيرات المتوفرة:",
"templateMsg": "رسالة التنبيه",
"templateHeartbeatJSON": "العنصر الذي يصف نبضات القلب",
- "templateMonitorJSON": "العنصر الذي يصف المراقب",
+ "templateMonitorJSON": "العنصر الذي يصف المراقبة",
"templateLimitedToUpDownCertNotifications": "متوفر فقط لنتبيهات انتهاء صلاحية الشهادات",
"templateLimitedToUpDownNotifications": "متوفر فقط لتنبيهات الأعلى/الأسفل",
"setupDatabaseSQLite": "ملف قاعدة بيانات بسيط، يوصى به لعمليات النشر على نطاق صغير. قبل الإصدار 2.0.0، استخدم (آب تايم كوما) SQLite كقاعدة بيانات افتراضية.",
@@ -722,5 +721,24 @@
"Reconnecting...": "إعادة الاتصال...",
"filterActivePaused": "متوقف مؤقتا",
"Add New Tag": "إضافة وسم جديد",
- "statusPageRefreshIn": "تحديث خلال: {0}"
+ "statusPageRefreshIn": "تحديث خلال: {0}",
+ "successKeywordExplanation": "كلمة MQTT المفتاحية التي ستعتبر رد ناجح",
+ "successKeyword": "الكلمة المفتاحية الناجحة",
+ "Search monitored sites": "البحث في المواقع المراقبة",
+ "statusPageSpecialSlugDesc": "المعرف الخاص {0}: سيتم عرض هذه الصفحة عندما لا يتم توفير معرف",
+ "telegramProtectContent": "حماية إعادة التوجيه/الحفظ",
+ "settingUpDatabaseMSG": "جاري إعداد قاعدة البيانات. قد يستغرق بعض الوقت، الرجاء الإنتظار.",
+ "emailTemplateMonitorJSON": "العنصر الذي يصف المراقبة",
+ "Add a new expiry notification day": "قم بإضافة تنبيه تاريخ يوم إنتهاء",
+ "Remove the expiry notification": "إزالة تنبيه يوم تاريخ الإنتهاء",
+ "tailscalePingWarning": "من أجل استخدام مراقبة Tailscale Ping، تحتاج إلى تثبيت Uptime Kuma بدون Docker وكذلك تثبيت عميل Tailscale على الخادم الخاص بك.",
+ "Clone Monitor": "نسخ المراقبة",
+ "telegramMessageThreadIDDescription": "معرف فريد اختياري لسلسلة الرسائل المستهدفة (الموضوع) في المنتدى؛ لمجموعات المنتدى الكبرى فقط",
+ "emailCustomBody": "نص مخصص",
+ "emailTemplateStatus": "الحالة",
+ "leave blank for default subject": "اترك فارغاً ليتم تعيين الموضوع تلقائياً",
+ "leave blank for default body": "اترك فارغاً ليتم تعيين النص تلقائياً",
+ "emailTemplateServiceName": "اسم الخدمة",
+ "emailTemplateHostnameOrURL": "اسم المضيف أو عنوان URL",
+ "smspartnerPhoneNumber": "رقم الهاتف"
}
diff --git a/src/lang/bar.json b/src/lang/bar.json
new file mode 100644
index 000000000..257a09d4d
--- /dev/null
+++ b/src/lang/bar.json
@@ -0,0 +1,6 @@
+{
+ "Language": "Sprach",
+ "Home": "Dahoam",
+ "setupDatabaseChooseDatabase": "Wos für a Datenbank wuist du?",
+ "setupDatabaseEmbeddedMariaDB": "Da brauchst nix mocha. Des Docker Buidl hod a Datenbank dabai und nimmt MariaDB. Uptime Kuma verbint se mit Unix Socket."
+}
diff --git a/src/lang/be.json b/src/lang/be.json
new file mode 100644
index 000000000..0f526a143
--- /dev/null
+++ b/src/lang/be.json
@@ -0,0 +1,937 @@
+{
+ "Edit": "Змяніць",
+ "-hour": "-гадзін",
+ "ignoreTLSErrorGeneral": "Ігнараваць памылку TLS/SSL для злучэння",
+ "pushOthers": "Іншыя",
+ "Yes": "Так",
+ "Show URI": "Паказаць URI",
+ "Tags": "Тэгі",
+ "Tag with this value already exist.": "Тэг з такім значэннем ужо існуе.",
+ "color": "Колер",
+ "value (optional)": "значэнне (неабавязкова)",
+ "Gray": "Шэры",
+ "Red": "Чырвоны",
+ "Orange": "Аранжавы",
+ "Search monitored sites": "Пошук адсочваемых сайтаў",
+ "Avg. Ping": "Сярэдні пінг",
+ "Body": "Цела",
+ "Headers": "Загалоўкі",
+ "Create Incident": "Стварыць інцыдэнт",
+ "Style": "Стыль",
+ "Proxies": "Проксі",
+ "default": "Па змаўчанні",
+ "enabled": "Уключана",
+ "setAsDefault": "Усталяваць па змаўчанні",
+ "Remove the expiry notification": "Выдаліць дату сканчэньня тэрміну дзеяння абвесткі",
+ "Refresh Interval": "Інтэрвал абнаўлення",
+ "Refresh Interval Description": "Старонка статусу будзе цалкам абнаўляць сайт кожныя {0} секунд",
+ "maintenanceStatus-ended": "Скончыўся(ліся)",
+ "Select message type": "Выберыце тып паведамлення",
+ "Create new forum post": "Стварыць новы пост",
+ "postToExistingThread": "Стварыць пост у гэтай галіне",
+ "forumPostName": "Назва паста",
+ "e.g. {discordThreadID}": "Напр. {discordThreadID}",
+ "Number": "Нумар",
+ "lineDevConsoleTo": "Кансоль распрацошчыкаў Line - {0}",
+ "recurringIntervalMessage": "Запускаць 1 раз кожны дзень | Запускаць 1 раз кожныя {0} дзён",
+ "affectedMonitorsDescription": "Выберыце маніторы, якія будуць затронутыя падчас тэхабслугоўвання",
+ "pushoversounds gamelan": "Гамелан",
+ "pushoversounds incoming": "Уваходны",
+ "pushoversounds climb": "Падым (доўгі)",
+ "wayToGetKookBotToken": "Стварыце праграму і атрымайце токен бота па адрасу {0}",
+ "Device": "Прылада",
+ "Huawei": "Huawei",
+ "Expiry date": "Дата сканчэння",
+ "Don't expire": "Не сканчаецца",
+ "Badge URL": "URL значка",
+ "nostrRelays": "Рэле Nostr",
+ "gamedigGuessPort": "Gamedig: Угадай порт",
+ "GrafanaOncallUrl": "URL-адрас Grafana Oncall",
+ "API URL": "API URL-адрас",
+ "Originator type": "Тып крыніцы",
+ "Destination": "Прызначэнне",
+ "languageName": "Беларуская",
+ "setupDatabaseChooseDatabase": "Якую базу даных вы хацелі б выкарыстоўваць?",
+ "setupDatabaseEmbeddedMariaDB": "Вам не трэба нічога наладжваць. У гэты Docker-вобраз аўтаматычна ўбудавана і наладжана MariaDB. Uptime Kuma будзе падключацца да гэтай базы даных праз unix-socket.",
+ "setupDatabaseMariaDB": "Падключыцца да знешняй базы даных MariaDB. Вам трэба задаць інфармацыю аб падлучэнні да базы даных.",
+ "setupDatabaseSQLite": "Просты файл базы даных, рэкамендуецца для невялікіх разгортванняў. Да версіі 2.0.0 Uptime Kuma выкарыстоўваў SQLite як базу даных па змаўчанні.",
+ "settingUpDatabaseMSG": "Настраиваем базу даных. Гэта можа заняць некаторы час, калі ласка, пачакайце.",
+ "dbName": "Назва базы даных",
+ "Settings": "Налады",
+ "Dashboard": "Панэль кіравання",
+ "Help": "Дапамога",
+ "New Update": "Даступна абнаўленне",
+ "Language": "Мова",
+ "Appearance": "Знешні выгляд",
+ "Theme": "Тэма",
+ "General": "Агульныя",
+ "Game": "Гульня",
+ "Primary Base URL": "Асноўны URL",
+ "Version": "Версія",
+ "Check Update On GitHub": "Праверыць абнаўленні ў GitHub",
+ "List": "Спіс",
+ "Home": "Галоўная",
+ "Add": "Дадаць",
+ "Add New Monitor": "Дадаць новы манітор",
+ "Quick Stats": "Статыстыка",
+ "Up": "Працуе",
+ "Down": "Не працуе",
+ "Pending": "У чаканні",
+ "statusMaintenance": "Тэхабслугоўванне",
+ "Maintenance": "Тэхабслугоўванне",
+ "Unknown": "Невядома",
+ "Cannot connect to the socket server": "Немагчыма падключыцца да сервера",
+ "Reconnecting...": "Падключэнне...",
+ "General Monitor Type": "Агульны Тып Манітора",
+ "Passive Monitor Type": "Пасіўны Тып Манітора",
+ "Specific Monitor Type": "Спецыфічны Тып Манітора",
+ "markdownSupported": "Падтрымліваецца сінтаксіс Markdown",
+ "pauseDashboardHome": "Паўза",
+ "Pause": "Паўза",
+ "Name": "Назва",
+ "Status": "Статус",
+ "DateTime": "Дата і час",
+ "Message": "Паведамленне",
+ "No important events": "Няма важных падзей",
+ "Resume": "Узнавіць",
+ "Delete": "Выдаліць",
+ "Current": "Бягучы",
+ "Uptime": "Час працы",
+ "Cert Exp.": "Сертыфікат сконч.",
+ "Monitor": "Манітор | Маніторы",
+ "day": "дзень | дзён",
+ "-day": "-дзён",
+ "hour": "гадзіна",
+ "Response": "Адказ",
+ "Ping": "Пінг",
+ "Monitor Type": "Тып манітора",
+ "Keyword": "Ключавое слова",
+ "Invert Keyword": "Інвертаваць ключавое слова",
+ "Friendly Name": "Назва",
+ "URL": "URL-спасылка",
+ "Hostname": "Адрас хоста",
+ "Expected Value": "Чаканае значэнне",
+ "Json Query": "JSON Запыт",
+ "Host URL": "URL Хоста",
+ "locally configured mail transfer agent": "Наладжаны лакальна агент перадачы паштовых паведамленняў",
+ "Port": "Порт",
+ "Heartbeat Interval": "Частата апытання",
+ "Request Timeout": "Тайм-Аут запыту",
+ "timeoutAfter": "Тайм-Аут праз {0} секундаў",
+ "Retries": "Спробы",
+ "Heartbeat Retry Interval": "Інтэрвал паўтору апытання",
+ "Resend Notification if Down X times consecutively": "Паўторная адпраўка абвесткі пры адключэнні некалькі раз",
+ "Advanced": "Дадаткова",
+ "checkEverySecond": "Праверка кожныя {0} секунд",
+ "retryCheckEverySecond": "Паўтараць кожныя {0} секунд",
+ "resendEveryXTimes": "Перасылаць кожныя {0} раз",
+ "resendDisabled": "Перасылка адключана",
+ "retriesDescription": "Максімальная колькасць спробаў перад адзнакай службы, як недаступная, і адпраўкай абвесткі",
+ "ignoreTLSError": "Ігнараваць памылкі TLS/SSL для HTTPS сайтаў",
+ "upsideDownModeDescription": "Змяніць статус службы на ПРАЦУЕ, калі яна даступная, а пазначаецца як НЕ ПРАЦУЕ.",
+ "maxRedirectDescription": "Максімальная колькасць перанакіраванняў. Пастаўце 0, каб адключыць перанакіраванні.",
+ "Upside Down Mode": "Рэжым змены статусу",
+ "Max. Redirects": "Макс. колькасць перанакіраванняў",
+ "Accepted Status Codes": "Дапушчальныя коды статуса",
+ "Push URL": "URL-спасылка пуш абвестак",
+ "needPushEvery": "Да гэтага URL неабходна звяртацца кожныя {0} секунд.",
+ "pushOptionalParams": "Неабавязковыя параметры: {0}",
+ "pushViewCode": "Як выкарыстоўваць манітор Push? (Паглядзець код)",
+ "programmingLanguages": "Мовы праграмавання",
+ "Save": "Захаваць",
+ "Notifications": "Апавяшчэнні",
+ "Not available, please setup.": "Апавяшчэнні недаступныя, патрабуецца налада.",
+ "Setup Notification": "Наладзіць апавяшчэнні",
+ "Light": "Светлая",
+ "Dark": "Цёмная",
+ "Auto": "Як у сістэме",
+ "Theme - Heartbeat Bar": "Тэма - радка частаты апытання",
+ "styleElapsedTime": "Мінулы час пад радком частаты апытання",
+ "styleElapsedTimeShowNoLine": "Паказаць (Без лініі)",
+ "styleElapsedTimeShowWithLine": "Паказаць (З лініяй)",
+ "Normal": "Звычайны",
+ "Bottom": "Унізе",
+ "None": "Адсутнічае",
+ "Timezone": "Часавы пояс TZ",
+ "Search Engine Visibility": "Бачнасць у пошукавых сістэмах",
+ "Allow indexing": "Дазволіць індэксацыю",
+ "Discourage search engines from indexing site": "Забараніць індэксацыю",
+ "Change Password": "Змяніць пароль",
+ "Current Password": "Бягучы пароль",
+ "New Password": "Новы пароль",
+ "Repeat New Password": "Паўтарыць новы пароль",
+ "Update Password": "Абнавіць пароль",
+ "Disable Auth": "Адключыць аўтарызацыю",
+ "Enable Auth": "Уключыць аўтарызацыю",
+ "disableauth.message1": "Вы ўпэўнены, што хочаце {disableAuth}?",
+ "disable authentication": "адключыць аўтарызацыю",
+ "disableauth.message2": "Гэта падыходзіць для {intendThirdPartyAuth} перад адкрыццём Uptime Kuma, такіх як Cloudflare Access, Authelia або іншыя.",
+ "where you intend to implement third-party authentication": "тых, у каго настроена старонняя сістэма аўтарызацыі",
+ "Please use this option carefully!": "Выкарыстоўвайце гэтую наладу асцярожна!",
+ "Logout": "Выйсці",
+ "Leave": "Пакінуць",
+ "I understand, please disable": "Я разумею, усё роўна адключыць",
+ "Confirm": "Пацвердзіць",
+ "No": "Не",
+ "Username": "Лагін",
+ "Password": "Пароль",
+ "Remember me": "Запомніць мяне",
+ "Login": "Уваход у сістэму",
+ "No Monitors, please": "Няма манітораў, калі ласка",
+ "add one": "дадаць",
+ "Notification Type": "Тып абвесткі",
+ "Email": "Электронная пошта",
+ "Test": "Тэст",
+ "Certificate Info": "Інфармацыя пра сертыфікат",
+ "Resolver Server": "DNS сервер",
+ "Resource Record Type": "Тып рэсурснай запісі",
+ "Last Result": "Апошні вынік",
+ "Create your admin account": "Стварыце акаўнт адміністратара",
+ "Repeat Password": "Паўтарыць пароль",
+ "Import Backup": "Імпартаваць Backup",
+ "Export Backup": "Спампаваць Backup",
+ "Export": "Экспарт",
+ "Import": "Імпарт",
+ "respTime": "Час адказу (мс)",
+ "notAvailableShort": "N/A",
+ "Default enabled": "Па змаўчанні ўключана",
+ "Apply on all existing monitors": "Ужыць да ўсіх існуючых манітораў",
+ "Create": "Стварыць",
+ "Clear Data": "Выдаліць даныя",
+ "Events": "Падзеі",
+ "Heartbeats": "Апытанні",
+ "Auto Get": "Аўта-атрыманне",
+ "Schedule maintenance": "Запланаваць тэхабслугоўванне",
+ "Affected Monitors": "Задзейнічаныя Маніторы",
+ "Pick Affected Monitors...": "Выберыце Задзейнічаныя Маніторы…",
+ "Start of maintenance": "Пачатак тэхабслугоўвання",
+ "All Status Pages": "Усе старонкі статусаў",
+ "Select status pages...": "Выберыце старонку статуса…",
+ "alertNoFile": "Выберыце файл для імпарту.",
+ "alertWrongFileType": "Выберыце JSON-файл.",
+ "Clear all statistics": "Ачысціць усю статыстыку",
+ "Skip existing": "Прапусціць існуючыя",
+ "Overwrite": "Перазапісаць",
+ "Options": "Опцыі",
+ "Keep both": "Пакінуць абодва",
+ "Verify Token": "Праверыць токен",
+ "Setup 2FA": "Налады 2FA",
+ "Enable 2FA": "Уключыць 2FA",
+ "Disable 2FA": "Адключыць 2FA",
+ "2FA Settings": "Налады 2FA",
+ "Two Factor Authentication": "Двухфактарная аўтэнтыфікацыя",
+ "filterActive": "Актыўны",
+ "filterActivePaused": "На паўзе",
+ "Active": "Актыўна",
+ "Inactive": "Неактыўна",
+ "Token": "Токен",
+ "Add New Tag": "Дадаць тэг",
+ "Add New below or Select...": "Дадаць новы або выбраць…",
+ "Tag with this name already exist.": "Тэг з такім імем ужо існуе.",
+ "Green": "Зялёны",
+ "Blue": "Сіні",
+ "Indigo": "Індыга",
+ "Purple": "Пурпуровы",
+ "Pink": "Ружовы",
+ "Custom": "Сваёродны",
+ "Search...": "Пошук…",
+ "Avg. Response": "Сярэдні адказ",
+ "Entry Page": "Галоўная",
+ "statusPageNothing": "Нічога няма, дадайце групу або манітор.",
+ "statusPageRefreshIn": "Абнаўленне праз: {0}",
+ "No Services": "Няма сэрвісаў",
+ "All Systems Operational": "Усе сістэмы працуюць",
+ "Partially Degraded Service": "Часткова працуючы сэрвіс",
+ "Degraded Service": "Пашкоджаная служба",
+ "Add Group": "Дадаць групу",
+ "Add a monitor": "Дадаць манітор",
+ "Edit Status Page": "Рэдагаваць старонку статусаў",
+ "Go to Dashboard": "Перайсці да панэлі кіравання",
+ "Status Page": "Старонка статуса",
+ "Status Pages": "Старонкі статуса",
+ "defaultNotificationName": "Абвесткі {notification} ({number})",
+ "here": "тут",
+ "Required": "Абавязкова",
+ "Post URL": "Post URL",
+ "Content Type": "Тып кантэнту",
+ "webhookJsonDesc": "{0} падыходзіць для любых сучасных HTTP-сервераў, напрыклад Express.js",
+ "webhookFormDataDesc": "{multipart} падыходзіць для PHP. JSON-вывад неабходна будзе апрацаваць з дапамогай {decodeFunction}",
+ "liquidIntroduction": "Шаблоннасьць дасягаецца з дапамогай мовы шаблонаў Liquid. Інструкцыі па выкарыстаньні прадстаўлены ў раздзеле {0}. Вось даступныя зменныя:",
+ "templateMsg": "паведамленне апавешчання",
+ "templateHeartbeatJSON": "аб'ект, які апісвае сігнал",
+ "templateMonitorJSON": "аб'ект, які апісвае манітор",
+ "templateLimitedToUpDownNotifications": "даступна толькі для апавешчанняў UP/DOWN",
+ "templateLimitedToUpDownCertNotifications": "даступна толькі для апавешчанняў UP/DOWN і аб заканчэньні тэрміну дзеяньня сертыфіката",
+ "webhookAdditionalHeadersTitle": "Дадатковыя Загалоўкі",
+ "webhookAdditionalHeadersDesc": "Устанаўлівае дадатковыя загалоўкі, якія адпраўляюцца з дапамогай вэб-хука. Кожны загаловак павінен быць вызначаны як JSON ключ/значэнне.",
+ "webhookBodyPresetOption": "Прэсет - {0}",
+ "webhookBodyCustomOption": "Карыстацкі аб'ект",
+ "Webhook URL": "URL вэбхука",
+ "Application Token": "Токен праграмы",
+ "Server URL": "URL сервера",
+ "Priority": "Прыярытэт",
+ "emojiCheatSheet": "Шпаргалка па Emoji: {0}",
+ "Read more": "Падрабязней",
+ "appriseInstalled": "Апавяшчэнне ўсталявана.",
+ "appriseNotInstalled": "Апавяшчэнне не ўсталявана. {0}",
+ "Method": "Метад",
+ "PushUrl": "URL пуша",
+ "HeadersInvalidFormat": "Загалоўкі запыту не з'яўляюцца валідным JSON: ",
+ "BodyInvalidFormat": "Цела запыту не з'яўляецца валідным JSON: ",
+ "Monitor History": "Гісторыя маніторынгу",
+ "clearDataOlderThan": "Захоўваць статыстыку за {0} дзён.",
+ "PasswordsDoNotMatch": "Паролі не супадаюць.",
+ "records": "запісы",
+ "One record": "Адзін запіс",
+ "steamApiKeyDescription": "Для маніторынгу гульнявога сервера Steam вам патрэбны Web-API ключ Steam. Зарэгістраваць яго можна тут: ",
+ "Current User": "Бягучы карыстальнік",
+ "topic": "Тэма",
+ "topicExplanation": "MQTT топік для маніторынгу",
+ "successKeyword": "Ключавое слова паспяховасці",
+ "successKeywordExplanation": "Ключавое слова MQTT, якое будзе лічыцца паспяховым",
+ "recent": "Апошняе",
+ "Reset Token": "Скід токена",
+ "Done": "Гатова",
+ "Info": "Інфа",
+ "Security": "Бяспека",
+ "Steam API Key": "Steam API-Ключ",
+ "Shrink Database": "Сціснуць базу даных",
+ "Pick a RR-Type...": "Выберыце RR-Тып…",
+ "Pick Accepted Status Codes...": "Выберыце прынятыя коды статуса…",
+ "Default": "Па змаўчанні",
+ "HTTP Options": "HTTP Опцыі",
+ "Title": "Назва інцыдэнту",
+ "Content": "Змест інцыдэнту",
+ "info": "ІНФА",
+ "warning": "УВАГА",
+ "danger": "ПАМЫЛКА",
+ "error": "памылка",
+ "critical": "крытычна",
+ "primary": "АСНОЎНЫ",
+ "light": "СВЕТЛЫ",
+ "dark": "ЦЁМНЫ",
+ "Post": "Апублікаваць",
+ "Please input title and content": "Калі ласка, увядзіце назву і змест",
+ "Created": "Створана",
+ "Last Updated": "Апошняе абнаўленне",
+ "Switch to Light Theme": "Светлая тэма",
+ "Switch to Dark Theme": "Цёмная тэма",
+ "Show Tags": "Паказаць тэгі",
+ "Hide Tags": "Схаваць тэгі",
+ "Description": "Апісанне",
+ "No monitors available.": "Няма даступных манітораў.",
+ "Add one": "Дадаць новы",
+ "No Monitors": "Маніторы адсутнічаюць",
+ "Untitled Group": "Група без назвы",
+ "Services": "Службы",
+ "Powered by": "Працуе на",
+ "Discard": "Скасаваць",
+ "Cancel": "Скасаваць",
+ "Select": "Выбраць",
+ "selectedMonitorCount": "Выбрана: {0}",
+ "Check/Uncheck": "Адзначыць/Зняць",
+ "shrinkDatabaseDescription": "Уключае VACUUM для базы даных SQLite. Калі ваша база даных была створана на версіі 1.10.0 і больш, AUTO_VACUUM ужо ўключаны і гэтае дзеянне не патрабуецца.",
+ "Customize": "Персаналізаваць",
+ "Custom Footer": "Карыстацкі footer",
+ "Custom CSS": "Карыстацкі CSS",
+ "enableProxyDescription": "Гэты проксі не будзе ўплываць на запыты манітора, пакуль ён не будзе актываваны. Вы можаце кантраляваць часовае адключэнне проксі для ўсіх манітораў праз статус актывацыі.",
+ "deleteStatusPageMsg": "Вы сапраўды хочаце выдаліць гэтую старонку статуса?",
+ "deleteProxyMsg": "Вы сапраўды хочаце выдаліць гэты проксі для ўсіх манітораў?",
+ "proxyDescription": "Проксі павінны быць прывязаныя да манітора, каб працаваць.",
+ "setAsDefaultProxyDescription": "Гэты проксі будзе па змаўчанні ўключаны для новых манітораў. Вы ўсё яшчэ можаце асобна адключаць проксі ў кожным маніторы.",
+ "Certificate Chain": "Ланцуг сертыфікатаў",
+ "Valid": "Дзейны",
+ "Invalid": "Нядзейсны",
+ "User": "Карыстальнік",
+ "Page Not Found": "Старонка не знойдзена",
+ "Installed": "Усталявана",
+ "Not installed": "Не ўсталявана",
+ "Running": "Працуе",
+ "Not running": "Не працуе",
+ "Remove Token": "Выдаліць токен",
+ "Start": "Пачаць",
+ "Stop": "Спыніць",
+ "Add New Status Page": "Дадаць старонку статуса",
+ "Slug": "Slug",
+ "Accept characters:": "Прымаць сімвалы:",
+ "startOrEndWithOnly": "Пачынаецца або заканчваецца толькі на {0}",
+ "No consecutive dashes": "Без паслядоўных тырэ",
+ "statusPageSpecialSlugDesc": "Спецыяльны значок {0}: гэтая старонка будзе адлюстроўвацца, калі значок не пазначаны",
+ "Next": "Далей",
+ "The slug is already taken. Please choose another slug.": "Гэты slug ужо заняты. Калі ласка, выберыце іншы slug.",
+ "No Proxy": "Без проксі",
+ "Authentication": "Аўтэнтыфікацыя",
+ "HTTP Basic Auth": "HTTP Аўтарызацыя",
+ "New Status Page": "Новая старонка статуса",
+ "Reverse Proxy": "Зваротны проксі",
+ "Backup": "Рэзервовая копія",
+ "About": "Аб праграме",
+ "wayToGetCloudflaredURL": "(Спампаваць cloudflared з {0})",
+ "cloudflareWebsite": "Вэб-сайт Cloudflare",
+ "Message:": "Паведамленне:",
+ "Don't know how to get the token? Please read the guide:": "Не ведаеце, як атрымаць токен? Калі ласка, прачытайце кіраўніцтва:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Бягучае злучэнне можа быць страчана, калі вы ў цяперашні час падключаецеся праз тунэль Cloudflare. Вы ўпэўнены, што хочаце яго спыніць? Увядзіце свой бягучы пароль, каб пацвердзіць гэта.",
+ "HTTP Headers": "Загалоўкі HTTP",
+ "Trust Proxy": "Давераны проксі",
+ "Other Software": "Іншае праграмнае забеспячэнне",
+ "For example: nginx, Apache and Traefik.": "Напрыклад: nginx, Apache і Traefik.",
+ "Please read": "Калі ласка, прачытайце",
+ "Subject:": "Тэма:",
+ "Valid To:": "Дзейсны да:",
+ "Days Remaining:": "Засталося дзён:",
+ "Issuer:": "Выдавец:",
+ "Fingerprint:": "Адбітак:",
+ "No status pages": "Няма старонак статуса",
+ "Domain Name Expiry Notification": "Абвестка пра сканчэнне тэрміну дзеяння даменнай назвы",
+ "Add a new expiry notification day": "Дадаць новы дзень абвесткі пра сканчэньне тэрміну дзеяння",
+ "Proxy": "Проксі",
+ "Date Created": "Дата стварэння",
+ "Footer Text": "Тэкст у ніжнім калонтытуле",
+ "Show Powered By": "Паказаць на чым створана",
+ "Domain Names": "Даменныя імёны",
+ "signedInDisp": "Вы ўвайшлі як {0}",
+ "signedInDispDisabled": "Аўтэнтыфікацыя адключана.",
+ "RadiusSecret": "Сакрэт Radius",
+ "RadiusSecretDescription": "Агульны сакрэт паміж кліентам і серверам",
+ "RadiusCalledStationId": "Ідэнтыфікатар вызываемай станцыі",
+ "RadiusCalledStationIdDescription": "Ідэнтыфікатар вызываемага прылады",
+ "RadiusCallingStationId": "Ідэнтыфікатар вызывальніка станцыі",
+ "RadiusCallingStationIdDescription": "Ідэнтыфікатар вызывальніка прылады",
+ "Certificate Expiry Notification": "Абвестка пра сканчэнне тэрміну дзеяння сертыфіката",
+ "API Username": "Імя карыстальніка API",
+ "API Key": "API ключ",
+ "Show update if available": "Паказваць даступныя абнаўленні",
+ "Also check beta release": "Праверыць абнаўленні для бета версій",
+ "Using a Reverse Proxy?": "Выкарыстоўваеце зваротны проксі?",
+ "Check how to config it for WebSocket": "Праверце, як наладзіць яго для WebSocket",
+ "Steam Game Server": "Гульнявы сервер Steam",
+ "Most likely causes:": "Найбольш верагодныя прычыны:",
+ "The resource is no longer available.": "Рэсурс больш не даступны.",
+ "There might be a typing error in the address.": "У адрасе можа быць памылка ў друку.",
+ "What you can try:": "Што вы можаце паспрабаваць:",
+ "Retype the address.": "Паўтарыце адрас.",
+ "Go back to the previous page.": "Вярнуцца на папярэднюю старонку.",
+ "Coming Soon": "Хутка",
+ "Connection String": "Радок падлучэння",
+ "Query": "Запыт",
+ "settingsCertificateExpiry": "Сканчэнне TLS сертыфіката",
+ "certificationExpiryDescription": "HTTPS Маніторы ініцыююць абвестку, калі срок дзеяння сертыфіката TLS скончыцца:",
+ "Setup Docker Host": "Налада Docker Host",
+ "Connection Type": "Тып злучэння",
+ "Docker Daemon": "Дэман Docker",
+ "noDockerHostMsg": "Не даступна. Спачатку наладзце хост Docker.",
+ "DockerHostRequired": "Усталюйце хост Docker для гэтага манітора.",
+ "deleteDockerHostMsg": "Вы сапраўды хочаце выдаліць гэты вузел docker для ўсіх манітораў?",
+ "socket": "Сокет",
+ "tcp": "TCP / HTTP",
+ "tailscalePingWarning": "Для таго, каб выкарыстоўваць манітор Tailscale Ping, неабходна ўсталяваць Uptime Kuma без Docker, а таксама ўсталяваць на сервер кліент Tailscale.",
+ "Docker Container": "Docker кантэйнер",
+ "Container Name / ID": "Назва кантэйнера / ID",
+ "Docker Host": "Хост Docker",
+ "Docker Hosts": "Хосты Docker",
+ "Domain": "Дамен",
+ "Workstation": "Рабочая станцыя",
+ "Packet Size": "Памер пакета",
+ "Bot Token": "Токен бота",
+ "wayToGetTelegramToken": "Вы можаце атрымаць токен тут - {0}.",
+ "Chat ID": "ID чата",
+ "telegramMessageThreadID": "(Неабавязкова) ID ланцуга паведамленняў",
+ "telegramMessageThreadIDDescription": "Неабавязковы ўнікальны ідэнтыфікатар для ланцуга паведамленняў (тэмы) форума; толькі для форумаў-супергруп",
+ "telegramSendSilently": "Адправіць без гуку",
+ "telegramSendSilentlyDescription": "Карыстальнікі атрымаюць абвестку без гуку.",
+ "telegramProtectContent": "Забараніць перасылку/захаванне",
+ "telegramProtectContentDescription": "Калі ўключана, паведамленні бота ў Telegram будуць забароненыя для перасылкі і захавання.",
+ "supportTelegramChatID": "Падтрымліваюцца ID чатаў, груп і каналаў",
+ "wayToGetTelegramChatID": "Вы можаце атрымаць ID вашага чата, адправіўшы паведамленне боту і перайсці па гэтаму URL для прагляду chat_id:",
+ "YOUR BOT TOKEN HERE": "ВАШ ТОКЕН БОТА ТУТ",
+ "chatIDNotFound": "ID чата не знойдзены; спачатку адпраўце паведамленне боту",
+ "disableCloudflaredNoAuthMsg": "Вы знаходзіцеся ў рэжыме без аўтарызацыі, пароль не патрабуецца.",
+ "trustProxyDescription": "Давяраць загалоўкам 'X-Forwarded-*'. Калі вы хочаце атрымаць правільны IP-адрас кліента, а ваш Uptime Kuma знаходзіцца пад Nginx або Apache, вам след включить гэты параметр.",
+ "wayToGetLineNotifyToken": "Вы можаце атрымаць токен доступу ў {0}",
+ "Examples": "Прыклады",
+ "Home Assistant URL": "URL-адрас Home Assistant",
+ "Long-Lived Access Token": "Токен доступу з доўгім тэрмінам службы",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Токен доступу з доўгім тэрмінам дзеяння можна стварыць, націснуўшы на імя вашага профілю (ўнізе злева) і пракруціўшы яго ўніз, потым націсніце Стварыць токен. ",
+ "Notification Service": "Служба абвестак",
+ "default: notify all devices": "па змаўчанні: апавяшчаць усе прылады",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Спіс службаў абвестак можна знайсці ў Home Assistant у раздзеле \"Інструменты распрацоўніка > Службы\", выканаўшы пошук па слове \"абвестка\", каб знайсці назву вашага прылады/тэлефона.",
+ "Automations can optionally be triggered in Home Assistant:": "Пры жаданні аўтаматызацыю можна актываваць у Home Assistant.:",
+ "Trigger type:": "Тып трыгера:",
+ "Event type:": "Тып падзеі:",
+ "Event data:": "даныя падзеі:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Затым выберыце дзеянне, напрыклад, пераключыце сцэну на чырвоны індыкатар RGB..",
+ "Frontend Version": "Версія інтэрфейса",
+ "Frontend Version do not match backend version!": "Версія інтэрфейса не адпавядае версіі сервернай часткі!",
+ "backupOutdatedWarning": "Састарэла: гэтая функцыя рэзервовага капіявання больш не падтрымліваецца. Праз даданыя шмат функцый, яна не можа стварыць або аднавіць поўную рэзервовую копію.",
+ "backupRecommend": "Зрабіце рэзервовую копію таму або папцы з данымі (./data/) напрамую.",
+ "Optional": "Неабавязкова",
+ "or": "або",
+ "sameAsServerTimezone": "Аналагічна часавому поясу сервера",
+ "startDateTime": "Пачатковая дата і час",
+ "endDateTime": "Канчатковая дата і час",
+ "cronExpression": "Выраз для Cron",
+ "cronSchedule": "Расклад: ",
+ "invalidCronExpression": "Няправільны выраз Cron: {0}",
+ "recurringInterval": "Інтэрвал",
+ "Recurring": "Паўторны",
+ "strategyManual": "Актыўны/Неактыўны Ручным спосабам",
+ "warningTimezone": "Выкарыстоўваецца часавы пояс сервера",
+ "weekdayShortMon": "Пн",
+ "weekdayShortTue": "Аўт",
+ "weekdayShortWed": "Ср",
+ "weekdayShortThu": "Чт",
+ "weekdayShortFri": "Пт",
+ "weekdayShortSat": "Сб",
+ "weekdayShortSun": "Нд",
+ "dayOfWeek": "Дзень тыдня",
+ "dayOfMonth": "Дзень месяца",
+ "lastDay": "Апошні дзень",
+ "lastDay1": "Апошні дзень месяца",
+ "lastDay2": "Другі апошні дзень месяца",
+ "lastDay3": "Трэці апошні дзень месяца",
+ "maintenanceStatus-scheduled": "Запланавана(ы)",
+ "maintenanceStatus-unknown": "Невядома",
+ "lastDay4": "Чацвёрты апошні дзень месяца",
+ "No Maintenance": "Няма тэхабслугоўванняў",
+ "pauseMaintenanceMsg": "Вы ўпэўненыя, што хочаце паставіць на паўзу?",
+ "maintenanceStatus-under-maintenance": "На тэхабслугоўванні",
+ "maintenanceStatus-inactive": "Неактыўны",
+ "Display Timezone": "Паказаць часавы пояс",
+ "Server Timezone": "Часавы пояс сервера",
+ "statusPageMaintenanceEndDate": "Канец",
+ "IconUrl": "URL значка",
+ "Enable DNS Cache": "(Састарэла) Уключыць DNS кэш для манітораў HTTP(S)",
+ "Enable": "Уключыць",
+ "Disable": "Адключыць",
+ "enableNSCD": "Уключыць NSCD (Name Service Cache Daemon) для кэшавання ўсіх DNS-запытаў",
+ "chromeExecutable": "Выканаўчы файл Chrome/Chromium",
+ "chromeExecutableAutoDetect": "Аўтавызначэнне",
+ "chromeExecutableDescription": "Для карыстальнікаў Docker, калі Chromium яшчэ не ўсталяваны, можа спатрэбіцца некалькі хвілін для ўсталявання і адлюстравання выніку тэставання. Ён займае 1 ГБ дыскавага прастору.",
+ "dnsCacheDescription": "Гэта можа не працаваць на некаторых IPv6 асяроддзях, адключыце гэта, калі ў вас узнікаюць праблемы.",
+ "Single Maintenance Window": "Адзінае акно тэхабслугоўвання",
+ "Maintenance Time Window of a Day": "Суточны інтэрвал для тэхабслугоўвання",
+ "Effective Date Range": "Даты дзеяння (Неабавязкова)",
+ "Schedule Maintenance": "Запланаваць тэхабслугоўванне",
+ "Edit Maintenance": "Рэдагаваць тэхабслугоўванне",
+ "Date and Time": "Дата і час",
+ "DateTime Range": "Дыяпазон даты і часу",
+ "loadingError": "Немагчыма атрымаць даныя, калі ласка паспрабуйце пазней.",
+ "plugin": "Плагін | Плагіны",
+ "install": "Усталяваць",
+ "installing": "Усталяваецца",
+ "uninstall": "Выдаліць",
+ "uninstalling": "Выдаляецца",
+ "confirmUninstallPlugin": "Вы ўпэўнены, што хочаце выдаліць гэты плагін?",
+ "notificationRegional": "Рэгіянальны",
+ "Clone Monitor": "Копія",
+ "Clone": "Кланаваць",
+ "cloneOf": "Копія {0}",
+ "smtp": "Email (SMTP)",
+ "secureOptionNone": "Няма / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "Ігнараваць памылкі TLS",
+ "From Email": "Ад каго",
+ "emailCustomisableContent": "Наладжвальны змест",
+ "smtpLiquidIntroduction": "Наступныя два поля з'яўляюцца шабланізаванымі з дапамогай мовы шаблонаў Liquid. Інструкцыі па іх выкарыстаньні прадстаўлены ў раздзеле {0}. Вось даступныя зменныя:",
+ "emailCustomSubject": "Свая тэма",
+ "leave blank for default subject": "пакіньце пустым для тэмы па змаўчаньні",
+ "emailCustomBody": "Карыстацкі аб'ект",
+ "leave blank for default body": "пакіньце пустым для аб'екта па змаўчаньні",
+ "emailTemplateServiceName": "Назва сэрвіса",
+ "emailTemplateHostnameOrURL": "Назва хоста або URL",
+ "emailTemplateStatus": "Статус",
+ "emailTemplateMonitorJSON": "аб'ект, які апісвае манітор",
+ "emailTemplateHeartbeatJSON": "аб'ект, які апісвае сігнал",
+ "emailTemplateMsg": "паведамленне апавешчання",
+ "emailTemplateLimitedToUpDownNotification": "даступны толькі для сігналаў UP/DOWN, у адваротным выпадку null",
+ "To Email": "Каму",
+ "smtpCC": "Копія",
+ "smtpBCC": "Схаваная копія",
+ "Discord Webhook URL": "Discord вэбхук URL",
+ "wayToGetDiscordURL": "Вы можаце стварыць яго ў наладах канала \"Налады -> Інтэграцыі -> Стварыць Вэбхук\"",
+ "Bot Display Name": "Адлюстраваная назва бота",
+ "Prefix Custom Message": "Свой прэфікс паведамлення",
+ "Hello @everyone is...": "Прывітанне {'@'}everyone гэта…",
+ "wayToGetTeamsURL": "Як стварыць URL вэбхука вы можаце даведацца тут - {0}.",
+ "wayToGetZohoCliqURL": "Вы можаце даведацца, як стварыць webhook URL тут {0}.",
+ "needSignalAPI": "Вам патрэбны кліент Signal з падтрымкай REST API.",
+ "Channel access token": "Токен доступу да канала",
+ "wayToCheckSignalURL": "Перайдзіце па гэтаму URL, каб даведацца, як наладзіць такі кліент:",
+ "Recipients": "Атрымальнікі",
+ "Access Token": "Токен доступу",
+ "Channel access token (Long-lived)": "Токен доступу да канала (даўгавечны)",
+ "Line Developers Console": "Кансоль распрацошчыкаў Line",
+ "Basic Settings": "Базавыя налады",
+ "User ID": "ID карыстальніка",
+ "Your User ID": "Ваш ідэнтыфікатар карыстальніка",
+ "Messaging API": "API паведамленняў",
+ "wayToGetLineChannelToken": "Спачатку зайдзіце ў {0}, стварыце правайдэра і канал (API паведамленняў), потым вы зможаце атрымаць токен доступу да канала і ID карыстальніка з вышэйзгаданых пунктаў меню.",
+ "Icon URL": "URL значка",
+ "aboutIconURL": "Вы можаце ўставіць спасылку на значок ў поле \"URL значка\" каб змяніць малюнак профілю па змаўчанні. Не выкарыстоўваецца, калі зададзена значок Emoji.",
+ "aboutMattermostChannelName": "Вы можаце перавызначыць канал па змаўчанні, у які вэбхук піша, уведаўшы імя канала ў поле \"Імя канала\". Гэта неабходна ўключыць у наладах вэбхука Mattermost. Напрыклад: #other-channel",
+ "dataRetentionTimeError": "Перыяд захавання павінен быць 0 або больш",
+ "infiniteRetention": "Выберыце 0 для бясконцага захавання.",
+ "confirmDeleteTagMsg": "Вы сапраўды хочаце выдаліць гэты тэг? Маніторы, звязаныя з гэтым тэгам не будуць выдаленыя.",
+ "enableGRPCTls": "Дазволіць адпраўляць gRPC запыт праз TLS злучэнне",
+ "grpcMethodDescription": "Імя метада пераўтвараецца ў фармат camelCase, напрыклад, sayHello, check і г.д.",
+ "acceptedStatusCodesDescription": "Выберыце коды статусаў для вызначэння даступнасці службы.",
+ "deleteMonitorMsg": "Вы сапраўды хочаце выдаліць гэты манітор?",
+ "deleteMaintenanceMsg": "Вы сапраўды хочаце выдаліць гэтае тэхабслугоўванне?",
+ "deleteNotificationMsg": "Вы сапраўды хочаце выдаліць гэтую абвестку для ўсіх манітораў?",
+ "dnsPortDescription": "Па змаўчанні порт DNS сервера - 53. Мы можаце змяніць яго ў любы час.",
+ "resolverserverDescription": "Cloudflare з'яўляецца серверам па змаўчанні. Вы заўсёды можаце змяніць гэты сервер.",
+ "rrtypeDescription": "Выберыце тып рэсурснага запісу, які вы хочаце адсочваць",
+ "pauseMonitorMsg": "Вы сапраўды хочаце прыпыніць?",
+ "enableDefaultNotificationDescription": "Для кожнага новага манітора гэта апавяшчэнне будзе ўключана па змаўчанні. Вы ўсё яшчэ можаце адключыць апавяшчэнні ў кожным маніторы асобна.",
+ "clearEventsMsg": "Вы сапраўды хочаце выдаліць усю статыстыку падзей гэтага манітора?",
+ "clearHeartbeatsMsg": "Вы сапраўды хочаце выдаліць усю статыстыку апытанняў гэтага манітора?",
+ "confirmClearStatisticsMsg": "Вы сапраўды хочаце выдаліць УСЮ статыстыку?",
+ "importHandleDescription": "Выберыце \"Прапусціць існуючыя\", калі вы хочаце прапусціць кожны манітор або апавяшчэнне з такой жа назвай. \"Перазапісаць\" выдаліць кожны існуючы манітор або апавяшчэнне і дадаць зноў. Варыянт \"Не правяраць\" прымусова адновіць усе маніторы і апавяшчэнні, нават калі яны ўжо існуюць.",
+ "twoFAVerifyLabel": "Увядзіце свой токен, каб праверыць працу 2FA:",
+ "tokenValidSettingsMsg": "Токен сапраўдны! Цяпер вы можаце захаваць налады 2FA.",
+ "confirmImportMsg": "Вы сапраўды хочаце аднавіць рэзервовую копію? Пераканайцеся, што вы выбралі правільны варыянт імпарту.",
+ "confirmEnableTwoFAMsg": "Вы сапраўды хочаце ўключыць 2FA?",
+ "confirmDisableTwoFAMsg": "Вы сапраўды хочаце адключыць 2FA?",
+ "affectedStatusPages": "Паказваць абвестку аб тэхабслугоўванні на выбраных старонках статуса",
+ "atLeastOneMonitor": "Выберыце больш за адзін затрагаваны манітор",
+ "passwordNotMatchMsg": "Уведзеныя паролі не супадаюць.",
+ "notificationDescription": "Прымацаваць абвесткі да манітораў.",
+ "keywordDescription": "Пошук слова ў чыстым HTML або ў JSON-адказе (адчувальны да рэгістра).",
+ "invertKeywordDescription": "Шукаць, каб ключавое слова адсутнічала, а не прысутнічала.",
+ "jsonQueryDescription": "Выконайце json-запыт да адказу і праверце наяўнасць чаканага значэння (вяртанае значэнне будзе пераўтворана ў радок для параўнання). Глядзіце {0} для атрымання дакументацыі па мове запытаў. А трэніравацца вы можаце {1}.",
+ "backupDescription": "Вы можаце захаваць рэзервовую копію ўсіх манітораў і апавешчанняў у выглядзе JSON-файла.",
+ "backupDescription2": "Важна: гісторыя і падзеі захаваныя не будуць.",
+ "backupDescription3": "Важныя даныя, такія як токены апавешчанняў, дадаюцца пры экспарце, таму захоўвайце файлы ў бяспечным месцы.",
+ "endpoint": "канчатковая кропка",
+ "octopushAPIKey": "\"{API key}\" з даных уліковых запісаў HTTP API ў панэлі кіравання",
+ "octopushLogin": "\"Login\" з даных уліковых запісаў HTTP API ў панэлі кіравання",
+ "promosmsLogin": "Лагін API",
+ "promosmsPassword": "Пароль API",
+ "pushoversounds pushover": "Pushover (па змаўчанні)",
+ "pushoversounds bike": "Веласіпед",
+ "pushoversounds bugle": "Горн",
+ "pushoversounds cashregister": "Касавы апарат",
+ "pushoversounds classical": "Класічны",
+ "pushoversounds cosmic": "Касмічны",
+ "pushoversounds falling": "Падаючы",
+ "pushoversounds intermission": "Антракт",
+ "pushoversounds magic": "Магія",
+ "pushoversounds mechanical": "Механічны",
+ "pushoversounds pianobar": "Піяна-бар",
+ "pushoversounds siren": "Сірэна",
+ "pushoversounds spacealarm": "Касмічная сігналізацыя",
+ "pushoversounds tugboat": "Буксір",
+ "pushoversounds alien": "Іншаплянетная трывога (доўгая)",
+ "pushoversounds persistent": "Настойлівы (доўгі)",
+ "pushoversounds echo": "Pushover Эха (доўгае)",
+ "pushoversounds updown": "Уверх уніз (доўгае)",
+ "pushoversounds vibrate": "Толькі вібрацыя",
+ "pushoversounds none": "Няма (ціха)",
+ "pushyAPIKey": "Сакрэтны ключ API",
+ "pushyToken": "Токен прылады",
+ "apprise": "Apprise (Падтрымка 50+ сэрвісаў абвестак)",
+ "GoogleChat": "Google Chat (толькі Google Workspace)",
+ "wayToGetKookGuildID": "Уключыце \"Рэжым распрацошчыка\" у наладах Kook, а затым націсніце правай кнопкай на гільдыю, каб скапіраваць яе ID",
+ "Guild ID": "Ідэнтыфікатар гільдыі",
+ "User Key": "Ключ карыстальніка",
+ "Message Title": "Загаловак паведамлення",
+ "Notification Sound": "Гук абвесткі",
+ "More info on:": "Больш інфармацыі на: {0}",
+ "pushoverDesc1": "Экстрэмальны прыярытэт (2) мае таймаўт паўтору па змаўчанні 30 секунд і сканчаецца праз 1 гадзіну.",
+ "pushoverDesc2": "Калі вы хочаце адпраўляць абвесткі розным прыладам, неабходна запоўніць поле Прылада.",
+ "pushoverMessageTtl": "TTL паведамлення (у секундах)",
+ "SMS Type": "Тып SMS",
+ "octopushTypePremium": "Преміум (Хуткі - рэкамендуецца для аляртаў)",
+ "octopushTypeLowCost": "Танны (Павольны - часам блакуецца аператарамі)",
+ "apiCredentials": "API рэквізіты",
+ "checkPrice": "Тарыфы {0}:",
+ "octopushLegacyHint": "Вы выкарыстоўваеце старую версію Octopush (2011-2020) ці новую?",
+ "Check octopush prices": "Тарыфы Octopush {0}.",
+ "octopushPhoneNumber": "Нумар тэлефона (міжнародны фармат напр. +48123456789) ",
+ "octopushSMSSender": "Імя адпраўніка SMS: 3-11 сімвалаў алфавіта, лічбаў і прабелаў (a-zA-Z0-9)",
+ "LunaSea Device ID": "ID прылады LunaSea",
+ "Apprise URL": "URL апавяшчэння",
+ "Example:": "Прыклад: {0}",
+ "Read more:": "Падрабязней: {0}",
+ "Status:": "Статус: {0}",
+ "Strategy": "Стратэгія",
+ "Free Mobile User Identifier": "Бясплатны мабільны ідэнтыфікатар карыстальніка",
+ "Free Mobile API Key": "API ключ Free Mobile",
+ "Enable TLS": "Уключыць TLS",
+ "Proto Service Name": "Назва службы Proto",
+ "Proto Method": "Метад Proto",
+ "Proto Content": "Змест Proto",
+ "Economy": "Эканомія",
+ "Lowcost": "Бюджэтны",
+ "high": "высокі",
+ "SendKey": "SendKey",
+ "SMSManager API Docs": "Дакументацыя да API SMSManager ",
+ "Gateway Type": "Тып шлюза",
+ "You can divide numbers with": "Вы можаце дзяліць лічбы з",
+ "Base URL": "Базавы URL",
+ "goAlertInfo": "GoAlert — гэта праграма з адкрытым зыходным кодам для складання раскладу выклікаў, аўтаматычнай эскаляцыі і абвестак (напрыклад, SMS або галасавых выклікаў). Аўтаматычна прывабляйце патрэбнага чалавека, патрэбным спосабам і ў патрэбны час! {0}",
+ "goAlertIntegrationKeyInfo": "Атрымаць агульны ключ інтэграцыі API для службы ў гэтым фармаце \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" звычайна значэнне параметра токена скапіяванага URL.",
+ "AccessKeyId": "ID ключа доступу",
+ "SecretAccessKey": "Сакрэтны ключ доступу",
+ "PhoneNumbers": "Нумары тэлефонаў",
+ "TemplateCode": "Код шаблону",
+ "SignName": "SignName",
+ "Sms template must contain parameters: ": "Шаблон SMS павінен змяшчаць параметры: ",
+ "Bark API Version": "Версія Bark API",
+ "Bark Endpoint": "Канчатковая кропка Bark",
+ "Bark Group": "Bark Group",
+ "Bark Sound": "Bark Sound",
+ "WebHookUrl": "WebHookUrl",
+ "SecretKey": "Сакрэтны Ключ",
+ "For safety, must use secret key": "Для бяспекі, неабходна выкарыстоўваць сакрэтны ключ",
+ "Mentioning": "Згадванне",
+ "Don't mention people": "Не згадваць людзей",
+ "Mention group": "Згадаць {group}",
+ "Device Token": "Токен прылады",
+ "Platform": "Платформа",
+ "High": "Высокі",
+ "Retry": "Паўторыць",
+ "Topic": "Тэма",
+ "WeCom Bot Key": "WeCom Bot Key",
+ "Setup Proxy": "Налада Проксі",
+ "Proxy Protocol": "Пратакол Проксі",
+ "Proxy Server": "Проксі",
+ "Proxy server has authentication": "Проксі мае аўтэнтыфікацыю",
+ "promosmsTypeEco": "SMS ECO - танкі і павольны, часта перагружаны. Толькі для атрымальнікаў з Польшчы.",
+ "promosmsTypeFlash": "SMS FLASH - паведамленні аўтаматычна з'яўляюцца на прыладзе атрымальніка. Толькі для атрымальнікаў з Польшчы.",
+ "promosmsTypeFull": "SMS FULL - прэміум-узровень SMS, можна выкарыстоўваць сваё імя адпраўніка (папярэдне зарэгістраваў яго). Надзейна для аляртаў.",
+ "promosmsTypeSpeed": "SMS SPEED - найвышэйшы прыярытэт у сістэме. Вельмі хутка і надзейна, але вельмі дорага (у два разы дорага, чым SMS FULL).",
+ "promosmsPhoneNumber": "Нумар тэлефона (для атрымальнікаў з Польшчы можна прапусціць код рэгіёна)",
+ "promosmsSMSSender": "Імя адпраўніка SMS: Зарэгістраванае або адно з імён па змаўчанні: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "promosmsAllowLongSMS": "Дазволіць доўгія SMS",
+ "Feishu WebHookUrl": "Feishu WebHookURL",
+ "matrixHomeserverURL": "URL сервера (разам з http(s):// і па жаданні порт)",
+ "Internal Room Id": "Унутраны ID пакою",
+ "matrixDesc1": "Унутраны ID пакою можна знайсці ў Падрабязнасцях у параметрах канала вашага кліента Matrix. Ён павінен выглядаць прыблізна так !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "Рэкамендуецца стварыць новага карыстальніка і не выкарыстоўваць токен доступу асабістага карыстальніка Matrix, т.к. гэта ўяўляе за сабой поўны доступ да акаўнта і да пакояў, у якіх вы знаходзіцеся. Замест гэтага стварыце новага карыстальніка і запрасіце яго толькі ў той пакой, у якім вы хочаце атрымліваць абвесткі. Токен доступу можна атрымаць, выканаўшы каманду {0}",
+ "Channel Name": "Назва канала",
+ "Notify Channel": "Канал апавешчанняў",
+ "aboutNotifyChannel": "Апавяшчэнне аб канале выкліча настольнае або мабільнае апавяшчэнне для ўсіх удзельнікаў канала, незалежна ад таго, ці ўстаноўлена іх даступнасць як актыўная або адсутная.",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "setup a new monitor group": "наладзіць новую групу манітораў",
+ "openModalTo": "адкрыць мадальнае акно {0}",
+ "Add a domain": "Дадаць дамен",
+ "Remove domain": "Выдаліць дамен '{0}'",
+ "Icon Emoji": "Emoji",
+ "signalImportant": "ВАЖНА: Нельга змешваць у Атрымальніках групы і нумары!",
+ "aboutWebhooks": "Больш інфармацыі аб вэбхуках: {0}",
+ "aboutChannelName": "Увядзіце назву канала ў поле {0} Назва канала, калі вы хочаце абысці канал вэбхука. Напрыклад: #other-channel",
+ "aboutKumaURL": "Калі поле Uptime Kuma URL у наладах застанецца пустым, па змаўчанні будзе выкарыстоўвацца спасылка на праект на GitHub.",
+ "smtpDkimSettings": "DKIM Налады",
+ "smtpDkimDesc": "Калі ласка, азнаёмцеся з {0} Nodemailer DKIM для выкарыстання.",
+ "documentation": "дакументацыяй",
+ "smtpDkimDomain": "Назва дамена",
+ "smtpDkimKeySelector": "Ключ",
+ "smtpDkimPrivateKey": "Прыватны ключ",
+ "smtpDkimHashAlgo": "Алгарытм хэша (неабавязкова)",
+ "smtpDkimheaderFieldNames": "Загаловак ключоў для подпісу (неабавязкова)",
+ "smtpDkimskipFields": "Загаловак ключоў не для подпісу (опцыянальна)",
+ "wayToGetPagerDutyKey": "Вы можаце гэта атрымаць, перайшоўшы ў Сервіс -> Каталог сервісаў -> (Выберыце сервіс) -> Інтэграцыі -> Дадаць інтэграцыю. Тут вы можаце шукаць «Events API V2». Падрабязней {0}",
+ "Integration Key": "Ключ інтэграцыі",
+ "Integration URL": "URL інтэграцыі",
+ "Auto resolve or acknowledged": "Аўтаматычнае развязванне або пацверджанне",
+ "do nothing": "нічога не рабіць",
+ "auto acknowledged": "аўтаматычна пацверджана",
+ "auto resolve": "аўтаматычна развязана",
+ "alertaApiEndpoint": "Канчатковая кропка API",
+ "alertaEnvironment": "Асяроддзе",
+ "alertaApiKey": "Ключ API",
+ "alertaAlertState": "Стан алярта",
+ "alertaRecoverState": "Стан аднаўлення",
+ "serwersmsAPIUser": "API Карыстальнік (уключаючы прэфікс webapi_)",
+ "serwersmsAPIPassword": "API Пароль",
+ "serwersmsPhoneNumber": "Нумар тэлефона",
+ "serwersmsSenderName": "SMS Імя адпраўніка (зарэгістравана праз карыстальніцкі партал)",
+ "smseagleTo": "Нумар(ы) тэлефона",
+ "smseagleGroup": "Назва(ы) групы тэлефоннай кнігі",
+ "smseagleContact": "Імёны кантактаў тэлефоннай кнігі",
+ "smseagleRecipientType": "Тып атрымальніка",
+ "smseagleRecipient": "Атрымальнік(і) (калі множнасць, павінны быць раздзеленыя коскай)",
+ "smseagleToken": "Токен доступу API",
+ "smseagleUrl": "URL вашага прылады SMSEagle",
+ "smseagleEncoding": "Адправіць у Unicode",
+ "smseaglePriority": "Прыярытэт паведамлення (0-9, па змаўчанні = 0)",
+ "Recipient Number": "Нумар атрымальніка",
+ "From Name/Number": "Імя/нумар адпраўніка",
+ "Leave blank to use a shared sender number.": "Пакіньце пустым, каб выкарыстоўваць агульны нумар адпраўніка.",
+ "Octopush API Version": "Версія API Octopush",
+ "Legacy Octopush-DM": "Састарэлы Octopush-DM",
+ "ntfy Topic": "Тэма ntfy",
+ "Server URL should not contain the nfty topic": "URL сервера не павінен утрымліваць тэму nfty",
+ "onebotHttpAddress": "HTTP-адрас OneBot",
+ "onebotMessageType": "Тып паведамлення OneBot",
+ "onebotGroupMessage": "Група",
+ "onebotPrivateMessage": "Асабістае",
+ "onebotUserOrGroupId": "ID групы/карыстальніка",
+ "onebotSafetyTips": "Для бяспекі неабходна ўсталяваць токен доступу",
+ "PushDeer Server": "Сервер PushDeer",
+ "pushDeerServerDescription": "Пакіньце пустым для выкарыстання афіцыйнага сервера",
+ "PushDeer Key": "Ключ PushDeer",
+ "wayToGetClickSendSMSToken": "Вы можаце атрымаць імя карыстальніка API і ключ API з {0} .",
+ "Custom Monitor Type": "Сваёродны тып манітора",
+ "Google Analytics ID": "ID Google Аналітыкі",
+ "Edit Tag": "Рэдагаваць тэг",
+ "Server Address": "Адрас сервера",
+ "Learn More": "Даведацца больш",
+ "Body Encoding": "Тып зместу запыту.(JSON або XML)",
+ "API Keys": "API Ключы",
+ "Expiry": "Сканчэнне",
+ "Continue": "Працягнуць",
+ "Add Another": "Дадаць яшчэ",
+ "Key Added": "Ключ дададзены",
+ "apiKeyAddedMsg": "Ваш ключ API дададзены. Звярніце ўвагу на гэтае паведамленне, так як яно адлюстроўваецца адзін раз.",
+ "Add API Key": "Дадаць API ключ",
+ "No API Keys": "Няма ключоў API",
+ "apiKey-active": "Актыўны",
+ "apiKey-expired": "Скончыўся",
+ "apiKey-inactive": "Неактыўны",
+ "Expires": "Сканчаецца",
+ "disableAPIKeyMsg": "Вы ўпэўнены, што хочаце адключыць гэты API ключ?",
+ "deleteAPIKeyMsg": "Вы ўпэўнены, што хочаце выдаліць гэты ключ API?",
+ "Generate": "Згенераваць",
+ "pagertreeIntegrationUrl": "URL-адрас інтэграцыі",
+ "pagertreeUrgency": "Тэрміновасць",
+ "pagertreeSilent": "Ціхі",
+ "pagertreeLow": "Нізкі",
+ "pagertreeMedium": "Сярэдні",
+ "pagertreeHigh": "Высокі",
+ "pagertreeCritical": "Крытычны",
+ "pagertreeResolve": "Аўтаматычнае развязванне",
+ "pagertreeDoNothing": "Нічога не рабіць",
+ "wayToGetPagerTreeIntegrationURL": "Пасля стварэння інтэграцыі Uptime Kuma ў PagerTree скапіруйце файл {Endpoint}. Гл. поўную інфармацыю {0}",
+ "lunaseaTarget": "Мэта",
+ "lunaseaDeviceID": "Ідэнтыфікатар прылады",
+ "lunaseaUserID": "Ідэнтыфікатар карыстальніка",
+ "ntfyAuthenticationMethod": "Метад уваходу",
+ "ntfyPriorityHelptextAllEvents": "Усе падзеі адпраўляюцца з максімальным прыярытэтам",
+ "ntfyPriorityHelptextAllExceptDown": "Усе падзеі адпраўляюцца з гэтым прыярытэтам, акрамя {0}-падзеяў, якія маюць прыярытэт {1}",
+ "ntfyUsernameAndPassword": "Лагін і пароль",
+ "twilioAccountSID": "SID уліковага запісу",
+ "twilioApiKey": "Ключ API (неабавязкова)",
+ "twilioAuthToken": "Токен аўтарызацыі / Сакрэтны API ключ",
+ "twilioFromNumber": "З нумара",
+ "twilioToNumber": "На нумар",
+ "Monitor Setting": "Налада манітора {0}",
+ "Show Clickable Link": "Паказаць націскальную спасылку",
+ "Show Clickable Link Description": "Калі пазначаны флажок, усе, хто мае доступ да гэтай старонкі стану, могуць мець доступ да URL-адрасу манітора.",
+ "Open Badge Generator": "Адкрыць генератар значкаў",
+ "Badge Generator": "Генератар значкоў для {0}",
+ "Badge Type": "Тып значка",
+ "Badge Duration (in hours)": "Тэрмін дзеяння значка (у гадзінах)",
+ "Badge Label": "Надпіс для значка",
+ "Badge Prefix": "Значэнне прэфікса значка",
+ "Badge Suffix": "Значэнне суфікса значка",
+ "Badge Label Color": "Колер надпісу значка",
+ "Badge Color": "Колер значка",
+ "Badge Label Prefix": "Прэфікс надпісу для значка",
+ "Badge Preview": "Папярэдні прагляд значка",
+ "Badge Label Suffix": "Суфікс надпісу для значка",
+ "Badge Up Color": "Колер значка для статусу \"Даступны\"",
+ "Badge Down Color": "Колер значка для статусу \"Недаступны\"",
+ "Badge Pending Color": "Колер значка для статусу \"Чаканне\"",
+ "Badge Maintenance Color": "Колер значка для статусу \"Тэхабслугоўванне\"",
+ "Badge Warn Color": "Колер значка для папярэджання",
+ "Badge Warn Days": "Значок для \"дзён папярэджання\"",
+ "Badge Down Days": "Значок для \"дзён недаступнасці\"",
+ "Badge Style": "Стыль значка",
+ "Badge value (For Testing only.)": "Значэнне значка (толькі для тэставання)",
+ "Group": "Група",
+ "Monitor Group": "Група манітораў",
+ "monitorToastMessagesLabel": "Апавяшчэнні",
+ "monitorToastMessagesDescription": "Паведамленні для манітораў знікаюць праз зададзены час у секундах. Значэнне -1 адключае тайм-аўт. Значэнне 0 адключае апавяшчэнні.",
+ "toastErrorTimeout": "Таймаут для апавешчанняў пра памылкі",
+ "toastSuccessTimeout": "Таймаут для апавешчанняў пра паспяховасьць",
+ "Enter the list of brokers": "Увядзіце спіс брокераў",
+ "Kafka Brokers": "Kafka Brokers",
+ "Press Enter to add broker": "Націсніце Enter, каб дадаць брокера",
+ "Kafka Topic Name": "Назва тэмы Kafka",
+ "Kafka Producer Message": "Паведамленне продюсера Kafka",
+ "Enable Kafka SSL": "Уключэнне пратаколу Kafka SSL",
+ "Enable Kafka Producer Auto Topic Creation": "Уключэнне аўтаматычнага стварэння тэм у Kafka Producer",
+ "Kafka SASL Options": "Параметры SASL у Kafka",
+ "Mechanism": "Механізм",
+ "Pick a SASL Mechanism...": "Выберыце механізм SASL…",
+ "Authorization Identity": "Аўтарызацыйная ідэнтычнасць",
+ "AccessKey Id": "AccessKey Id",
+ "Secret AccessKey": "Сакрэтны ключ доступу",
+ "Session Token": "Токен сеансу",
+ "noGroupMonitorMsg": "Не даступна. Спачатку стварыце групу манітораў.",
+ "Close": "Закрыць",
+ "Request Body": "Цела запыту",
+ "wayToGetFlashDutyKey": "Вы можаце перайсці на старонку \"Канал\" -> (Выберыце канал) -> \"Інтэграцыі\" -> \"Дадаць новую старонку інтэграцыі\", дадаць \"Карыстацкую падзею\", каб атрымаць push-адрас, скапіяваць ключ інтэграцыі ў адрас. Для атрымання дадатковай інфармацыі, калі ласка, наведайце",
+ "FlashDuty Severity": "Сур'ёзнасць",
+ "nostrRecipients": "Адкрытыя ключы атрымальнікаў (npub)",
+ "nostrRelaysHelp": "Адзін URL-адрас рэтрансляцыі ў кожным радку",
+ "nostrSender": "Закрыты ключ адпраўшчыка (nsec)",
+ "nostrRecipientsHelp": "фармат npub, па адным у радку",
+ "showCertificateExpiry": "Паказваць пратэрмінаваны сертыфікат",
+ "noOrBadCertificate": "Адсутнасць сертыфіката",
+ "gamedigGuessPortDescription": "Порт, які выкарыстоўваецца пратаколам Valve Server Query Protocol, можа адрознівацца ад порта кліента. Паспрабуйце гэта, калі манітор не можа падключыцца да сервера.",
+ "authUserInactiveOrDeleted": "Карыстальнік неактыўны або выдалены.",
+ "authInvalidToken": "Няправільны токен.",
+ "authIncorrectCreds": "Няправільнае імя карыстальніка або пароль.",
+ "2faAlreadyEnabled": "2FA ўжо ўключана.",
+ "2faEnabled": "2FA ўключана.",
+ "2faDisabled": "2FA адключана.",
+ "successAdded": "Паспяхова дададзена.",
+ "successResumed": "Паспяхова прадоўжана.",
+ "successPaused": "Паспяхова спынена.",
+ "successDeleted": "Паспяхова выдалена.",
+ "successEdited": "Паспяхова зменена.",
+ "successAuthChangePassword": "Пароль паспяхова абноўлены.",
+ "successBackupRestored": "Рэзервовая копія паспяхова адноўлена.",
+ "successDisabled": "Паспяхова адключана.",
+ "successEnabled": "Паспяхова ўключана.",
+ "tagNotFound": "Тэг не знойдзены.",
+ "foundChromiumVersion": "Выяўлены Chromium/Chrome. Версіі: {0}",
+ "Remote Browsers": "Аддаленыя браўзеры",
+ "Remote Browser": "Аддалены браўзер",
+ "Add a Remote Browser": "Дадаць аддалены браўзер",
+ "Remote Browser not found!": "Аддалены браўзер не знойдзены!",
+ "remoteBrowsersDescription": "Аддаленыя браўзеры — альтэрнатыва лакальнаму запуску Chromium. Усталюйце такі сервіс, як browserless.io, або падлучыцеся да свайго ўласнага",
+ "self-hosted container": "кантэйнер, які хостыцца самастойна",
+ "remoteBrowserToggle": "Па змаўчаньні Chromium працуе ўнутры кантэйнера Uptime Kuma. Вы можаце выкарыстоўваць аддалены браўзер, пераключыўшы гэты пераключальнік.",
+ "useRemoteBrowser": "Выкарыстоўваць удалены браўзер",
+ "deleteRemoteBrowserMessage": "Вы ўпэўнены, што хочаце выдаліць гэты удалены браўзер для ўсіх манітораў?",
+ "Browser Screenshot": "Скрыншот браўзера",
+ "wayToGetSevenIOApiKey": "Зайдзіце на панэль кіравання па адрасе app.seven.io > распрацоўшчык > {api key} > зялёная кнопка дадаць",
+ "senderSevenIO": "Адпраўляе нумар або імя",
+ "receiverSevenIO": "Нумар атрымання",
+ "apiKeySevenIO": "SevenIO {API Key}",
+ "receiverInfoSevenIO": "Калі нумар атрымальніка не знаходзіцца ў Германіі, то перад нумарам неабходна дадаць код краіны (напрыклад, для ЗША код краіны 1, тады выкарыстоўвайце 117612121212, замест 017612121212)",
+ "wayToGetWhapiUrlAndToken": "Вы можаце атрымаць {API URL} і токен, зайдзяўшы ў патрэбны вам канал з {0}",
+ "whapiRecipient": "Нумар тэлефона / ID кантакта / ID групы",
+ "documentationOf": "{0} Дакументацыя",
+ "What is a Remote Browser?": "Што такое аддалены браўзер?",
+ "wayToGetHeiiOnCallDetails": "Як атрымаць ID трыгера і {API Keys}, напісана ў {documentation}",
+ "callMeBotGet": "Тут вы можаце стварыць {endpoint} для {0}, {1} і {2}. Майце на ўвазе, што вы можаце атрымаць абмежаванне па хуткасці. Абмежаванні па хуткасці выглядаюць наступным чынам: {3}",
+ "gtxMessagingApiKeyHint": "Вы можаце знайсці свой {API key} на старонцы: Мае уліковыя запісы маршрутызацыі > Паказаць інфармацыю аб уліковым запісе > Уліковыя даныя API > REST API (v2.x)",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "Нумар тэлефона / Адрас крыніцы шляху перадачы (АІПП)",
+ "To Phone Number": "На нумар тэлефона",
+ "gtxMessagingToHint": "Міжнародны фармат, з «+» ({e164}, {e212} або {e214})",
+ "Alphanumeric (recommended)": "Літарна-лічбавая (рэкамендуецца)",
+ "Telephone number": "Нумар тэлефона",
+ "cellsyntOriginatortypeAlphanumeric": "Літарна-лічбавы радок (не больш за 11 літарна-лічбавых сімвалаў). Атрымальнікі не могуць адказаць на гэта паведамленне.",
+ "cellsyntOriginatortypeNumeric": "Лічбавае значэнне (не больш за 15 лічбаў) з нумарам тэлефона ў міжнародным фармаце без 00 ў пачатку (напрыклад, нумар Вялікабрытаніі 07920 110 000 павінен быць заданы, як 447920110000). Атрымальнікі могуць адказаць на паведамленне.",
+ "Originator": "Крыніца",
+ "cellsyntOriginator": "Бачны на мабільным тэлефоне атрымальніка як адпраўшчыка паведамлення. Дапушчальныя значэнні і функцыя залежаць ад параметра {originatortype}.",
+ "cellsyntDestination": "Нумар тэлефона атрымальніка ў міжнародным фармаце з 00 ў пачатку, за якім следуе код краіны, напрыклад, 00447920110000 для нумара Вялікабрытаніі 07920 110 000 (не больш за 17 лічбаў у суме). Не больш за 25000 атрымальнікаў, раздзеленых коскамі, на адзін HTTP-запыт.",
+ "Allow Long SMS": "Дазволіць доўгія SMS",
+ "cellsyntSplitLongMessages": "Раздзеляць доўгія паведамленні на 6 частак. 153 x 6 = 918 сімвалаў.",
+ "max 15 digits": "макс. 15 лічбаў",
+ "max 11 alphanumeric characters": "максімум 11 літарна-лічбавых сімвалаў",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Увядзіце {Hostname} сервера, да якога вы хочаце падключыцца, або {localhost}, калі вы хочаце выкарыстоўваць {local_mta}",
+ "Saved.": "Захавана.",
+ "wayToWriteWhapiRecipient": "Нумар тэлефона з міжнародным прэфіксам, але без знака плюс у пачатку ({0}), ідэнтыфікатара кантакта ({1}) або ідэнтыфікатара групы ({2}).",
+ "gtxMessagingFromHint": "На мабільных тэлефонах атрымальнікі бачаць АІПП як адпраўшчыка паведамлення. Дапускаецца выкарыстаньне да 11 літарна-лічбавых сімвалаў, шорткода, мясцовага доўгага кода або міжнародных нумароў ({e164}, {e212} або {e214})",
+ "Send to channel": "Адправіць у канал",
+ "threadForumPostID": "Трэд / ID паста",
+ "whatHappensAtForumPost": "Стварыць новы пост на форуме. Гэта НЕ размяшчае паведамленні ў існуючым пасце. Для публікацыі ў існуючай публікацыі выкарыстоўвайце \"{option}\"",
+ "now": "зараз",
+ "-year": "-год"
+}
diff --git a/src/lang/bg-BG.json b/src/lang/bg-BG.json
index 03c2d66ea..63af43da0 100644
--- a/src/lang/bg-BG.json
+++ b/src/lang/bg-BG.json
@@ -77,7 +77,7 @@
"Save": "Запази",
"Notifications": "Известия",
"Not available, please setup.": "Не са налични. Моля, настройте.",
- "Setup Notification": "Настрой известие",
+ "Setup Notification": "Настройка на известие",
"Light": "Светла",
"Dark": "Тъмна",
"Auto": "Автоматично",
@@ -146,7 +146,7 @@
"Options": "Опции",
"Keep both": "Запази двете",
"Verify Token": "Провери токен код",
- "Setup 2FA": "Настройка 2FA",
+ "Setup 2FA": "Настройка на 2FA",
"Enable 2FA": "Активирай 2FA",
"Disable 2FA": "Деактивирай 2FA",
"2FA Settings": "Настройка за 2FA",
@@ -312,7 +312,6 @@
"PasswordsDoNotMatch": "Паролите не съвпадат.",
"Current User": "Текущ потребител",
"recent": "Скорошни",
- "shrinkDatabaseDescription": "Инициира \"VACUUM\" за \"SQLite\" база данни. Ако Вашата база данни е създадена след версия 1.10.0, \"AUTO_VACUUM\" функцията е активна и това действие не е нужно.",
"Done": "Готово",
"Info": "Информация",
"Security": "Сигурност",
@@ -403,7 +402,7 @@
"Retry": "Повтори",
"Topic": "Тема",
"WeCom Bot Key": "WeCom бот ключ",
- "Setup Proxy": "Настрой прокси",
+ "Setup Proxy": "Настройка на прокси",
"Proxy Protocol": "Прокси протокол",
"Proxy Server": "Прокси сървър",
"Proxy server has authentication": "Прокси сървърът е с удостоверяване",
@@ -802,7 +801,6 @@
"twilioApiKey": "API ключ (по избор)",
"Expected Value": "Очаквана стойност",
"Json Query": "Заявка тип JSON",
- "jsonQueryDescription": "Прави JSON заявка срещу отговора и проверява за очаквана стойност (Върнатата стойност ще бъде преобразувана в низ за сравнение). Разгледайте {0} за документация относно езика на заявката. Имате възможност да тествате {1}.",
"Badge Duration (in hours)": "Времетраене на баджа (в часове)",
"Badge Preview": "Преглед на баджа",
"Notify Channel": "Канал за известяване",
@@ -830,7 +828,7 @@
"noOrBadCertificate": "Няма/лош сертификат",
"Select": "Избери",
"selectedMonitorCount": "Избрано: {0}",
- "wayToGetFlashDutyKey": "Можете да отидете на страница 'Channel -> (Select a Channel) -> Integrations -> Add a new integration' и да добавите 'Custom Event', за да получите 'push' адрес и да копирате ключа за интегриране в адреса. За повече информация, моля посетете",
+ "wayToGetFlashDutyKey": "Можете да отидете на страница 'Channel -> (Select a Channel) -> Integrations -> Add a new integration' и да добавите 'UptimeKuma', за да получите 'push' адрес и да копирате ключа за интегриране в адреса. За повече информация, моля посетете",
"PushDeer Server": "PushDeer сървър",
"pushDeerServerDescription": "Оставете празно, за да използвате официалния сървър",
"Check/Uncheck": "Постави/Премахни отметка",
@@ -897,10 +895,10 @@
"DockerHostRequired": "Моля, задайте \"Docker\" хоста за този монитор.",
"Browser Screenshot": "Екранна снимка на браузър",
"remoteBrowserToggle": "По подразбиране Chromium работи в контейнера Uptime Kuma. Можете да използвате отдалечен браузър, като превключите този ключ.",
- "remoteBrowsersDescription": "Отдалечените браузъри са алтернатива на локалното стартиране на Chromium. Настройте с услуга като browserless.io или свържете с вашата собствена",
+ "remoteBrowsersDescription": "Отдалечените браузъри са алтернатива на локалното стартиране на Chromium. Настройте с услуга като \"browserless.io\" или свържете с Вашата собствена",
"Remove the expiry notification": "Премахни деня за известяване при изтичане",
"Add a new expiry notification day": "Добави нов ден за известяване при изтичане",
- "setup a new monitor group": "настройване на нова група от монитори",
+ "setup a new monitor group": "настройка на нова група от монитори",
"openModalTo": "отвори модален прозорец към {0}",
"Add a domain": "Добави домейн",
"Remove domain": "Премахни домейн '{0}'",
@@ -918,5 +916,207 @@
"ntfyPriorityHelptextAllEvents": "Всички събития се изпращат с максимален приоритет",
"settingUpDatabaseMSG": "Настройка на базата данни. Може да отнеме известно време, моля, бъдете търпеливи.",
"Search monitored sites": "Търсене на мониторирани сайтове",
- "What is a Remote Browser?": "Какво е отдалечен браузър?"
+ "What is a Remote Browser?": "Какво е отдалечен браузър?",
+ "Channel access token (Long-lived)": "Токен код за достъп до канал (дълготраен)",
+ "Your User ID": "Вашето потребителско ID",
+ "documentationOf": "{0} Документация",
+ "wayToGetHeiiOnCallDetails": "Как да получите Trigger ID и API ключове е обяснено в {documentation}",
+ "To Phone Number": "До телефонен номер",
+ "gtxMessagingToHint": "Международен формат, като първо въведете знака \"+\" ({e164}, {e212} or {e214})",
+ "gtxMessagingApiKeyHint": "Можете да намерите вашия API ключ в: My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "От телефонен номер / Изходен Адрес на Пътя на Предаване (ИАПП)",
+ "gtxMessagingFromHint": "На мобилни телефони, вашите получатели виждат ИАПП показан като подател на съобщението. Позволени са до 11 буквено-цифрови знака, кратък код, местен дълъг код или международни номера ({e164}, {e212} or {e214})",
+ "Alphanumeric (recommended)": "Буквено-цифров (препоръчително)",
+ "Telephone number": "Телефонен номер",
+ "Originator type": "Тип автор",
+ "Originator": "Автор",
+ "cellsyntOriginator": "Вижда се на мобилния телефон на получателя като автор на съобщението. Позволените стойности и функция зависят от параметъра - тип автор.",
+ "Destination": "Дестинация",
+ "Allow Long SMS": "Разреши дълъг SMS",
+ "cellsyntSplitLongMessages": "Раздели дългите съобщения до 6 части. 153 x 6 = 918 знака.",
+ "max 15 digits": "Максимум 15 цифри",
+ "max 11 alphanumeric characters": "Максимум 11 буквено-цифрови знака",
+ "cellsyntOriginatortypeAlphanumeric": "Буквено-цифров низ (максимум 11 буквено-цифрови знака). Получателите не могат да отговорят на съобщението.",
+ "cellsyntOriginatortypeNumeric": "Числова стойност (максимум 15 цифри) с телефонен номер в международен формат, без предхождащо въвеждане на 00 (примерен номер в България 088 123 45 67 трябва да бъде зададен като 359881234567). Получателите могат да отговорят на съобщението.",
+ "cellsyntDestination": "Телефонен номер на получателя в международен формат, предхождан от 00, последвано от код на държавата, напр. 00359881234567 за номер в България 088 123 45 67 (максимум 17 цифри). Максимум 25 000 получатели, разделени със запетая, на HTTP заявка.",
+ "callMeBotGet": "Тук можете да генерирате крайна точка за {0}, {1} и {2}. Имайте предвид, че може да получите ограничения в опитите. Ограниченията в опитите изглеждат: {3}",
+ "wayToGetWhapiUrlAndToken": "Можете да получите URL адреса на API и токена, като влезете в желания от вас канал от {0}",
+ "whapiRecipient": "Телефонен номер / ID на контакт / ID на група",
+ "API URL": "URL адрес на API",
+ "wayToWriteWhapiRecipient": "Телефонният номер с международния префикс, но без знака плюс в началото ({0}), ID на контакта ({1}) или ID на групата ({2}).",
+ "locally configured mail transfer agent": "локално конфигуриран \"mail transfer agent\"",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Или въведете името на хоста на сървъра, към който желаете да се свържете, или {localhost}, ако възнамерявате да използвате {local_mta}",
+ "Mentioning": "Споменаване",
+ "Don't mention people": "Не споменавай хора",
+ "Mention group": "Споменавай {group}",
+ "wayToGetSevenIOApiKey": "Посетете таблото за управление в app.seven.io > developer > api key > зеленият бутон за добавяне",
+ "receiverSevenIO": "Номер на получател",
+ "senderSevenIO": "Номер или име на подател",
+ "receiverInfoSevenIO": "Ако номерът на получателя не се намира в Германия, трябва да добавите кода на държавата пред номера (напр. за код на държавата 1 от САЩ използвайте 117612121212 вместо 017612121212)",
+ "apiKeySevenIO": "SevenIO API ключ",
+ "Host URL": "Хост URL адрес",
+ "Command": "Команда",
+ "mongodbCommandDescription": "Изпълни MongoDB команда срещу базата данни. За информация относно наличните команди, вижте {documentation}",
+ "Bitrix24 Webhook URL": "Bitrix24 Webhook URL адрес",
+ "wayToGetBitrix24Webhook": "Можете да създадете webhook, като следвате стъпките на {0}",
+ "bitrix24SupportUserID": "Въведете Вашето потребителско ID в Bitrix24. Можете да го намерите от връзката, като отидете в профила на потребителя.",
+ "Refresh Interval": "Интервал на опресняване",
+ "Refresh Interval Description": "Статус страницата ще извършва пълно опресняване на всеки {0} секунди",
+ "e.g. {discordThreadID}": "напр. {discordThreadID}",
+ "whatHappensAtForumPost": "Създава нова публикация във форума. Това НЕ публикува съобщения в съществуваща публикация. За да публикувате в съществуваща публикация, използвайте \"{option}\"",
+ "wayToGetDiscordThreadId": "Получаването на ID на тема/публикация във форум е подобно на получаването на ID на канал. Прочетете повече за това как да получите ID-та {0}",
+ "Select message type": "Изберете тип съобщение",
+ "Send to channel": "Изпрати до канал",
+ "ignoreTLSErrorGeneral": "Игнорирай TLS/SSL грешка зa връзка",
+ "Create new forum post": "Създай нова публикация във форум",
+ "postToExistingThread": "Публикувай в съществуваща тема/публикация във форум",
+ "forumPostName": "Име на публикацията във форума",
+ "threadForumPostID": "ID на публикация в темата/форум",
+ "smspartnerApiurl": "Можете да намерите вашия API ключ в таблото на {0}",
+ "smspartnerPhoneNumber": "Телефон номер(а)",
+ "smspartnerPhoneNumberHelptext": "Номерът задължително е в международен формат {0}, {1}. Отделните номера трябва да бъдат разделени посредством {2}",
+ "smspartnerSenderName": "Име на изпращащия на SMS",
+ "smspartnerSenderNameInfo": "Трябва да е между 3..=11 стандартни знака",
+ "wayToGetThreemaGateway": "Можете да се регистрирате за Threema Gateway {0}.",
+ "threemaRecipient": "Получател",
+ "threemaRecipientType": "Тип получател",
+ "threemaRecipientTypeIdentity": "Threema-ID",
+ "threemaRecipientTypePhone": "Телефонен номер",
+ "threemaRecipientTypeEmail": "Имейл адрес",
+ "threemaSenderIdentity": "Gateway-ID",
+ "threemaSenderIdentityFormat": "8 знака, обикновено започва с *",
+ "threemaApiAuthenticationSecret": "Gateway-ID Тайна фраза",
+ "threemaRecipientTypeIdentityFormat": "8 знака",
+ "threemaRecipientTypePhoneFormat": "E.164, без водещ +",
+ "threemaBasicModeInfo": "Забележка: Тази интеграция използва Threema Gateway в основен режим (сървърно базирано криптиране). Допълнителни подробности можете да намерите {0}.",
+ "apiKeysDisabledMsg": "API ключовете са деактивирани, защото удостоверяването е деактивирано.",
+ "jsonQueryDescription": "Анализира и извлича конкретни данни от JSON отговора на сървъра, използвайки JSON заявка или чрез \"$\" за необработения отговор, ако не очаква JSON. След това резултатът се сравнява с очакваната стойност като низове. Вижте {0} за документация и използвайте {1}, за да експериментирате със заявки.",
+ "starts with": "започва с",
+ "less than or equal to": "по-малко или равно на",
+ "now": "сега",
+ "time ago": "преди {0}",
+ "-year": "-година",
+ "Json Query Expression": "Json израз на заявка",
+ "and": "и",
+ "cacheBusterParam": "Добави параметъра {0}",
+ "cacheBusterParamDescription": "Произволно генериран параметър за пропускане на кешове.",
+ "Community String": "Общностен низ",
+ "snmpCommunityStringHelptext": "Този низ функционира като парола за удостоверяване и контрол на достъпа до устройства с активиран SNMP. Сравнете го с конфигурацията на вашето SNMP устройство.",
+ "OID (Object Identifier)": "OID (Идентификатор на обект)",
+ "snmpOIDHelptext": "Въведете OID за сензора или състоянието, които искате да мониторирате. Използвайте инструменти за управление на мрежата като MIB браузъри или SNMP софтуер, ако не сте сигурни за OID.",
+ "SNMP Version": "SNMP Версия",
+ "Please enter a valid OID.": "Моля, въведете валиден OID.",
+ "Host Onesender": "Onesender хост",
+ "Token Onesender": "Onesender токен",
+ "Recipient Type": "Тип получател",
+ "Private Number": "Частен номер",
+ "privateOnesenderDesc": "Уверете се, че телефонният номер е валиден. За да изпратите съобщение на личен телефонен номер, напр.: 628123456789",
+ "groupOnesenderDesc": "Уверете се, че GroupID е валиден. За да изпратите съобщение в група, напр.: 628123456789-342345",
+ "Group ID": "ID на групата",
+ "wayToGetOnesenderUrlandToken": "Можете да получите URL адреса и токена, като посетите уебсайта на Onesender. Повече информация {0}",
+ "Add Remote Browser": "Добави отдалечен браузър",
+ "New Group": "Нова група",
+ "Group Name": "Име на групата",
+ "OAuth2: Client Credentials": "OAuth2: Идентификационни данни на клиента",
+ "Condition": "Условие",
+ "Authentication Method": "Метод за удостоверяване",
+ "Authorization Header": "Хедър за оторизация",
+ "Form Data Body": "Тяло на формата за данни",
+ "OAuth Token URL": "URL адрес на OAuth токена",
+ "Client ID": "ID на клиента",
+ "Client Secret": "Тайна на клиента",
+ "OAuth Scope": "Обхват на OAuth",
+ "Optional: Space separated list of scopes": "По избор: разделен с интервал списък с обхвати",
+ "Go back to home page.": "Обратно към началната страница.",
+ "No tags found.": "Няма намерени етикети.",
+ "Lost connection to the socket server.": "Изгубена връзка със сокет сървъра.",
+ "Cannot connect to the socket server.": "Не може да се свърже със сокет сървъра.",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "SIGNL4 URL адрес на уеб кука",
+ "signl4Docs": "Повече информация относно конфигуриране на SIGNL4 и получаване на URL адрес за уеб кука SIGNL4 в {0}.",
+ "Conditions": "Условия",
+ "conditionAdd": "Добави условие",
+ "conditionDelete": "Изтрий условие",
+ "conditionAddGroup": "Добави група",
+ "conditionDeleteGroup": "Изтрий група",
+ "conditionValuePlaceholder": "Стойност",
+ "contains": "съдържа",
+ "equals": "равно на",
+ "not equals": "не е равно на",
+ "not contains": "не съдържа",
+ "not starts with": "не започва с",
+ "ends with": "завършва с",
+ "not ends with": "не завършва с",
+ "less than": "по-малко от",
+ "greater than": "по-голямо от",
+ "greater than or equal to": "по-голямо или равно на",
+ "record": "запис",
+ "CurlDebugInfo": "За да отстраните грешки в монитора, можете или да поставите това в терминала на Вашата машина, или в терминала на машината, на която работи \"Uptime Kuma\" и да видите заявката.{newiline}Моля, вземете под внимание мрежовите разлики като {firewalls}, {dns_resolvers} или {docker_networks}.",
+ "shrinkDatabaseDescriptionSqlite": "Инициира {vacuum} за база данни тип SQLite. Функцията {auto_vacuum} вече е активирана, но това не дефрагментира базата данни, нито препакетира отделните страници на базата данни по начина, по който го прави командата {vacuum}.",
+ "ignoredTLSError": "TLS/SSL грешките са игнорирани",
+ "Debug": "Отстраняване на грешки",
+ "Copy": "Копирай",
+ "CopyToClipboardError": "Неуспешно копиране в клипборда: {error}",
+ "CopyToClipboardSuccess": "Копирано!",
+ "firewalls": "защитни стени",
+ "dns resolvers": "DNS преобразуватели",
+ "docker networks": "docker мрежи",
+ "CurlDebugInfoOAuth2CCUnsupported": "Пълният oauth клиентски идентификационен поток не се поддържа в {curl}.{newline}Моля, вземете токен на носител и го предайте чрез опцията {oauth2_bearer}.",
+ "CurlDebugInfoProxiesUnsupported": "Поддръжката на прокси в горната команда {curl} в момента не е внедрена.",
+ "Message format": "Формат на съобщението",
+ "Send rich messages": "Изпращай съобщения в \"rich\" формат",
+ "Sound": "Звук",
+ "Notification Channel": "Канал за известяване",
+ "Alphanumerical string and hyphens only": "Само буквено-цифров низ и тирета",
+ "Arcade": "Arcade",
+ "Correct": "Правилно",
+ "Fail": "Грешка",
+ "Harp": "Арфа",
+ "Reveal": "Разкрий",
+ "Bubble": "Балон",
+ "Doorbell": "Звънец на врата",
+ "Flute": "Флейта",
+ "Money": "Пари",
+ "Scifi": "Nаучна фантастика",
+ "Clear": "Премахни",
+ "Elevator": "Асансьор",
+ "Guitar": "Китара",
+ "Pop": "Поп",
+ "Custom sound to override default notification sound": "Персонализиран звук, заменящ звука за известяване по подразбиране",
+ "Time Sensitive (iOS Only)": "Зависещи от часа (само за iOS)",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "Известията от типа \"Зависещи от часа\" ще бъдат доставени незабавно, дори ако устройството е в режим „Не безпокойте“.",
+ "From": "От",
+ "Can be found on:": "Можте да се откриете на: {0}",
+ "The phone number of the recipient in E.164 format.": "Телефонният номер на получателя във формат E.164.",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "Идентификационен номер на подателя на текста или телефонен номер във формат E.164, в случай, че желаете да получавате отговори.",
+ "rabbitmqNodesRequired": "Моля, задайте възлите за този монитор.",
+ "rabbitmqNodesInvalid": "Моля, използвайте пълния URL адрес (започващ с 'http') за RabbitMQ възли.",
+ "RabbitMQ Password": "RabbitMQ парола",
+ "RabbitMQ Username": "RabbitMQ потребител",
+ "SendGrid API Key": "SendGrid API ключ",
+ "Separate multiple email addresses with commas": "Разделяйте отделните имейл адреси със запетаи",
+ "RabbitMQ Nodes": "Възли за управление на RabbitMQ",
+ "rabbitmqNodesDescription": "Въведете URL адреса на възлите за управление на RabbitMQ, включително протокол и порт. Пример: {0}",
+ "rabbitmqHelpText": "За да използвате монитора, ще трябва да активирате добавката за управление във вашата настройка на RabbitMQ. За повече информация моля, вижте {rabitmq_documentation}.",
+ "aboutSlackUsername": "Променя показваното име на подателя на съобщението. Ако желаете да споменете някого, вместо това го включете в приятелското име.",
+ "YZJ Robot Token": "YZJ Robot токен код",
+ "YZJ Webhook URL": "YZJ Уеб кука URL адрес",
+ "templateServiceName": "име на услугата",
+ "templateHostnameOrURL": "име на хоста или URL адрес",
+ "Plain Text": "Обикновен текст",
+ "Message Template": "Шаблон за съобщение",
+ "templateStatus": "статус",
+ "telegramUseTemplate": "Използвай персонализиран шаблон за съобщение",
+ "telegramUseTemplateDescription": "Ако е активирано, съобщението ще бъде изпратено чрез персонализиран шаблон.",
+ "telegramTemplateFormatDescription": "Telegram позволява използването на различни \"markup\" езици за съобщенията. Вижте Telegram {0} за детайли.",
+ "Template Format": "Формат на шаблона",
+ "wayToGetWahaApiUrl": "Вашият WAHA URL адрес.",
+ "wahaSession": "Сесия",
+ "wahaChatId": "Чат ID (телефонен номер / ID на контакт / ID на група)",
+ "wayToGetWahaApiKey": "API ключът, е стойността на променливата WHATSAPP_API_KEY, която сте използвали за стартиране на WAHA.",
+ "wayToWriteWahaChatId": "Телефонният номер с международния префикс, но без знака плюс в началото ({0}), ID на контакта ({1}) или ID на групата ({2}). Известията се изпращат до това чат ID от WAHA сесия.",
+ "wayToGetWahaSession": "От тази сесия WAHA изпраща известия до чат ID. Можете да го намерите в таблото за управление на WAHA.",
+ "telegramServerUrlDescription": "За премахване на API бот ограниченията за Telegram или за получаване на достъп в блокирани зони (Китай, Иран и др.). За повече информация щракнете върху {0}. По подразбиране: {1}",
+ "telegramServerUrl": "(По избор) URL адрес на сървъра",
+ "Font Twemoji by Twitter licensed under": "Шрифт Twemoji от Twitter, лицензиран под"
}
diff --git a/src/lang/bn.json b/src/lang/bn.json
index 0967ef424..22e360731 100644
--- a/src/lang/bn.json
+++ b/src/lang/bn.json
@@ -1 +1,229 @@
-{}
+{
+ "setupDatabaseChooseDatabase": "আপনি কোন ডাটাবেজটি ব্যবহার করতে চান?",
+ "setupDatabaseEmbeddedMariaDB": "আপনাকে কিছু সেটআপ করার প্রয়োজন নেই। এই ডকার ইমেজে স্বয়ংক্রিয়ভাবে MariaDB এম্বেড এবং কনফিগার করা হয়েছে। Uptime Kuma এই ডাটাবেজের সাথে ইউনিক্স সকেটের মাধ্যমে সংযুক্ত হবে।",
+ "setupDatabaseMariaDB": "বহিরাগত MariaDB ডাটাবেজের সাথে সংযোগ করতে হবে। আপনাকে ডাটাবেজের সংযোগ তথ্য সেট করতে হবে।",
+ "Add": "সংযোগ করুন",
+ "dbName": "ডাটাবেজের নাম",
+ "languageName": "বাংলা",
+ "Settings": "সেটিংস",
+ "Dashboard": "ড্যাশবোর্ড",
+ "Help": "সাহায্য",
+ "New Update": "নতুন আপডেট",
+ "Language": "ভাষা",
+ "Version": "সংস্করণ",
+ "Check Update On GitHub": "GitHub-এ আপডেট চেক করুন",
+ "List": "তালিকা",
+ "General": "সাধারণ",
+ "Game": "খেলা",
+ "disable authentication": "প্রমাণীকরণ বন্ধ করুন",
+ "pauseDashboardHome": "থামুন",
+ "disableauth.message2": "এটি Uptime Kuma এর সামনে {intendThirdPartyAuth} এর মতো পরিস্থিতির জন্য ডিজাইন করা হয়েছে, যেমন Cloudflare Access, Authelia অথবা অন্যান্য প্রমাণীকরণ ব্যবস্থা।",
+ "I understand, please disable": "আমি বুঝতে পারছি, দয়া করে অক্ষম করুন",
+ "Certificate Info": "সার্টিফিকেট তথ্য",
+ "Create your admin account": "আপনার অ্যাডমিন অ্যাকাউন্ট তৈরি করুন",
+ "Import": "ইমপোর্ট",
+ "Default enabled": "ডিফল্ট সক্রিয়",
+ "Heartbeats": "হার্টবিট",
+ "Affected Monitors": "প্রভাবিত মনিটরগুলো",
+ "All Status Pages": "সমস্ত স্ট্যাটাস পেজ",
+ "alertNoFile": "অনুগ্রহ করে আমদানির জন্য একটি ফাইল নির্বাচন করুন।",
+ "alertWrongFileType": "অনুগ্রহ করে একটি JSON ফাইল নির্বাচন করুন।",
+ "Clear all statistics": "সব পরিসংখ্যান মুছে ফেলুন",
+ "Setup 2FA": "2FA সেট আপ করুন",
+ "Two Factor Authentication": "দুই ফ্যাক্টর প্রমাণীকরণ",
+ "Add New Tag": "নতুন ট্যাগ যোগ করুন",
+ "Tag with this name already exist.": "এই নামের ট্যাগ আগে থেকেই আছে।",
+ "Pink": "গোলাপী",
+ "Search monitored sites": "পর্যবেক্ষণ করা সাইট অনুসন্ধান",
+ "statusPageNothing": "এখানে কিছুই নেই, অনুগ্রহ করে একটি গ্রুপ বা মনিটর যোগ করুন।",
+ "Degraded Service": "অধঃপতন সেবা",
+ "Go to Dashboard": "ড্যাশবোর্ডে যান",
+ "defaultNotificationName": "আমার {বিজ্ঞপ্তি} সতর্কতা ({number})",
+ "webhookJsonDesc": "{0} যেকোনো আধুনিক HTTP সার্ভার যেমন Express.js-এর জন্য ভালো",
+ "liquidIntroduction": "টেম্পলেটবিলিটি লিকুইড টেমপ্লেটিং ভাষার মাধ্যমে অর্জন করা হয়। ব্যবহারের নির্দেশাবলীর জন্য অনুগ্রহ করে {0} দেখুন। এই উপলব্ধ ভেরিয়েবল হল:",
+ "Notifications": "নোটিফিকেশন",
+ "Setup Notification": "নোটিফিকেশন সেটআপ করুন",
+ "Light": "আলো",
+ "Auto": "স্বয়ংক্রিয়",
+ "Theme - Heartbeat Bar": "থিম - হার্টবিট বার",
+ "styleElapsedTime": "হার্টবিট বারের নিচে ব্যবহৃত সময়",
+ "styleElapsedTimeShowNoLine": "শোর করুন (কোনো লাইন নেই)",
+ "styleElapsedTimeShowWithLine": "শো করুন (লাইন সহ)",
+ "Normal": "স্বাভাবিক",
+ "Bottom": "নীচে",
+ "Timezone": "টাইমজোন",
+ "Search Engine Visibility": "সার্চ ইঞ্জিন দৃশ্যমানতা",
+ "Allow indexing": "ইন্ডেক্সিং অনুমোদন করুন",
+ "Discourage search engines from indexing site": "সার্চ ইঞ্জিনগুলোকে সাইটের ইন্ডেক্সিং থেকে বিরত রাখুন",
+ "Change Password": "পাসওয়ার্ড পরিবর্তন করুন",
+ "Current Password": "বর্তমান পাসওয়ার্ড",
+ "New Password": "নতুন পাসওয়ার্ড",
+ "Repeat New Password": "নতুন পাসওয়ার্ডটি আবার দিন",
+ "Update Password": "পাসওয়ার্ড আপডেট করুন",
+ "Enable Auth": "প্রমাণীকরণ চালু করুন",
+ "disableauth.message1": "আপনি কি সত্যিই {disableAuth} করতে চান?",
+ "where you intend to implement third-party authentication": "যেখানে আপনি তৃতীয় পক্ষের প্রমাণীকরণ বাস্তবায়ন করতে চান",
+ "Please use this option carefully!": "দয়া করে এই অপশনটি সাবধানে ব্যবহার করুন!",
+ "Logout": "লগ আউট",
+ "Leave": "লিভ",
+ "Confirm": "নিশ্চিত",
+ "Yes": "হ্যাঁ",
+ "No": "না",
+ "Username": "ইউজার নেম",
+ "Password": "পাসওয়ার্ড",
+ "Remember me": "আমাকে মনে রাখুন",
+ "Login": "লগ ইন",
+ "add one": "একটি যোগ করুন",
+ "Notification Type": "নোটিফিকেশনের ধরন",
+ "Email": "ইমেইল",
+ "Test": "পরীক্ষা",
+ "Resolver Server": "সমাধানকারী সার্ভার",
+ "Resource Record Type": "রিসোর্স রেকর্ড টাইপ",
+ "Last Result": "শেষ ফলাফল",
+ "Repeat Password": "পাসওয়ার্ড পুনরায় দিন",
+ "Import Backup": "ইমপোর্ট ব্যাকআপ",
+ "Export Backup": "এক্সপোর্ট ব্যাকআপ",
+ "Export": "এক্সপোর্ট",
+ "respTime": "প্রতিক্রিয়া সময় (ms)",
+ "notAvailableShort": "প্রযোজ্য নয়",
+ "Apply on all existing monitors": "সমস্ত বিদ্যমান মনিটরে প্রয়োগ করুন",
+ "Create": "তৈরি",
+ "Clear Data": "ডেটা সাফ",
+ "Events": "ইভেন্ট সমূহ",
+ "Auto Get": "অটো গ্রহণ",
+ "Schedule maintenance": "রক্ষণাবেক্ষণ সূচী করুন",
+ "Pick Affected Monitors...": "প্রভাবিত মনিটর নির্বাচন করুন…",
+ "Start of maintenance": "রক্ষণাবেক্ষণের শুরু",
+ "Select status pages...": "স্ট্যাটাস পেজগুলো নির্বাচন করুন…",
+ "Skip existing": "বিদ্যমান এড়িয়ে যান",
+ "Overwrite": "ওভাররাইট",
+ "Options": "অপশন",
+ "Keep both": "দুটোই রাখুন",
+ "Verify Token": "টোকেন যাচাই করুন",
+ "Enable 2FA": "2FA সক্ষম করুন",
+ "Disable 2FA": "2FA নিষ্ক্রিয় করুন",
+ "2FA Settings": "2FA সেটিংস",
+ "filterActive": "সক্রিয়",
+ "filterActivePaused": "বিরতি",
+ "Active": "সক্রিয়",
+ "Inactive": "নিষ্ক্রিয়",
+ "Token": "টোকেন",
+ "Show URI": "URI দেখান",
+ "Tags": "ট্যাগ",
+ "Add New below or Select...": "নীচে নতুন যোগ করুন বা নির্বাচন করুন…",
+ "Tag with this value already exist.": "এই মান সহ ট্যাগ ইতিমধ্যেই বিদ্যমান।",
+ "color": "রং",
+ "value (optional)": "মান (ঐচ্ছিক)",
+ "Red": "লাল",
+ "Orange": "কমলা",
+ "Green": "সবুজ",
+ "Blue": "নীল",
+ "Indigo": "নীল",
+ "Purple": "বেগুনি",
+ "Custom": "কাস্টম",
+ "Search...": "অনুসন্ধান…",
+ "Avg. Ping": "গড় পিং",
+ "Avg. Response": "গড় প্রতিক্রিয়া",
+ "Entry Page": "প্রবেশ পৃষ্ঠা",
+ "statusPageRefreshIn": "রিফ্রেশ হবে: {0}",
+ "No Services": "কোনো পরিষেবা নেই",
+ "All Systems Operational": "সমস্ত সিস্টেম অপারেশনাল",
+ "Partially Degraded Service": "আংশিকভাবে অবনমিত পরিষেবা",
+ "Add Group": "গ্রুপ যোগ করুন",
+ "Add a monitor": "একটি মনিটর যোগ করুন",
+ "Edit Status Page": "এডিট স্টেটাস পেজ",
+ "Status Page": "স্ট্যাটাস পেজ",
+ "Status Pages": "স্ট্যাটাস পেজ সমূহ",
+ "here": "এখানে",
+ "Required": "প্রয়োজন",
+ "Post URL": "পোস্ট URL",
+ "Content Type": "বিষয়বস্তুর প্রকার",
+ "webhookFormDataDesc": "{multipart} PHP এর জন্য ভালো। JSON-কে {decodeFunction} দিয়ে পার্স করতে হবে",
+ "templateMsg": "বিজ্ঞপ্তির বার্তা",
+ "templateHeartbeatJSON": "হৃদস্পন্দন বর্ণনাকারী বস্তু",
+ "templateMonitorJSON": "মনিটরের বর্ণনাকারী বস্তু",
+ "templateLimitedToUpDownNotifications": "শুধুমাত্র UP/DOWN বিজ্ঞপ্তির জন্য উপলব্ধ",
+ "Gray": "ধূসর",
+ "Add New Monitor": "নতুন আপটাইম মনিটর যোগ করুন",
+ "statusMaintenance": "রক্ষণাবেক্ষণ",
+ "Friendly Name": "বন্ধুত্বপূর্ণ নাম",
+ "URL": "ইউআরএল",
+ "settingUpDatabaseMSG": "ডাটাবেস সেটআপ করা হচ্ছে। এটি কিছুটা সময় নিতে পারে, অনুগ্রহ করে ধৈর্য ধরুন।",
+ "Response": "রেসপন্স",
+ "Ping": "পিং",
+ "Keyword": "কীওয়ার্ড",
+ "Invert Keyword": "ইনভার্ট কীওয়ার্ড",
+ "setupDatabaseSQLite": "একটি সাধারণ ডাটাবেস ফাইল, যা ছোট পরিসরের ডিপ্লয়মেন্টের জন্য সুপারিশ করা হয়। v2.0.0 এর পূর্বে, Uptime Kuma ডিফল্ট ডাটাবেস হিসেবে SQLite ব্যবহার করত।",
+ "Unknown": "অজানা",
+ "Cannot connect to the socket server": "সকেট সার্ভারের সাথে সংযোগ স্থাপন করা যাচ্ছে না",
+ "Reconnecting...": "পুনরায় সংযোগ স্থাপন করা হচ্ছে...",
+ "Passive Monitor Type": "নিষ্ক্রিয় মনিটরের ধরন",
+ "markdownSupported": "মার্কডাউন সিনট্যাক্স সাপোর্ট",
+ "Pause": "থামুন",
+ "-day": "-দিন",
+ "hour": "ঘন্টা",
+ "Host URL": "হোস্ট ইউআরএল",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "আপনি যে সার্ভারে সংযোগ করতে চান তার হোস্টনেম প্রবেশ করুন অথবা যদি আপনি একটি {local_mta} ব্যবহার করার পরিকল্পনা করেন, তাহলে {localhost} লিখুন",
+ "ignoreTLSErrorGeneral": "সংযোগের জন্য TLS/SSL ত্রুটি উপেক্ষা করুন",
+ "Upside Down Mode": "আপসাইড ডাউন মোড",
+ "Pending": "প্রক্রিয়াধীন",
+ "Push URL": "পুশ URL",
+ "needPushEvery": "আপনাকে এই URL টি প্রতি {0} সেকেন্ডে কল করতে হবে।",
+ "Dark": "অন্ধকার",
+ "Up": "আপ",
+ "webhookAdditionalHeadersTitle": "অতিরিক্ত শিরোনাম",
+ "pushOthers": "অন্যান্য",
+ "programmingLanguages": "প্রোগ্রামিং ভাষাসমূহ",
+ "Not available, please setup.": "উপলব্ধ নয়, অনুগ্রহ করে সেটআপ করুন।",
+ "Down": "ডাউন",
+ "Monitor Type": "মনিটরের ধরন",
+ "Expected Value": "প্রত্যাশিত মান",
+ "Home": "হোম",
+ "Maintenance": "রক্ষণাবেক্ষণ",
+ "General Monitor Type": "সাধারণ মনিটরের ধরন",
+ "Specific Monitor Type": "নির্দিষ্ট মনিটরের ধরন",
+ "Monitor": "মনিটর | মনিটরগুলো",
+ "day": "দিন | দিনগুলো",
+ "-hour": "-ঘন্টা",
+ "Hostname": "হোস্টনেম",
+ "locally configured mail transfer agent": "লোকালি কনফিগারড মেইল ট্রান্সফার এজেন্ট",
+ "Port": "পোর্ট",
+ "Heartbeat Interval": "হার্টবিট ইন্টারভাল",
+ "Max. Redirects": "সর্বোচ্চ রিডাইরেক্ট",
+ "Primary Base URL": "প্রাথমিক বেস URL",
+ "Message": "বার্তা",
+ "Resume": "পুনরায় শুরু",
+ "Delete": "মুছে ফেলুন",
+ "now": "এখন",
+ "time ago": "{০} বয়স",
+ "-year": "-বছর",
+ "Json Query Expression": "JSON কোয়েরি এক্সপ্রেশন",
+ "timeoutAfter": "{0} সেকেন্ড পর টাইমআউট",
+ "Retries": "পুনরায় চেষ্টা করে",
+ "checkEverySecond": "প্রতিটি {0} সেকেন্ডে চেক করুন",
+ "retryCheckEverySecond": "প্রতিটি {0} সেকেন্ডে পুনরায় চেষ্টা করুন",
+ "resendEveryXTimes": "প্রতিটি {0} বার পুনরায় পাঠান",
+ "pushOptionalParams": "ঐচ্ছিক প্যারামিটারসমূহ: {0}",
+ "Save": "সংরক্ষণ",
+ "ignoredTLSError": "TLS/SSL ত্রুটিগুলি উপেক্ষা করা হয়েছে",
+ "Accepted Status Codes": "গ্রহণযোগ্য স্ট্যাটাস কোডসমূহ",
+ "Disable Auth": "প্রমাণীকরণ বন্ধ করুন",
+ "Theme": "থিম",
+ "Name": "নাম",
+ "Status": "অবস্থা",
+ "DateTime": "তারিখ ও সময়",
+ "No important events": "কোনো গুরুত্বপূর্ণ ইভেন্ট নেই",
+ "Edit": "সম্পাদনা",
+ "Current": "বর্তমান",
+ "Uptime": "আপটাইম",
+ "Request Timeout": "রিকোয়েস্ট টাইমআউট",
+ "Heartbeat Retry Interval": "হার্টবিট রিট্রাই ইন্টারভাল",
+ "Advanced": "অ্যাডভান্স",
+ "retriesDescription": "সার্ভিসটি ডাউন হিসেবে চিহ্নিত হওয়ার আগে এবং একটি নোটিফিকেশন পাঠানোর জন্য সর্বোচ্চ পুনরায় চেষ্টা করার সংখ্যা",
+ "upsideDownModeDescription": "স্ট্যাটাসটি উল্টো করে দিন। যদি সার্ভিসটি পৌঁছানো যায়, তবে এটি DOWN হবে।",
+ "maxRedirectDescription": "অনুসরণ করার জন্য সর্বোচ্চ রিডাইরেক্ট সংখ্যা। রিডাইরেক্ট নিষ্ক্রিয় করতে 0 সেট করুন।",
+ "ignoreTLSError": "HTTPS ওয়েবসাইটগুলির জন্য TLS/SSL ত্রুটিগুলি উপেক্ষা করুন",
+ "pushViewCode": "পুশ মনিটর কীভাবে ব্যবহার করবেন? (কোড দেখুন)",
+ "Appearance": "দেখানোর ধরন",
+ "Quick Stats": "তাৎক্ষণিক পরিসংখ্যান"
+}
diff --git a/src/lang/ca.json b/src/lang/ca.json
index 98a41bbc4..39d6bc77c 100644
--- a/src/lang/ca.json
+++ b/src/lang/ca.json
@@ -25,11 +25,549 @@
"languageName": "Català",
"Primary Base URL": "URL Base Primària",
"statusMaintenance": "Manteniment",
- "setupDatabaseChooseDatabase": "Quina base de dadas vols utilitzar?",
+ "setupDatabaseChooseDatabase": "Quina base de dades vols utilitzar?",
"setupDatabaseEmbeddedMariaDB": "No tens que configurar res. Aquesta imatge de docker ha configurat MariaDB automàticament. Uptime Kuma es conectarà a aquesta base de dades per el socket d'unix.",
"setupDatabaseMariaDB": "Conectar a una base de MariaDB externa. Has de ficar les dades de la conexió de la base de dades.",
"setupDatabaseSQLite": "Un simple fitxer de base de dades, es recomana per desplegaments en petita escala. Abans de la v2.0.0, Uptime Kuma utilitzaba SQLite com la base de dades predeterminada.",
"sameAsServerTimezone": "La mateixa zona horaria que el servidor",
"settingUpDatabaseMSG": "Configuració de la base de dades. Pot trigar una estona, si us plau, tingueu paciència.",
- "dbName": "Nom de la base de dades"
+ "dbName": "Nom de la base de dades",
+ "Passive Monitor Type": "Tipus passiu de monitor",
+ "pauseDashboardHome": "Pausa",
+ "Pause": "Pausa",
+ "Name": "Nom",
+ "Status": "Estat",
+ "DateTime": "DataHora",
+ "Message": "Missatge",
+ "General Monitor Type": "Tipus general de monitor",
+ "Specific Monitor Type": "Tipus específic de monitor",
+ "Heartbeat Interval": "Interval de \"heartbeat\"",
+ "Request Timeout": "'Timeout' per petició",
+ "No important events": "Esdeveniments sense importància",
+ "Resume": "Resum",
+ "Edit": "Editar",
+ "Delete": "Eliminar",
+ "Current": "Actual",
+ "Uptime": "Temps actiu",
+ "Cert Exp.": "Caducitat del certificat.",
+ "Monitor": "Monitor | Monitors",
+ "day": "dia | dies",
+ "-day": "-dia",
+ "hour": "hora",
+ "-hour": "-hora",
+ "Response": "Resposta",
+ "Ping": "Ping",
+ "Monitor Type": "Tipus de monitor",
+ "Keyword": "Paraula clau",
+ "Invert Keyword": "Invertir paraula clau",
+ "Expected Value": "Valor esperat",
+ "Json Query": "Cerca Json",
+ "URL": "URL",
+ "Hostname": "Nom del servidor",
+ "Port": "Port",
+ "timeoutAfter": "¡Timeout' després de {0} segons",
+ "locally configured mail transfer agent": "Agent de transferència de correu configurat localment",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Introduïu el nom del servidor al qual voleu connectar-vos o {localhost} si voleu utilitzar un {local_mta}",
+ "Host URL": "URL del servidor",
+ "Friendly Name": "Nom senzill",
+ "markdownSupported": "Sintaxi de Markdown suportada",
+ "Retries": "Reintents",
+ "Advanced": "Avançat",
+ "ignoreTLSErrorGeneral": "Ignora errors TLS/SSL per connexió",
+ "maxRedirectDescription": "Nombre màxim de redireccions a seguir. Establiu a 0 per a desactivar les redireccions.",
+ "Upside Down Mode": "Mode al revés",
+ "Max. Redirects": "Redireccions Màx",
+ "Accepted Status Codes": "Codis d'Estat Acceptats",
+ "needPushEvery": "Hauries de cridar a aquesta URL cada {0} segons.",
+ "Heartbeat Retry Interval": "Reintent de l'interval de \"heartbeat\"",
+ "Resend Notification if Down X times consecutively": "Reenvia notificacions si Down X vegades consecutives",
+ "resendEveryXTimes": "Reenvia cada {0} vegades",
+ "retryCheckEverySecond": "Reintenta cada {0} segons",
+ "checkEverySecond": "Comprova cada {0} segons",
+ "resendDisabled": "Reenvia deshabilitat",
+ "retriesDescription": "Màxim d'intents abans de que el servei sigui marcat com a caigut i la notificació sigui enviada",
+ "ignoreTLSError": "Ignora errors de TLS/SSL per a pàgines web HTTPS",
+ "upsideDownModeDescription": "Canvia l'estat al revés. Si el servei és accessible, està CAIGUT.",
+ "Setup Notification": "Configurar Notificació",
+ "Allow indexing": "Permetre indexat",
+ "Discourage search engines from indexing site": "Desencoratjar als motors de cerca que indexin la pàgina",
+ "Current Password": "Contrasenya actual",
+ "Please use this option carefully!": "Per favor, empra aquesta opció amb cura !",
+ "disable authentication": "deshabilita autenticació",
+ "Partially Degraded Service": "Servei Parcialment Degradat",
+ "Degraded Service": "Servei Degradat",
+ "Add Group": "Afegir Grup",
+ "Add a monitor": "Afegir monitor",
+ "pushViewCode": "Com emprar el monitor de Push? (Veure Codi)",
+ "Notifications": "Notificacions",
+ "pushOthers": "Altres",
+ "programmingLanguages": "Llenguatges de programació",
+ "Dark": "Fosc",
+ "Remember me": "Recordar-me",
+ "Login": "Iniciar sessió",
+ "No Monitors, please": "Sense Monitors, per favor",
+ "notAvailableShort": "N/A",
+ "Two Factor Authentication": "Segon Factor d'Autenticació",
+ "Custom": "Personalitzat",
+ "Search...": "Cercar…",
+ "Search monitored sites": "Cercar llocs monitoritzats",
+ "Avg. Response": "Resp. Promig",
+ "Add New below or Select...": "Afegir nova o Seleccionar…",
+ "Tag with this name already exist.": "Aquesta etiqueta ja existeix.",
+ "color": "Color",
+ "Gray": "Gris",
+ "value (optional)": "valor (opcional)",
+ "Active": "Actiu",
+ "Push URL": "URL push",
+ "pushOptionalParams": "Paràmetres opcionals: {0}",
+ "Save": "Desa",
+ "Not available, please setup.": "No disponible, per favor configura-ho.",
+ "Light": "Clar",
+ "Auto": "Auto",
+ "Theme - Heartbeat Bar": "Tema - Heartbet Bar",
+ "styleElapsedTime": "Temps transcorregut a la barra",
+ "styleElapsedTimeShowNoLine": "Mostrar (Fora Línia)",
+ "styleElapsedTimeShowWithLine": "Mostrar (Amb línia)",
+ "Normal": "Normal",
+ "Bottom": "Inferior",
+ "None": "Cap",
+ "Timezone": "Zona Horària",
+ "Search Engine Visibility": "Visibilitat motor de cerca",
+ "Change Password": "Canviar contrasenya",
+ "New Password": "Nova Contrasenya",
+ "Repeat New Password": "Repeteix Nova Contrasenya",
+ "Update Password": "Actualitzar Contrasenya",
+ "Disable Auth": "Deshabilita autenticació",
+ "Enable Auth": "Habilita Autenticació",
+ "disableauth.message1": "Estau segur que voleu {disableAuth}?",
+ "disableauth.message2": "Està dissenyat per a escenaris {intendThirdPartyAuth} davant Uptime Kuma, com ara Cloudflare Access, Authelia o altres mecanismes d'autenticació.",
+ "where you intend to implement third-party authentication": "on es vol implementar l'autenticació de tercers",
+ "Logout": "Tancar sessió",
+ "Leave": "Marxar",
+ "I understand, please disable": "Ho entenc, per favor deshabilita-ho",
+ "Confirm": "Confirma",
+ "Yes": "Si",
+ "No": "No",
+ "Username": "Nom d'usuari",
+ "Password": "Contrasenya",
+ "add one": "afegir un",
+ "Notification Type": "Tipus de notificació",
+ "Test": "Test",
+ "Certificate Info": "Informació del certificat",
+ "Resolver Server": "Servidor DNS",
+ "Resource Record Type": "Tipus de registre",
+ "Create your admin account": "Crear compte d'administració",
+ "Repeat Password": "Repeteix Contrasenya",
+ "Export Backup": "Exportar Còpia",
+ "Import Backup": "Importar Còpia",
+ "Export": "Exporta",
+ "Import": "Importa",
+ "respTime": "Temps Resp. (ms)",
+ "Default enabled": "Habilitat per defecte",
+ "Apply on all existing monitors": "Aplicar a tots els monitors existents",
+ "Create": "Crear",
+ "Clear Data": "Esborra dades",
+ "Events": "Events",
+ "Heartbeats": "Heartbeat",
+ "Auto Get": "Obtenir automàticament",
+ "Schedule maintenance": "Programar manteniment",
+ "Affected Monitors": "Monitors Afectats",
+ "Pick Affected Monitors...": "Seleccionar Monitors Afectats…",
+ "Start of maintenance": "Inici del manteniment",
+ "All Status Pages": "Totes les pàgines d'estat",
+ "Select status pages...": "Selecciona pàgines d'estat…",
+ "alertNoFile": "Per favor, selecciona fitxer a importar.",
+ "alertWrongFileType": "Selecciona un fitxer JSON.",
+ "Clear all statistics": "Esborra totes les Estadístiques",
+ "Skip existing": "Ometre existent",
+ "Overwrite": "Sobreescriu",
+ "Options": "Opcions",
+ "Keep both": "Manté ambdos",
+ "Verify Token": "Verificar token",
+ "Setup 2FA": "Configurar 2FA",
+ "Enable 2FA": "Habilitar 2FA",
+ "Disable 2FA": "Deshabilitar 2FA",
+ "2FA Settings": "Ajustaments 2FA",
+ "filterActive": "Actiu",
+ "filterActivePaused": "Pausat",
+ "Inactive": "Inactiu",
+ "Token": "Token",
+ "Show URI": "Mostrar URI",
+ "Tags": "Etiquetes",
+ "Red": "Vermell",
+ "Orange": "Taronja",
+ "Green": "Verd",
+ "Blue": "Blau",
+ "Indigo": "Morat",
+ "Purple": "Porpra",
+ "Pink": "Rosa",
+ "Avg. Ping": "Ping promig",
+ "Entry Page": "Pàgina d'entrada",
+ "statusPageNothing": "Res per aquí, per favor afegeix un grup o un monitor.",
+ "statusPageRefreshIn": "Refrescat en: {0]",
+ "No Services": "Sense Servei",
+ "All Systems Operational": "Tots els sistemes operatius",
+ "Edit Status Page": "Editar pàgina Estat",
+ "Go to Dashboard": "Anar al Panell",
+ "Status Page": "Pàgina d'Estat",
+ "Email": "Correu",
+ "Last Result": "Darrer Resultat",
+ "Add New Tag": "Afegir nova etiqueta",
+ "Tag with this value already exist.": "Ja existeix una etiqueta amb aquest valor.",
+ "defaultNotificationName": "La meva {notification} Alerta ({number})",
+ "Required": "Obligatori",
+ "Post URL": "Posar URL",
+ "Content Type": "Content Type",
+ "Json Query Expression": "Expressió de consulta Json",
+ "now": "ara",
+ "-year": "-any",
+ "Status Pages": "Pàgines d'estat",
+ "here": "aquí",
+ "time ago": "fa {0}",
+ "ignoredTLSError": "Errors TLS/SSL ignorats",
+ "webhookFormDataDesc": "{multipart} es bo per PHP. El JSON haurà d'analitzar-se amb {decodeFunction}",
+ "webhookJsonDesc": "{0} es bo per qualsevol servidor HTTP modern com Express.js",
+ "templateMsg": "missatge de la notificació",
+ "webhookAdditionalHeadersTitle": "Capçaleres addicionals",
+ "Application Token": "Testimoni d'aplicació",
+ "Server URL": "URL del servidor",
+ "Priority": "Prioritat",
+ "Webhook URL": "URL del Webhook",
+ "emojiCheatSheet": "Full de trampa d'emoji: {0}",
+ "Read more": "Llegeix més",
+ "appriseInstalled": "S'ha instal·lat l'apèndix.",
+ "templateHeartbeatJSON": "objecte que descriu el batec del cor",
+ "templateMonitorJSON": "objecte que descriu el monitor",
+ "templateLimitedToUpDownCertNotifications": "només disponible per a notificacions de venciment UP/DOWN/Certificate",
+ "templateLimitedToUpDownNotifications": "només disponible per a notificacions UP/DOWN",
+ "webhookAdditionalHeadersDesc": "Estableix les capçaleres addicionals enviades amb el webhook. Cada capçalera s'ha de definir com una clau/valor JSON.",
+ "webhookBodyPresetOption": "Predefinit - {0}",
+ "webhookBodyCustomOption": "Cos personalitzat",
+ "Headers": "Capçaleres",
+ "Monitor History": "Historial del monitor",
+ "PasswordsDoNotMatch": "Les contrasenyes no coincideixen.",
+ "records": "registres",
+ "One record": "Un registre",
+ "Current User": "Usuari actual",
+ "topic": "Tema",
+ "topicExplanation": "tema MQTT a monitorar",
+ "successKeyword": "Paraula clau d'èxit",
+ "successKeywordExplanation": "Paraula clau MQTT que es considerarà un èxit",
+ "recent": "Recent",
+ "Reset Token": "Restableix el testimoni",
+ "Done": "Fet",
+ "Info": "Info",
+ "Steam API Key": "Clau API de Steam",
+ "Shrink Database": "Redueix la base de dades",
+ "Pick a RR-Type...": "Trieu un tipus RR…",
+ "Default": "Per defecte",
+ "HTTP Options": "Opcions HTTP",
+ "Create Incident": "Crear Incident",
+ "Title": "Títol",
+ "Content": "Contingut",
+ "Style": "Estil",
+ "info": "info",
+ "warning": "avís",
+ "danger": "perill",
+ "primary": "primària",
+ "light": "lleuger",
+ "dark": "fosc",
+ "Post": "Post",
+ "Created": "Creat",
+ "Last Updated": "Darrera actualització",
+ "Switch to Light Theme": "Canvia a tema clar",
+ "Switch to Dark Theme": "Canviar a tema fosc",
+ "Show Tags": "Mostra les etiquetes",
+ "Hide Tags": "Amaga les etiquetes",
+ "Description": "Descripció",
+ "No monitors available.": "No hi ha monitors disponibles.",
+ "Add one": "Afegeix-ne un",
+ "No Monitors": "Sense monitors",
+ "Untitled Group": "Grup sense títol",
+ "Services": "Serveis",
+ "Discard": "Descarta",
+ "Cancel": "Canel·la",
+ "Select": "Selecciona",
+ "Check/Uncheck": "Comprova/desmarca",
+ "Powered by": "Funciona amb",
+ "Customize": "Personalitza",
+ "Custom Footer": "Peu de pàgina personalitzat",
+ "Custom CSS": "CSS personalitzat",
+ "default": "Per defecte",
+ "enabled": "Habilitat",
+ "setAsDefault": "Estableix com a predeterminat",
+ "deleteProxyMsg": "Esteu segur que voleu suprimir aquest servidor intermediari per a tots els monitors?",
+ "setAsDefaultProxyDescription": "Aquest servidor intermediari s'habilitarà de manera predeterminada per als monitors nous. Encara podeu desactivar el servidor intermediari per separat per a cada monitor.",
+ "Certificate Chain": "Cadena de certificats",
+ "Valid": "Vàlid",
+ "Invalid": "Invàlid",
+ "User": "Usuari",
+ "Installed": "Instal·lat",
+ "Not installed": "No instal·lat",
+ "Running": "En execució",
+ "Not running": "No en execució",
+ "Remove Token": "Elimina el testimoni",
+ "Start": "Inicia",
+ "Stop": "Aturar",
+ "Add New Status Page": "Afegeix una pàgina d'estat nova",
+ "Slug": "Àlies",
+ "Accept characters:": "Accepta caràcters:",
+ "startOrEndWithOnly": "Inicia o acaba només amb {0}",
+ "No consecutive dashes": "Sense guions consecutius",
+ "Next": "Següent",
+ "The slug is already taken. Please choose another slug.": "L'àlias ja està agafat. Si us plau, escolliu un altre àlies.",
+ "No Proxy": "Sense servidor intermediari",
+ "Proxies": "Servidors intermediaris",
+ "HTTP Basic Auth": "Autenticació bàsica HTTP",
+ "New Status Page": "Pàgina d'estat nova",
+ "Reverse Proxy": "Servidor intermediari invertit",
+ "Backup": "Còpia de seguretat",
+ "About": "Quant a",
+ "wayToGetCloudflaredURL": "(Descarrega de cloudfared des de {0})",
+ "cloudflareWebsite": "Lloc web de Cloudflare",
+ "Message:": "Missatge:",
+ "HTTP Headers": "Capçaleres HTTP",
+ "Trust Proxy": "Confia en el servidor intermediari",
+ "Other Software": "Un altre programari",
+ "For example: nginx, Apache and Traefik.": "Per exemple: nginx, Apache i Traefik.",
+ "Please read": "Llegiu",
+ "Subject:": "Assumpte:",
+ "Valid To:": "Vàlid per a:",
+ "Days Remaining:": "Dies restants:",
+ "Issuer:": "Emissor:",
+ "Fingerprint:": "Empremta digital:",
+ "No status pages": "Sense pàgines d'estat",
+ "Domain Name Expiry Notification": "Notificació de venciment del nom de domini",
+ "Add a new expiry notification day": "Notificació de venciment del nom de domini",
+ "Remove the expiry notification": "Elimina el dia de notificació de venciment",
+ "Proxy": "Servidor intermediari",
+ "Date Created": "Data de creació",
+ "Footer Text": "Text del peu de pàgina",
+ "Refresh Interval Description": "La pàgina d'estat farà una actualització completa del lloc cada {0} segons",
+ "Show Powered By": "Mostra Impulsat per",
+ "Domain Names": "Noms de domini",
+ "signedInDisp": "Sessió iniciada com a {0}",
+ "RadiusSecret": "Secret de Radius",
+ "RadiusSecretDescription": "Secret compartit entre client i servidor",
+ "RadiusCalledStationId": "Id de l'estació cridada",
+ "RadiusCallingStationId": "Id de l'estació de trucada",
+ "RadiusCallingStationIdDescription": "Identificador del dispositiu de crida",
+ "Certificate Expiry Notification": "Notificació de venciment del certificat",
+ "API Username": "Nom d'usuari API",
+ "API Key": "Clau API",
+ "Show update if available": "Mostra l'actualització si està disponible",
+ "Using a Reverse Proxy?": "Usar un servidor intermediari invers?",
+ "Check how to config it for WebSocket": "Comprova com configurar-lo per a WebSocket",
+ "Steam Game Server": "Servidor de jocs Steam",
+ "Most likely causes:": "Causes més probables:",
+ "There might be a typing error in the address.": "Pot haver-hi un error d'escriptura a l'adreça.",
+ "What you can try:": "Què podeu provar:",
+ "Retype the address.": "Torneu a teclejar l'adreça.",
+ "Go back to the previous page.": "Torna a la pàgina anterior.",
+ "Coming Soon": "Properament",
+ "Connection String": "Cadena de connexió",
+ "Query": "Consulta",
+ "settingsCertificateExpiry": "Caducitat del certificat TLS",
+ "Setup Docker Host": "Configura l'amfitrió Docker",
+ "Connection Type": "Tipus de connexió",
+ "Docker Daemon": "Dimoni Docker",
+ "noDockerHostMsg": "No disponible. Primer configureu un amfitrió Docker.",
+ "DockerHostRequired": "Establiu l'amfitrió Docker per a aquest monitor.",
+ "socket": "Sòcol",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Contenidor Docker",
+ "Container Name / ID": "Nom del contenidor / ID",
+ "Docker Host": "Amfitrió Docker",
+ "Docker Hosts": "Amfitrions Docker",
+ "Domain": "Domini",
+ "Workstation": "Estació de treball",
+ "Packet Size": "Mida del paquet",
+ "Bot Token": "Testimoni de bot",
+ "wayToGetTelegramToken": "Podeu obtenir un testimoni de {0}.",
+ "Chat ID": "ID de xat",
+ "telegramMessageThreadID": "(Opcional) ID del fil del missatge",
+ "telegramMessageThreadIDDescription": "Identificador únic opcional per al fil del missatge de destinació (tema) del fòrum; només per als supergrups del fòrum",
+ "telegramSendSilently": "Envia silenciosament",
+ "telegramProtectContent": "Protegeix la reenviament/desament",
+ "supportTelegramChatID": "Admet xat directe / grup / ID de xat del canal",
+ "YOUR BOT TOKEN HERE": "EL VOSTRE TESTIMONI DE BOT AQUÍ",
+ "chatIDNotFound": "No s'ha trobat l'ID del xat; primer envieu un missatge a aquest bot",
+ "disableCloudflaredNoAuthMsg": "Esteu en mode No Auth, no cal una contrasenya.",
+ "wayToGetLineNotifyToken": "Podeu obtenir un testimoni d'accés des de {0}",
+ "Examples": "Exemples",
+ "Home Assistant URL": "URL de l'assistent d'inici",
+ "Long-Lived Access Token": "Testimoni d'accés viu",
+ "Notification Service": "Servei de notificacions",
+ "Automations can optionally be triggered in Home Assistant:": "Les automatitzacions es poden activar opcionalment a l'assistent d'inici:",
+ "Trigger type:": "Tipus d'activador:",
+ "Event type:": "Tipus d'esdeveniment:",
+ "Event data:": "Dades de l'esdeveniment:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "A continuació, trieu una acció, per exemple, canvieu l'escena a on una llum RGB és vermella.",
+ "Frontend Version": "Versió del frontal",
+ "Frontend Version do not match backend version!": "La versió frontal no coincideix amb la versió del dorsal!",
+ "backupRecommend": "Si us plau, feu una còpia de seguretat del volum o de la carpeta de dades (./data/) directament.",
+ "Optional": "Opcional",
+ "and": "i",
+ "startDateTime": "Data/hora d'inici",
+ "endDateTime": "Data/hora final",
+ "cronExpression": "Expressió Cron",
+ "cronSchedule": "Planificació: ",
+ "invalidCronExpression": "Expressió Cron no vàlida: {0}",
+ "recurringInterval": "Interval",
+ "Recurring": "Recurrència",
+ "strategyManual": "Activa/Inactiva manualment",
+ "warningTimezone": "Està utilitzant la zona horària del servidor",
+ "weekdayShortMon": "Dill",
+ "weekdayShortTue": "Dim",
+ "weekdayShortWed": "Dim",
+ "weekdayShortThu": "Dij",
+ "weekdayShortFri": "Div",
+ "weekdayShortSat": "Diss",
+ "weekdayShortSun": "Dg",
+ "dayOfWeek": "Dia de la setmana",
+ "dayOfMonth": "Dia del mes",
+ "lastDay": "Últim dia",
+ "lastDay2": "2n últim dia del mes",
+ "lastDay3": "3r Darrer Dia del Mes",
+ "lastDay4": "4t Darrer Dia del Mes",
+ "No Maintenance": "Sense manteniment",
+ "maintenanceStatus-under-maintenance": "Sota manteniment",
+ "maintenanceStatus-inactive": "Inactiu",
+ "maintenanceStatus-scheduled": "Programat",
+ "maintenanceStatus-unknown": "Desconegut",
+ "Server Timezone": "Zona horària del servidor",
+ "statusPageMaintenanceEndDate": "Final",
+ "IconUrl": "URL de la icona",
+ "Enable DNS Cache": "(Obsolet) Habilita la memòria cau DNS per als monitors HTTP(s)",
+ "Enable": "Habilita",
+ "Disable": "Desactiva",
+ "chromeExecutable": "Executable Chrome/Chromium",
+ "chromeExecutableAutoDetect": "Detecció automàtica",
+ "dnsCacheDescription": "Pot ser que no funcioni treballant amb entorns IPv6, desactiva'l si detectes qualsevol problema.",
+ "Single Maintenance Window": "Finestra de Manteniment únic",
+ "Maintenance Time Window of a Day": "Finestra de Temps del manteniment d'un Dia",
+ "Effective Date Range": "Rang de data eficaç (Opcional)",
+ "Schedule Maintenance": "Programa de manteniment",
+ "Edit Maintenance": "Edita el manteniment",
+ "Date and Time": "Data i hora",
+ "DateTime Range": "Rang de data i temps",
+ "loadingError": "Impossible obtenir la data, si us plau prova-ho més endavant.",
+ "plugin": "Connector | Connectors",
+ "install": "Instal·la",
+ "installing": "Instal·lant",
+ "uninstall": "Desinstal·la",
+ "confirmUninstallPlugin": "Estàs segur de desinstal·lar aquest connector?",
+ "notificationRegional": "Local",
+ "Clone Monitor": "Clona el monitor",
+ "Clone": "Clona",
+ "cloneOf": "Clon de {0}",
+ "secureOptionNone": "Cap / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "Ignora error TLS",
+ "From Email": "Des de Correu",
+ "emailCustomisableContent": "Contingut personalitzable",
+ "emailCustomSubject": "Tema personalitzable",
+ "leave blank for default subject": "deixar en blanc per tema per defecte",
+ "emailCustomBody": "Cos personalitzat",
+ "leave blank for default body": "deixa en blanc per un cos per defecte",
+ "emailTemplateServiceName": "Nom de servei",
+ "emailTemplateHostnameOrURL": "Nom de host o URL",
+ "emailTemplateStatus": "Estat",
+ "emailTemplateMonitorJSON": "objecte que descriu el monitor",
+ "emailTemplateHeartbeatJSON": "objecte que descriu el batec del cor",
+ "To Email": "Destí email",
+ "smtpCC": "CC",
+ "smtpBCC": "BCC",
+ "Discord Webhook URL": "URL del Webhook de Discord",
+ "wayToGetDiscordURL": "Pots rebre aquest per anar a Paràmetres de Servidor -> Integracions -> Vista *Webhooks -> Nou *Webhook",
+ "Bot Display Name": "Nom de pantalla de bot",
+ "Prefix Custom Message": "Prefix de missatge personalitzat",
+ "Hello @everyone is...": "Hola {'@'} a tothom …",
+ "Send to channel": "Envia al canal",
+ "Create new forum post": "Crea una nova publicació",
+ "postToExistingThread": "Publica a un fil existent",
+ "forumPostName": "Nom de publicació de fòrum",
+ "threadForumPostID": "Fil / identificador de fòrum",
+ "e.g. {discordThreadID}": "exemple {discordThreadID}",
+ "wayToGetTeamsURL": "Pot aprendre com crear una URL de webhook {0}.",
+ "wayToGetZohoCliqURL": "Pot aprendre com crear una URL de webhook {0}.",
+ "needSignalAPI": "Necessites tenir una senyal de client amb REST API.",
+ "wayToCheckSignalURL": "Pot comprovar aquesta URL per veure com configurar:",
+ "Number": "Número",
+ "Recipients": "Receptors",
+ "Access Token": "Fitxa d'accés",
+ "Channel access token (Long-lived)": "Fitxa d'accés del canal (de llarga vida)",
+ "Line Developers Console": "Consola de Desenvolupadors de la línia",
+ "appriseNotInstalled": "L'apèndix no està instal·lat. {0}",
+ "Method": "Mètode",
+ "clearDataOlderThan": "Conserva les dades de l'historial del monitor durant {0} dies.",
+ "steamApiKeyDescription": "Per a monitoritzar un servidor de jocs de vapor, necessiteu una clau Steam Web-API. Podeu registrar la vostra clau API aquí: ",
+ "shrinkDatabaseDescriptionSqlite": "Activa la base de dades {vacuum} per a SQLite. {auto.vacuum} ja està activat, però això no desfragmenta la base de dades ni reempaqueta les pàgines individuals de la base de dades de la manera com ho fa l'ordre {vacuum}.",
+ "liquidIntroduction": "S'aconsegueix la flexibilitat mitjançant el llenguatge de templatació líquid. Consulteu el {0} per a les instruccions d'ús. Aquestes són les variables disponibles:",
+ "selectedMonitorCount": "Seleccionat: {0}",
+ "deleteStatusPageMsg": "Esteu segur que voleu suprimir aquesta pàgina d'estat?",
+ "proxyDescription": "Els intermediaris s'han d'assignar a un monitor perquè funcioni.",
+ "enableProxyDescription": "Aquest servidor intermediari no afectarà les sol·licituds del monitor fins que estigui activat. Podeu controlar temporalment desactivar el servidor intermediari de tots els monitors per l'estat d'activació.",
+ "statusPageSpecialSlugDesc": "Àlies especial {0}: aquesta pàgina es mostrarà quan no es proporcioni l'àlies",
+ "Authentication": "Autenticació",
+ "Page Not Found": "Pàgina no trobada",
+ "Don't know how to get the token? Please read the guide:": "No saps com aconseguir el testimoni? Si us plau, llegiu la guia:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "La connexió actual es pot perdre si esteu connectant a través del túnel Cloudflare. Segur que voleu aturar-ho? Escriviu la contrasenya actual per confirmar-la.",
+ "Refresh Interval": "Interval de refresc",
+ "signedInDispDisabled": "Autenticació desactivada.",
+ "RadiusCalledStationIdDescription": "Identificador del dispositiu anomenat",
+ "Also check beta release": "Comprova també la versió beta",
+ "The resource is no longer available.": "El recurs ja no està disponible.",
+ "certificationExpiryDescription": "Els monitors HTTPS activen la notificació quan el certificat TLS caduca a:",
+ "deleteDockerHostMsg": "Esteu segur que voleu suprimir aquest amfitrió de l'acoblador per a tots els monitors?",
+ "tailscalePingWarning": "Per utilitzar el monitor de Ping Tailscale, heu d'instal·lar el Kuma Uptime sense Docker i també instal·lar el client Tailscale al vostre servidor.",
+ "telegramSendSilentlyDescription": "Envia el missatge en silenci. Els usuaris rebran una notificació sense so.",
+ "telegramProtectContentDescription": "Si està activat, els missatges del bot del Telegram estaran protegits contra reenviaments i desaments.",
+ "wayToGetTelegramChatID": "Podeu obtenir el vostre ID de xat enviant un missatge al bot i anant a aquest URL per veure el xat id:",
+ "trustProxyDescription": "Confia en les capçaleres «X-Forwarded-*». Si voleu obtenir la IP del client correcta i el vostre Kuma Uptime està darrere d'un servidor intermediari com Nginx o Apache, hauríeu d'activar-ho.",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Es pot crear un testimoni d'accés de llarga durada fent clic al nom del vostre perfil (a baix a l'esquerra) i desplaçant-vos a la part inferior i després feu clic a Crea un testimoni. ",
+ "default: notify all devices": "per defecte: notifica tots els dispositius",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Podeu trobar una llista dels Serveis de Notificació a l'assistent d'inici a «Eines de revelador . Serveis» cerca «notificació» per trobar el nom del vostre dispositiu/telèfon.",
+ "backupOutdatedWarning": "Obsolet: Atès que s'han afegit moltes característiques i aquesta funció de còpia de seguretat és una mica inexistent, no pot generar o restaurar una còpia de seguretat completa.",
+ "lastDay1": "L'últim dia del mes",
+ "pauseMaintenanceMsg": "Segur que voleu fer una pausa?",
+ "maintenanceStatus-ended": "Finalitzat",
+ "Display Timezone": "Mostra la zona horària",
+ "enableNSCD": "Habilita NSCD (Dimoni de memòria cau de Servei del Nom ) per accelerar les sol·licituds de DNS",
+ "chromeExecutableDescription": "Per a usuaris de Docker, si el Chrome no està encara instal·lat, pot dur uns quants minuts per instal·lar i mostrar el resultat de prova. Duu 1*GB d'espai de disc.",
+ "uninstalling": "Desinstal·lant",
+ "smtp": "Correu electrònic (SMTP)",
+ "smtpLiquidIntroduction": "Els següents dos camps són personalitzables via \"Liquid templating Language\". Per favor refereix al {0} per a instruccions d'ús. Aquests són les variables disponibles:",
+ "emailTemplateMsg": "missatge de la notificació",
+ "emailTemplateLimitedToUpDownNotification": "només disponible per estats UP/Down, altrament null",
+ "Select message type": "Selecciona el tipus de missatge",
+ "whatHappensAtForumPost": "Crea una nova publicació de fòrum. Això no publica un missatge a un fòrum existent. Per publicar un fil existent utilitza \"{option}\"",
+ "Channel access token": "Fitxa d'accés del canal",
+ "Body": "Cos",
+ "or": "o",
+ "PushUrl": "URL de captura",
+ "HeadersInvalidFormat": "Les capçaleres de sol·licitud no són JSON vàlides: ",
+ "BodyInvalidFormat": "El cos de petició no és JSON vàlid: ",
+ "Security": "Seguretat",
+ "Pick Accepted Status Codes...": "Trieu els codis d'estat acceptats…",
+ "error": "error",
+ "critical": "crítica",
+ "Please input title and content": "Introduïu el títol i el contingut",
+ "telegramServerUrl": "(Opcional) Url del servidor",
+ "telegramServerUrlDescription": "Per saltar-se les limitacions del bot de Telegram o tenir accés a regions bloquejades (China, Iran, etc). Per a més informació fes click {0}. Per defecte {1}",
+ "templateServiceName": "Nom del servei",
+ "templateHostnameOrURL": "Adreça URL o nom del host",
+ "templateStatus": "Estat",
+ "telegramUseTemplate": "Fes servir una plantilla de missatge personalitzada",
+ "telegramUseTemplateDescription": "Si s'activa, el missatge s'enviarà fent servir una plantilla personalitzada.",
+ "telegramTemplateFormatDescription": "Telegram permet l'ús de diferents tipus de llenguatges de marcat, llegeix Telegram {0} per més detalls.",
+ "wayToGetDiscordThreadId": "Obtenir un identificador de publicació del fil/fòrum és semblant a obtenir un identificador de canal. Més informació sobre com obtenir identificadors {0}",
+ "lineDevConsoleTo": "Consola de desenvolupadors de linia - {0}",
+ "Basic Settings": "Configuracions bàsiques",
+ "User ID": "ID d'usuari",
+ "Your User ID": "El teu identificador d'usuari",
+ "Messaging API": "API de missatges",
+ "wayToGetLineChannelToken": "Primer accediu a {0}, creeu un proveïdor i un canal (API de missatgeria) i, a continuació, podeu obtenir el token d'accés al canal i l'identificador d'usuari dels elements del menú esmentats anteriorment.",
+ "Icon URL": "URL de la icona",
+ "aboutIconURL": "Pots donar un enllaç a la imatge a \"URL de la icona\" per sobreposar-la a la imatge de perfil pere defecte. No s'usarà si hi ha una icona d'emoji establerta."
}
diff --git a/src/lang/cs-CZ.json b/src/lang/cs-CZ.json
index 036595449..fd2556d7a 100644
--- a/src/lang/cs-CZ.json
+++ b/src/lang/cs-CZ.json
@@ -387,7 +387,6 @@
"Discard": "Zahodit",
"Cancel": "Zrušit",
"Powered by": "Poskytuje",
- "shrinkDatabaseDescription": "Pomocí této možnosti provedete příkaz VACUUM nad SQLite databází. Pokud byla databáze vytvořena po vydání verze 1.10.0, AUTO_VACUUM je již povolena a tato akce není vyžadována.",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "API uživatelské jméno (včetně předpony webapi_)",
"serwersmsAPIPassword": "API heslo",
@@ -803,8 +802,8 @@
"Json Query": "Json dotaz",
"Badge Duration (in hours)": "Zobrazení odznaku (v hodinách)",
"Badge Preview": "Náhled odznaku",
- "Notify Channel": "Kanál nofitikací",
- "aboutNotifyChannel": "Upozornění kanálu spustí upozornění na počítači nebo v mobilu pro všechny členy kanálu, ať už jsou dostupní nebo ne.",
+ "Notify Channel": "Upozornit kanál",
+ "aboutNotifyChannel": "Upozornění na kanál spustí upozornění na počítači nebo v mobilním telefonu pro všechny členy kanálu, ať už je jejich dostupnost nastavena na aktivní nebo na nepřítomnost.",
"filterActive": "Aktivní",
"filterActivePaused": "Pozastaveno",
"Enter the list of brokers": "Vytvořte seznam zprostředkovatelů",
@@ -823,7 +822,6 @@
"Enable Kafka Producer Auto Topic Creation": "Povolit Kafka zprostředkovateli automatické vytváření vláken",
"Kafka Producer Message": "Zpráva Kafka zprostředkovatele",
"tailscalePingWarning": "Abyste mohli používat Tailscale Ping monitor, je nutné Uptime Kuma nainstalovat mimo Docker, a dále na váš server nainstalovat Tailscale klienta.",
- "jsonQueryDescription": "Proveďte JSON dotaz vůči odpovědi a zkontrolujte očekávaný výstup (za účelem porovnání bude návratová hodnota převedena na řetězec). Dokumentaci k dotazovacímu jazyku naleznete na {0}, a využít můžete též {1}.",
"Select": "Vybrat",
"selectedMonitorCount": "Vybráno: {0}",
"Check/Uncheck": "Vybrat/Zrušit výběr",
@@ -833,16 +831,16 @@
"nostrRelays": "Relé Nostr",
"FlashDuty Severity": "Závažnost",
"PushDeer Server": "Server PushDeer",
- "wayToGetFlashDutyKey": "Můžete přejít na stránku Kanál -> (Vyberte kanál) -> Integrace -> Přidat novou integraci, přidat \"Vlastní událost\" a získat adresu pro odeslání, zkopírovat klíč integrace do adresy. Další informace naleznete na adrese",
+ "wayToGetFlashDutyKey": "Můžete přejít na stránku \"Kanál -> (Vyberte kanál) -> Integrace -> Přidat novou integraci\", přidat \"Uptime Kuma\" a získat push adresu, zkopírovat integrační klíč v adrese. Další informace naleznete na adrese",
"Request Timeout": "Časový limit požadavku",
"timeoutAfter": "Vypršení časového limitu po {0} sekundách",
"styleElapsedTime": "Čas uplynulý pod heartbeat ukazatelem",
"styleElapsedTimeShowWithLine": "Zobrazit (s linkou)",
"gamedigGuessPortDescription": "Port používaný protokolem Valve Server Query Protocol se může lišit od portu klienta. Pokud se monitor nemůže připojit k serveru, zkuste to.",
"styleElapsedTimeShowNoLine": "Zobrazit (bez linky)",
- "gamedigGuessPort": "Gamedig: Guess Port",
+ "gamedigGuessPort": "Gamedig: Port",
"Saved.": "Uloženo.",
- "setupDatabaseChooseDatabase": "Kterou databázi chcete použít?",
+ "setupDatabaseChooseDatabase": "Kterou databázi byste chtěli používat?",
"setupDatabaseEmbeddedMariaDB": "Nemusíte nic nastavovat. Tento Docker obraz pro vás automaticky vložil a nakonfiguroval databázi MariaDB. Uptime Kuma se k této databázi připojí prostřednictvím unixového socketu.",
"setupDatabaseMariaDB": "Připojení k externí databázi MariaDB. Je třeba nastavit informace o připojení k databázi.",
"setupDatabaseSQLite": "Jednoduchý databázový soubor, doporučený pro malé instalace. Před verzí 2.0.0 používal Uptime Kuma jako výchozí databázi SQLite.",
@@ -895,9 +893,9 @@
"emailTemplateLimitedToUpDownNotification": "dostupné pouze pro heatbeaty BĚŽÍ/NEBĚŽÍ, jinak null",
"templateMonitorJSON": "objekt popisující dohled",
"templateLimitedToUpDownNotifications": "dostupné pouze pro oznámení BĚŽÍ/NEBĚŽÍ",
- "successKeyword": "Nalezení klíčového slova",
- "Search monitored sites": "Vyhledávání dohledů",
- "settingUpDatabaseMSG": "Vytvářím strukturu databáze. Může to chvíli trvat, buďte trpěliví.",
+ "successKeyword": "Úspěch Klíčové slovo",
+ "Search monitored sites": "Hledat v monitorovaných umístěních",
+ "settingUpDatabaseMSG": "Nastavuje se databáze. Prosím buďte trpělivý, může to chvíli trvat.",
"successKeywordExplanation": "Klíčové slovo MQTT, které bude považováno za úspěch",
"Browser Screenshot": "Snímek obrazovky prohlížeče",
"setup a new monitor group": "nastavení nové skupiny dohledů",
@@ -914,5 +912,184 @@
"Remote Browser": "Vzdálený prohlížeč",
"Add a new expiry notification day": "Přidání nového oznámení o vypršení platnosti",
"Remove the expiry notification": "Odstranit upozornění na vypršení",
- "ntfyPriorityHelptextAllExceptDown": "Všechny události jsou odesílány s touto prioritou, kromě událostí {0}, které mají prioritu {1}"
+ "ntfyPriorityHelptextAllExceptDown": "Všechny události jsou odesílány s touto prioritou, kromě událostí {0}, které mají prioritu {1}",
+ "What is a Remote Browser?": "Co je to vzdálený prohlížeč?",
+ "Your User ID": "Vaše uživatelské ID",
+ "Channel access token (Long-lived)": "Přístupový token kanálu (s dlouhou životností)",
+ "wayToGetHeiiOnCallDetails": "Jak získat ID spouštěče a klíče API je vysvětleno v {documentation}",
+ "documentationOf": "{0} Dokumentace",
+ "gtxMessagingApiKeyHint": "Svůj klíč API najdete v menu: Moje směrovací účty > Zobrazit informace o účtu > Pověření API > REST API (v2.x)",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "Z telefonního čísla / adresy původu přenosové cesty (TPOA)",
+ "To Phone Number": "Na telefonní číslo",
+ "gtxMessagingToHint": "Mezinárodní formát s počátečním \"+\" ({e164}, {e212} nebo {e214})",
+ "gtxMessagingFromHint": "V mobilních telefonech se příjemci zobrazí TPOA jako odesílatel zprávy. Povoleno je až 11 alfanumerických znaků, zkrácený kód, místní dlouhý kód nebo mezinárodní čísla ({e164}, {e212} nebo {e214})",
+ "cellsyntOriginatortypeAlphanumeric": "Alfanumerický řetězec (max. 11 alfanumerických znaků). Příjemci nemohou na zprávu odpovědět.",
+ "Originator type": "Typ původce",
+ "Alphanumeric (recommended)": "Alfanumerický (doporučeno)",
+ "Telephone number": "Telefonní číslo",
+ "cellsyntOriginatortypeNumeric": "Číselná hodnota (max. 15 číslic) s telefonním číslem v mezinárodním formátu bez počátečního 00 (například číslo pro UK 07920 110 000 by mělo být nastaveno jako 447920110000). Příjemci mohou na zprávu odpovědět.",
+ "Originator": "Původce",
+ "callMeBotGet": "Zde můžete vygenerovat koncový bod pro {0}, {1} a {2}. Mějte na paměti, že můžete být omezeni rychlostí. Omezení rychlosti vypadají takto: {3}",
+ "cellsyntOriginator": "Viditelný v mobilním telefonu příjemce jako původce zprávy. Přípustné hodnoty a funkce závisí na parametru originatortype.",
+ "Destination": "Cíl",
+ "cellsyntDestination": "Telefonní číslo příjemce v mezinárodním formátu s počátečním číslem 00 a kódem země, např. 00447920110000 pro číslo 07920 110 000 ve Spojeném království (celkem maximálně 17 číslic). Maximálně 25 000 příjemců oddělených čárkou na jeden požadavek HTTP.",
+ "whapiRecipient": "Telefonní číslo / ID kontaktu / ID skupiny",
+ "API URL": "API URL",
+ "Allow Long SMS": "Povolit dlouhé SMS",
+ "cellsyntSplitLongMessages": "Rozdělit dlouhé zprávy až na 6 částí. 153 x 6 = 918 znaků.",
+ "max 15 digits": "maximálně 15 číslic",
+ "max 11 alphanumeric characters": "maximálně 11 alfanumerických znaků",
+ "remoteBrowserToggle": "Ve výchozím nastavení běží Chromium uvnitř kontejneru Uptime Kuma. Přepnutím tohoto přepínače můžete použít vzdálený prohlížeč.",
+ "wayToGetWhapiUrlAndToken": "URL rozhraní API a token získáte tak, že přejdete do požadovaného kanálu z {0}",
+ "wayToWriteWhapiRecipient": "Telefonní číslo s mezinárodní předvolbou, ale bez znaménka plus na začátku ({0}), ID kontaktu ({1}) nebo ID skupiny ({2}).",
+ "remoteBrowsersDescription": "Vzdálené prohlížeče jsou alternativou k místnímu spuštění Chromu. Nastavte se pomocí služby, jako je browserless.io, nebo se připojte k vlastnímu",
+ "statusPageSpecialSlugDesc": "Speciální slug {0}: tato stránka se zobrazí, pokud není definován žádný slug",
+ "Mentioning": "Zmínky",
+ "wayToGetSevenIOApiKey": "Navštivte ovládací panel v části app.seven.io > developer > api key > zelené tlačítko přidat",
+ "senderSevenIO": "Číslo nebo jméno odesílatele",
+ "receiverSevenIO": "Přijímací číslo",
+ "apiKeySevenIO": "API klíč SevenIO",
+ "locally configured mail transfer agent": "místně nakonfigurovaný agent pro přenos pošty",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Zadejte název hostitele serveru, ke kterému se chcete připojit, nebo {localhost}, pokud hodláte použít {local_mta}",
+ "receiverInfoSevenIO": "Pokud se přijímající číslo nenachází v Německu, musíte před číslo přidat kód země (např. pro kód země 420 z ČR použijte 420603603603 místo 603603603)",
+ "Command": "Příkaz",
+ "mongodbCommandDescription": "Spusťte příkaz MongoDB proti databázi. Informace o dostupných příkazech najdete v {dokumentaci}",
+ "ignoreTLSErrorGeneral": "Ignorování chyby TLS/SSL u připojení",
+ "smspartnerApiurl": "Svůj klíč API najdete v ovládacím panelu na adrese {0}",
+ "smspartnerPhoneNumber": "Telefonní číslo (čísla)",
+ "smspartnerPhoneNumberHelptext": "Číslo musí být v mezinárodním formátu {0}, {1}. Více čísel musí být odděleno znakem {2}",
+ "smspartnerSenderName": "Název odesílatele SMS",
+ "smspartnerSenderNameInfo": "Musí obsahovat 3..=11 běžných znaků",
+ "Bitrix24 Webhook URL": "Adresa URL webhooku služby Bitrix24",
+ "wayToGetBitrix24Webhook": "Webhook můžete vytvořit podle pokynů na adrese {0}",
+ "bitrix24SupportUserID": "Zadejte své uživatelské ID v Bitrix24. ID zjistíte z odkazu, který najdete v profilu uživatele.",
+ "Refresh Interval": "Interval obnovení",
+ "Refresh Interval Description": "Stavová stránka provede úplnou obnovu webu každých {0} sekund",
+ "Select message type": "Zvolte typ zprávy",
+ "Send to channel": "Poslat na kanál",
+ "Create new forum post": "Vytvořit nový příspěvek na fóru",
+ "postToExistingThread": "Příspěvek do existujícího vlákna / příspěvek na fóru",
+ "forumPostName": "Název příspěvku ve fóru",
+ "threadForumPostID": "Vlákno / ID příspěvku ve fóru",
+ "e.g. {discordThreadID}": "např. {discordThreadID}",
+ "whatHappensAtForumPost": "Vytvořte nový příspěvek ve fóru. Tímto způsobem NENÍ možné odesílat zprávy v existujících příspěvcích. Pro vložení příspěvku do existujícího příspěvku použijte \"{option}\"",
+ "wayToGetDiscordThreadId": "Získání ID vlákna / příspěvku ve fóru je podobné získání ID kanálu. Přečtěte si více o tom, jak získat id {0}",
+ "Don't mention people": "Nezmiňujte se o osobách",
+ "Mention group": "Zmínka o {skupině}",
+ "Host URL": "URL hosta",
+ "threemaRecipientType": "Typ příjemce",
+ "threemaRecipient": "Příjemce",
+ "threemaSenderIdentityFormat": "8 znaků, obvykle začíná na *",
+ "threemaRecipientTypeEmail": "Emailová adresa",
+ "threemaSenderIdentity": "ID brány",
+ "threemaApiAuthenticationSecret": "Tajný klíč ID brány",
+ "apiKeysDisabledMsg": "Klíče API jsou zakázány, protože je zakázáno ověřování.",
+ "threemaBasicModeInfo": "Poznámka: Tato integrace využívá bránu Threema v základním režimu (šifrování pomocí serveru). Další podrobnosti naleznete {0}.",
+ "threemaRecipientTypeIdentityFormat": "8 znaků",
+ "threemaRecipientTypeIdentity": "Threema-ID",
+ "threemaRecipientTypePhone": "Telefonní číslo",
+ "wayToGetThreemaGateway": "Můžete se zaregistrovat do služby brány Threema {0}.",
+ "privateOnesenderDesc": "Zkontrolujte, zda je telefonní číslo platné. Odeslání zprávy na soukromé telefonní číslo, např.: 628123456789",
+ "wayToGetOnesenderUrlandToken": "Adresu URL a token získáte na webových stránkách společnosti Onesender. Více informací {0}",
+ "now": "nyní",
+ "time ago": "před {0}",
+ "-year": "-rok",
+ "Json Query Expression": "Výraz dotazu JSON",
+ "and": "a",
+ "cacheBusterParam": "Přidání parametru {0}",
+ "cacheBusterParamDescription": "Náhodně generovaný parametr pro vynechání mezipaměti.",
+ "OID (Object Identifier)": "OID (identifikátor objektu)",
+ "Condition": "Stav",
+ "SNMP Version": "Verze SNMP",
+ "Please enter a valid OID.": "Zadejte prosím platný identifikátor OID.",
+ "Recipient Type": "Typ příjemce",
+ "Private Number": "Soukromé číslo",
+ "Group ID": "ID skupiny",
+ "Add Remote Browser": "Přidat vzdálený prohlížeč",
+ "New Group": "Nová skupina",
+ "Group Name": "Název skupiny",
+ "OAuth2: Client Credentials": "OAuth2: přihlašovací údaje klienta",
+ "Authentication Method": "Metoda ověřování",
+ "Authorization Header": "Hlavička autorizace",
+ "Form Data Body": "Tělo formuláře s daty",
+ "threemaRecipientTypePhoneFormat": "E.164, bez počátečního +",
+ "jsonQueryDescription": "Pro zpracování a získání konkrétních dat z JSON odpovědi serveru použijte JSON dotaz - případně \"$\" pro zdrojovou (raw) odpověď, pokud neočekáváte JSON výstup. Výsledek bude následně porovnán jako řetězec vůči očekávaní hodnotě. Dokumentaci naleznete na {0} a pro testování dotazů můžete využít {1}.",
+ "shrinkDatabaseDescriptionSqlite": "Podmínka spuštění příkazu {vacuum} nad SQLite databází. Příkaz {auto_vacuum} je již zapnutý, ale nedochází k defragmentaci databáze ani k přebalení jednotlivých stránek databáze tak, jak to dělá příkaz {vacuum}.",
+ "Community String": "Řetězec komunity",
+ "Host Onesender": "Onesender hostitel",
+ "Token Onesender": "Onesender token",
+ "snmpOIDHelptext": "Zadejte OID senzoru nebo stavu, který chcete monitorovat. Pokud si nejste jisti identifikátorem OID, použijte nástroje pro správu sítě, jako jsou prohlížeče MIB nebo SNMP software.",
+ "snmpCommunityStringHelptext": "Tento řetězec slouží jako heslo pro ověřování a řízení přístupu k zařízením podporujícím protokol SNMP. Shodujte se s konfigurací zařízení SNMP.",
+ "record": "záznam",
+ "Go back to home page.": "Vrátit se domovskou stránku.",
+ "No tags found.": "Nenalezeny žádné štítky.",
+ "Lost connection to the socket server.": "Ztraceno socketové spojení se serverem.",
+ "Cannot connect to the socket server.": "Nelze navázat socketové spojení se serverem.",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "URL adresa webhooku SIGNL4",
+ "signl4Docs": "Další informace související s konfigurací SIGNL4 a postup jak získat URL webhooku SIGNL4 naleznete na {0}.",
+ "Conditions": "Podmínky",
+ "conditionAdd": "Přidat podmínku",
+ "conditionDelete": "Vymazat podmínku",
+ "conditionAddGroup": "Přidat skupinu",
+ "conditionDeleteGroup": "Smazat skupinu",
+ "conditionValuePlaceholder": "Hodnota",
+ "equals": "rovná se",
+ "not equals": "nerovná se",
+ "contains": "obsahuje",
+ "not contains": "neobsahuje",
+ "starts with": "začíná na",
+ "not starts with": "nezačíná na",
+ "ends with": "končí na",
+ "not ends with": "nekončí na",
+ "less than": "menší než",
+ "greater than": "větší než",
+ "less than or equal to": "menší nebo rovno",
+ "greater than or equal to": "větší nebo rovno",
+ "groupOnesenderDesc": "Ujistěte se, že jste zadali platné GroupID. Pro odeslání zprávy do skupiny zadejte například 628123456789-342345",
+ "OAuth Token URL": "URL OAuth tokenu",
+ "Client ID": "ID klienta",
+ "Client Secret": "Tajemství klienta",
+ "OAuth Scope": "OAuth rozsah",
+ "Optional: Space separated list of scopes": "Volitelné: seznam rozsahů oddělte mezerami",
+ "Debug": "Ladění",
+ "CopyToClipboardError": "Nelze zkopírovat do schránky: {error}",
+ "ignoredTLSError": "Chyby TLS/SSL byly ignorovány",
+ "Copy": "Kopírovat",
+ "aboutSlackUsername": "Mění zobrazované jméno odesílatele zprávy. Pokud někoho chcete zmínit, použijte raději pole obecný název.",
+ "Message format": "Formát zprávy",
+ "Notification Channel": "Kanál notifikací",
+ "Alphanumerical string and hyphens only": "Pouze alfanumerické řetězce a pomlčky",
+ "Sound": "Zvuk",
+ "Custom sound to override default notification sound": "Použít vlastní zvuk místo výchozího zvuku upozornění",
+ "Correct": "Správně",
+ "Fail": "Chyba",
+ "Reveal": "Odhalení",
+ "Doorbell": "Zvonek",
+ "Flute": "Flétna",
+ "Money": "Peníze",
+ "Elevator": "Výtah",
+ "Guitar": "Kytara",
+ "Time Sensitive (iOS Only)": "Časově kritické (pouze pro iOS)",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "Časově kritická upozornění budou doručena okamžitě, i když je zařízení v režimu nerušit.",
+ "From": "Od",
+ "Can be found on:": "Lze nalézt na: {0}",
+ "The phone number of the recipient in E.164 format.": "Telefonní číslo příjemce ve formátu E.164 (+420...).",
+ "RabbitMQ Nodes": "RabbitMQ uzly pro správu",
+ "rabbitmqNodesDescription": "URL RabbitMQ uzlů pro správu zadávejte včetně protokolu a portu. Příklad: {0}",
+ "rabbitmqNodesRequired": "Prosím, definujte uzly pro tento dohled.",
+ "rabbitmqNodesInvalid": "Prosím, použijte plně kvalifikované URL (začínající na 'http)' RabbitMQ uzlů.",
+ "RabbitMQ Username": "RabbitMQ uživatelské jméno",
+ "Send rich messages": "Poslat rozsáhlé zprávy",
+ "Arcade": "Arkáda",
+ "Harp": "Harfa",
+ "Bubble": "Bublinky",
+ "Scifi": "Scifi",
+ "Pop": "Prasknutí",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "Pro zajištění příjmu odpovědí zadejte ID odesílatele textu nebo telefonní číslo ve formátu E.164.",
+ "RabbitMQ Password": "RabbitMQ heslo",
+ "rabbitmqHelpText": "Abyste mohli používat tento monitor, musíte v nastavení RabbitMQ povolit modul pro správu. Další informace naleznete na adrese {rabitmq_documentation}.",
+ "SendGrid API Key": "SendGrid API klíč",
+ "Separate multiple email addresses with commas": "Více e-mailových adres oddělte čárkami",
+ "Clear": "Odstranění"
}
diff --git a/src/lang/da-DK.json b/src/lang/da-DK.json
index eefa37496..9ddc3c3be 100644
--- a/src/lang/da-DK.json
+++ b/src/lang/da-DK.json
@@ -45,7 +45,7 @@
"Port": "Port",
"Heartbeat Interval": "Hjerteslag interval",
"Retries": "Gentagelser",
- "retriesDescription": "Maksimalt antal gentagelser, før tjenesten markeres som inaktiv og sender en meddelelse.",
+ "retriesDescription": "Maksimalt antal gentagelser, før tjenesten markeres som inaktiv og sender en meddelelse",
"Advanced": "Avanceret",
"ignoreTLSError": "Ignorér TLS/SSL fejl for HTTPS websteder",
"Upside Down Mode": "Omvendt tilstand",
@@ -99,7 +99,7 @@
"deleteNotificationMsg": "Er du sikker på, at du vil slette denne underretning for alle overvågere?",
"resolverserverDescription": "Cloudflare er standardserveren, den kan til enhver tid ændres.",
"Resolver Server": "Navne-server",
- "rrtypeDescription": "Vælg den type RR, du vil overvåge.",
+ "rrtypeDescription": "Vælg den type RR, du vil overvåge",
"Last Result": "Seneste resultat",
"pauseMonitorMsg": "Er du sikker på at du vil standse overvågningen?",
"Create your admin account": "Opret din administratorkonto",
@@ -125,7 +125,7 @@
"backupDescription3": "Følsom data, f.eks. underretnings-tokener, er inkluderet i eksportfilen. Gem den sikkert.",
"alertNoFile": "Vælg en fil der skal importeres.",
"alertWrongFileType": "Vælg venligst en JSON-fil.",
- "twoFAVerifyLabel": "Indtast venligst dit token for at bekræfte, at 2FA fungerer",
+ "twoFAVerifyLabel": "Indtast venligst dit token for at bekræfte, at 2FA fungerer:",
"tokenValidSettingsMsg": "Token er gyldigt! Du kan nu gemme 2FA -indstillingerne.",
"confirmEnableTwoFAMsg": "Er du sikker på at du vil aktivere 2FA?",
"confirmDisableTwoFAMsg": "Er du sikker på at du vil deaktivere 2FA?",
@@ -141,7 +141,7 @@
"Token": "Token",
"Show URI": "Vis URI",
"Clear all statistics": "Ryd alle Statistikker",
- "retryCheckEverySecond": "Prøv igen hvert {0} sekund.",
+ "retryCheckEverySecond": "Prøv igen hvert {0} sekund",
"importHandleDescription": "Vælg 'Spring over eksisterende', hvis du vil springe over hver overvåger eller underretning med samme navn. 'Overskriv' sletter alle eksisterende overvågere og underretninger.",
"confirmImportMsg": "Er du sikker på at importere sikkerhedskopien? Sørg for, at du har valgt den rigtige importindstilling.",
"Heartbeat Retry Interval": "Hjerteslag gentagelsesinterval",
@@ -277,7 +277,7 @@
"lineDevConsoleTo": "Line Udviklerkonsol - {0}",
"Basic Settings": "Basisindstillinger",
"User ID": "Bruger-ID",
- "Messaging API": "Messaging API",
+ "Messaging API": "Besked API",
"wayToGetLineChannelToken": "Tilgå først {0}, opret en udbyder og kanal (Messaging API), så kan du få kanaladgangstoken'et og bruger-ID'et fra de ovennævnte menupunkter.",
"Icon URL": "Ikon URL",
"aboutIconURL": "Du kan angive et link til et billede i \"Ikon URL\" for at tilsidesætte standardprofilbilledet. Vil ikke blive brugt, hvis Ikon Emoji er angivet.",
@@ -345,7 +345,6 @@
"Discard": "Kassér",
"Cancel": "Annullér",
"Powered by": "Drevet af",
- "shrinkDatabaseDescription": "Udfør database VACUUM for SQLite. Hvis din database er oprettet efter 1.10.0, er AUTO_VACUUM allerede aktiveret, og denne handling er ikke nødvendig.",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "API Brugernavn (inkl. webapi_ prefix)",
"serwersmsAPIPassword": "API Adgangskode",
@@ -416,7 +415,7 @@
"signedInDisp": "Logget ind som {0}",
"Certificate Expiry Notification": "Meddelelse om udløbsdato for certifikatet",
"API Username": "API Brugernavn",
- "API Key": "API Key",
+ "API Key": "API Nøgle",
"Steam Game Server": "Steam Game Server",
"What you can try:": "Hvad du kan prøve:",
"Go back to the previous page.": "Gå tilbage til forrige side.",
@@ -622,11 +621,11 @@
"confirmDeleteTagMsg": "Er du sikker på at du vil slette denne etiket? Overvågninger med denne etiket vil ikke blive slettet.",
"resendEveryXTimes": "Gensend hver {0} gang",
"resendDisabled": "Gensendelse deaktiveret",
- "Reconnecting...": "Genforbinder...",
+ "Reconnecting...": "Genopretter forbindelse...",
"successPaused": "Standset med succes.",
"Reset Token": "Nulstil nøgle",
"Show Clickable Link": "Vis klikbart link",
- "atLeastOneMonitor": "Vælg mindst én berørt overvågning.",
+ "atLeastOneMonitor": "Vælg mindst én berørt overvågning",
"authInvalidToken": "Ugyldig nøgle.",
"authIncorrectCreds": "Brugernavn eller adgangskode er ikke korrekt.",
"2faAlreadyEnabled": "2FA er allerede aktiveret.",
@@ -655,5 +654,149 @@
"sameAsServerTimezone": "Samme som serverens tidszone",
"wayToGetLineNotifyToken": "Du kan få en adgangsnøgle fra {0}",
"telegramSendSilentlyDescription": "Send beskeden lydløst. Brugerne vil modtage en notifikation uden lyd.",
- "pushoverMessageTtl": "Message TTL (Sekunder)"
+ "pushoverMessageTtl": "Message TTL (Sekunder)",
+ "setupDatabaseEmbeddedMariaDB": "Du skal ikke opsætte noget. Docker billedet har integreret og konfigureret MariaDB automatisk. Uptime Kuma vil forbinde til databasen vha. en Unix socket.",
+ "setupDatabaseMariaDB": "Oprette forbindelse til en ekstern MariaDB database. Du skal indstille databasens forbindelsesinformation.",
+ "styleElapsedTimeShowWithLine": "Vis (med linjer)",
+ "styleElapsedTime": "Forløbet tid under heartbeat-bjælken",
+ "templateMsg": "besked fra notifikationen",
+ "templateHeartbeatJSON": "objekt, der beskriver heartbeat",
+ "templateMonitorJSON": "objekt, der beskriver monitoren",
+ "templateLimitedToUpDownNotifications": "kun tilgængelig for UP/DOWN notifikationer",
+ "webhookAdditionalHeadersTitle": "Yderligere Headers",
+ "webhookAdditionalHeadersDesc": "Angiver yderligere headers, der sendes med webhooken. Hver header skal defineres som en JSON-nøgle/værdi.",
+ "webhookBodyCustomOption": "Brugerdefineret Body",
+ "successKeyword": "Succesnøgleord",
+ "startOrEndWithOnly": "Kun start eller slut med {0}",
+ "setAsDefaultProxyDescription": "Denne proxy vil som standard være aktiveret for nye monitorer. Du kan stadig deaktivere proxyen individuelt for hver monitor.",
+ "No consecutive dashes": "Ingen på hinanden følgende bindestreger",
+ "statusPageSpecialSlugDesc": "Speciel slug {0}: Denne side vises, når der ikke angives en slug",
+ "Query": "Kø",
+ "Add a new expiry notification day": "Tilføj en ny udløbsnotifikationsdag",
+ "Remove the expiry notification": "Fjern udløbsnotifikationsdagen",
+ "Refresh Interval": "Opdateringsinterval",
+ "Refresh Interval Description": "Statussiden vil udføre en fuld opdatering af sitet hvert {0} sekunder",
+ "RadiusSecret": "Radius-hemmelighed",
+ "RadiusCalledStationId": "Called Station ID",
+ "RadiusCalledStationIdDescription": "Identifikator for den kaldte enhed",
+ "RadiusCallingStationId": "Calling Station Id",
+ "RadiusCallingStationIdDescription": "Identifikator for den kaldende enhed",
+ "Check how to config it for WebSocket": "Tjek, hvordan det konfigureres til WebSocket",
+ "Connection String": "Forbindelsesstreng",
+ "Workstation": "Arbejdsstation",
+ "telegramMessageThreadID": "(Valgfrit) Beskedtråd-ID",
+ "telegramMessageThreadIDDescription": "Valgfri unik identifikator for målbeskedtråden (emnet) i forummet; kun for forum-supergrupper",
+ "telegramProtectContent": "Beskyt videresendelse/gemning",
+ "telegramProtectContentDescription": "Hvis aktiveret, vil bot-beskeder i Telegram være beskyttet mod videresendelse og gemning.",
+ "disableCloudflaredNoAuthMsg": "Du er i No Auth-tilstand, en adgangskode er ikke påkrævet.",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "En liste over notifikationstjenester kan findes i Home Assistant under “Developer Tools > Services”. Søg efter “notification” for at finde navnet på din enhed/telefon.",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Vælg derefter en handling, for eksempel at skifte scenen til en, hvor et RGB-lys er rødt.",
+ "backupRecommend": "Sikkerhedskopier venligst volumen eller data-mappen (./data/) direkte i stedet.",
+ "and": "og",
+ "startDateTime": "Startdato/-tidspunkt",
+ "endDateTime": "Slutdato/-tidspunkt",
+ "cronExpression": "Cron-udtryk",
+ "cronSchedule": "Tidsplan: ",
+ "warningTimezone": "Den bruger serverens tidszone",
+ "enableNSCD": "Aktivér NSCD (Name Service Cache Daemon) for at cache alle DNS-forespørgsler",
+ "chromeExecutable": "Chrome/Chromium-eksekverbar fil",
+ "Single Maintenance Window": "Enkelt vedligeholdelsesvindue",
+ "Edit Maintenance": "Rediger vedligeholdelse",
+ "emailCustomisableContent": "Brugerdefinerbart indhold",
+ "leave blank for default subject": "lad stå tomt for standardemne",
+ "emailCustomBody": "Brugerdefineret body",
+ "leave blank for default body": "lad stå tomt for standard-body",
+ "emailTemplateServiceName": "Servicenavn",
+ "emailTemplateHostnameOrURL": "Værtsnavn eller URL",
+ "emailTemplateStatus": "Status",
+ "emailTemplateMonitorJSON": "objekt, der beskriver monitoren",
+ "emailTemplateHeartbeatJSON": "objekt, der beskriver heartbeat",
+ "emailTemplateMsg": "besked fra notifikationen",
+ "emailTemplateLimitedToUpDownNotification": "kun tilgængelig for UP/DOWN heartbeats, ellers null",
+ "Select message type": "Vælg beskedtype",
+ "Send to channel": "Send til kanal",
+ "Create new forum post": "Opret nyt forumpost",
+ "postToExistingThread": "Send til eksisterende tråd / forumpost",
+ "forumPostName": "Forumpost-navn",
+ "threadForumPostID": "Tråd- / Forumpost-ID",
+ "e.g. {discordThreadID}": "f.eks. {discordThreadID}",
+ "wayToGetDiscordThreadId": "At hente en tråd- / forumpost-ID ligner processen for at hente en kanal-ID. Læs mere om, hvordan du får IDs {0}",
+ "Channel access token (Long-lived)": "Kanaladgangstoken (langvarig)",
+ "Your User ID": "Din bruger-ID",
+ "dataRetentionTimeError": "Opbevaringsperioden skal være 0 eller højere",
+ "infiniteRetention": "Sæt til 0 for uendelig opbevaring.",
+ "enableGRPCTls": "Tillad afsendelse af gRPC-forespørgsel med TLS-forbindelse",
+ "affectedStatusPages": "Vis denne vedligeholdelsesbesked på udvalgte statussider",
+ "invertKeywordDescription": "Se efter, at nøgleordet mangler i stedet for at være til stede.",
+ "octopushAPIKey": "“API-nøgle” fra HTTP API-legitimationsoplysninger i kontrolpanelet",
+ "octopushLogin": "“Login” fra HTTP API-legitimationsoplysninger i kontrolpanelet",
+ "pushoversounds pushover": "Pushover (standard)",
+ "pushoversounds bike": "Cykel",
+ "pushoversounds bugle": "Signalhorn",
+ "pushoversounds cashregister": "Kasseapparat",
+ "pushoversounds cosmic": "Kosmisk",
+ "pushoversounds falling": "Faldende",
+ "pushoversounds gamelan": "Gamelan",
+ "pushoversounds incoming": "Indkommende",
+ "pushoversounds intermission": "Pause",
+ "pushoversounds spacealarm": "Rumalarm",
+ "pushoversounds tugboat": "Slæbebåd",
+ "pushoversounds climb": "Klatring (lang)",
+ "pushoversounds persistent": "Vedvarende (lang)",
+ "pushoversounds echo": "Pushover Echo (lang)",
+ "pushoversounds updown": "Op Ned (lang)",
+ "GoogleChat": "Google Chat (kun Google Workspace)",
+ "styleElapsedTimeShowNoLine": "Vis (ingen linjer)",
+ "Slug": "Slug",
+ "The slug is already taken. Please choose another slug.": "Denne slug er allerede i brug. Vælg venligst en anden.",
+ "There might be a typing error in the address.": "Der er muligvis en stavfejl i adressen.",
+ "Long-Lived Access Token": "Long-Lived Access Token",
+ "Search monitored sites": "Søg overvågede sites",
+ "liquidIntroduction": "Templatability opnås via Liquid-templeringssproget. Se venligst {0} for brugsanvisninger. Her er de tilgængelige variabler:",
+ "templateLimitedToUpDownCertNotifications": "kun tilgængelig for UP/DOWN/Certifikatudløb notifikationer",
+ "shrinkDatabaseDescriptionSqlite": "Udløs database-{vacuum} for SQLite. {auto_vacuum} er allerede aktiveret, men dette defragmenterer ikke databasen eller ompakker de enkelte database-sider på samme måde som {vacuum}-kommandoen gør.",
+ "Check/Uncheck": "Markér/Afjern markering",
+ "enableProxyDescription": "Denne proxy vil ikke påvirke monitor-forespørgsler, før den er aktiveret. Du kan midlertidigt deaktivere proxyen for alle monitorer via aktiveringsstatus.",
+ "RadiusSecretDescription": "Delt hemmelighed mellem klient og server",
+ "noDockerHostMsg": "Ikke tilgængelig. Opsæt en Docker-host først.",
+ "DockerHostRequired": "Angiv venligst Docker-hosten for denne monitor.",
+ "tailscalePingWarning": "For at bruge Tailscale Ping-monitoren skal du installere Uptime Kuma uden Docker og også installere Tailscale-klienten på din server.",
+ "trustProxyDescription": "Tillid til ‘X-Forwarded-*’ headers. Hvis du vil hente den korrekte klient-IP, og din Uptime Kuma er bag en proxy såsom Nginx eller Apache, bør du aktivere dette.",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "En langvarig adgangstoken kan oprettes ved at klikke på dit profilnavn (nederst til venstre), rulle ned til bunden og derefter klikke på “Opret token”. ",
+ "backupOutdatedWarning": "Forældet: Da mange funktioner er blevet tilføjet, og denne backup-funktion er lidt vedligeholdelsesfri, kan den ikke generere eller gendanne en komplet backup.",
+ "invalidCronExpression": "Ugyldigt Cron-udtryk: {0}",
+ "chromeExecutableDescription": "For Docker-brugere: Hvis Chromium endnu ikke er installeret, kan det tage et par minutter at installere og vise testresultatet. Det kræver 1 GB diskplads.",
+ "Effective Date Range": "Gyldig datointerval (Valgfrit)",
+ "DateTime Range": "Dato-/tidsinterval",
+ "notificationRegional": "Regional",
+ "smtpLiquidIntroduction": "De følgende to felter kan tilpasses via Liquid-templateringssproget. Se venligst {0} for brugsanvisninger. Her er de tilgængelige variabler:",
+ "whatHappensAtForumPost": "Opret en ny forumpost. Dette sender IKKE beskeder i en eksisterende post. For at sende i en eksisterende post, brug ”{option}”",
+ "grpcMethodDescription": "Metodenavnet konverteres til camelCase-format, såsom sayHello, check osv.",
+ "affectedMonitorsDescription": "Vælg de monitorer, der er påvirket af den aktuelle vedligeholdelse",
+ "jsonQueryDescription": "Parse og udtræk specifikke data fra serverens JSON-svar ved hjælp af en JSON-forespørgsel, eller brug ”$” for det rå svar, hvis JSON ikke forventes. Resultatet sammenlignes derefter med den forventede værdi som strenge. Se {0} for dokumentation, og brug {1} til at eksperimentere med forespørgsler.",
+ "pushoversounds classical": "Klassisk",
+ "pushoversounds pianobar": "Piano Bar",
+ "wayToGetKookBotToken": "Opret en applikation og få din bot-token på {0}",
+ "wayToGetKookGuildID": "Tænd for ‘Developer Mode’ i Kook-indstillingerne, og højreklik på guilden for at få dens ID",
+ "successKeywordExplanation": "MQTT-nøgleord, der vil blive betragtet som succes",
+ "endpoint": "endpoint",
+ "topicExplanation": "MQTT-emne til overvågning",
+ "settingUpDatabaseMSG": "Opsætter databasen. Det kan tage et stykke tid, så vær tålmodig.",
+ "now": "nu",
+ "Json Query Expression": "Json Query Expression",
+ "locally configured mail transfer agent": "lokalt konfigureret mail overførsels agent",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Indtast enten værtsnavnet på serveren du vil forbinde til eller {localhost} hvis du planlægger at bruge en {local_mta}",
+ "timeoutAfter": "Timeout efter {0} sekunder",
+ "ignoredTLSError": "TLS/SSL-fejl er blevet ignoreret",
+ "Invert Keyword": "Inverter Nøgleord",
+ "Resend Notification if Down X times consecutively": "Send meddelelse igen, hvis Ned X gange i træk",
+ "Expected Value": "Forventede Værdi",
+ "setupDatabaseSQLite": "En simpel database-fil, anbefalet til mindre implementeringer. Før v2.0.0, brugte Uptime Kuma SQLite som standard database.",
+ "ignoreTLSErrorGeneral": "Ignorér TLS/SSL-fejl for forbindelsen",
+ "time ago": "{0} siden",
+ "-year": "-år",
+ "Host URL": "Host URL",
+ "Request Timeout": "Anmod Timeout",
+ "Cannot connect to the socket server": "Kan ikke oprette forbindelse til socket serveren",
+ "pushViewCode": "Hvordan bruger man Push Monitor? (Se kode)"
}
diff --git a/src/lang/de-CH.json b/src/lang/de-CH.json
index d20e3c1eb..f45d41e89 100644
--- a/src/lang/de-CH.json
+++ b/src/lang/de-CH.json
@@ -1,7 +1,7 @@
{
"languageName": "Deutsch (Schweiz)",
"Settings": "Einstellungen",
- "Dashboard": "Dashboard",
+ "Dashboard": "Überblick",
"New Update": "Update verfügbar",
"Language": "Sprache",
"Appearance": "Erscheinungsbild",
@@ -282,7 +282,7 @@
"appriseInstalled": "Apprise ist installiert.",
"appriseNotInstalled": "Apprise ist nicht installiert. {0}",
"Access Token": "Access Token",
- "Channel access token": "Channel Access Token",
+ "Channel access token": "Kanalzugriffstoken",
"Line Developers Console": "Line Developers Console",
"lineDevConsoleTo": "Line Developers Console - {0}",
"Basic Settings": "Grundeinstellungen",
@@ -337,7 +337,7 @@
"primary": "primär",
"light": "hell",
"dark": "dunkel",
- "Post": "Eintrag",
+ "Post": "Veröffentlichen",
"Please input title and content": "Bitte Titel und Inhalt eingeben",
"Created": "Erstellt",
"Last Updated": "Zuletzt aktualisiert",
@@ -355,7 +355,6 @@
"Discard": "Verwerfen",
"Cancel": "Abbrechen",
"Powered by": "Erstellt mit",
- "shrinkDatabaseDescription": "Löse VACUUM für die SQLite Datenbank aus. Wenn die Datenbank nach 1.10.0 erstellt wurde, ist AUTO_VACUUM bereits aktiviert und diese Aktion ist nicht erforderlich.",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "API Benutzername (inkl. webapi_ prefix)",
"serwersmsAPIPassword": "API Passwort",
@@ -394,7 +393,7 @@
"Valid": "Gültig",
"Invalid": "Ungültig",
"AccessKeyId": "AccessKey ID",
- "SecretAccessKey": "AccessKey Secret",
+ "SecretAccessKey": "Geheimer Zugriffsschlüssel",
"PhoneNumbers": "Telefonnummern",
"TemplateCode": "Vorlagencode",
"SignName": "Signaturname",
@@ -627,7 +626,7 @@
"lastDay4": "4. letzter Tag im Monat",
"No Maintenance": "Keine Wartung",
"pauseMaintenanceMsg": "Möchtest du wirklich pausieren?",
- "maintenanceStatus-under-maintenance": "Unter Wartung",
+ "maintenanceStatus-under-maintenance": "In Wartung",
"maintenanceStatus-inactive": "Inaktiv",
"maintenanceStatus-scheduled": "Geplant",
"maintenanceStatus-ended": "Ende",
@@ -753,30 +752,30 @@
"cronExpression": "Cron-Ausdruck",
"cronSchedule": "Zeitplan: ",
"invalidCronExpression": "Ungültiger Cron-Ausdruck: {0}",
- "Open Badge Generator": "Open Badge Generator",
- "Badge Generator": "{0}'s Badge Generator",
- "Badge Type": "Badge Typ",
+ "Open Badge Generator": "Abzeichengenerator öffnen",
+ "Badge Generator": "{0}'s Abzeichen Generator",
+ "Badge Type": "Abzeichen Typ",
"Badge Duration": "Badge Dauer",
- "Badge Label": "Badge Label",
- "Badge Prefix": "Badge Wert Präfix",
- "Badge Suffix": "Badge Wert Suffix",
- "Badge Label Color": "Badge Label Farbe",
- "Badge Color": "Badge Farbe",
- "Badge Label Prefix": "Badge Label Präfix",
- "Badge Up Color": "Badge Up Farbe",
- "Badge Maintenance Color": "Badge Wartung Farbe",
- "Badge Warn Color": "Badge Warnung Farbe",
- "Badge Warn Days": "Badge Warnung Tage",
- "Badge Style": "Badge Stil",
- "Badge URL": "Badge URL",
- "Badge Pending Color": "Badge Pending Farbe",
- "Badge Down Days": "Badge Down Tage",
+ "Badge Label": "Abzeichen Label",
+ "Badge Prefix": "Abzeichen Wert Präfix",
+ "Badge Suffix": "Abzeichen Wert Suffix",
+ "Badge Label Color": "Abzeichen Label Farbe",
+ "Badge Color": "Abzeichen Farbe",
+ "Badge Label Prefix": "Abzeichen Label Präfix",
+ "Badge Up Color": "Abzeichen Up Farbe",
+ "Badge Maintenance Color": "Abzeichen Wartung Farbe",
+ "Badge Warn Color": "Abzeichen Warnung Farbe",
+ "Badge Warn Days": "Abzeichen Warnung Tage",
+ "Badge Style": "Abzeichen Stil",
+ "Badge URL": "Abzeichen URL",
+ "Badge Pending Color": "Abzeichen Pending Farbe",
+ "Badge Down Days": "Abzeichen Down Tage",
"Monitor Setting": "{0}'s Monitor Einstellung",
"Show Clickable Link": "Klickbaren Link anzeigen",
- "Badge Label Suffix": "Badge Label Suffix",
- "Badge value (For Testing only.)": "Badge Wert (nur für Tests)",
+ "Badge Label Suffix": "Abzeichen Label Suffix",
+ "Badge value (For Testing only.)": "Abzeichen Wert (nur für Tests)",
"Show Clickable Link Description": "Wenn diese Option aktiviert ist, kann jeder, der Zugriff auf diese Statusseite hat, auf die Monitor URL zugreifen.",
- "Badge Down Color": "Badge Down Farbe",
+ "Badge Down Color": "Abzeichen Down Farbe",
"Edit Maintenance": "Wartung bearbeiten",
"Group": "Gruppe",
"Monitor Group": "Monitor Gruppe",
@@ -812,9 +811,8 @@
"Json Query": "Json-Abfrage",
"filterActive": "Aktiv",
"filterActivePaused": "Pausiert",
- "jsonQueryDescription": "Führe eine JSON-Abfrage gegen die Antwort durch und prüfe den erwarteten Wert (der Rückgabewert wird zum Vergleich in eine Zeichenkette umgewandelt). Auf {0} findest du die Dokumentation zur Abfragesprache. {1} kannst du Abfragen üben.",
- "Badge Duration (in hours)": "Badge Dauer (in Stunden)",
- "Badge Preview": "Badge Vorschau",
+ "Badge Duration (in hours)": "Abzeichen Dauer (in Stunden)",
+ "Badge Preview": "Abzeichen Vorschau",
"tailscalePingWarning": "Um den Tailscale Ping Monitor nutzen zu können, musst du Uptime Kuma ohne Docker installieren und den Tailscale Client auf dem Server installieren.",
"Server URL should not contain the nfty topic": "Die Server-URL sollte das nfty-Thema nicht enthalten",
"pushDeerServerDescription": "Leer lassen um den offiziellen Server zu verwenden",
@@ -822,8 +820,8 @@
"nostrSender": "Privater Schlüssel des Absenders (nsec)",
"nostrRecipientsHelp": "npub-Format, eine pro Zeile",
"noOrBadCertificate": "Kein/schlechtes Zertifikat",
- "wayToGetFlashDutyKey": "Gehe zu Channel -> (Wähle einen Channel) -> Integrationen -> Neue Integration hinzufügen', füge ein 'Custom Event' hinzu, um eine Push-Adresse zu erhalten, und kopiere den Integrationsschlüssel in die Adresse. Für weitere Informationen besuche bitte",
- "nostrRelays": "Nostr relays",
+ "wayToGetFlashDutyKey": "Gehe zu Channel -> (Wähle einen Channel) -> Integrationen -> Neue Integration hinzufügen', füge ein 'Uptime Kuma' hinzu, um eine Push-Adresse zu erhalten, und kopiere den Integrationsschlüssel in die Adresse. Für weitere Informationen besuche",
+ "nostrRelays": "Nostr Relays",
"nostrRelaysHelp": "Eine Relay-URL pro Zeile",
"nostrRecipients": "Öffentliche Schlüssel des Empfängers (npub)",
"gamedigGuessPort": "Gamedig: Vermuteter Port",
@@ -915,5 +913,207 @@
"Search monitored sites": "Überwachte Seiten durchsuchen",
"statusPageSpecialSlugDesc": "Spezieller Slug {0}: diese Seite wird angezeigt, wenn kein Slug angegeben wird",
"ntfyPriorityHelptextAllEvents": "Alle Ereignisse werden mit der höchsten Priorität gesendet",
- "What is a Remote Browser?": "Was ist ein Remote-Browser?"
+ "What is a Remote Browser?": "Was ist ein Remote-Browser?",
+ "Channel access token (Long-lived)": "Channel-Token (langlebig)",
+ "Your User ID": "Deine Benutzer-ID",
+ "wayToGetHeiiOnCallDetails": "Wie man die Trigger-ID und API-Schlüssel erhält, wird in der {Dokumentation} erklärt",
+ "documentationOf": "{0} Dokumentation",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "Von Telefonnummer / Transmission Path Originating Address (TPOA)",
+ "To Phone Number": "Zur Telefonnummer",
+ "gtxMessagingToHint": "Internationales Format, mit vorangestelltem \"+\" ({e164}, {e212} oder {e214})",
+ "gtxMessagingApiKeyHint": "Du findest deinen API-Schlüssel unter: Meine Routing-Konten > Kontoinformationen anzeigen > API-Anmeldeinformationen > REST-API (v2.x)",
+ "gtxMessagingFromHint": "Auf Mobiltelefonen sieht der Empfänger die TPOA als Absender der Nachricht. Erlaubt sind bis zu 11 alphanumerische Zeichen, eine Kurzwahlnummer, die lokale Langwahlnummer oder internationale Nummern ({e164}, {e212} oder {e214})",
+ "Telephone number": "Telefonnummer",
+ "Originator": "Absender",
+ "cellsyntOriginator": "Sichtbar auf dem Mobiltelefon des Empfängers als Absender der Nachricht. Zulässige Werte und Funktion hängen vom Parametertyp ab.",
+ "Destination": "Ziel",
+ "Allow Long SMS": "Lange SMS zulassen",
+ "cellsyntSplitLongMessages": "Teile lange Nachrichten in bis zu 6 Teile. 153 x 6 = 918 Zeichen.",
+ "max 15 digits": "max. 15 Ziffern",
+ "max 11 alphanumeric characters": "max. 11 alphanumerische Zeichen",
+ "Originator type": "Typ des Absenders",
+ "Alphanumeric (recommended)": "Alphanumerisch (empfohlen)",
+ "cellsyntOriginatortypeAlphanumeric": "Alphanumerische Zeichenfolge (max. 11 alphanumerische Zeichen). Die Empfänger können nicht auf die Nachricht antworten.",
+ "cellsyntOriginatortypeNumeric": "Numerischer Wert (max. 15 Stellen) mit Telefonnummer im internationalen Format ohne Vorwahl 00 (Beispiel UK-Nummer 07920 110 000 sollte auf 447920110000 gesetzt werden). Empfänger können auf die Nachricht antworten.",
+ "cellsyntDestination": "Telefonnummer des Empfängers im internationalen Format mit führender 00, gefolgt von der Landesvorwahl, z. B. 00447920110000 für die britische Nummer 07920 110 000 (insgesamt maximal 17 Ziffern). Maximal 25000 kommagetrennte Empfänger pro HTTP-Anfrage.",
+ "callMeBotGet": "Hier kannst du einen Endpunkt für {0}, {1} und {2} generieren. Denke daran, dass der Durchsatz möglicherweise begrenzt ist. Die Durchsatzbegrenzung ist: {3}",
+ "whapiRecipient": "Telefonnummer / Kontakt-ID / Gruppen-ID",
+ "API URL": "API URL",
+ "wayToWriteWhapiRecipient": "Die Rufnummer mit der internationalen Vorwahl, aber ohne das Pluszeichen am Anfang ({0}), die Kontakt-ID ({1}) oder die Gruppen-ID ({2}).",
+ "wayToGetWhapiUrlAndToken": "Du kannst die API-URL und das Token erhalten, indem du in deinen gewünschten Channel von {0} gehst",
+ "locally configured mail transfer agent": "Lokal konfigurierter Mail-Transfer-Agent",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Gib entweder den Hostnamen des Servers ein, mit dem eine Verbindung hergestellt werden soll, oder {localhost}, wenn ein {local_mta} verwendet werden soll.",
+ "Mentioning": "Erwähnung",
+ "Don't mention people": "Keine Personen erwähnen",
+ "Mention group": "Erwähne {group}",
+ "senderSevenIO": "Absendernummer oder Name",
+ "receiverSevenIO": "Empfangende Nummer",
+ "receiverInfoSevenIO": "Wenn sich die empfangende Nummer nicht in Deutschland befindet, muss der Nummer die Landesvorwahl vorangestellt werden (z.B. für die Landesvorwahl 1 aus den USA muss 117612121212 anstelle von 017612121212 verwendet werden)",
+ "apiKeySevenIO": "SevenIO API Schlüssel",
+ "wayToGetSevenIOApiKey": "Besuche das Dashboard unter app.seven.io > Entwickler > API Schlüssel > grüne Hinzufügen Schaltfläche",
+ "Host URL": "Host URL",
+ "whatHappensAtForumPost": "Erstelle einen neuen Forumsbeitrag. Dadurch werden KEINE Nachrichten in einem bestehenden Beitrag veröffentlicht. Um einen Beitrag in einem bestehenden Beitrag zu erstellen, verwende \"{option}\"",
+ "Command": "Befehl",
+ "Bitrix24 Webhook URL": "Bitrix24 Webhook URL",
+ "wayToGetBitrix24Webhook": "Du kannst einen Webhook erstellen, indem du die Schritte unter {0} befolgst",
+ "bitrix24SupportUserID": "Gib deine User-ID in Bitrix24 ein. Du kannst die ID über den Link erfahren, indem du auf das Profil des Users gehst.",
+ "mongodbCommandDescription": "Führe einen MongoDB Befehl gegen die Datenbank aus. Informationen zu den verfügbaren Befehlen findest du in der {documentation}",
+ "Refresh Interval": "Aktualisierungsintervall",
+ "Refresh Interval Description": "Die Statusseite wird alle {0} Sekunden neu geladen",
+ "Select message type": "Nachrichtentyp auswählen",
+ "Send to channel": "An Kanal senden",
+ "Create new forum post": "Neuen Forumsbeitrag erstellen",
+ "postToExistingThread": "An bestehendes Thema/Forumbeitrag senden",
+ "forumPostName": "Name des Forumsbeitrags",
+ "ignoreTLSErrorGeneral": "TLS/SSL-Fehler für Verbindung ignorieren",
+ "threadForumPostID": "Themen-/Forumbeitrags-ID",
+ "e.g. {discordThreadID}": "z.B. {discordThreadID}",
+ "wayToGetDiscordThreadId": "Das Abrufen einer Thread-/Forumspost-ID ist ähnlich wie das Abrufen einer Channel-ID. Lese mehr darüber, wie man IDs abruft {0}",
+ "smspartnerApiurl": "Den API-Schlüssel findest du im Dashboard unter {0}",
+ "smspartnerPhoneNumber": "Telefonnummer(n)",
+ "smspartnerSenderName": "SMS Absender Name",
+ "smspartnerSenderNameInfo": "Muss zwischen 3..=11 regulären Zeichen sein",
+ "smspartnerPhoneNumberHelptext": "Die Nummer muss das internationale Format {0}, {1} haben. Mehrere Nummern müssen durch {2} getrennt werden",
+ "threemaRecipient": "Empfänger",
+ "threemaRecipientType": "Empfänger Typ",
+ "threemaRecipientTypeIdentity": "Threema-ID",
+ "threemaRecipientTypePhone": "Telefonnummer",
+ "threemaRecipientTypePhoneFormat": "E.164, ohne führendes +",
+ "threemaRecipientTypeEmail": "E-Mail Adresse",
+ "threemaSenderIdentity": "Gateway-ID",
+ "threemaApiAuthenticationSecret": "Gateway-ID Schlüssel",
+ "wayToGetThreemaGateway": "Du kannst dich für Threema Gateway {0} registrieren.",
+ "threemaRecipientTypeIdentityFormat": "8 Zeichen",
+ "threemaSenderIdentityFormat": "8 Zeichen, beginnt normalerweise mit *",
+ "threemaBasicModeInfo": "Hinweis: Diese Integration verwendet Threema Gateway im Basismodus (serverbasierte Verschlüsselung). Weitere Details siehe {0}.",
+ "apiKeysDisabledMsg": "API-Schlüssel sind deaktiviert, da die Authentifizierung deaktiviert ist.",
+ "Json Query Expression": "Json Query Ausdrck",
+ "Cannot connect to the socket server.": "Es kann keine Verbindung zum Socket-Server hergestellt werden.",
+ "not ends with": "endet nicht mit",
+ "signl4Docs": "Weitere Informationen zur Konfiguration von SIGNL4 und zum Abrufen der SIGNL4-Webhook-URL siehe {0}.",
+ "now": "jetzt",
+ "time ago": "vor {0}",
+ "-year": "-Jahr",
+ "and": "und",
+ "jsonQueryDescription": "Parsen und Extrahieren spezifischer Daten aus der JSON-Antwort des Servers mittels JSON-Abfrage oder Verwendung von \"$\" für die rohe Antwort, wenn kein JSON erwartet wird. Das Ergebnis wird dann mit dem erwarteten Wert in Form von Strings verglichen. Siehe {0} für die Dokumentation und verwende {1}, um mit Abfragen zu experimentieren.",
+ "cacheBusterParamDescription": "Zufällig generierter Parameter um den Cache zu umgehen.",
+ "cacheBusterParam": "Den Parameter {0} hinzufügen",
+ "Community String": "Gemeinschaftliche Zeichenkette",
+ "snmpCommunityStringHelptext": "Diese Zeichenfolge dient als Passwort zur Authentifizierung und Kontrolle des Zugriffs auf SNMP-fähigen Geräten. Pass sie an die Konfiguration des SNMP-Geräts an.",
+ "OID (Object Identifier)": "OID (Objekt-Identifikator)",
+ "Condition": "Bedingung",
+ "SNMP Version": "SNMP Version",
+ "Please enter a valid OID.": "Gib eine gültige OID ein.",
+ "Host Onesender": "Host Onesender",
+ "Token Onesender": "Token Onesender",
+ "Recipient Type": "Empfänger Typ",
+ "Private Number": "Private Nummer",
+ "Group ID": "Gruppen ID",
+ "wayToGetOnesenderUrlandToken": "Du kannst die URL und den Token auf der Onesender-Website erhalten. Weitere Infos {0}",
+ "Add Remote Browser": "Remote-Browser hinzufügen",
+ "New Group": "Neue Gruppe",
+ "Group Name": "Gruppenname",
+ "OAuth2: Client Credentials": "OAuth2: Client-Anmeldeinformationen",
+ "snmpOIDHelptext": "Gib die OID für den zu überwachenden Sensor oder Status ein. Verwende Netzwerkverwaltungstools wie MIB-Browser oder SNMP-Software, wenn du bezüglich OID unsicher bist.",
+ "privateOnesenderDesc": "Stell sicher, dass die Telefonnummer gültig ist. Um Nachrichten an private Telefonnummer zu senden, z. B.: 628123456789",
+ "groupOnesenderDesc": "Stell sicher, dass die GroupID gültig ist. Um Nachricht an die Gruppe zu senden, z.B.: 628123456789-342345",
+ "Authentication Method": "Authentifizierungsmethode",
+ "Authorization Header": "Autorisierungs-Header",
+ "Form Data Body": "Formular Data Body",
+ "OAuth Token URL": "OAuth Token URL",
+ "Client ID": "Client ID",
+ "Client Secret": "Client Secret",
+ "OAuth Scope": "OAuth Scope",
+ "Optional: Space separated list of scopes": "Optional: Durch Leerzeichen getrennte Liste der Scopes",
+ "Go back to home page.": "Zurück zur Startseite.",
+ "No tags found.": "Keine Tags gefunden.",
+ "Lost connection to the socket server.": "Verbindung zum Socket-Server verloren.",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "SIGNL4 Webhook URL",
+ "Conditions": "Bedingungen",
+ "conditionAdd": "Bedingung hinzufügen",
+ "conditionDelete": "Bedingung löschen",
+ "conditionAddGroup": "Gruppe hinzufügen",
+ "conditionDeleteGroup": "Gruppe löschen",
+ "conditionValuePlaceholder": "Wert",
+ "equals": "ist gleich",
+ "not equals": "ist nicht gleich",
+ "contains": "enthält",
+ "not contains": "enthält nicht",
+ "starts with": "beginnt mit",
+ "not starts with": "beginnt nicht mit",
+ "ends with": "endet mit",
+ "less than": "weniger als",
+ "greater than": "mehr als",
+ "less than or equal to": "kleiner als oder gleich",
+ "greater than or equal to": "grösser als oder gleich",
+ "record": "Eintrag",
+ "shrinkDatabaseDescriptionSqlite": "Datenbank {vacuum} für SQLite auslösen. {auto_vacuum} ist bereits aktiviert, aber dies defragmentiert die Datenbank nicht und packt auch nicht einzelne Datenbankseiten neu, wie es der Befehl {vacuum} tut.",
+ "ignoredTLSError": "TLS/SSL-Fehler wurden ignoriert",
+ "Debug": "Debug",
+ "Copy": "Kopieren",
+ "CurlDebugInfoOAuth2CCUnsupported": "Der vollständige OAuth-Client-Credential-Flow wird in {curl} nicht unterstützt.{newline}Bitte besorge dir ein Bearer-Token und übergebe ihn über die {oauth2_bearer}-Option.",
+ "Money": "Geld",
+ "Custom sound to override default notification sound": "Benutzerdefinierter Ton, um den standardmässigen Benachrichtigungston zu ersetzen",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "Entweder eine Text-Absender-ID oder eine Telefonnummer im E.164-Format, wenn du Antworten erhalten möchtest.",
+ "CopyToClipboardError": "Konnte nicht in die Zwischenablage kopiert werden: {error}",
+ "CopyToClipboardSuccess": "Kopiert!",
+ "CurlDebugInfo": "Um den Monitor zu debuggen, kannst du dies entweder in das Terminal deines eigenen Rechners oder in das Terminal der Maschine, auf der Uptime Kuma läuft, einfügen und überprüfen, was du anforderst.{newiline}Bitte beachte Netzwerkunterschiede wie {firewalls}, {dns_resolvers} oder {docker_networks}.",
+ "firewalls": "Firewalls",
+ "dns resolvers": "DNS-Resolver",
+ "docker networks": "Docker-Netzwerke",
+ "CurlDebugInfoProxiesUnsupported": "Die Unterstützung von Proxys im oben genannten {curl}-Befehl ist derzeit nicht implementiert.",
+ "Message format": "Nachrichtenformat",
+ "Send rich messages": "Sende Rich-Text-Nachrichten",
+ "Notification Channel": "Benachrichtigungskanal",
+ "Sound": "Benachrichtigungston",
+ "Alphanumerical string and hyphens only": "Nur alphanumerische Zeichen und Bindestriche",
+ "Correct": "Korrekt",
+ "Fail": "Fehlgeschlagen",
+ "Harp": "Harfe",
+ "Reveal": "Enthüllen",
+ "Bubble": "Blase",
+ "Doorbell": "Türklingel",
+ "Flute": "Flöte",
+ "Scifi": "Science Fiction",
+ "Clear": "Klar",
+ "Elevator": "Lift",
+ "Guitar": "Gitarre",
+ "Pop": "Pop",
+ "Time Sensitive (iOS Only)": "Zeitkritisch (nur iOS)",
+ "The phone number of the recipient in E.164 format.": "Die Telefonnummer des Empfängers im E.164-Format.",
+ "Can be found on:": "Ist zu finden auf: {0}",
+ "From": "Von",
+ "Arcade": "Spielhalle",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "Zeitkritische Benachrichtigungen werden sofort zugestellt, auch wenn sich das Gerät im Nicht stören-Modus befindet.",
+ "RabbitMQ Nodes": "RabbitMQ-Verwaltungsknoten",
+ "rabbitmqNodesDescription": "Gib die URL für die RabbitMQ-Verwaltungsknoten einschliesslich Protokoll und Port ein. Beispiel: {0}",
+ "rabbitmqNodesRequired": "Setze die Knoten für diesen Monitor.",
+ "RabbitMQ Username": "RabbitMQ Benutzername",
+ "RabbitMQ Password": "RabbitMQ Passwort",
+ "SendGrid API Key": "SendGrid-API-Schlüssel",
+ "Separate multiple email addresses with commas": "Mehrere E-Mail-Adressen mit Kommas trennen",
+ "rabbitmqNodesInvalid": "Benutze eine vollständig qualifizierte URL (beginnend mit 'http') für RabbitMQ-Knoten.",
+ "rabbitmqHelpText": "Um den Monitor zu benutzen, musst du das Management Plugin in deinem RabbitMQ-Setup aktivieren. Weitere Informationen siehe {rabitmq_documentation}.",
+ "aboutSlackUsername": "Ändert den Anzeigenamen des Absenders. Wenn du jemanden erwähnen möchtest, füge ihn stattdessen in den Namen ein.",
+ "templateHostnameOrURL": "Hostname oder URL",
+ "telegramUseTemplate": "Benutzerdefinierte Nachrichtenvorlage verwenden",
+ "telegramUseTemplateDescription": "Wenn diese Option aktiviert ist, wird die Nachricht unter Verwendung einer benutzerdefinierten Vorlage gesendet.",
+ "templateServiceName": "Service-Name",
+ "YZJ Webhook URL": "YZJ Webhook URL",
+ "YZJ Robot Token": "YZJ Robot Token",
+ "templateStatus": "Status",
+ "telegramTemplateFormatDescription": "Telegram ermöglicht die Verwendung verschiedener Markup-Sprachen für Nachrichten, siehe Telegram {0} für spezifische Details.",
+ "Plain Text": "Nur Text",
+ "Message Template": "Nachrichtenvorlage",
+ "Template Format": "Vorlagenformat",
+ "wayToGetWahaApiUrl": "Die URL deiner WAHA-Instanz.",
+ "wayToGetWahaSession": "Von dieser Sitzung aus sendet WAHA Benachrichtigungen an die Chat-ID. Du kannst sie im WAHA Dashboard finden.",
+ "wahaSession": "Sitzung",
+ "wahaChatId": "Chat-ID (Telefonnummer / Kontakt-ID / Gruppen-ID)",
+ "wayToGetWahaApiKey": "API-Schlüssel ist der Wert der WHATSAPP_API_KEY-Umgebungsvariable, den du beim Ausführen von WAHA verwendet hast.",
+ "wayToWriteWahaChatId": "Die Telefonnummer mit internationaler Vorwahl, ohne den anfänglichen Pluszeichen ({0}), die Kontakt-ID ({1}) oder die Gruppen-ID ({2}). Die Benachrichtigungen werden an diese Chat-ID von der WAHA-Sitzung gesendet.",
+ "telegramServerUrl": "(Optional) Server URL",
+ "telegramServerUrlDescription": "Um die Telegram-Bot-API-Beschränkungen aufzuheben oder in gesperrten Gebieten (China, Iran usw.) Zugriff zu erhalten. Weitere Informationen findest du unter {0}. Standard: {1}",
+ "Font Twemoji by Twitter licensed under": "Schriftart Twemoji von Twitter lizenziert unter"
}
diff --git a/src/lang/de-DE.json b/src/lang/de-DE.json
index 0d2336363..dc07a6262 100644
--- a/src/lang/de-DE.json
+++ b/src/lang/de-DE.json
@@ -1,7 +1,7 @@
{
- "languageName": "Englisch",
+ "languageName": "Deutsch",
"Settings": "Einstellungen",
- "Dashboard": "Dashboard",
+ "Dashboard": "Überblick",
"New Update": "Aktualisierung verfügbar",
"Language": "Sprache",
"Appearance": "Erscheinungsbild",
@@ -107,7 +107,7 @@
"deleteNotificationMsg": "Möchtest du diese Benachrichtigung wirklich für alle Monitore löschen?",
"resolverserverDescription": "Cloudflare ist als der Standardserver festgelegt. Dieser kann jederzeit geändert werden.",
"Resolver Server": "Auflösungsserver",
- "rrtypeDescription": "Wähle den RR-Typ aus, welchen du überwachen möchtest.",
+ "rrtypeDescription": "Wähle den RR-Typ aus, welchen du überwachen möchtest",
"Last Result": "Letztes Ergebnis",
"pauseMonitorMsg": "Bist du sicher, dass du den Monitor pausieren möchtest?",
"clearEventsMsg": "Bist du sicher, dass du alle Ereignisse für diesen Monitor löschen möchtest?",
@@ -282,7 +282,7 @@
"appriseInstalled": "Apprise ist installiert.",
"appriseNotInstalled": "Apprise ist nicht installiert. {0}",
"Access Token": "Zugriffstoken",
- "Channel access token": "Channel access token",
+ "Channel access token": "Kanalzugriffstoken",
"Line Developers Console": "Zeile Entwickler Konsole",
"lineDevConsoleTo": "Line Entwicklerkonsole - {0}",
"Basic Settings": "Grundeinstellungen",
@@ -337,7 +337,7 @@
"primary": "primär",
"light": "hell",
"dark": "dunkel",
- "Post": "Eintrag",
+ "Post": "Veröffentlichen",
"Please input title and content": "Bitte Titel und Inhalt eingeben",
"Created": "Erstellt",
"Last Updated": "Zuletzt aktualisiert",
@@ -355,7 +355,6 @@
"Discard": "Verwerfen",
"Cancel": "Abbrechen",
"Powered by": "Erstellt mit",
- "shrinkDatabaseDescription": "Löse VACUUM für die SQLite Datenbank aus. Wenn die Datenbank nach 1.10.0 erstellt wurde, ist AUTO_VACUUM bereits aktiviert und diese Aktion ist nicht erforderlich.",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "API Benutzername (inkl. webapi_ prefix)",
"serwersmsAPIPassword": "API Passwort",
@@ -567,7 +566,7 @@
"trustProxyDescription": "Vertraue 'X-Forwarded-*' headern. Wenn man die richtige Client IP haben möchte und Uptime Kuma hinter einem Proxy wie Nginx oder Apache läuft, sollte dies aktiviert werden.",
"wayToGetLineNotifyToken": "Du kannst hier ein Token erhalten: {0}",
"Examples": "Beispiele",
- "Home Assistant URL": "Home Assistant URL",
+ "Home Assistant URL": "Heimassistent-URL",
"Long-Lived Access Token": "Lange gültiges Access Token",
"Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Lange gültige Access Token können durch klicken auf den Profilnamen (unten links) und dann einen Klick auf Create Token am Ende erstellt werden. ",
"Notification Service": "Benachrichtigungsdienst",
@@ -632,7 +631,7 @@
"Schedule Maintenance": "Wartung planen",
"Edit Maintenance": "Wartung bearbeiten",
"pauseMaintenanceMsg": "Möchtest du wirklich pausieren?",
- "maintenanceStatus-under-maintenance": "Unter Wartung",
+ "maintenanceStatus-under-maintenance": "In Wartung",
"maintenanceStatus-inactive": "Inaktiv",
"maintenanceStatus-scheduled": "Geplant",
"maintenanceStatus-ended": "Ende",
@@ -654,7 +653,7 @@
"dnsCacheDescription": "In einigen IPv6-Umgebungen funktioniert es möglicherweise nicht. Deaktiviere es, wenn Probleme auftreten.",
"loadingError": "Die Daten konnten nicht abgerufen werden, bitte später noch einmal versuchen.",
"confirmUninstallPlugin": "Möchtest du dieses Plugin wirklich deinstallieren?",
- "grpcMethodDescription": "Der Name der Methode wird in das \"camelCase\"-Format konvertiert (z.B. sayHello, check, etc.)",
+ "grpcMethodDescription": "Der Name der Methode wird in das \"camelCase\"-Format konvertiert z.B. sayHello, check, etc.",
"Passive Monitor Type": "Passiver Monitortyp",
"Specific Monitor Type": "Spezifischer Monitortyp",
"webhookAdditionalHeadersTitle": "Zusätzliche Header",
@@ -758,29 +757,29 @@
"cronSchedule": "Zeitplan: ",
"invalidCronExpression": "Ungültiger Cron-Ausdruck: {0}",
"Show Clickable Link": "Klickbaren Link anzeigen",
- "Open Badge Generator": "Open Badge Generator",
- "Badge Generator": "{0}'s Badge Generator",
- "Badge Type": "Badge Typ",
+ "Open Badge Generator": "Abzeichengenerator öffnen",
+ "Badge Generator": "{0}'s Abzeichen Generator",
+ "Badge Type": "Abzeichen Typ",
"Badge Duration": "Badge Dauer",
- "Badge Label": "Badge Label",
+ "Badge Label": "Abzeichen Label",
"Show Clickable Link Description": "Wenn diese Option aktiviert ist, kann jeder, der Zugriff auf diese Statusseite hat, auf die Monitor-URL zugreifen.",
- "Badge Label Color": "Badge Label Farbe",
- "Badge Color": "Badge Farbe",
- "Badge Label Prefix": "Badge Label Präfix",
- "Badge Label Suffix": "Badge Label Suffix",
- "Badge Maintenance Color": "Badge Wartung Farbe",
- "Badge Warn Color": "Badge Warnung Farbe",
- "Badge Style": "Badge Stil",
- "Badge value (For Testing only.)": "Badge Wert (nur für Tests)",
- "Badge URL": "Badge URL",
- "Badge Up Color": "Badge Up Farbe",
- "Badge Down Color": "Badge Down Farbe",
- "Badge Pending Color": "Badge Pending Farbe",
- "Badge Down Days": "Badge Down Tage",
+ "Badge Label Color": "Abzeichen Label Farbe",
+ "Badge Color": "Abzeichen Farbe",
+ "Badge Label Prefix": "Abzeichen Label Präfix",
+ "Badge Label Suffix": "Abzeichen Label Suffix",
+ "Badge Maintenance Color": "Abzeichen Wartung Farbe",
+ "Badge Warn Color": "Abzeichen Warnung Farbe",
+ "Badge Style": "Abzeichen Stil",
+ "Badge value (For Testing only.)": "Abzeichen Wert (nur für Tests)",
+ "Badge URL": "Abzeichen URL",
+ "Badge Up Color": "Abzeichen Up Farbe",
+ "Badge Down Color": "Abzeichen Down Farbe",
+ "Badge Pending Color": "Abzeichen Pending Farbe",
+ "Badge Down Days": "Abzeichen Down Tage",
"Monitor Setting": "{0}'s Monitor Einstellung",
- "Badge Prefix": "Badge Wert Präfix",
- "Badge Suffix": "Badge Wert Suffix",
- "Badge Warn Days": "Badge Warnung Tage",
+ "Badge Prefix": "Abzeichen Wert Präfix",
+ "Badge Suffix": "Abzeichen Wert Suffix",
+ "Badge Warn Days": "Abzeichen Warnung Tage",
"Group": "Gruppe",
"Monitor Group": "Monitor Gruppe",
"noGroupMonitorMsg": "Nicht verfügbar. Erstelle zunächst einen Gruppenmonitor.",
@@ -794,8 +793,8 @@
"webhookBodyPresetOption": "Voreinstellung - {0}",
"webhookBodyCustomOption": "Benutzerdefinierter Body",
"Request Body": "Anforderungstext",
- "Badge Duration (in hours)": "Badge Dauer (in Stunden)",
- "Badge Preview": "Badge Vorschau",
+ "Badge Duration (in hours)": "Abzeichen Dauer (in Stunden)",
+ "Badge Preview": "Abzeichen Vorschau",
"twilioApiKey": "API-Schlüssel (optional)",
"Notify Channel": "Notify Kanal",
"Enter the list of brokers": "Gib die Liste der Broker ein",
@@ -808,7 +807,7 @@
"Pick a SASL Mechanism...": "Wähle ein SASL Mechanismus…",
"Authorization Identity": "Authorization Identity",
"AccessKey Id": "AccessKey Id",
- "Secret AccessKey": "Secret AccessKey",
+ "Secret AccessKey": "Geheimer Zugriffsschlüssel",
"Session Token": "Sitzungs-Token",
"aboutNotifyChannel": "Notify Kanal löst eine Desktop- oder Mobilbenachrichtigung für alle Mitglieder des Kanals aus, unabhängig davon, ob deine Verfügbarkeit auf aktiv oder abwesend eingestellt ist.",
"Kafka Brokers": "Kafka Brokers",
@@ -817,12 +816,11 @@
"filterActivePaused": "Pausiert",
"Expected Value": "Erwarteter Wert",
"Json Query": "Json-Abfrage",
- "jsonQueryDescription": "Führe eine JSON-Abfrage gegen die Antwort durch und prüfe den erwarteten Wert (der Rückgabewert wird zum Vergleich in eine Zeichenkette umgewandelt). Auf {0} findest du die Dokumentation zur Abfragesprache. {1} kannst du Abfragen üben.",
"tailscalePingWarning": "Um den Tailscale Ping Monitor nutzen zu können, musst du Uptime Kuma ohne Docker installieren und den Tailscale Client auf dem Server installieren.",
"Server URL should not contain the nfty topic": "Die Server-URL sollte das nfty-Thema nicht enthalten",
"pushDeerServerDescription": "Leer lassen um den offiziellen Server zu verwenden",
"FlashDuty Severity": "Schweregrad",
- "nostrRelays": "Nostr relays",
+ "nostrRelays": "Nostr Relays",
"gamedigGuessPort": "Gamedig: Vermuteter Port",
"Request Timeout": "Zeitüberschreitung der Anfrage",
"styleElapsedTimeShowNoLine": "Anzeigen (keine Zeile)",
@@ -832,7 +830,7 @@
"nostrRelaysHelp": "Eine Relay-URL pro Zeile",
"nostrSender": "Privater Schlüssel des Absenders (nsec)",
"gamedigGuessPortDescription": "Der vom Valve Server Query Protocol verwendete Port kann sich vom Port des Clients unterscheiden. Versuche dies, wenn der Monitor keine Verbindung zum Server herstellen kann.",
- "wayToGetFlashDutyKey": "Gehe zu Channel -> (Wähle einen Channel) -> Integrationen -> Neue Integration hinzufügen', füge ein 'Custom Event' hinzu, um eine Push-Adresse zu erhalten, und kopiere den Integrationsschlüssel in die Adresse. Für weitere Informationen besuche bitte",
+ "wayToGetFlashDutyKey": "Gehe zu Channel -> (Wähle einen Channel) -> Integrationen -> Neue Integration hinzufügen', füge ein 'Uptime Kuma' hinzu, um eine Push-Adresse zu erhalten, und kopiere den Integrationsschlüssel in die Adresse. Für weitere Informationen besuche",
"timeoutAfter": "Zeitüberschreitung nach {0} Sekunden",
"styleElapsedTimeShowWithLine": "Anzeigen (mit Zeile)",
"styleElapsedTime": "Verstrichene Zeit unter der Prüfintervallleiste",
@@ -898,11 +896,11 @@
"Browser Screenshot": "Browser Screenshot",
"setup a new monitor group": "Neue Monitorgruppe einrichten",
"Add a new expiry notification day": "Neuen Tag für Auslaufbenachrichtigung hinzufügen",
- "Remote Browsers": "Remote Browsers",
+ "Remote Browsers": "Remote Browser",
"Remote Browser": "Remote Browser",
"Add a Remote Browser": "Remote Browser hinzufügen",
"Remote Browser not found!": "Remote Browser nicht gefunden!",
- "remoteBrowsersDescription": "Remote Browser sind eine Alternative zur lokalen Ausführung von Chromium. Einrichtung mit einem Dienst wie browserless.io oder verbinde mit deinem Eigenen.",
+ "remoteBrowsersDescription": "Remote Browser sind eine Alternative zur lokalen Ausführung von Chromium. Einrichtung mit einem Dienst wie browserless.io oder verbinde mit deinem Eigenen",
"self-hosted container": "Selbstverwalteter Container",
"remoteBrowserToggle": "Standardmäßig läuft Chromium innerhalb des Uptime-Kuma-Containers. Du kannst einen Remote-Browser verwenden, indem du diesen Schalter umlegst.",
"useRemoteBrowser": "Verwende einen Remote Browser",
@@ -918,5 +916,207 @@
"statusPageSpecialSlugDesc": "Spezieller Slug {0}: diese Seite wird angezeigt, wenn kein Slug angegeben wird",
"ntfyPriorityHelptextAllEvents": "Alle Ereignisse werden mit der höchsten Priorität gesendet",
"ntfyPriorityHelptextAllExceptDown": "Alle Ereignisse werden mit dieser Priorität gesendet, außer {0}-Ereignisse, die eine Priorität von {1} haben",
- "What is a Remote Browser?": "Was ist ein Remote-Browser?"
+ "What is a Remote Browser?": "Was ist ein Remote-Browser?",
+ "Channel access token (Long-lived)": "Channel-Token (langlebig)",
+ "Your User ID": "Deine Benutzer-ID",
+ "wayToGetHeiiOnCallDetails": "Wie man die Trigger-ID und API-Schlüssel erhält, wird in der {Dokumentation} erklärt",
+ "documentationOf": "{0} Dokumentation",
+ "gtxMessagingToHint": "Internationales Format, mit vorangestelltem \"+\" ({e164}, {e212} oder {e214})",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "Von Telefonnummer / Transmission Path Originating Address (TPOA)",
+ "To Phone Number": "Zur Telefonnummer",
+ "gtxMessagingApiKeyHint": "Du findest deinen API-Schlüssel unter: Meine Routing-Konten > Kontoinformationen anzeigen > API-Anmeldeinformationen > REST-API (v2.x)",
+ "gtxMessagingFromHint": "Auf Mobiltelefonen sieht der Empfänger die TPOA als Absender der Nachricht. Erlaubt sind bis zu 11 alphanumerische Zeichen, eine Kurzwahlnummer, die lokale Langwahlnummer oder internationale Nummern ({e164}, {e212} oder {e214})",
+ "Alphanumeric (recommended)": "Alphanumerisch (empfohlen)",
+ "Telephone number": "Telefonnummer",
+ "Originator": "Absender",
+ "cellsyntOriginator": "Sichtbar auf dem Mobiltelefon des Empfängers als Absender der Nachricht. Zulässige Werte und Funktion hängen vom Parametertyp ab.",
+ "Destination": "Ziel",
+ "Allow Long SMS": "Lange SMS zulassen",
+ "cellsyntSplitLongMessages": "Teile lange Nachrichten in bis zu 6 Teile. 153 x 6 = 918 Zeichen.",
+ "max 15 digits": "max. 15 Ziffern",
+ "max 11 alphanumeric characters": "max. 11 alphanumerische Zeichen",
+ "Originator type": "Typ des Absenders",
+ "cellsyntOriginatortypeAlphanumeric": "Alphanumerische Zeichenfolge (max. 11 alphanumerische Zeichen). Die Empfänger können nicht auf die Nachricht antworten.",
+ "cellsyntOriginatortypeNumeric": "Numerischer Wert (max. 15 Stellen) mit Telefonnummer im internationalen Format ohne Vorwahl 00 (Beispiel UK-Nummer 07920 110 000 sollte auf 447920110000 gesetzt werden). Empfänger können auf die Nachricht antworten.",
+ "cellsyntDestination": "Telefonnummer des Empfängers im internationalen Format mit führender 00, gefolgt von der Landesvorwahl, z. B. 00447920110000 für die britische Nummer 07920 110 000 (insgesamt maximal 17 Ziffern). Maximal 25000 kommagetrennte Empfänger pro HTTP-Anfrage.",
+ "callMeBotGet": "Hier kannst du einen Endpunkt für {0}, {1} und {2} generieren. Denke daran, dass der Durchsatz möglicherweise begrenzt ist. Die Durchsatzbegrenzung ist: {3}",
+ "wayToGetWhapiUrlAndToken": "Du kannst die API-URL und das Token erhalten, indem du in deinen gewünschten Channel von {0} gehst",
+ "whapiRecipient": "Telefonnummer / Kontakt-ID / Gruppen-ID",
+ "API URL": "API URL",
+ "wayToWriteWhapiRecipient": "Die Rufnummer mit der internationalen Vorwahl, aber ohne das Pluszeichen am Anfang ({0}), die Kontakt-ID ({1}) oder die Gruppen-ID ({2}).",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Gib entweder den Hostnamen des Servers ein, mit dem eine Verbindung hergestellt werden soll, oder {localhost}, wenn ein {local_mta} verwendet werden soll.",
+ "locally configured mail transfer agent": "Lokal konfigurierter Mail-Transfer-Agent",
+ "Mentioning": "Erwähnung",
+ "Don't mention people": "Keine Personen erwähnen",
+ "Mention group": "Erwähne {group}",
+ "senderSevenIO": "Absendernummer oder Name",
+ "receiverSevenIO": "Empfangende Nummer",
+ "apiKeySevenIO": "SevenIO API Schlüssel",
+ "wayToGetSevenIOApiKey": "Besuche das Dashboard unter app.seven.io > Entwickler > API Schlüssel > grüne Hinzufügen Schaltfläche",
+ "receiverInfoSevenIO": "Wenn sich die empfangende Nummer nicht in Deutschland befindet, muss der Nummer die Landesvorwahl vorangestellt werden (z.B. für die Landesvorwahl 1 aus den USA muss 117612121212 anstelle von 017612121212 verwendet werden)",
+ "Host URL": "Host URL",
+ "whatHappensAtForumPost": "Erstelle einen neuen Forumsbeitrag. Dadurch werden KEINE Nachrichten in einem bestehenden Beitrag veröffentlicht. Um einen Beitrag in einem bestehenden Beitrag zu erstellen, verwende \"{option}\"",
+ "Bitrix24 Webhook URL": "Bitrix24 Webhook URL",
+ "wayToGetBitrix24Webhook": "Du kannst einen Webhook erstellen, indem du die Schritte unter {0} befolgst",
+ "bitrix24SupportUserID": "Gib deine User-ID in Bitrix24 ein. Du kannst die ID über den Link erfahren, indem du auf das Profil des Users gehst.",
+ "Command": "Befehl",
+ "mongodbCommandDescription": "Führe einen MongoDB Befehl gegen die Datenbank aus. Informationen zu den verfügbaren Befehlen findest du in der {documentation}",
+ "Refresh Interval": "Aktualisierungsintervall",
+ "Refresh Interval Description": "Die Statusseite wird alle {0} Sekunden neu geladen",
+ "Select message type": "Nachrichtentyp auswählen",
+ "Send to channel": "An Kanal senden",
+ "ignoreTLSErrorGeneral": "TLS/SSL-Fehler für Verbindung ignorieren",
+ "Create new forum post": "Neuen Forumsbeitrag erstellen",
+ "postToExistingThread": "An bestehendes Thema/Forumbeitrag senden",
+ "forumPostName": "Name des Forumsbeitrags",
+ "threadForumPostID": "Themen-/Forumbeitrags-ID",
+ "e.g. {discordThreadID}": "z.B. {discordThreadID}",
+ "wayToGetDiscordThreadId": "Das Abrufen einer Thread-/Forumspost-ID ist ähnlich wie das Abrufen einer Channel-ID. Lese mehr darüber, wie man IDs abruft {0}",
+ "smspartnerPhoneNumber": "Telefonnummer(n)",
+ "smspartnerSenderName": "SMS Absender Name",
+ "smspartnerSenderNameInfo": "Muss zwischen 3..=11 regulären Zeichen sein",
+ "smspartnerApiurl": "Den API-Schlüssel findest du im Dashboard unter {0}",
+ "smspartnerPhoneNumberHelptext": "Die Nummer muss das internationale Format {0}, {1} haben. Mehrere Nummern müssen durch {2} getrennt werden",
+ "threemaRecipient": "Empfänger",
+ "threemaRecipientType": "Empfänger Typ",
+ "threemaRecipientTypeIdentity": "Threema-ID",
+ "threemaRecipientTypePhone": "Telefonnummer",
+ "threemaRecipientTypePhoneFormat": "E.164, ohne führendes +",
+ "threemaRecipientTypeEmail": "E-Mail Adresse",
+ "threemaSenderIdentity": "Gateway-ID",
+ "threemaApiAuthenticationSecret": "Gateway-ID Schlüssel",
+ "wayToGetThreemaGateway": "Du kannst dich für Threema Gateway {0} registrieren.",
+ "threemaRecipientTypeIdentityFormat": "8 Zeichen",
+ "threemaSenderIdentityFormat": "8 Zeichen, beginnt normalerweise mit *",
+ "threemaBasicModeInfo": "Hinweis: Diese Integration verwendet Threema Gateway im Basismodus (serverbasierte Verschlüsselung). Weitere Details siehe {0}.",
+ "apiKeysDisabledMsg": "API-Schlüssel sind deaktiviert, da die Authentifizierung deaktiviert ist.",
+ "wayToGetOnesenderUrlandToken": "Du kannst die URL und den Token auf der Onesender-Website erhalten. Weitere Infos {0}",
+ "Lost connection to the socket server.": "Verbindung zum Socket-Server verloren.",
+ "conditionDeleteGroup": "Gruppe löschen",
+ "greater than": "mehr als",
+ "snmpOIDHelptext": "Gib die OID für den zu überwachenden Sensor oder Status ein. Verwende Netzwerkverwaltungstools wie MIB-Browser oder SNMP-Software, wenn du bezüglich OID unsicher bist.",
+ "signl4Docs": "Weitere Informationen zur Konfiguration von SIGNL4 und zum Abrufen der SIGNL4-Webhook-URL siehe {0}.",
+ "now": "jetzt",
+ "time ago": "vor {0}",
+ "Json Query Expression": "Json Query Ausdrck",
+ "-year": "-Jahr",
+ "and": "und",
+ "jsonQueryDescription": "Parsen und Extrahieren spezifischer Daten aus der JSON-Antwort des Servers mittels JSON-Abfrage oder Verwendung von \"$\" für die rohe Antwort, wenn kein JSON erwartet wird. Das Ergebnis wird dann mit dem erwarteten Wert in Form von Strings verglichen. Siehe {0} für die Dokumentation und verwende {1}, um mit Abfragen zu experimentieren.",
+ "cacheBusterParamDescription": "Zufällig generierter Parameter um den Cache zu umgehen.",
+ "cacheBusterParam": "Den Parameter {0} hinzufügen",
+ "Community String": "Gemeinschaftliche Zeichenkette",
+ "snmpCommunityStringHelptext": "Diese Zeichenfolge dient als Passwort zur Authentifizierung und Kontrolle des Zugriffs auf SNMP-fähigen Geräten. Pass sie an die Konfiguration des SNMP-Geräts an.",
+ "OID (Object Identifier)": "OID (Objekt-Identifikator)",
+ "Condition": "Bedingung",
+ "SNMP Version": "SNMP Version",
+ "Please enter a valid OID.": "Gib eine gültige OID ein.",
+ "Host Onesender": "Host Onesender",
+ "Token Onesender": "Token Onesender",
+ "Recipient Type": "Empfänger Typ",
+ "Private Number": "Private Nummer",
+ "Group ID": "Gruppen ID",
+ "privateOnesenderDesc": "Stell sicher, dass die Telefonnummer gültig ist. Um Nachrichten an private Telefonnummer zu senden, z. B.: 628123456789",
+ "groupOnesenderDesc": "Stell sicher, dass die GroupID gültig ist. Um Nachricht an die Gruppe zu senden, z.B.: 628123456789-342345",
+ "Add Remote Browser": "Remote-Browser hinzufügen",
+ "New Group": "Neue Gruppe",
+ "Group Name": "Gruppenname",
+ "OAuth2: Client Credentials": "OAuth2: Client-Anmeldeinformationen",
+ "Authentication Method": "Authentifizierungsmethode",
+ "Authorization Header": "Autorisierungs-Header",
+ "Form Data Body": "Formular Data Body",
+ "OAuth Token URL": "OAuth Token URL",
+ "Client ID": "Client ID",
+ "Client Secret": "Client Secret",
+ "OAuth Scope": "OAuth Scope",
+ "Optional: Space separated list of scopes": "Optional: Durch Leerzeichen getrennte Liste der Scopes",
+ "Go back to home page.": "Zurück zur Startseite.",
+ "No tags found.": "Keine Tags gefunden.",
+ "Cannot connect to the socket server.": "Es kann keine Verbindung zum Socket-Server hergestellt werden.",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "SIGNL4 Webhook URL",
+ "Conditions": "Bedingungen",
+ "conditionAdd": "Bedingung hinzufügen",
+ "conditionDelete": "Bedingung löschen",
+ "conditionAddGroup": "Gruppe hinzufügen",
+ "conditionValuePlaceholder": "Wert",
+ "equals": "ist gleich",
+ "not equals": "ist nicht gleich",
+ "contains": "enthält",
+ "not contains": "enthält nicht",
+ "starts with": "beginnt mit",
+ "not starts with": "beginnt nicht mit",
+ "ends with": "endet mit",
+ "not ends with": "endet nicht mit",
+ "less than": "weniger als",
+ "less than or equal to": "kleiner als oder gleich",
+ "greater than or equal to": "größer als oder gleich",
+ "record": "Eintrag",
+ "shrinkDatabaseDescriptionSqlite": "Datenbank {vacuum} für SQLite auslösen. {auto_vacuum} ist bereits aktiviert, aber dies defragmentiert die Datenbank nicht und packt auch nicht einzelne Datenbankseiten neu, wie es der Befehl {vacuum} tut.",
+ "ignoredTLSError": "TLS/SSL-Fehler wurden ignoriert",
+ "Message format": "Nachrichtenformat",
+ "Notification Channel": "Benachrichtigungskanal",
+ "Custom sound to override default notification sound": "Benutzerdefinierter Ton, um den standardmäßigen Benachrichtigungston zu ersetzen",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "Zeitkritische Benachrichtigungen werden sofort zugestellt, auch wenn sich das Gerät im Nicht stören-Modus befindet.",
+ "Debug": "Debug",
+ "Copy": "Kopieren",
+ "CopyToClipboardError": "Konnte nicht in die Zwischenablage kopiert werden: {error}",
+ "CopyToClipboardSuccess": "Kopiert!",
+ "CurlDebugInfo": "Um den Monitor zu debuggen, kannst du dies entweder in das Terminal deines eigenen Rechners oder in das Terminal der Maschine, auf der Uptime Kuma läuft, einfügen und überprüfen, was du anforderst.{newiline}Bitte beachte Netzwerkunterschiede wie {firewalls}, {dns_resolvers} oder {docker_networks}.",
+ "firewalls": "Firewalls",
+ "dns resolvers": "DNS-Resolver",
+ "docker networks": "Docker-Netzwerke",
+ "CurlDebugInfoOAuth2CCUnsupported": "Der vollständige OAuth-Client-Credential-Flow wird in {curl} nicht unterstützt.{newline}Bitte besorge dir ein Bearer-Token und übergebe ihn über die {oauth2_bearer}-Option.",
+ "CurlDebugInfoProxiesUnsupported": "Die Unterstützung von Proxys im oben genannten {curl}-Befehl ist derzeit nicht implementiert.",
+ "Alphanumerical string and hyphens only": "Nur alphanumerische Zeichen und Bindestriche",
+ "Correct": "Korrekt",
+ "Harp": "Harfe",
+ "Doorbell": "Türklingel",
+ "Flute": "Flöte",
+ "Money": "Geld",
+ "Scifi": "Science Fiction",
+ "Elevator": "Aufzug",
+ "Guitar": "Gitarre",
+ "Sound": "Benachrichtigungston",
+ "Time Sensitive (iOS Only)": "Zeitkritisch (nur iOS)",
+ "From": "Von",
+ "Can be found on:": "Ist zu finden auf: {0}",
+ "The phone number of the recipient in E.164 format.": "Die Telefonnummer des Empfängers im E.164-Format.",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "Entweder eine Text-Absender-ID oder eine Telefonnummer im E.164-Format, wenn du Antworten erhalten möchtest.",
+ "Send rich messages": "Sende Rich-Text-Nachrichten",
+ "Fail": "Fehlgeschlagen",
+ "Reveal": "Enthüllen",
+ "Bubble": "Blase",
+ "Clear": "Klar",
+ "Pop": "Pop",
+ "Arcade": "Spielhalle",
+ "rabbitmqNodesRequired": "Setze die Knoten für diesen Monitor.",
+ "RabbitMQ Username": "RabbitMQ Benutzername",
+ "RabbitMQ Password": "RabbitMQ Passwort",
+ "SendGrid API Key": "SendGrid-API-Schlüssel",
+ "Separate multiple email addresses with commas": "Mehrere E-Mail-Adressen mit Kommas trennen",
+ "RabbitMQ Nodes": "RabbitMQ-Verwaltungsknoten",
+ "rabbitmqNodesDescription": "Gib die URL für die RabbitMQ-Verwaltungsknoten einschließlich Protokoll und Port ein. Beispiel: {0}",
+ "rabbitmqNodesInvalid": "Benutze eine vollständig qualifizierte URL (beginnend mit 'http') für RabbitMQ-Knoten.",
+ "rabbitmqHelpText": "Um den Monitor zu benutzen, musst du das Management Plugin in deinem RabbitMQ-Setup aktivieren. Weitere Informationen siehe {rabitmq_documentation}.",
+ "aboutSlackUsername": "Ändert den Anzeigenamen des Absenders. Wenn du jemanden erwähnen möchtest, füge ihn stattdessen in den Namen ein.",
+ "templateHostnameOrURL": "Hostname oder URL",
+ "telegramUseTemplate": "Benutzerdefinierte Nachrichtenvorlage verwenden",
+ "telegramTemplateFormatDescription": "Telegram ermöglicht die Verwendung verschiedener Markup-Sprachen für Nachrichten, siehe Telegram {0} für spezifische Details.",
+ "Plain Text": "Nur Text",
+ "templateServiceName": "Service-Name",
+ "YZJ Webhook URL": "YZJ Webhook URL",
+ "YZJ Robot Token": "YZJ Robot Token",
+ "templateStatus": "Status",
+ "telegramUseTemplateDescription": "Wenn diese Option aktiviert ist, wird die Nachricht unter Verwendung einer benutzerdefinierten Vorlage gesendet.",
+ "Message Template": "Nachrichtenvorlage",
+ "Template Format": "Vorlagenformat",
+ "wayToGetWahaApiUrl": "Die URL deiner WAHA-Instanz.",
+ "wahaSession": "Sitzung",
+ "wahaChatId": "Chat-ID (Telefonnummer / Kontakt-ID / Gruppen-ID)",
+ "wayToGetWahaApiKey": "API-Schlüssel ist der Wert der WHATSAPP_API_KEY-Umgebungsvariable, den du beim Ausführen von WAHA verwendet hast.",
+ "wayToGetWahaSession": "Von dieser Sitzung aus sendet WAHA Benachrichtigungen an die Chat-ID. Du kannst sie im WAHA Dashboard finden.",
+ "wayToWriteWahaChatId": "Die Telefonnummer mit internationaler Vorwahl, ohne den anfänglichen Pluszeichen ({0}), die Kontakt-ID ({1}) oder die Gruppen-ID ({2}). Die Benachrichtigungen werden an diese Chat-ID von der WAHA-Sitzung gesendet.",
+ "telegramServerUrlDescription": "Um die Telegram-Bot-API-Beschränkungen aufzuheben oder in gesperrten Gebieten (China, Iran usw.) Zugriff zu erhalten. Weitere Informationen findest du unter {0}. Standard: {1}",
+ "telegramServerUrl": "(Optional) Server URL",
+ "Font Twemoji by Twitter licensed under": "Schriftart Twemoji von Twitter lizenziert unter"
}
diff --git a/src/lang/el-GR.json b/src/lang/el-GR.json
index 7857e06e9..127666382 100644
--- a/src/lang/el-GR.json
+++ b/src/lang/el-GR.json
@@ -31,13 +31,13 @@
"confirmDisableTwoFAMsg": "Είστε βέβαιοι ότι θέλετε να απενεργοποιήσετε το 2FA;",
"Settings": "Ρυθμίσεις",
"Dashboard": "Πίνακας",
- "New Update": "Νέα αναβάθμιση",
+ "New Update": "Νέα ενημέρωση",
"Language": "Γλώσσα",
"Appearance": "Εμφάνιση",
"Theme": "Θέμα",
"General": "Γενικά",
"Primary Base URL": "Κύρια βασική διεύθυνση URL",
- "Version": "Εκδοχή",
+ "Version": "Έκδοση",
"Check Update On GitHub": "Ελέγξτε για Ενημέρωση στο GitHub",
"List": "Λίστα",
"Add": "Προσθήκη",
@@ -56,7 +56,7 @@
"Resume": "Συνέχιση",
"Edit": "Επεξεργασία",
"Delete": "Διαγράφη",
- "Current": "Τρέχον",
+ "Current": "Τωρινό",
"Uptime": "Χρόνος λειτουργίας",
"Cert Exp.": "Λήξη Πιστοπ.",
"day": "ημέρα | ημέρες",
@@ -363,7 +363,6 @@
"Discard": "Απορρίψει",
"Cancel": "Ακυρο",
"Powered by": "Με την υποστήριξη του",
- "shrinkDatabaseDescription": "Ενεργοποίηση βάσης δεδομένων VACUUM για SQLite. Εάν η βάση δεδομένων σας έχει δημιουργηθεί μετά την έκδοση 1.10.0, το AUTO_VACUUM είναι ήδη ενεργοποιημένο και αυτή η ενέργεια δεν χρειάζεται.",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "API Username (incl. webapi_ prefix)",
"serwersmsAPIPassword": "API κωδικός πρόσβασης",
@@ -700,13 +699,13 @@
"Add New Tag": "Πρόσθεσε νέα ετικέτα",
"setupDatabaseMariaDB": "Συνδεθείτε με εξωτερική βάση δεδομένων MariaDB. Θα πρέπει να ορίσετε τα στοιχεία σύνδεσης της βάσης δεδομένων.",
"setupDatabaseChooseDatabase": "Ποια βάση δεδομένων θέλετε να χρησιμοποιήσετε;",
- "setupDatabaseEmbeddedMariaDB": "Δεν χρειάζεται να ρυθμίσετε τίποτε. Η εικόνα Docker έχει ενσωματώσει και ρυθμίσει μια βάση δεδομένων MariaDB για εσάς αυτόματα. Το Uptime Kuma θα συνδεθεί με την βάση δεδομένων μέσω unix socket.",
+ "setupDatabaseEmbeddedMariaDB": "Δεν χρειάζεται να ορίσετε τίποτε. Το Docker Image έχει ενθέσειι και διαμορφώσει μια βάση δεδομένων MariaDB για εσάς αυτόματα. Το Uptime Kuma θα συνδεθεί με αυτήν την βάση δεδομένων μέσω unix socket.",
"setupDatabaseSQLite": "Ένα απλό αρχείο βάσης δεδομένων, προτεινόμενο για εγκαταστάσεις μικρής κλίμακας. Πρίν από την έκδοση 2.0.0, το Uptime Kuma χρησιμοποιούσε το SQLite ως την προεπιλεγμένη βάση δεδομένων.",
"Cannot connect to the socket server": "Δεν είναι δυνατή η σύνδεση με τον διακομιστή socket",
- "Reconnecting...": "Επανασύνδεση",
+ "Reconnecting...": "Επανασύνδεση...",
"Home": "Αρχική",
- "settingUpDatabaseMSG": "Ρύθμιση της βάσης δεδομένων. Μπορεί να διαρκέσει λίγο, παρακαλώ να είστε υπομονετικοί.",
- "dbName": "Όνομα Βάσης Δεδομένων",
+ "settingUpDatabaseMSG": "Ρύθμιση της βάσης δεδομένων. Μπορεί να διαρκέσει λίγη ώρα, παρακαλώ κάνετε υπομονετικοί.",
+ "dbName": "Όνομα βάσης δεδομένων",
"Invert Keyword": "Αντιστροφή Λέξης-Κλειδιού",
"Expected Value": "Αναμενόμενη Τιμή",
"Json Query": "Ερώτημα Json"
diff --git a/src/lang/en.json b/src/lang/en.json
index 11190a080..42ec5d9f6 100644
--- a/src/lang/en.json
+++ b/src/lang/en.json
@@ -1,6 +1,6 @@
{
"languageName": "English",
- "setupDatabaseChooseDatabase": "Which database do you want to use?",
+ "setupDatabaseChooseDatabase": "Which database would you like to use?",
"setupDatabaseEmbeddedMariaDB": "You don't need to set anything. This docker image has embedded and configured MariaDB for you automatically. Uptime Kuma will connect to this database via unix socket.",
"setupDatabaseMariaDB": "Connect to an external MariaDB database. You need to set the database connection information.",
"setupDatabaseSQLite": "A simple database file, recommended for small-scale deployments. Prior to v2.0.0, Uptime Kuma used SQLite as the default database.",
@@ -49,20 +49,27 @@
"Uptime": "Uptime",
"Cert Exp.": "Cert Exp.",
"Monitor": "Monitor | Monitors",
+ "now": "now",
+ "time ago": "{0} ago",
"day": "day | days",
"-day": "-day",
"hour": "hour",
"-hour": "-hour",
+ "-year": "-year",
"Response": "Response",
"Ping": "Ping",
"Monitor Type": "Monitor Type",
"Keyword": "Keyword",
"Invert Keyword": "Invert Keyword",
"Expected Value": "Expected Value",
- "Json Query": "Json Query",
+ "Json Query Expression": "Json Query Expression",
"Friendly Name": "Friendly Name",
+ "defaultFriendlyName": "New Monitor",
"URL": "URL",
"Hostname": "Hostname",
+ "Host URL": "Host URL",
+ "locally configured mail transfer agent": "locally configured mail transfer agent",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Either enter the hostname of the server you want to connect to or {localhost} if you intend to use a {local_mta}",
"Port": "Port",
"Heartbeat Interval": "Heartbeat Interval",
"Request Timeout": "Request Timeout",
@@ -76,7 +83,9 @@
"resendEveryXTimes": "Resend every {0} times",
"resendDisabled": "Resend disabled",
"retriesDescription": "Maximum retries before the service is marked as down and a notification is sent",
+ "ignoredTLSError": "TLS/SSL errors have been ignored",
"ignoreTLSError": "Ignore TLS/SSL errors for HTTPS websites",
+ "ignoreTLSErrorGeneral": "Ignore TLS/SSL error for connection",
"upsideDownModeDescription": "Flip the status upside down. If the service is reachable, it is DOWN.",
"maxRedirectDescription": "Maximum number of redirects to follow. Set to 0 to disable redirects.",
"Upside Down Mode": "Upside Down Mode",
@@ -90,8 +99,8 @@
"programmingLanguages": "Programming Languages",
"Save": "Save",
"Notifications": "Notifications",
- "Not available, please setup.": "Not available, please setup.",
- "Setup Notification": "Setup Notification",
+ "Not available, please setup.": "Not available, please set up.",
+ "Setup Notification": "Set Up Notification",
"Light": "Light",
"Dark": "Dark",
"Auto": "Auto",
@@ -166,7 +175,7 @@
"Options": "Options",
"Keep both": "Keep both",
"Verify Token": "Verify Token",
- "Setup 2FA": "Setup 2FA",
+ "Setup 2FA": "Set Up 2FA",
"Enable 2FA": "Enable 2FA",
"Disable 2FA": "Disable 2FA",
"2FA Settings": "2FA Settings",
@@ -223,6 +232,9 @@
"templateMonitorJSON": "object describing the monitor",
"templateLimitedToUpDownCertNotifications": "only available for UP/DOWN/Certificate expiry notifications",
"templateLimitedToUpDownNotifications": "only available for UP/DOWN notifications",
+ "templateServiceName": "service name",
+ "templateHostnameOrURL": "hostname or URL",
+ "templateStatus": "status",
"webhookAdditionalHeadersTitle": "Additional Headers",
"webhookAdditionalHeadersDesc": "Sets additional headers sent with the webhook. Each header should be defined as a JSON key/value.",
"webhookBodyPresetOption": "Preset - {0}",
@@ -259,6 +271,7 @@
"Security": "Security",
"Steam API Key": "Steam API Key",
"Shrink Database": "Shrink Database",
+ "shrinkDatabaseDescriptionSqlite": "Trigger database {vacuum} for SQLite. {auto_vacuum} is already enabled but this does not defragment the database nor repack individual database pages the way that the {vacuum} command does.",
"Pick a RR-Type...": "Pick a RR-Type…",
"Pick Accepted Status Codes...": "Pick Accepted Status Codes…",
"Default": "Default",
@@ -279,7 +292,6 @@
"Please input title and content": "Please input title and content",
"Created": "Created",
"Last Updated": "Last Updated",
- "Unpin": "Unpin",
"Switch to Light Theme": "Switch to Light Theme",
"Switch to Dark Theme": "Switch to Dark Theme",
"Show Tags": "Show Tags",
@@ -296,7 +308,6 @@
"selectedMonitorCount": "Selected: {0}",
"Check/Uncheck": "Check/Uncheck",
"Powered by": "Powered by",
- "shrinkDatabaseDescription": "Trigger database VACUUM for SQLite. If your database is created after 1.10.0, AUTO_VACUUM is already enabled and this action is not needed.",
"Customize": "Customize",
"Custom Footer": "Custom Footer",
"Custom CSS": "Custom CSS",
@@ -358,6 +369,8 @@
"Proxy": "Proxy",
"Date Created": "Date Created",
"Footer Text": "Footer Text",
+ "Refresh Interval": "Refresh Interval",
+ "Refresh Interval Description": "The status page will do a full site refresh every {0} seconds",
"Show Powered By": "Show Powered By",
"Domain Names": "Domain Names",
"signedInDisp": "Signed in as {0}",
@@ -387,10 +400,10 @@
"Query": "Query",
"settingsCertificateExpiry": "TLS Certificate Expiry",
"certificationExpiryDescription": "HTTPS Monitors trigger notification when TLS certificate expires in:",
- "Setup Docker Host": "Setup Docker Host",
+ "Setup Docker Host": "Set Up Docker Host",
"Connection Type": "Connection Type",
"Docker Daemon": "Docker Daemon",
- "noDockerHostMsg": "Not Available. Setup a Docker Host First.",
+ "noDockerHostMsg": "Not Available. Set Up a Docker Host First.",
"DockerHostRequired": "Please set the Docker Host for this monitor.",
"deleteDockerHostMsg": "Are you sure want to delete this docker host for all monitors?",
"socket": "Socket",
@@ -412,8 +425,13 @@
"telegramSendSilentlyDescription": "Sends the message silently. Users will receive a notification with no sound.",
"telegramProtectContent": "Protect Forwarding/Saving",
"telegramProtectContentDescription": "If enabled, the bot messages in Telegram will be protected from forwarding and saving.",
+ "telegramUseTemplate": "Use custom message template",
+ "telegramUseTemplateDescription": "If enabled, the message will be sent using a custom template.",
+ "telegramTemplateFormatDescription": "Telegram allows using different markup languages for messages, see Telegram {0} for specifc details.",
"supportTelegramChatID": "Support Direct Chat / Group / Channel's Chat ID",
"wayToGetTelegramChatID": "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:",
+ "telegramServerUrl": "(Optional) Server Url",
+ "telegramServerUrlDescription": "To lift Telegram's bot api limitations or gain access in blocked areas (China, Iran, etc). For more information click {0}. Default: {1}",
"YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE",
"chatIDNotFound": "Chat ID is not found; please send a message to this bot first",
"disableCloudflaredNoAuthMsg": "You are in No Auth mode, a password is not required.",
@@ -436,6 +454,7 @@
"backupOutdatedWarning": "Deprecated: Since a lot of features were added and this backup feature is a bit unmaintained, it cannot generate or restore a complete backup.",
"backupRecommend": "Please backup the volume or the data folder (./data/) directly instead.",
"Optional": "Optional",
+ "and": "and",
"or": "or",
"sameAsServerTimezone": "Same as Server Timezone",
"startDateTime": "Start Date/Time",
@@ -499,6 +518,7 @@
"Clone": "Clone",
"cloneOf": "Clone of {0}",
"smtp": "Email (SMTP)",
+ "Use HTML for custom E-mail body": "Use HTML for custom E-mail body",
"secureOptionNone": "None / STARTTLS (25, 587)",
"secureOptionTLS": "TLS (465)",
"Ignore TLS Error": "Ignore TLS Error",
@@ -509,9 +529,6 @@
"leave blank for default subject": "leave blank for default subject",
"emailCustomBody": "Custom Body",
"leave blank for default body": "leave blank for default body",
- "emailTemplateServiceName": "Service Name",
- "emailTemplateHostnameOrURL": "Hostname or URL",
- "emailTemplateStatus": "Status",
"emailTemplateMonitorJSON": "object describing the monitor",
"emailTemplateHeartbeatJSON": "object describing the heartbeat",
"emailTemplateMsg": "message of the notification",
@@ -524,6 +541,15 @@
"Bot Display Name": "Bot Display Name",
"Prefix Custom Message": "Prefix Custom Message",
"Hello @everyone is...": "Hello {'@'}everyone is…",
+ "Select message type": "Select message type",
+ "Send to channel": "Send to channel",
+ "Create new forum post": "Create new forum post",
+ "postToExistingThread": "Post to existing thread / forum post",
+ "forumPostName": "Forum post name",
+ "threadForumPostID": "Thread / Forum post ID",
+ "e.g. {discordThreadID}": "e.g. {discordThreadID}",
+ "whatHappensAtForumPost": "Create a new forum post. This does NOT post messages in existing post. To post in existing post use \"{option}\"",
+ "wayToGetDiscordThreadId": "Getting a thread / forum post id is similar to getting a channel id. Read more about how to get ids {0}",
"wayToGetTeamsURL": "You can learn how to create a webhook URL {0}.",
"wayToGetZohoCliqURL": "You can learn how to create a webhook URL {0}.",
"needSignalAPI": "You need to have a signal client with REST API.",
@@ -574,7 +600,7 @@
"notificationDescription": "Notifications must be assigned to a monitor to function.",
"keywordDescription": "Search keyword in plain HTML or JSON response. The search is case-sensitive.",
"invertKeywordDescription": "Look for the keyword to be absent rather than present.",
- "jsonQueryDescription": "Do a json Query against the response and check for expected value (Return value will get converted into string for comparison). Check out {0} for the documentation about the query language. A playground can be found {1}.",
+ "jsonQueryDescription": "Parse and extract specific data from the server's JSON response using JSON query or use \"$\" for the raw response, if not expecting JSON. The result is then compared to the expected value, as strings. See {0} for documentation and use {1} to experiment with queries.",
"backupDescription": "You can backup all monitors and notifications into a JSON file.",
"backupDescription2": "Note: history and event data is not included.",
"backupDescription3": "Sensitive data such as notification tokens are included in the export file; please store export securely.",
@@ -665,6 +691,9 @@
"WebHookUrl": "WebHookUrl",
"SecretKey": "SecretKey",
"For safety, must use secret key": "For safety, must use secret key",
+ "Mentioning": "Mentioning",
+ "Don't mention people": "Don't mention people",
+ "Mention group": "Mention {group}",
"Device Token": "Device Token",
"Platform": "Platform",
"Huawei": "Huawei",
@@ -672,7 +701,7 @@
"Retry": "Retry",
"Topic": "Topic",
"WeCom Bot Key": "WeCom Bot Key",
- "Setup Proxy": "Setup Proxy",
+ "Setup Proxy": "Set Up Proxy",
"Proxy Protocol": "Proxy Protocol",
"Proxy Server": "Proxy Server",
"Proxy server has authentication": "Proxy server has authentication",
@@ -692,13 +721,14 @@
"Notify Channel": "Notify Channel",
"aboutNotifyChannel": "Notify channel will trigger a desktop or mobile notification for all members of the channel, whether their availability is set to active or away.",
"Uptime Kuma URL": "Uptime Kuma URL",
- "setup a new monitor group": "setup a new monitor group",
+ "setup a new monitor group": "set up a new monitor group",
"openModalTo": "open modal to {0}",
"Add a domain": "Add a domain",
"Remove domain": "Remove domain '{0}'",
"Icon Emoji": "Icon Emoji",
"signalImportant": "IMPORTANT: You cannot mix groups and numbers in recipients!",
"aboutWebhooks": "More info about Webhooks on: {0}",
+ "aboutSlackUsername": "Changes the display name of the message sender. If you want to mention someone, include it in the friendly name instead.",
"aboutChannelName": "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel",
"aboutKumaURL": "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.",
"smtpDkimSettings": "DKIM Settings",
@@ -729,12 +759,31 @@
"smseagleTo": "Phone number(s)",
"smseagleGroup": "Phonebook group name(s)",
"smseagleContact": "Phonebook contact name(s)",
+ "smseagleGroupV2": "Phonebook group ID(s)",
+ "smseagleContactV2": "Phonebook contact ID(s)",
"smseagleRecipientType": "Recipient type",
"smseagleRecipient": "Recipient(s) (multiple must be separated with comma)",
"smseagleToken": "API Access token",
"smseagleUrl": "Your SMSEagle device URL",
- "smseagleEncoding": "Send as Unicode",
- "smseaglePriority": "Message priority (0-9, default = 0)",
+ "smseagleEncoding": "Send as Unicode (default=GSM-7)",
+ "smseaglePriority": "Message priority (0-9, highest priority = 9)",
+ "smseagleMsgType": "Message type",
+ "smseagleMsgSms": "Sms message (default)",
+ "smseagleMsgRing": "Ring call",
+ "smseagleMsgTts": "Text-to-speech call",
+ "smseagleMsgTtsAdvanced": "Text-to-speech Advanced call",
+ "smseagleDuration": "Duration (in seconds)",
+ "smseagleTtsModel": "Text-to-speech model ID",
+ "smseagleApiType": "API version",
+ "smseagleApiv1": "APIv1 (for existing projects and backward compatibility)",
+ "smseagleApiv2": "APIv2 (recommended for new integrations)",
+ "smseagleDocs": "Check documentation or APIv2 availability: {0}",
+ "smseagleComma": "Multiple must be separated with comma",
+ "smspartnerApiurl": "You can find your API key in your dashboard at {0}",
+ "smspartnerPhoneNumber": "Phone number(s)",
+ "smspartnerPhoneNumberHelptext": "The number must be in the international format {0}, {1}. Multiple numbers must be separated by {2}",
+ "smspartnerSenderName": "SMS Sender Name",
+ "smspartnerSenderNameInfo": "Must be between 3..=11 regular characters",
"Recipient Number": "Recipient Number",
"From Name/Number": "From Name/Number",
"Leave blank to use a shared sender number.": "Leave blank to use a shared sender number.",
@@ -751,6 +800,7 @@
"PushDeer Server": "PushDeer Server",
"pushDeerServerDescription": "Leave blank to use the official server",
"PushDeer Key": "PushDeer Key",
+ "SpugPush Template Code": "Template Code",
"wayToGetClickSendSMSToken": "You can get API Username and API Key from {0} .",
"Custom Monitor Type": "Custom Monitor Type",
"Google Analytics ID": "Google Analytics ID",
@@ -789,7 +839,7 @@
"lunaseaDeviceID": "Device ID",
"lunaseaUserID": "User ID",
"ntfyAuthenticationMethod": "Authentication Method",
- "ntfyPriorityHelptextAllEvents": "All events are send with the maximum priority",
+ "ntfyPriorityHelptextAllEvents": "All events are sent with the maximum priority",
"ntfyPriorityHelptextAllExceptDown": "All events are sent with this priority, except {0}-events, which have a priority of {1}",
"ntfyUsernameAndPassword": "Username and Password",
"twilioAccountSID": "Account SID",
@@ -845,7 +895,7 @@
"noGroupMonitorMsg": "Not Available. Create a Group Monitor First.",
"Close": "Close",
"Request Body": "Request Body",
- "wayToGetFlashDutyKey": "You can go to Channel -> (Select a Channel) -> Integrations -> Add a new integration' page, add a 'Custom Event' to get a push address, copy the Integration Key in the address. For more information, please visit",
+ "wayToGetFlashDutyKey": "You can go to Channel -> (Select a Channel) -> Integrations -> Add a new integration' page, add a 'Uptime Kuma' to get a push address, copy the Integration Key in the address. For more information, please visit",
"FlashDuty Severity": "Severity",
"nostrRelays": "Nostr relays",
"nostrRelaysHelp": "One relay URL per line",
@@ -854,8 +904,15 @@
"nostrRecipientsHelp": "npub format, one per line",
"showCertificateExpiry": "Show Certificate Expiry",
"noOrBadCertificate": "No/Bad Certificate",
+ "cacheBusterParam": "Add the {0} parameter",
+ "cacheBusterParamDescription": "Randomly generated parameter to skip caches.",
"gamedigGuessPort": "Gamedig: Guess Port",
"gamedigGuessPortDescription": "The port used by Valve Server Query Protocol may be different from the client port. Try this if the monitor cannot connect to your server.",
+ "Message format": "Message format",
+ "Send rich messages": "Send rich messages",
+ "Bitrix24 Webhook URL": "Bitrix24 Webhook URL",
+ "wayToGetBitrix24Webhook": "You can create a webhook by following the steps at {0}",
+ "bitrix24SupportUserID": "Enter your user ID in Bitrix24. You can find out the ID from the link by going to the user's profile.",
"Saved.": "Saved.",
"authUserInactiveOrDeleted": "The user is inactive or deleted.",
"authInvalidToken": "Invalid Token.",
@@ -878,14 +935,167 @@
"Remote Browser": "Remote Browser",
"Add a Remote Browser": "Add a Remote Browser",
"Remote Browser not found!": "Remote Browser not found!",
- "remoteBrowsersDescription": "Remote Browsers are an alternative to running Chromium locally. Setup with a service like browserless.io or connect to your own",
+ "remoteBrowsersDescription": "Remote Browsers are an alternative to running Chromium locally. Set up with a service like browserless.io or connect to your own",
"self-hosted container": "self-hosted container",
"remoteBrowserToggle": "By default Chromium runs inside the Uptime Kuma container. You can use a remote browser by toggling this switch.",
"useRemoteBrowser": "Use a Remote Browser",
"deleteRemoteBrowserMessage": "Are you sure want to delete this Remote Browser for all monitors?",
"GrafanaOncallUrl": "Grafana Oncall URL",
"Browser Screenshot": "Browser Screenshot",
+ "Command": "Command",
+ "mongodbCommandDescription": "Run a MongoDB command against the database. For information about the available commands check out the {documentation}",
+ "wayToGetSevenIOApiKey": "Visit the dashboard under app.seven.io > developer > api key > the green add button",
+ "senderSevenIO": "Sending number or name",
+ "receiverSevenIO": "Receiving number",
+ "receiverInfoSevenIO": "If the receiving number is not located in Germany, you have to add the country code in front of the number (e.g. for the country code 1 from the US use 117612121212 instead of 017612121212)",
+ "apiKeySevenIO": "SevenIO API Key",
+ "wayToWriteWhapiRecipient": "The phone number with the international prefix, but without the plus sign at the start ({0}), the Contact ID ({1}) or the Group ID ({2}).",
+ "wayToGetWhapiUrlAndToken": "You can get the API URL and the token by going into your desired channel from {0}",
+ "whapiRecipient": "Phone Number / Contact ID / Group ID",
+ "API URL": "API URL",
"What is a Remote Browser?": "What is a Remote Browser?",
"wayToGetHeiiOnCallDetails": "How to get the Trigger ID and API Keys is explained in the {documentation}",
- "documentationOf": "{0} Documentation"
+ "documentationOf": "{0} Documentation",
+ "callMeBotGet": "Here you can generate an endpoint for {0}, {1} and {2}. Keep in mind that you might get rate limited. The ratelimits appear to be: {3}",
+ "gtxMessagingApiKeyHint": "You can find your API key at: My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "From Phone Number / Transmission Path Originating Address (TPOA)",
+ "gtxMessagingFromHint": "On mobile phones, your recipients sees the TPOA displayed as the sender of the message. Allowed are up to 11 alphanumeric characters, a shortcode, the local longcode or international numbers ({e164}, {e212} or {e214})",
+ "To Phone Number": "To Phone Number",
+ "gtxMessagingToHint": "International format, with leading \"+\" ({e164}, {e212} or {e214})",
+ "Originator type": "Originator type",
+ "Alphanumeric (recommended)": "Alphanumeric (recommended)",
+ "Telephone number": "Telephone number",
+ "cellsyntOriginatortypeAlphanumeric": "Alphanumeric string (max 11 alphanumeric characters). Recipients can not reply to the message.",
+ "cellsyntOriginatortypeNumeric": "Numeric value (max 15 digits) with telephone number on international format without leading 00 (example UK number 07920 110 000 should be set as 447920110000). Recipients can reply to the message.",
+ "Originator": "Originator",
+ "cellsyntOriginator": "Visible on recipient's mobile phone as originator of the message. Allowed values and function depends on parameter originatortype.",
+ "Destination": "Destination",
+ "cellsyntDestination": "Recipient's telephone number using international format with leading 00 followed by country code, e.g. 00447920110000 for the UK number 07920 110 000 (max 17 digits in total). Max 25000 comma separated recipients per HTTP request.",
+ "Allow Long SMS": "Allow Long SMS",
+ "cellsyntSplitLongMessages": "Split long messages into up to 6 parts. 153 x 6 = 918 characters.",
+ "max 15 digits": "max 15 digits",
+ "max 11 alphanumeric characters": "max 11 alphanumeric characters",
+ "Community String": "Community String",
+ "snmpCommunityStringHelptext": "This string functions as a password to authenticate and control access to SNMP-enabled devices. Match it with your SNMP device's configuration.",
+ "OID (Object Identifier)": "OID (Object Identifier)",
+ "snmpOIDHelptext": "Enter the OID for the sensor or status you want to monitor. Use network management tools like MIB browsers or SNMP software if you're unsure about the OID.",
+ "Condition": "Condition",
+ "SNMP Version": "SNMP Version",
+ "Please enter a valid OID.": "Please enter a valid OID.",
+ "wayToGetThreemaGateway": "You can register for Threema Gateway {0}.",
+ "threemaRecipient": "Recipient",
+ "threemaRecipientType": "Recipient Type",
+ "threemaRecipientTypeIdentity": "Threema-ID",
+ "threemaRecipientTypeIdentityFormat": "8 characters",
+ "threemaRecipientTypePhone": "Phone Number",
+ "threemaRecipientTypePhoneFormat": "E.164, without leading +",
+ "threemaRecipientTypeEmail": "Email Address",
+ "threemaSenderIdentity": "Gateway-ID",
+ "threemaSenderIdentityFormat": "8 characters, usually starts with *",
+ "threemaApiAuthenticationSecret": "Gateway-ID Secret",
+ "threemaBasicModeInfo": "Note: This integration uses Threema Gateway in basic mode (server-based encryption). Further details can be found {0}.",
+ "apiKeysDisabledMsg": "API keys are disabled because authentication is disabled.",
+ "Host Onesender": "Host Onesender",
+ "Token Onesender": "Token Onesender",
+ "Recipient Type": "Recipient Type",
+ "Private Number": "Private Number",
+ "privateOnesenderDesc": "Make sure the number phone is valid. To send message into private number phone, ex: 628123456789",
+ "groupOnesenderDesc": "Make sure the GroupID is valid. To send message into Group, ex: 628123456789-342345",
+ "Group ID": "Group ID",
+ "wayToGetOnesenderUrlandToken": "You can get the URL and Token by going to the Onesender website. More info {0}",
+ "Add Remote Browser": "Add Remote Browser",
+ "New Group": "New Group",
+ "Group Name": "Group Name",
+ "OAuth2: Client Credentials": "OAuth2: Client Credentials",
+ "Authentication Method": "Authentication Method",
+ "Authorization Header": "Authorization Header",
+ "Form Data Body": "Form Data Body",
+ "OAuth Token URL": "OAuth Token URL",
+ "Client ID": "Client ID",
+ "Client Secret": "Client Secret",
+ "OAuth Scope": "OAuth Scope",
+ "Optional: Space separated list of scopes": "Optional: Space separated list of scopes",
+ "Go back to home page.": "Go back to home page.",
+ "No tags found.": "No tags found.",
+ "Lost connection to the socket server.": "Lost connection to the socket server.",
+ "Cannot connect to the socket server.": "Cannot connect to the socket server.",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "SIGNL4 Webhook URL",
+ "signl4Docs": "You can find more information about how to configure SIGNL4 and how to obtain the SIGNL4 webhook URL in the {0}.",
+ "Conditions": "Conditions",
+ "conditionAdd": "Add Condition",
+ "conditionDelete": "Delete Condition",
+ "conditionAddGroup": "Add Group",
+ "conditionDeleteGroup": "Delete Group",
+ "conditionValuePlaceholder": "Value",
+ "equals": "equals",
+ "not equals": "not equals",
+ "contains": "contains",
+ "not contains": "not contains",
+ "starts with": "starts with",
+ "not starts with": "not starts with",
+ "ends with": "ends with",
+ "not ends with": "not ends with",
+ "less than": "less than",
+ "greater than": "greater than",
+ "less than or equal to": "less than or equal to",
+ "greater than or equal to": "greater than or equal to",
+ "record": "record",
+ "Notification Channel": "Notification Channel",
+ "Sound": "Sound",
+ "Alphanumerical string and hyphens only": "Alphanumerical string and hyphens only",
+ "Arcade": "Arcade",
+ "Correct": "Correct",
+ "Fail": "Fail",
+ "Harp": "Harp",
+ "Reveal": "Reveal",
+ "Bubble": "Bubble",
+ "Doorbell": "Doorbell",
+ "Flute": "Flute",
+ "Money": "Money",
+ "Scifi": "Scifi",
+ "Clear": "Clear",
+ "Elevator": "Elevator",
+ "Guitar": "Guitar",
+ "Pop": "Pop",
+ "Custom sound to override default notification sound": "Custom sound to override default notification sound",
+ "Time Sensitive (iOS Only)": "Time Sensitive (iOS Only)",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.",
+ "From": "From",
+ "Can be found on:": "Can be found on: {0}",
+ "The phone number of the recipient in E.164 format.": "The phone number of the recipient in E.164 format.",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.",
+ "RabbitMQ Nodes": "RabbitMQ Management Nodes",
+ "rabbitmqNodesDescription": "Enter the URL for the RabbitMQ management nodes including protocol and port. Example: {0}",
+ "rabbitmqNodesRequired": "Please set the nodes for this monitor.",
+ "rabbitmqNodesInvalid": "Please use a fully qualified (starting with 'http') URL for RabbitMQ nodes.",
+ "RabbitMQ Username": "RabbitMQ Username",
+ "RabbitMQ Password": "RabbitMQ Password",
+ "rabbitmqHelpText": "To use the monitor, you will need to enable the Management Plugin in your RabbitMQ setup. For more information, please consult the {rabitmq_documentation}.",
+ "SendGrid API Key": "SendGrid API Key",
+ "Separate multiple email addresses with commas": "Separate multiple email addresses with commas",
+ "Custom URL": "Custom URL",
+ "customUrlDescription": "Will be used as the clickable URL instead of the monitor's one.",
+ "OneChatAccessToken": "OneChat Access Token",
+ "OneChatUserIdOrGroupId": "OneChat User ID or Group ID",
+ "OneChatBotId": "OneChat Bot ID",
+ "wahaSession": "Session",
+ "wahaChatId": "Chat ID (Phone Number / Contact ID / Group ID)",
+ "wayToGetWahaApiUrl": "Your WAHA Instance URL.",
+ "wayToGetWahaApiKey": "API Key is WHATSAPP_API_KEY environment variable value you used to run WAHA.",
+ "wayToGetWahaSession": "From this session WAHA sends notifications to Chat ID. You can find it in WAHA Dashboard.",
+ "wayToWriteWahaChatId": "The phone number with the international prefix, but without the plus sign at the start ({0}), the Contact ID ({1}) or the Group ID ({2}). Notifications are sent to this Chat ID from WAHA Session.",
+ "YZJ Webhook URL": "YZJ Webhook URL",
+ "YZJ Robot Token": "YZJ Robot token",
+ "Plain Text": "Plain Text",
+ "Message Template": "Message Template",
+ "Template Format": "Template Format",
+ "Font Twemoji by Twitter licensed under": "Font Twemoji by Twitter licensed under",
+ "smsplanetApiToken": "Token for the SMSPlanet API",
+ "smsplanetApiDocs": "Detailed information on obtaining API tokens can be found in {the_smsplanet_documentation}.",
+ "the smsplanet documentation": "the smsplanet documentation",
+ "Phone numbers": "Phone numbers",
+ "Sender name": "Sender name",
+ "smsplanetNeedToApproveName": "Needs to be approved in the client panel",
+ "Disable URL in Notification": "Disable URL in Notification"
}
diff --git a/src/lang/enm.json b/src/lang/enm.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/src/lang/enm.json
@@ -0,0 +1 @@
+{}
diff --git a/src/lang/es-ES.json b/src/lang/es-ES.json
index 3fe77006a..91b221f99 100644
--- a/src/lang/es-ES.json
+++ b/src/lang/es-ES.json
@@ -9,7 +9,7 @@
"passwordNotMatchMsg": "La contraseña repetida no coincide.",
"notificationDescription": "Por favor asigna una notificación a el/los monitor(es) para hacerlos funcional(es).",
"keywordDescription": "Buscar palabra clave en HTML plano o respuesta JSON. La búsqueda es sensible a mayúsculas.",
- "pauseDashboardHome": "Pausado",
+ "pauseDashboardHome": "Pausar",
"deleteMonitorMsg": "¿Seguro que quieres eliminar este monitor?",
"deleteNotificationMsg": "¿Seguro que quieres eliminar esta notificación para todos los monitores?",
"resolverserverDescription": "Cloudflare es el servidor por defecto, puedes cambiar el servidor de resolución en cualquier momento.",
@@ -396,7 +396,6 @@
"successMessage": "Mensaje de éxito",
"Pick Accepted Status Codes...": "Seleccione Códigos de Estado Aceptados…",
"Post": "Post",
- "shrinkDatabaseDescription": "Activar ASPIRADORA para SQLite. Si tu base de datos fue creada después 1.10.0, AUTO_ASPIRADORA ya está habilitada y esta acción no es necesaria.",
"deleteStatusPageMsg": "¿Estas seguro que quieres eliminar esta página de estado?",
"default": "Predeterminado",
"enabled": "Habilitado",
@@ -558,7 +557,7 @@
"affectedMonitorsDescription": "Selecciona los monitores que se ven afectados por el mantenimiento actual",
"affectedStatusPages": "Muestra este mensaje de mantenimiento en las páginas de estado seleccionadas",
"atLeastOneMonitor": "Selecciona al menos un monitor afectado",
- "endpoint": "endpoint",
+ "endpoint": "punto final",
"promosmsPassword": "Contraseña API",
"pushoversounds pushover": "Pushover (predeterminado)",
"pushoversounds bike": "Bicicleta",
@@ -655,7 +654,7 @@
"gorush": "Gorush",
"squadcast": "Squadcast",
"Maintenance Time Window of a Day": "Ventana de tiempo de mantenimiento de un día",
- "Effective Date Range": "Rango de fecha efectivo (opcional)",
+ "Effective Date Range": "Rango de Fecha Efectivo(Opcional)",
"Free Mobile User Identifier": "Identificador de Usuario de Free Mobile",
"Gateway Type": "Tipo de puerta de enlace",
"SMSManager": "SMSManager",
@@ -678,7 +677,7 @@
"alertaRecoverState": "Estado de Recuperación",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "Nombre de usuario de API (inc. webapi_ prefix)",
- "smseagleGroup": "Nombre/s del grupo de la guía telefónica",
+ "smseagleGroup": "Nombre(s) de grupo(s) de Guía Telefónica",
"Unpin": "Dejar de Fijar",
"Prefix Custom Message": "Prefijo personalizado",
"markdownSupported": "Sintaxis de Markdown soportada",
@@ -771,7 +770,6 @@
"Json Query": "Consulta Json",
"invertKeywordDescription": "Comprobar si la palabra clave está ausente en vez de presente.",
"enableNSCD": "Habilitar NSCD (Demonio de Caché de Servicio de Nombres) para almacenar en caché todas las solicitudes DNS",
- "jsonQueryDescription": "Realiza una consulta JSON contra la respuesta y verifica el valor esperado (el valor de retorno se convertirá a una cadena para la comparación). Consulta {0} para obtener documentación sobre el lenguaje de consulta. Puede encontrar un espacio de prueba {1}.",
"Request Timeout": "Tiempo de espera máximo de petición",
"timeoutAfter": "Expirar después de {0} segundos",
"chromeExecutableDescription": "Para usuarios de Docker, si Chromium no está instalado, puede que tarde unos minutos en ser instalado y mostrar el resultado de la prueba. Usa 1GB de espacio.",
@@ -820,7 +818,7 @@
"showCertificateExpiry": "Mostrar caducidad del certificado",
"noOrBadCertificate": "Certificado Nulo/Incorrecto",
"aboutNotifyChannel": "Notificar canal activará una notificación de escritorio o móvil para todos los miembros del canal, ya sea que su disponibilidad esté activa o ausente.",
- "Server URL should not contain the nfty topic": "La URL del servidor no debe contener el tema nfty",
+ "Server URL should not contain the nfty topic": "La URL del servidor no puede incluír el tópico de ntfy",
"PushDeer Server": "Servidor PushDeer",
"pushDeerServerDescription": "Dejar en blanco para usar el servidor oficial",
"Badge Duration (in hours)": "Duración de la insignia (en horas)",
@@ -831,7 +829,7 @@
"Badge value (For Testing only.)": "Valor de la insignia (Solo para pruebas.)",
"Enable Kafka Producer Auto Topic Creation": "Habilitar la Creación Automática de Temas del Productor de Kafka",
"noGroupMonitorMsg": "No disponible. Cree primero un monitor de grupo.",
- "wayToGetFlashDutyKey": "Puede ir a Canal -> (Seleccionar un canal) -> Integraciones -> Agregar una nueva página de integración, agregar un 'Evento personalizado' para obtener una dirección push, copiar la clave de integración en la dirección. Para mayor información por favor visite",
+ "wayToGetFlashDutyKey": "Puedes ir a Canal -> (Seleccionar un Canal) -> Integraciones -> Agregar una nueva integración, agregar un 'Uptime Kuma' para obtener una dirección de envío, copiar la Clave de Integración en la dirección. Para más información, por favor visita",
"gamedigGuessPort": "Gamedig: Adivinar el puerto",
"gamedigGuessPortDescription": "El puerto utilizado por Valve Server Query Protocol puede ser diferente del puerto del cliente. Pruebe esto si el monitor no puede conectarse a su servidor.",
"twilioApiKey": "Clave de la API (opcional)",
@@ -839,7 +837,7 @@
"styleElapsedTimeShowNoLine": "Mostrar (sin línea)",
"styleElapsedTimeShowWithLine": "Mostrar (Con línea)",
"webhookCustomBodyDesc": "Define un cuerpo HTTP personalizado para la petición. Las variables que puedes usar como plantillas son {msg}, {heartbeat}, y {monitor}.",
- "webhookBodyPresetOption": "Preajuste- {0}",
+ "webhookBodyPresetOption": "Preajuste - {0}",
"tailscalePingWarning": "Para utilizar el monitor Tailscale Ping, debe instalar Uptime Kuma sin Docker y también instalar el cliente Tailscale en su servidor.",
"Bark API Version": "Versión de la API Bark",
"monitorToastMessagesDescription": "Las notificaciones Toast para monitores desaparecen después de un tiempo dado en segundos. Establecer a -1 desactiva el tiempo de espera. Si se establece en 0, se desactivan las notificaciones.",
@@ -847,36 +845,36 @@
"monitorToastMessagesLabel": "Monitorizar las notificaciones Toast",
"toastSuccessTimeout": "Tiempo de espera para notificaciones de éxito",
"toastErrorTimeout": "Tiempo de espera para notificaciones de error",
- "setupDatabaseChooseDatabase": "¿Qué base de datos desea utilizar?",
- "setupDatabaseEmbeddedMariaDB": "No necesitas configurar nada. Esta imagen docker ha incrustado y configurado MariaDB para ti automáticamente. Uptime Kuma se conectará a esta base de datos a través de un socket unix.",
+ "setupDatabaseChooseDatabase": "¿Qué base de datos te gustaría usar?",
+ "setupDatabaseEmbeddedMariaDB": "No necesitas configurar nada. Esta imagen de Docker tiene incorporado y configurado MariaDB para ti automáticamente. Uptime Kuma se conectará a esta base de datos a través de un socket Unix.",
"setupDatabaseMariaDB": "Conectarse a una base de datos MariaDB externa. Debe configurar la información de conexión a la base de datos.",
"setupDatabaseSQLite": "Un archivo de base de datos simple, recomendado para despliegues a pequeña escala. Antes de la versión 2.0.0, Uptime Kuma utilizaba SQLite como base de datos predeterminada.",
- "dbName": "Nombre de la base de datos",
+ "dbName": "Nombre de la Base de Datos",
"authInvalidToken": "Token inválido.",
"authIncorrectCreds": "Nombre de usuario o contraseña incorrectos.",
"2faEnabled": "2FA habilitado.",
"2faDisabled": "2FA deshabilitado.",
- "liquidIntroduction": "El lenguaje de plantillas Liquid permite crear plantillas. Consulte las instrucciones de uso en {0}. Estas son las variables disponibles:",
- "templateLimitedToUpDownCertNotifications": "sólo disponible para las notificaciones de LEVANTADO/CAÍDO/Caducidad de certificado",
+ "liquidIntroduction": "La plantilla se logra a través del lenguaje de plantillas Liquid. Consulte {0} para obtener instrucciones de uso. Estas son las variables disponibles:",
+ "templateLimitedToUpDownCertNotifications": "solo disponible para notificaciones FUNCIONAL/CAÍDO/Caducidad de certificado",
"emailTemplateMsg": "mensaje de la notificación",
- "emailTemplateLimitedToUpDownNotification": "sólo disponible para pulsos LEVANTADO/CAÍDO, en caso contrario null",
+ "emailTemplateLimitedToUpDownNotification": "sólo disponible para latidos FUNCIONAL/CAÍDO, de lo contrario nulo",
"setup a new monitor group": "configurar un nuevo grupo de monitores",
"authUserInactiveOrDeleted": "El usuario está inactivo o eliminado.",
- "2faAlreadyEnabled": "2FA ya está activado.",
- "remoteBrowsersDescription": "Los navegadores remotos son una alternativa a la ejecución local de Chromium. Configúralos con un servicio como browserless.io o conéctate a uno propio",
+ "2faAlreadyEnabled": "2FA ya está habilitado.",
+ "remoteBrowsersDescription": "Los navegadores remotos son una alternativa a ejecutar Chromium localmente. Configúralos con un servicio como browserless.io o conéctalos a tu propio servidor",
"successKeyword": "Palabra clave de éxito",
"successKeywordExplanation": "MQTT Palabra clave que se considerará como éxito",
"Remove the expiry notification": "Eliminar la notificación de vencimiento",
"Browser Screenshot": "Captura de pantalla del navegador",
- "emailCustomisableContent": "Contenidos personalizables",
- "smtpLiquidIntroduction": "Los dos campos siguientes son planificables mediante el lenguaje de plantillas Liquid. Consulte las instrucciones de uso en {0}. Estas son las variables disponibles:",
- "leave blank for default subject": "dejar en blanco para el asunto por defecto",
+ "emailCustomisableContent": "Contenido personalizable",
+ "smtpLiquidIntroduction": "Los dos campos siguientes pueden crear plantillas mediante el lenguaje de plantillas Liquid. Consulte {0} para obtener instrucciones de uso. Estas son las variables disponibles:",
+ "leave blank for default subject": "dejar en blanco para el asunto predeterminado",
"emailCustomBody": "Cuerpo personalizado",
"successAuthChangePassword": "La contraseña se ha actualizado correctamente.",
- "successDeleted": "Eliminado con éxito.",
+ "successDeleted": "Borrado exitosamente.",
"successEdited": "Editado con éxito.",
- "successDisabled": "Desactivado con éxito.",
- "GrafanaOncallUrl": "Grafana URL de llamada",
+ "successDisabled": "Deshabilitado con éxito.",
+ "GrafanaOncallUrl": "URL de llamada de Grafana",
"Reset Token": "Restablecer Token",
"Remote Browsers": "Navegadores remotos",
"Remote Browser": "Navegador remoto",
@@ -887,19 +885,19 @@
"successResumed": "Reanudado con éxito.",
"successPaused": "Pausado con éxito.",
"successBackupRestored": "Copia de seguridad restaurada correctamente.",
- "successEnabled": "Activado con éxito.",
+ "successEnabled": "Habilitado exitosamente.",
"tagNotFound": "Etiqueta no encontrada.",
- "foundChromiumVersion": "Encontrado Chromium/Chrome. Versión: {0}",
+ "foundChromiumVersion": "Se encontró Chromium/Chrome. Versión: {0}",
"pushViewCode": "¿Cómo utilizar el monitor Push? (Ver código)",
"pushOthers": "Otros",
- "programmingLanguages": "Lenguajes de programación",
+ "programmingLanguages": "Lenguajes de Programación",
"templateMsg": "mensaje de la notificación",
"templateMonitorJSON": "objeto que describe el monitor",
- "templateLimitedToUpDownNotifications": "sólo disponible para notificaciones LEVANTADO/CAÍDO",
+ "templateLimitedToUpDownNotifications": "sólo disponible para notificaciones FUNCIONAL/CAIDO",
"Add a new expiry notification day": "Añadir una nueva notificación de vencimiento",
- "leave blank for default body": "dejar en blanco para el cuerpo por defecto",
- "emailTemplateServiceName": "Nombre del servicio",
- "emailTemplateHostnameOrURL": "Nombre del host o URL",
+ "leave blank for default body": "dejar en blanco para el cuerpo predeterminado",
+ "emailTemplateServiceName": "Nombre del Servicio",
+ "emailTemplateHostnameOrURL": "Nombre del Host o URL",
"emailTemplateStatus": "Estado",
"emailTemplateMonitorJSON": "objeto que describe el monitor",
"openModalTo": "abrir modal a {0}",
@@ -913,8 +911,181 @@
"settingUpDatabaseMSG": "Configurando la base de datos. Puede tomar un tiempo, sea paciente, por favor.",
"Search monitored sites": "Buscar sitios monitoreados",
"statusPageSpecialSlugDesc": "Identificador único especial {0}: esta página será mostrada cuando no se proporcione ningún identificador único",
- "emailTemplateHeartbeatJSON": "Objeto que describe la señal de vida",
- "ntfyPriorityHelptextAllEvents": "Todos los eventos son enviados con la máxima prioridad",
+ "emailTemplateHeartbeatJSON": "objeto que describe el latido",
+ "ntfyPriorityHelptextAllEvents": "Todos los eventos se envían con la máxima prioridad",
"ntfyPriorityHelptextAllExceptDown": "Todos los eventos son enviados con esta prioridad, excepto los eventos {0}, que tienen una prioridad de {1}",
- "templateHeartbeatJSON": "Objeto que describe el latido"
+ "templateHeartbeatJSON": "objeto que describe el latido",
+ "What is a Remote Browser?": "¿Qué es un Navegador Remoto?",
+ "Your User ID": "Su ID de usuario",
+ "Alphanumeric (recommended)": "Alfanumérico (recomendado)",
+ "Destination": "Destino",
+ "wayToGetWhapiUrlAndToken": "Puedes obtener la URL de la API y el token accediendo al canal que desee desde {0}",
+ "API URL": "API URL",
+ "Allow Long SMS": "Permitir SMS largo",
+ "cellsyntDestination": "Número de teléfono del destinatario en formato internacional precedido de 00, seguido del código de país, ej. 00447920110000 para el número del Reino Unido 07920 110 000 (máximo 17 dígitos en total). Máximo 25.000 destinatarios, separados por comas, por solicitud HTTP.",
+ "Refresh Interval Description": "La página de estado se refrescará cada {0} segundos",
+ "Refresh Interval": "Intervalo de refresco",
+ "ignoreTLSErrorGeneral": "Ignorar errores SSL/TLS durante la conexión",
+ "documentationOf": "Documentación de {0}",
+ "wayToGetHeiiOnCallDetails": "Cómo obtener el Trigger ID y las API Keys se explica en la {documentación}",
+ "Command": "Comando",
+ "wayToGetThreemaGateway": "Puedes registrarte para Threema Gateway {0}.",
+ "threemaRecipient": "Destinatario",
+ "threemaRecipientType": "Tipo de Destinatario",
+ "threemaRecipientTypeIdentity": "ID de Threema",
+ "threemaRecipientTypeIdentityFormat": "8 caracteres",
+ "threemaRecipientTypePhone": "Número de Teléfono",
+ "threemaRecipientTypeEmail": "Dirección de Correo Electrónico",
+ "threemaSenderIdentity": "ID de Gateway",
+ "threemaSenderIdentityFormat": "8 caracteres, generalmente comienza con *",
+ "Host URL": "URL del anfitrión",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Ingresa el nombre del host del servidor al que deseas conectarte o {localhost} si deseas usar un {local_mta}",
+ "smspartnerPhoneNumberHelptext": "El número debe estar en el formato internacional {0}, {1}. Múltiples números deben estar separados por {2}",
+ "smspartnerSenderName": "Nombre del emisor del SMS",
+ "smspartnerApiurl": "Puedes encontrar tu clave API en tu panel de control en {0}",
+ "smspartnerPhoneNumber": "Número(s) de teléfono",
+ "max 11 alphanumeric characters": "máximo 11 caracteres alfanuméricos",
+ "gtxMessagingFromHint": "En teléfonos móviles, tus destinatarios ven el TPOA mostrado como el remitente del mensaje. Se permiten hasta 11 caracteres alfanuméricos, un código corto, el código largo local o números internacionales ({e164}, {e212} o {e214})",
+ "cellsyntOriginatortypeAlphanumeric": "Cadena alfanumérica (máximo 11 caracteres alfanuméricos). Los destinatarios no pueden responder al mensaje.",
+ "cellsyntOriginatortypeNumeric": "Valor numérico (máximo 15 dígitos) con el número de teléfono en formato internacional sin el prefijo 00 (por ejemplo, el número del Reino Unido 07920 110 000 debe establecerse como 447920110000). Los destinatarios pueden responder al mensaje.",
+ "Originator type": "Tipo de originador",
+ "Telephone number": "Número de teléfono",
+ "Mentioning": "Mencionando",
+ "Don't mention people": "No mencionar personas",
+ "Mention group": "Mencionar a {group}",
+ "Bitrix24 Webhook URL": "URL del Webhook de Bitrix24",
+ "wayToGetBitrix24Webhook": "Puedes crear un webhook siguiendo los pasos en {0}",
+ "gtxMessagingApiKeyHint": "Puedes encontrar tu clave API en: My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)",
+ "Originator": "Originador",
+ "bitrix24SupportUserID": "Ingresa tu ID de usuario en Bitrix24. Puedes encontrar el ID en el enlace al ir al perfil del usuario.",
+ "wayToWriteWhapiRecipient": "El número de teléfono con el prefijo internacional, pero sin el signo más al inicio ({0}), el ID de Contacto ({1}) o el ID de Grupo ({2}).",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "Número de Teléfono del Remitente / Dirección de Origen de la Ruta de Transmisión (TPOA)",
+ "To Phone Number": "Al Número de Teléfono",
+ "Select message type": "Seleccionar el tipo de mensaje",
+ "Send to channel": "Enviar al canal",
+ "max 15 digits": "máximo 15 dígitos",
+ "mongodbCommandDescription": "Ejecuta un comando de MongoDB contra la base de datos. Para obtener información sobre los comandos disponibles, consulta la {documentación}",
+ "whapiRecipient": "Número de teléfono / ID del contacto / ID del grupo",
+ "cellsyntSplitLongMessages": "Divide mensajes largos en hasta 6 partes. 153 x 6 = 918 caracteres.",
+ "receiverSevenIO": "Número receptor",
+ "apiKeySevenIO": "Clave API de SevenIO",
+ "wayToGetSevenIOApiKey": "Visita el panel de control en app.seven.io > developer > api key > el botón verde de agregar",
+ "senderSevenIO": "Número o nombre del remitente",
+ "gtxMessagingToHint": "Formato internacional, con el signo \"+\" al inicio ({e164}, {e212} o {e214})",
+ "locally configured mail transfer agent": "agente de transferencia de correo configurado localmente",
+ "wayToGetDiscordThreadId": "Obtener un ID de hilo / publicación en el foro es similar a obtener un ID de canal. Lee más sobre cómo obtener IDs {0}",
+ "smspartnerSenderNameInfo": "Debe ser entre 3..=11 carácteres regulares",
+ "receiverInfoSevenIO": "Si el número receptor no está ubicado en Alemania, debes agregar el código de país delante del número (por ejemplo, para el código de país 1 de EE. UU. usa 117612121212 en lugar de 017612121212)",
+ "callMeBotGet": "Aquí puedes generar un endpoint para {0}, {1} y {2}. Ten en cuenta que podrías recibir limitaciones de tasa. Las limitaciones de tasa parecen ser: {3}",
+ "cellsyntOriginator": "Visible en el teléfono móvil del destinatario como originador del mensaje. Los valores permitidos y la función dependen del parámetro originatortype.",
+ "threemaRecipientTypePhoneFormat": "E.164, sin el signo + al inicio",
+ "threemaApiAuthenticationSecret": "Clave Secreta del Gateway-ID",
+ "threemaBasicModeInfo": "Nota: Esta integración utiliza Threema Gateway en modo básico (encriptación basada en servidor). Puedes encontrar más detalles en {0}.",
+ "apiKeysDisabledMsg": "Las claves API están desactivadas porque la autenticación está desactivada.",
+ "Channel access token (Long-lived)": "Token de acceso al canal (Larga duración)",
+ "Create new forum post": "Crear un nuevo post en el foro",
+ "postToExistingThread": "Publicar en hilo / publicación existente",
+ "forumPostName": "Nombre de la publicación en el foro",
+ "threadForumPostID": "ID del hilo / publicación en el foro",
+ "e.g. {discordThreadID}": "por ejemplo, {discordThreadID}",
+ "whatHappensAtForumPost": "Crear una nueva publicación en el foro. Esto NO publica mensajes en una publicación existente. Para publicar en una publicación existente usa \"{option}\"",
+ "jsonQueryDescription": "Analice y extraiga datos específicos de la respuesta JSON del servidor mediante una consulta JSON o utilice \"$\" para la respuesta sin formato, si no espera JSON. Luego, el resultado se compara con el valor esperado, como cadenas. Consulte {0} para obtener documentación y use {1} para experimentar con consultas.",
+ "aboutSlackUsername": "Cambia el nombre que se muestra del remitente del mensaje. Si quieres mencionar a alguien, inclúyelo en el nombre descriptivo.",
+ "cacheBusterParam": "Añade el parámetro {0}",
+ "cacheBusterParamDescription": "Parámetro generado aleatoriamente para omitir cachés.",
+ "Community String": "Cadena comunitaria",
+ "snmpCommunityStringHelptext": "Esta cadena funciona como contraseña para autenticar y controlar el acceso a dispositivos habilitados para SNMP. Compárela con la configuración de su dispositivo SNMP.",
+ "privateOnesenderDesc": "Asegúrese de que el número de teléfono sea válido. Para enviar un mensaje a un número de teléfono privado, por ejemplo: 628123456789",
+ "wayToGetOnesenderUrlandToken": "Puedes obtener la URL y el token en el sitio web de Onesender. Más información {0}",
+ "Optional: Space separated list of scopes": "Opcional: Lista de ámbitos separados por espacios",
+ "No tags found.": "No se han encontrado etiquetas.",
+ "signl4Docs": "Puede encontrar más información sobre cómo configurar SIGNL4 y cómo obtener la URL del webhook de SIGNL4 en {0}.",
+ "shrinkDatabaseDescriptionSqlite": "Desencadena la base de datos {vacuum} para SQLite. {auto_vacuum} ya está habilitado, pero esto no desfragmenta la base de datos ni reempaqueta páginas de base de datos individuales como lo hace el comando {vacuum}.",
+ "and": "y",
+ "Message format": "Formato del mensaje",
+ "Send rich messages": "Enviar mensajes enriquecidos",
+ "OID (Object Identifier)": "(Identificador de Objeto) OID",
+ "snmpOIDHelptext": "Ingrese el OID del sensor o el estado que desea monitorear. Use herramientas de administración de red como navegadores MIB o software SNMP si no está seguro acerca del OID.",
+ "Condition": "Condición",
+ "SNMP Version": "Versión SNMP",
+ "Please enter a valid OID.": "Por favor escribe un OID válido.",
+ "Host Onesender": "Host de Onesender",
+ "Token Onesender": "Token de Onesender",
+ "Recipient Type": "Tipo de Receptor",
+ "Private Number": "Número Privado",
+ "groupOnesenderDesc": "Asegúrese de que el ID del grupo sea válido. Para enviar un mensaje al grupo, por ejemplo: 628123456789-342345",
+ "Group ID": "ID del grupo",
+ "Add Remote Browser": "Agregar navegador remoto",
+ "New Group": "Nuevo grupo",
+ "Group Name": "Nombre del grupo",
+ "OAuth2: Client Credentials": "OAuth2: Credenciales del Cliente",
+ "Authentication Method": "Método de autentificación",
+ "Authorization Header": "Cabecera de Autorización",
+ "Form Data Body": "Cuerpo de datos del formulario",
+ "OAuth Token URL": "OAuth Token URL",
+ "Client ID": "ID del Cliente",
+ "Client Secret": "Secreto de Cliente",
+ "OAuth Scope": "Alcance OAuth",
+ "Go back to home page.": "Volver a la página de inicio.",
+ "Lost connection to the socket server.": "Se perdió la conexión con el servidor de socket.",
+ "Cannot connect to the socket server.": "No se puede conectar al servidor de socket.",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "URL de SIGNL4 WebhooK",
+ "Conditions": "Condiciones",
+ "conditionAdd": "Añadir condición",
+ "now": "ahora",
+ "time ago": "hace {0}",
+ "-year": "-año",
+ "Json Query Expression": "Expresión de consulta Json",
+ "ignoredTLSError": "Se han ignorado errores TLS/SSL",
+ "conditionDelete": "Borrar condición",
+ "conditionAddGroup": "Añadir grupo",
+ "conditionDeleteGroup": "Borrar grupo",
+ "conditionValuePlaceholder": "Valor",
+ "equals": "igual",
+ "not equals": "no es igual",
+ "contains": "contiene",
+ "not contains": "no contiene",
+ "starts with": "empieza por",
+ "not starts with": "no empieza por",
+ "ends with": "termina con",
+ "not ends with": "No termina en",
+ "less than": "menor que",
+ "greater than": "mayor que",
+ "less than or equal to": "Menor o igual a",
+ "greater than or equal to": "Mayor o igual a",
+ "Notification Channel": "Canal de notificación",
+ "Sound": "Sonido",
+ "record": "Registro",
+ "RabbitMQ Username": "Usuario RabbitMQ",
+ "RabbitMQ Password": "Contraseña RabbitMQ",
+ "RabbitMQ Nodes": "Nodos de Gestión RabbitMQ",
+ "rabbitmqNodesRequired": "Por favor, configure los nodos para este monitor.",
+ "rabbitmqNodesInvalid": "Por favor, utilice una URL totalmente cualificada (comenzando por 'http') para los nodos RabbitMQ.",
+ "Separate multiple email addresses with commas": "Separa las múltiples direcciones de correo con comas",
+ "rabbitmqHelpText": "Para utilizar el monitor, necesitará habilitar el Plugin de Gestión en su configuración RabbitMQ. Para más información, por favor consulte {rabitmq_documentation}.",
+ "SendGrid API Key": "Clave de la API de SendGrid",
+ "rabbitmqNodesDescription": "Introduzca la URL para los nodos de gestión de RabbitMQ incluyendo el protocolo y el puerto. Ejemplo: {0}",
+ "Money": "Dinero",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "O bien un texto de ID de origen o un número de teléfono en formato E.164 si quiere ser capaz de recibir respuestas.",
+ "Harp": "Arpa",
+ "Scifi": "Ciencia Ficción",
+ "Alphanumerical string and hyphens only": "Sólo cadenas alfanuméricas y guiones",
+ "Time Sensitive (iOS Only)": "Sensible a la Hora (Solo iOS)",
+ "Doorbell": "Timbre",
+ "Flute": "Flauta",
+ "Guitar": "Guitarra",
+ "Correct": "Correcto",
+ "Bubble": "Burbuja",
+ "Elevator": "Ascensor",
+ "Fail": "Fallo",
+ "Reveal": "Mostrar",
+ "Pop": "Pop",
+ "From": "De",
+ "Clear": "Limpiar",
+ "Can be found on:": "Se puede encontrar en: {0}",
+ "Custom sound to override default notification sound": "Sonidos personalizados prevalecen sobre los sonidos por defecto de las notificaciones",
+ "The phone number of the recipient in E.164 format.": "El número de teléfono del receptor en formato E.164.",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "Las notificaciones sensibles en el tiempo se enviarán inmediatamente, incluso si el dispositivo está en modo no molestar.",
+ "Arcade": "Arcade"
}
diff --git a/src/lang/et-EE.json b/src/lang/et-EE.json
index c68314a9e..aa519ec1c 100644
--- a/src/lang/et-EE.json
+++ b/src/lang/et-EE.json
@@ -242,7 +242,6 @@
"Running": "Töötab",
"resendEveryXTimes": "Saada uuesti {0} korda",
"statusMaintenance": "Hooldus",
- "Webhook URL": "",
"Server URL": "Serveri URL",
"Priority": "Tähtsus",
"emojiCheatSheet": "Emotikoni spikker: {0}",
@@ -254,7 +253,6 @@
"PushUrl": "Lükka URL",
"Monitor History": "Monitori ajalugu",
"PasswordsDoNotMatch": "Paroolid ei ühti.",
- "records": "",
"Current User": "Praegune kasutaja",
"topic": "Teema",
"successMessage": "Edukas sõnum",
@@ -308,7 +306,6 @@
"General Monitor Type": "Üldine monitori tüüp",
"webhookAdditionalHeadersDesc": "Lisab täiendavad päised saadetud webhookiga.",
"Read more": "Loe rohkem",
- "HeadersInvalidFormat": "",
"clearDataOlderThan": "Hoia monitori ajalugu alles {0} päeva.",
"steamApiKeyDescription": "Steam Game Serveri monitoorimiseks on vaja sul Steam Web-API võtit. Sa saad registreerida enda API võtme siin: ",
"Done": "Tehtud",
diff --git a/src/lang/eu.json b/src/lang/eu.json
index 42b5f642b..fd6c7e09e 100644
--- a/src/lang/eu.json
+++ b/src/lang/eu.json
@@ -106,7 +106,7 @@
"disableauth.message2": "Egoera jakin batzuetarako diseinatuta dago, Uptime Kumaren {intendThirdPartyAuth} (Cloudflare Access, Authelia edo beste autentifikazio-mekanismo batzuk).",
"where you intend to implement third-party authentication": "aurrean hirugarrengo autentifikazio batzuek jartzeko",
"Please use this option carefully!": "Mesedez, kontuz erabili aukera hau!",
- "Logout": "Saioa amaitu",
+ "Logout": "Itxi saioa",
"Leave": "Utzi",
"I understand, please disable": "Ulertzen dut, mesedez desgaitu",
"Confirm": "Baieztatu",
@@ -115,7 +115,7 @@
"Username": "Erabiltzailea",
"Password": "Pasahitza",
"Remember me": "Gogora nazazu",
- "Login": "Saioa hasi",
+ "Login": "Hasi saioa",
"No Monitors, please": "Monitorizaziorik ez, mesedez",
"add one": "gehitu bat",
"Notification Type": "Jakinarazpen mota",
@@ -164,11 +164,11 @@
"Add New below or Select...": "Gehitu beste bat behean edo hautatu…",
"Tag with this name already exist.": "Izen hau duen etiketa dagoeneko badago.",
"Tag with this value already exist.": "Balio hau duen etiketa dagoeneko badago.",
- "color": "kolorea",
+ "color": "Kolorea",
"value (optional)": "balioa (hautazkoa)",
"Gray": "Grisa",
"Red": "Gorria",
- "Orange": "Naranja",
+ "Orange": "Laranja",
"Green": "Berdea",
"Blue": "Urdina",
"Indigo": "Indigo",
@@ -190,7 +190,7 @@
"Status Page": "Egoera orria",
"Status Pages": "Egoera orriak",
"defaultNotificationName": "Nire {notification} Alerta ({number})",
- "here": "Hemen",
+ "here": "hemen",
"Required": "Beharrezkoa",
"telegram": "Telegram",
"ZohoCliq": "ZohoCliq",
@@ -216,19 +216,19 @@
"smtpCC": "CC",
"smtpBCC": "BCC",
"discord": "Discord",
- "Discord Webhook URL": "Discord Webhook URL",
- "wayToGetDiscordURL": "You can get this by going to Server Settings -> Integrations -> Create Webhook",
- "Bot Display Name": "Bot Display Name",
+ "Discord Webhook URL": "Discord Webhook URLa",
+ "wayToGetDiscordURL": "Hona joanda lortu dezakezu: Server Settings -> Integrations -> View Webhooks -> New Webhook",
+ "Bot Display Name": "Botaren erakusteko izena",
"Prefix Custom Message": "Prefix Custom Message",
"Hello @everyone is...": "Kaixo {'@'}edonor da…",
"teams": "Microsoft Teams",
- "Webhook URL": "Webhook URL",
+ "Webhook URL": "Webhook URLa",
"wayToGetTeamsURL": "You can learn how to create a webhook URL {0}.",
"wayToGetZohoCliqURL": "You can learn how to create a webhook URL {0}.",
"signal": "Signal",
"Number": "Zenbakia",
- "Recipients": "Recipients",
- "needSignalAPI": "You need to have a signal client with REST API.",
+ "Recipients": "Hartzaileak",
+ "needSignalAPI": "REST APIarekin signal bezeroa eduki behar duzu.",
"wayToCheckSignalURL": "You can check this URL to view how to set one up:",
"signalImportant": "IMPORTANT: You cannot mix groups and numbers in recipients!",
"gotify": "Gotify",
@@ -280,8 +280,8 @@
"Read more": "Irakurri gehiago",
"appriseInstalled": "Apprise instalatuta.",
"appriseNotInstalled": "Apprise ez dago instalatuta. {0}",
- "Access Token": "Access Token",
- "Channel access token": "Channel access token",
+ "Access Token": "Access Tokena",
+ "Channel access token": "Kanalaren access tokena",
"Line Developers Console": "Line Developers Console",
"lineDevConsoleTo": "Line Developers Console - {0}",
"Basic Settings": "Oinarrizko ezarpenak",
@@ -316,7 +316,7 @@
"One record": "One record",
"steamApiKeyDescription": "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ",
"Current User": "Uneko erabiltzailea",
- "topic": "Topic",
+ "topic": "Gaia",
"topicExplanation": "MQTT topic to monitor",
"successMessage": "Arrakasta mezua",
"successMessageExplanation": "MQTT message that will be considered as success",
@@ -360,7 +360,6 @@
"Discard": "Baztertu",
"Cancel": "Ezeztatu",
"Powered by": "Honekin egina:",
- "shrinkDatabaseDescription": "Trigger database VACUUM for SQLite. If your database is created after 1.10.0, AUTO_VACUUM is already enabled and this action is not needed.",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "API erabiltzailea (webapi_ aurre-hizkia barne)",
"serwersmsAPIPassword": "API pasahitza",
@@ -402,7 +401,7 @@
"proxyDescription": "Proxies must be assigned to a monitor to function.",
"enableProxyDescription": "This proxy will not effect on monitor requests until it is activated. You can control temporarily disable the proxy from all monitors by activation status.",
"setAsDefaultProxyDescription": "This proxy will be enabled by default for new monitors. You can still disable the proxy separately for each monitor.",
- "Certificate Chain": "Certificate Chain",
+ "Certificate Chain": "Zertifikatu katea",
"Valid": "Baliozkoa",
"Invalid": "Baliogabea",
"AccessKeyId": "AccessKey ID",
@@ -477,7 +476,7 @@
"Footer Text": "Oineko testua",
"Show Powered By": "Erakutsi Honekin egina:",
"Domain Names": "Domeinu izenak",
- "signedInDisp": "Signed in as {0}",
+ "signedInDisp": "{0} bezala logeatua",
"signedInDispDisabled": "Auth desgaituta.",
"Certificate Expiry Notification": "Zertifikatu iraungitze jakinarazpena",
"API Username": "API Erabiltzailea",
@@ -583,6 +582,118 @@
"Mechanism": "Mekanismoa",
"Home": "Hasiera",
"filterActive": "Aktibo",
- "filterActivePaused": "Geldituta",
- "Expected Value": "Esperotako balioa"
+ "filterActivePaused": "Pausatua",
+ "Expected Value": "Esperotako balioa",
+ "statusPageRefreshIn": "{0} barru freskatuko da.",
+ "now": "orain",
+ "time ago": "duela {0}",
+ "-year": "-urte",
+ "styleElapsedTimeShowNoLine": "Erakutsi (Lerrorik ez)",
+ "styleElapsedTimeShowWithLine": "Erakutsi (Lerroarekin)",
+ "Select": "Hautatu",
+ "Docker Container": "Docker edukiontzia",
+ "Container Name / ID": "Edukiontzi izena / ID",
+ "Packet Size": "Pakete tamaina",
+ "telegramSendSilently": "Bidali isilik",
+ "Examples": "Adibideak",
+ "default: notify all devices": "Defektuz: jakinarazi gailu guztiak",
+ "Event type:": "Ekintza mota:",
+ "Event data:": "Ekintza mota:",
+ "Optional": "Hautazkoa",
+ "and": "eta",
+ "sameAsServerTimezone": "Zerbitzariaren ordu-zona bera",
+ "endDateTime": "Bukaera data/ordua",
+ "cronExpression": "Cron espresioa",
+ "cronSchedule": "Programatu: ",
+ "invalidCronExpression": "Cron espresio baliogabea: {0}",
+ "recurringInterval": "Tartea",
+ "No Maintenance": "Mantenurik ez",
+ "maintenanceStatus-under-maintenance": "Mantenuan",
+ "maintenanceStatus-inactive": "Aktibatu gabe",
+ "maintenanceStatus-scheduled": "Programatuta",
+ "Display Timezone": "Erakutsi ordu zona",
+ "statusPageMaintenanceEndDate": "Bukatu",
+ "IconUrl": "Ikono URLa",
+ "chromeExecutableAutoDetect": "Auto detektatu",
+ "Schedule Maintenance": "Programatu mantenua",
+ "Edit Maintenance": "Editatu mantenua",
+ "Date and Time": "Data eta ordua",
+ "plugin": "Plugin | Pluginak",
+ "installing": "Instalatzen",
+ "uninstalling": "Desinstalatzen",
+ "confirmUninstallPlugin": "Ziur zaude plugin hau desinstalatu nahi duzula?",
+ "Clone": "Klonatu",
+ "cloneOf": "{0}-(a)ren klona",
+ "emailTemplateStatus": "Egoera",
+ "emailTemplateMsg": "jakinarazpenaren mezua",
+ "Select message type": "Hautatu mezu mota",
+ "Send to channel": "Bidali kanalera",
+ "Enable TLS": "Gaitu TLS",
+ "webhookAdditionalHeadersTitle": "Goiburu gehigarriak",
+ "Reset Token": "Berrezarri tokena",
+ "selectedMonitorCount": "Hautatuta: {0}",
+ "HTTP Headers": "HTTP goiburuak",
+ "Refresh Interval": "Eguneratze tartea",
+ "tcp": "TCP / HTTP",
+ "Notification Service": "Jakinarazpen zerbitzua",
+ "or": "edo",
+ "startDateTime": "Hasiera data/ordua",
+ "pauseMaintenanceMsg": "Ziur zaude gelditu nahi duzula?",
+ "install": "Instalatu",
+ "uninstall": "Desinstalatu",
+ "emailTemplateServiceName": "Zerbitzu izena",
+ "Your User ID": "Zure erabiltzaile IDa",
+ "Connection Type": "Konexio mota",
+ "pushOthers": "Besteak",
+ "programmingLanguages": "Programatze lengoaiak",
+ "dbName": "Datubase izena",
+ "resendEveryXTimes": "Berbidali {0} aldiz",
+ "Reconnecting...": "Birkonektatzen...",
+ "setupDatabaseChooseDatabase": "Zein datubase erabili nahi duzu?",
+ "Recurring": "Errepikakorra",
+ "Mentioning": "Aipatzen",
+ "Condition": "Baldintza",
+ "RabbitMQ Username": "RabbitMQ erabiltzailea",
+ "Expiry": "Iraungitzea",
+ "pagertreeSilent": "Isildu",
+ "Group": "Taldea",
+ "Saved.": "Gordeta.",
+ "Conditions": "Baldintzak",
+ "smseagleTo": "Telefono zenbakia(k)",
+ "Enable Kafka SSL": "Gaitu Kafka SSL",
+ "Continue": "Jarraitu",
+ "apiKey-active": "Aktibo",
+ "apiKey-expired": "Iraungita",
+ "apiKey-inactive": "Ez-aktibo",
+ "Expires": "Iraungitzen da",
+ "Generate": "Sortu",
+ "pagertreeUrgency": "Larritasuna",
+ "pagertreeLow": "Baxua",
+ "pagertreeHigh": "Altua",
+ "pagertreeCritical": "Larria",
+ "Destination": "Helburua",
+ "conditionValuePlaceholder": "Balioa",
+ "RabbitMQ Password": "RabbitMQ pasahitza",
+ "Correct": "Zuzena",
+ "Fail": "Akatsa",
+ "Elevator": "Igogailua",
+ "Guitar": "Gitarra",
+ "pagertreeMedium": "Ertaina",
+ "Host URL": "Host URLa",
+ "Affected Monitors": "Kaltetutako monitoreak",
+ "Pick Affected Monitors...": "Hautatu kaltetutako monitoreak…",
+ "deleteMaintenanceMsg": "Ziur zaude mantentze lan hau ezabatu nahi duzula?",
+ "smseagleEncoding": "Unicode gisa bidali",
+ "Add Another": "Gehitu beste bat",
+ "Google Analytics ID": "Google Analytics IDa",
+ "Edit Tag": "Editatu etiketa",
+ "PushDeer Server": "PushDeer zerbitzaria",
+ "Show Clickable Link": "Erakutsi lotura klikagarria",
+ "twilioToNumber": "zenbakira",
+ "twilioFromNumber": "zenbakitik",
+ "ntfyUsernameAndPassword": "Erabiltzailea eta pasahitza",
+ "lunaseaUserID": "Erabiltzaile IDa",
+ "pagertreeDoNothing": "Ez egin ezer",
+ "Separate multiple email addresses with commas": "Banatu email helbideak koma ikurrekin",
+ "settingUpDatabaseMSG": "Datubasea ezartzen. Denbora pixka bat iraun dezake, pazientzia eduki."
}
diff --git a/src/lang/fa.json b/src/lang/fa.json
index 26df0cd87..b66bed8f8 100644
--- a/src/lang/fa.json
+++ b/src/lang/fa.json
@@ -76,7 +76,7 @@
"Accepted Status Codes": "وضعیتهای (Status Code) های قابل قبول",
"Save": "ذخیره",
"Notifications": "اطلاعرسانیها",
- "Not available, please setup.": "هیچ موردی موجود نیست، اولین مورد را راه اندازی کنید.",
+ "Not available, please setup.": "هیچ موردی موجود نیست، اولین مورد را راهاندازی کنید.",
"Setup Notification": "راه اندازی اطلاعرسانی",
"Light": "روشن",
"Dark": "تاریک",
@@ -335,7 +335,6 @@
"About": "درباره آپتایم کوما",
"wayToGetCloudflaredURL": "(دریافت Cloudflared از {0})",
"cloudflareWebsite": "وب سایت کلادفلر",
- "shrinkDatabaseDescription": "تریگر VACUUM برای SQLite. اگر دیتابیس شما بعد از 1.10.0 ایجاد شده باشد، AUTO_VACUUM قبلاً فعال شده است و لازم نیست این عمل انجام شود. (Trigger database VACUUM for SQLite. If your database is created after 1.10.0, AUTO_VACUUM is already enabled and this action is not needed.).",
"Message:": "پیام:",
"HTTP Headers": "هدر های HTTP",
"Bot Token": "توکن بات",
@@ -349,10 +348,10 @@
"light": "روشن",
"Query": "کوئری",
"Effective Date Range": "محدوده تاریخ مورد تاثیر (اختیاری)",
- "statusPageRefreshIn": "بارگذاری مجدد در هر: {0}",
+ "statusPageRefreshIn": "تا بارگذاری مجدد: {0}",
"Content Type": "نوع محتوا (Content Type)",
"Server URL": "آدرس سرور",
- "Priority": "اهمیت",
+ "Priority": "اولویت",
"emojiCheatSheet": "چیت شیت ایموجی ها: {0}",
"Read more": "بیشتر بدانید",
"webhookJsonDesc": "{0} برای هر HTTP سرور جدیدی مانند Express.js مناسب است",
@@ -386,7 +385,7 @@
"Switch to Dark Theme": "تغییر به حالت تیره",
"Show Tags": "نمایش تگ ها",
"Hide Tags": "مخفی سازی تگ ها",
- "Description": "توضحیات",
+ "Description": "توضیحات",
"Custom CSS": "CSS اختصاصی",
"deleteStatusPageMsg": "آیا بابت حذف این استاتوس پیچ مطمئن هستید؟",
"Proxies": "پروکسی ها",
@@ -643,7 +642,7 @@
"Push URL": "URL پوش",
"Schedule maintenance": "زمانبندی نگهداری (غیرفعال سازی دستی)",
"webhookFormDataDesc": "{multipart} برای PHP مناسب است. آرایه JSON نیاز است تا به این شکل باز شود {decodeFunction}",
- "webhookAdditionalHeadersTitle": "هدر اضافی",
+ "webhookAdditionalHeadersTitle": "هدرهای اضافی",
"webhookAdditionalHeadersDesc": "تنظیم هدر های اضافی که نیاز است با وب هوک ارسال شود. هر هدر باید به کیلد/مقدار JSON تعریف شده باشد.",
"Webhook URL": "آدرس وب هوک",
"Application Token": "توکن اپلیکیشن",
@@ -759,11 +758,10 @@
"filterActive": "فعال",
"webhookCustomBodyDesc": "یک بدنه HTTP سفارشی برای ریکوئست تعریف کنید. متغیر های قابل استفاده: {msg}, {heartbeat}, {monitor}.",
"tailscalePingWarning": "برای استفاده از Tailscale Ping monitor، شما باید آپتایم کوما را بدون استفاده از داکر و همچنین Tailscale client را نیز بر روی سرور خود نصب داشته باشید.",
- "jsonQueryDescription": "یک کوئری json در برابر پاسخ انجام دهید و مقدار مورد انتظار را (مقدار برگشتی برای مقایسه به رشته تبدیل می شود). برای مستندات درباره زبان کوئری، {0} مشاهده کنید. همچنین محیط تست را میتوانید در {1} پیدا کنید.",
"Enter the list of brokers": "لیست بروکر هارا وارد کنید",
"Enable Kafka Producer Auto Topic Creation": "فعال سازی ایجاپ موضوع اتوماتیک تهیه کننده",
"Secret AccessKey": "کلید محرمانه AccessKey",
- "wayToGetFlashDutyKey": "می توانید به کانال -> (انتخاب یک کانال) -> یکپارچه سازی -> صفحه یکپارچه سازی جدید بروید، یک \"رویداد سفارشی\" را برای دریافت یک آدرس فشار اضافه کنید، کلید یکپارچه سازی را در آدرس کپی کنید. برای اطلاعات بیشتر لطفا مراجعه کنید به",
+ "wayToGetFlashDutyKey": "می توانید به کانال -> (انتخاب یک کانال) -> یکپارچه سازی -> یکپارچه سازی جدید بروید، یک \"Uptime Kuma\" را برای دریافت یک آدرس پوش اضافه کنید، کلید یکپارچه سازی را در آدرس کپی کنید. برای اطلاعات بیشتر لطفا مراجعه کنید به",
"showCertificateExpiry": "نمایش زمان به پایان رسیدن اعتبار سرتیفیکیت",
"gamedigGuessPortDescription": "پورت مورد استفاده توسط پروتکل Query Valve Server ممکن است با پورت مشتری متفاوت باشد. اگر مانیتور نمی تواند به سرور شما متصل شود، این را امتحان کنید.",
"invertKeywordDescription": "دنبال کلمات کلیدی ناموجود باشید تا آنهایی که موجود است.",
@@ -812,8 +810,8 @@
"Expected Value": "مقدار مورد انتظار",
"Json Query": "کوئری جیسون",
"Saved.": "ذخیره شده.",
- "setupDatabaseChooseDatabase": "از چه دیتابیسی میخواهید استفاده کنید؟",
- "setupDatabaseEmbeddedMariaDB": "شما نیازی نیست چیزی را تنظیم کنید . این Image داکر MariaDB را به طور خودکار برای شما جاسازی و پیکربندی کرده است. آپتایم کوما از طریق سوکت یونیکس به این دیتابیس متصل می شود.",
+ "setupDatabaseChooseDatabase": "از چه دیتابیسی میخواهید استفاده کنید؟",
+ "setupDatabaseEmbeddedMariaDB": "شما نیازی نیست چیزی را تنظیم کنید . این Image داکر، MariaDB را به طور خودکار برای شما جاسازی و پیکربندی کرده است. آپتایم کوما از طریق سوکت یونیکس به این دیتابیس متصل می شود.",
"setupDatabaseSQLite": "یک فایل دیتابیس ساده که برای استقرار در مقیاس کوچک توصیه می شود. قبل از نسخه 2.0.0، Uptime Kuma از SQLite به عنوان دیتابیس پیش فرض استفاده می کرد.",
"enableNSCD": "فعال سازی NSCD (Name Service Cache Daemon) برای کش کردن تمام ریکوئست های DNS",
"setupDatabaseMariaDB": "به یک دیتابیس خارجی MariaDB متصل شوید. شما باید اطلاعات اتصال دیتابیس را تنظیم کنید.",
@@ -860,5 +858,215 @@
"emailTemplateStatus": "وضعیت",
"templateMsg": "پیام نوتیفیکیشن",
"templateMonitorJSON": "شی توصیف کننده ناظر",
- "Add a new expiry notification day": "تنظیم تاریخ انقضا اطلاع رسانی جدید"
+ "Add a new expiry notification day": "تنظیم تاریخ انقضا اطلاع رسانی جدید",
+ "ntfyPriorityHelptextAllExceptDown": "همه ایونت ها با این اولویت ارسال می شوند، به جز {0}-ایونت، که دارای اولویت {1} هستند",
+ "Browser Screenshot": "اسکرین شات مرورگر",
+ "GrafanaOncallUrl": "لینک در دسترس گرافانا (Grafana)",
+ "What is a Remote Browser?": "مرورگر ریموت چیست؟",
+ "Remote Browsers": "مرورگرهای ریموت",
+ "Remote Browser": "مرورگر ریموت",
+ "Add a Remote Browser": "اضافه کردن مرورگر ریموت",
+ "Remote Browser not found!": "مرورگر ریموت پیدا نشد!",
+ "remoteBrowsersDescription": "مرورگرهای ریموت جایگزینی برای اجرای لوکالی Chromium هستند.انها را میتوانید با سرویسی مانند browserless.io راه اندازی کنید یا به سرویس خود متصل شوید",
+ "self-hosted container": "کانتیر سلف-هاست شده",
+ "remoteBrowserToggle": "بهطور پیشفرض Chromium در کانتینر Uptime Kuma اجرا میشود. با تغییر دادن این سوئیچ می توانید از یک مرورگر ریموت استفاده کنید.",
+ "useRemoteBrowser": "استفاده از یک مرورگر ریموت",
+ "deleteRemoteBrowserMessage": "آیا مطمئن هستید که می خواهید این مرورگر ریموت را برای همه مانیتورها حذف کنید؟",
+ "statusPageSpecialSlugDesc": "پسوند اختصاصی {0}: این صفحه زمانی نشان داده می شود که هیچ پسوندی ارائه نشود",
+ "smtpLiquidIntroduction": "دو فیلد زیر از طریق Liquid templating Language قابل قالب بندی هستند. لطفاً برای نحوه استفاده به {0} مراجعه کنید. متغیرهای موجو:",
+ "emailTemplateMonitorJSON": "شیء توصیف کننده مانیتور (JSON)",
+ "emailTemplateHeartbeatJSON": "شیء توصیف کننده Heartbeat",
+ "emailTemplateMsg": "پیام اطلاع رسانی",
+ "emailTemplateLimitedToUpDownNotification": "فقط برای heartbeat UP/DOWN در دسترس است، در غیر این صورت NULL است",
+ "liquidIntroduction": "قالب پذیری از طریق زبان قالبسازی مایع قابل انجام است. لطفاً برای دیدن نحوه استفاده به {0} مراجعه کنید. متغیرهای موجود:",
+ "templateHeartbeatJSON": "شیئی که heartbeat را توصیف می کند (JSON)",
+ "templateLimitedToUpDownCertNotifications": "فقط برای پیام های UP/DOWN/انقضای گواهی (Certificate Expiry) موجود است",
+ "templateLimitedToUpDownNotifications": "فقط برای پیام های UP/DOWN موجود است",
+ "setup a new monitor group": "ایجاد یک گروه مانیتور",
+ "openModalTo": "باز کردن مدال برای {0}",
+ "Add a domain": "اضافه کردن دامین",
+ "Remove domain": "حذف دامین '{0}'",
+ "ntfyPriorityHelptextAllEvents": "تمامی ایونت ها با حداکثر اولویت ارسال می شوند",
+ "documentationOf": "کلید مطلب ها",
+ "wayToGetHeiiOnCallDetails": "روش دریافت ایدی کلید و کلید ای پی آی درمطلب توضیح داده شده است",
+ "Channel access token (Long-lived)": "توکن دسترسی به کانال",
+ "Your User ID": "آیدی حساب کاربری شما",
+ "ignoreTLSErrorGeneral": "نادیده گرفتن ارور TLS/SSL برای برقراری ارتباط",
+ "Originator": "ایجاد کننده",
+ "cellsyntOriginatortypeNumeric": "مقدار عددی (حداکثر 15 رقم) با شماره تلفن در قالب بین المللی بدون 00 اول (به عنوان مثال شماره 07920 110 000 بریتانیا باید به عنوان 447920110000 تنظیم شود). گیرندگان می توانند به پیام پاسخ دهند.",
+ "threemaRecipient": "گیرنده",
+ "threemaRecipientType": "نوع گیرنده",
+ "threemaRecipientTypeIdentity": "شناسه Threema",
+ "threemaRecipientTypeIdentityFormat": "8 کاراکتر",
+ "threemaRecipientTypePhone": "شماره موبایل",
+ "threemaRecipientTypePhoneFormat": "E.164، بدون پیشوند +",
+ "threemaRecipientTypeEmail": "آدرس ایمیل",
+ "threemaSenderIdentity": "شناسه ورودی",
+ "threemaApiAuthenticationSecret": "کلید شناسه ورودی",
+ "threemaBasicModeInfo": "توجه: این ادغام از ورودی Threema در حالت اولیه (رمزگذاری مبتنی بر سرور) استفاده می کند. جزئیات بیشتر را می توان در {0} یافت.",
+ "smspartnerApiurl": "شما میتوانید کلید API را در داشبورد خود در {0} پیدا کنید",
+ "smspartnerPhoneNumber": "شماره موبایل(ها)",
+ "Host URL": "آدرس هاست",
+ "gtxMessagingApiKeyHint": "شما میتوانید کلید API خود را در این آدرس پیدا کنید: My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)",
+ "Bitrix24 Webhook URL": "آدرس وب هوک Bitrix24",
+ "wayToGetBitrix24Webhook": "شما می توانید با دنبال کردن مراحل در {0} یک وب هوک ایجاد کنید",
+ "whapiRecipient": "شماره تلفن / شناسه ارتباط / شناسه گروه",
+ "gtxMessagingToHint": "قالب بینالمللی، با پیشوند \"+\" ({e164}، {e212} یا {e214})",
+ "Mentioning": "منشن کردن",
+ "Send to channel": "ارسال به کانال",
+ "forumPostName": "نام پست انجمن",
+ "threadForumPostID": "شناسه پست رشته / انجمن",
+ "e.g. {discordThreadID}": "به عنوان مثال: {discordThreadID}",
+ "wayToGetDiscordThreadId": "دریافت شناسه پست / انجمن شبیه به دریافت شناسه کانال است. درباره نحوه دریافت شناسه بیشتر بخوانید {0}",
+ "senderSevenIO": "شماره یا نام ارسال کننده",
+ "receiverSevenIO": "شماره گیرنده",
+ "Don't mention people": "این آدم هارا منشن نکن",
+ "Mention group": "منشن {group}",
+ "smspartnerSenderName": "نام ارسال کننده اس ام اس",
+ "apiKeySevenIO": "کلید SevenIO API",
+ "API URL": "آدرس API",
+ "callMeBotGet": "اینجا شما می توانید یک نقطه پایانی برای {0}، {1} و {2} ایجاد کنید. به خاطر داشته باشید که ممکن است ریت لیمیت (Rate Limit) دریافت کنید. به نظر می رسد ریت لیمیت ها عبارتند از: {3}",
+ "To Phone Number": "به شماره موبایل",
+ "Originator type": "نوع Originator",
+ "Destination": "مقصد",
+ "Allow Long SMS": "اجازه ارسال پیام بلند",
+ "max 15 digits": "حداکثر 15 عدد",
+ "max 11 alphanumeric characters": "حداکثر 11 کاراکتر الفبا و اعداد",
+ "locally configured mail transfer agent": "نماینده انتقال نامه به صورت لوکال",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "یا آدرس هاست سروری که میخواهید به آن متصل شوید را وارد کنید یا {localhost} اگر میخواهید از یک {local_mta} استفاده کنید",
+ "Refresh Interval": "وقفه بین بارگزاری مجدد",
+ "Refresh Interval Description": "صفحه وضعیت هر {0} ثانیه یک بار سایت را بهروزرسانی میکند",
+ "Select message type": "انتخاب نوع پیام",
+ "Create new forum post": "ایحاد یک پست جدید در انجمن",
+ "postToExistingThread": "پست در یک رشته / انجمن موجود",
+ "whatHappensAtForumPost": "ایحاد یک پست جدید در انجمن. این گزینه در یک پست موجود پیامی را ارسال نمی کند. برای پست در یک پیام موجود از گزینه\"{option}\" استفاده کنید",
+ "smspartnerPhoneNumberHelptext": "شماره باید در قالب بین المللی {0}، {1} باشد. شماره ها باید با {2} از هم جدا شوند",
+ "smspartnerSenderNameInfo": "باید بین 3..=11 کاراکتر معمولی باشد",
+ "bitrix24SupportUserID": "لطفا شناسه کاربری خود را در Bitrix24 وارد کنید. با رفتن به پروفایل کاربر می توانید شناسه را از لینک دریافت کنید.",
+ "Command": "دستور",
+ "mongodbCommandDescription": "یک دستور MongoDB را در پایگاه داده اجرا کنید. برای اطلاعات در مورد دستورات موجود، {documentation} را بررسی کنید",
+ "wayToGetSevenIOApiKey": "دز داشبورد به آدرس app.seven.io > developer > api key بر روی دکمه سبز اضافه کلیک کنید",
+ "receiverInfoSevenIO": "اگر شماره دریافت کننده در آلمان نیست، شما باید کد کشور را در مقابل شماره اضافه کنید (به عنوان مثال برای کد کشور 1 از ایالات متحده به جای 017612121212 از 117612121212 استفاده کنید)",
+ "wayToWriteWhapiRecipient": "شماره تلفن با پیشوند بینالمللی، اما بدون علامت مثبت در شروع ({0})، شناسه تماس ({1}) یا شناسه گروه ({2}).",
+ "wayToGetWhapiUrlAndToken": "شما با رفتن به کانال مورد نظر خود از {0} می توانید URL API و توکن را دریافت کنید",
+ "gtxMessagingFromHint": "در موبایل ها، گیرندگان شما TPOA را که به عنوان فرستنده پیام نمایش داده می شود، می بینند. حداکثر 11 کاراکتر (فقط الفبا و اعداد)، یک کد کوتاه، کد طولانی محلی یا اعداد بینالمللی مجاز هستند ({e164}، {e212} یا {e214})",
+ "cellsyntOriginator": "روی تلفن همراه گیرنده به عنوان Originator پیام قابل مشاهده است. مقادیر و تابع مجاز به پارامتر مبدا بستگی دارد.",
+ "cellsyntDestination": "شماره تلفن گیرنده با استفاده از فرمت بینالمللی با 00 اصلی و به دنبال آن کد کشور، به عنوان مثال. 00447920110000 برای بریتانیا شماره 07920 110 000 (حداکثر 17 رقم در کل). حداکثر 25000 گیرنده جدا شده با کاما در هر درخواست HTTP.",
+ "cellsyntSplitLongMessages": "پیام های طولانی را به حداکثر 6 قسمت تقسیم کنید. 153 x 6 = 918 کاراکتر.",
+ "wayToGetThreemaGateway": "شما می توانید برای Threema Gateway {0} ثبت نام کنید.",
+ "threemaSenderIdentityFormat": "8 کاراکتر، معمولا با * (ستاره) شروع می شود",
+ "apiKeysDisabledMsg": "کلیدهای API غیرفعال هستند زیرا احراز هویت غیرفعال است.",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "از شماره تلفن / آدرس مبدأ مسیر انتقال (TPOA)",
+ "Alphanumeric (recommended)": "الفبا و اعداد (پیشنهاد شده)",
+ "Telephone number": "شماره تلفن",
+ "cellsyntOriginatortypeAlphanumeric": "الفبا و اعداد (حداکثر 11 کاراکتر). گیرندگان نمی توانند به پیام پاسخ دهند.",
+ "cacheBusterParam": "افزودن پارامتر {0}",
+ "Private Number": "شماره شخصی",
+ "jsonQueryDescription": "با استفاده از JSON query پاسخ JSON سرور را تحلیل و استخراج کنید یا از «$» برای پاسخ خام استفاده کنید، در صورتی که JSON نباشد. سپس نتیجه با مقدار مورد نظر به عنوان رشته مقایسه میشود. برای مستندات به {0} بروید و از {1} برای آزمایش کوئریها استفاده کنید.",
+ "now": "الان",
+ "-year": "-سال",
+ "time ago": "{0} پیش",
+ "and": "و",
+ "Condition": "شرط",
+ "SNMP Version": "نسخه SNMP",
+ "privateOnesenderDesc": "مطمئن شوید که شماره تلفن درست است. برای ارسال پیام به شماره شخصی، مثل: 09123456789",
+ "Group ID": "شناسه گروه",
+ "Add Remote Browser": "افزودن مرورگر ریموت",
+ "New Group": "گروه جدید",
+ "Group Name": "نام گروه",
+ "Authentication Method": "روش احراز هویت",
+ "Client ID": "شناسه کلاینت",
+ "Client Secret": "رمز کلاینت",
+ "Go back to home page.": "بازگشت به صفحه اصلی.",
+ "No tags found.": "برچسبی یافت نشد.",
+ "Lost connection to the socket server.": "اتصال به سوکت سرور از دست رفت.",
+ "Cannot connect to the socket server.": "نمیتوان به سوکت سرور متصل شد.",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "پیوند وبهوک SIGNL4",
+ "Conditions": "شرایط",
+ "conditionAdd": "افزودن شرط",
+ "conditionDelete": "حذف شرط",
+ "conditionAddGroup": "افزودن گروه",
+ "conditionDeleteGroup": "حذف گروه",
+ "conditionValuePlaceholder": "مقدار",
+ "equals": "برابر",
+ "not equals": "نابرابر",
+ "contains": "شامل",
+ "starts with": "شروع با",
+ "not starts with": "عدم شروع با",
+ "not contains": "شامل نباشد",
+ "ends with": "پایان با",
+ "not ends with": "عدم پایان با",
+ "less than": "کمتر از",
+ "greater than": "بیشتر از",
+ "less than or equal to": "کمتر یا مساوی با",
+ "greater than or equal to": "بیشتر یا مساوی با",
+ "record": "رکورد",
+ "snmpCommunityStringHelptext": "این رشته به عنوان پسورد برای احراز هویت و کنترل دسترسی به دستگاههای آماده SNMP استفاده میشود. این پسورد را با توجه به تنظیمات دستگاه SNMP خود مطابقت دهید.",
+ "snmpOIDHelptext": "OID برای سنسور یا وضعیتی که میخواهید مانیتور کنید را وارد کنید. اگر درباره مقدار OID اطمینان ندارید از ابزارهای مدیریت شبکهای مانند MIB یا SNMP استفاده کنید.",
+ "Json Query Expression": "عبارت کوئری JSON",
+ "cacheBusterParamDescription": "پارامتر تولید شده رندوم برای رد کردن کش.",
+ "Community String": "رشته انجمن",
+ "OID (Object Identifier)": "OID (شناسه شئ)",
+ "Please enter a valid OID.": "لطفا یک OID معتبر وارد کنید.",
+ "Host Onesender": "هاست Onesender",
+ "Token Onesender": "توکن Onesender",
+ "Recipient Type": "نوع دریافت کننده",
+ "groupOnesenderDesc": "از معتبر بودن GroupID اطمینان حاصل کنید. برای ارسال پیام در گروه، برای مثال: 628123456789-342345",
+ "wayToGetOnesenderUrlandToken": "برای دریافت URL و توکن میتوانید به وبسایت Onesender مراجعه گنید. اطلاعات بیشتر {0}",
+ "OAuth2: Client Credentials": "OAuth2: گواهی مشتری",
+ "Authorization Header": "هدر Authorization",
+ "Form Data Body": "از اطلاعات بدنه",
+ "OAuth Token URL": "URL توکن OAuth",
+ "OAuth Scope": "اسکوپ OAuth",
+ "Optional: Space separated list of scopes": "اختیاری: لیست جدا شده با فاصله از اسکوپها",
+ "signl4Docs": "شما میتوانید اطلاعات بیشتر در رابطه با نحوه تنظیم SIGNL4 و به دست آوردن URL وبهوک SIGNL4 را در {0} پیدا کنید.",
+ "ignoredTLSError": "خطاهای TLS/SSL نادیده گرفته میشود",
+ "Bubble": "حباب",
+ "Message format": "ساختار پیام",
+ "Notification Channel": "کانال اطلاعرسانی",
+ "Doorbell": "زنگ",
+ "The phone number of the recipient in E.164 format.": "شماره تلفن گیرنده به فرمت E.164.",
+ "Sound": "صدا",
+ "Correct": "درست",
+ "Reveal": "نمایش",
+ "Flute": "فلوت",
+ "Money": "پول",
+ "Scifi": "علمیتخیلی",
+ "Elevator": "آسانسور",
+ "Guitar": "گیتار",
+ "Pop": "پاپ",
+ "From": "از",
+ "telegramServerUrl": "(اختیاری) آدرس سرور",
+ "telegramServerUrlDescription": "برای کاهش محدودیتهای بات تلگرام یا دسترسی در مناطقی که تلگرام فیلتر شده است (مثل ایران یا چین و ...). برای اطلاعات بیشتر {0} را ببینید. مقدار پیشفرض: {1}",
+ "Alphanumerical string and hyphens only": "فقط حروف الفبا، اعداد و -",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "اعلانهای حساس به زمان در لحظه ارسال خواهند شد، حتی اگر دستگاه در حالت بدون مزاحمت قرار داشته باشد.",
+ "rabbitmqNodesRequired": "لطفا گرههای این پایشگر را تنظیم کنید.",
+ "RabbitMQ Password": "گذرواژه RabbitMQ",
+ "RabbitMQ Nodes": "گرههای مدیریت RabbitMQ",
+ "rabbitmqHelpText": "برای پایش، لازم است افزونه مدیریت (Management) در RabbitMQ را فعال کنید. برای اطلاعات بیشتر به {rabitmq_documentation} مراجعه کنید.",
+ "wayToWriteWahaChatId": "شماره موبایل در قالب بینالمللی و بدون علامت مثبت ابتدایی ({0})، شناسه مخاطب ({1}) یا شناسه گروه ({2}). اعلانها از نشست WAHA به این شناسه گفتگو ارسال خواهند شد.",
+ "wahaSession": "نشست",
+ "wahaChatId": "شناسه گفتگو (شماره موبایل / شناسه مخاطب / شناسه گروه)",
+ "wayToGetWahaSession": "با این نشست WAHA اعلانها را به شناسه گفتگو ارسال میکند. قابل مشاهده در پنل کاربری WAHA.",
+ "Message Template": "قالب پیام",
+ "Template Format": "فرمت قالب",
+ "YZJ Webhook URL": "آدرس وبهوک YZJ",
+ "Fail": "شکست",
+ "Custom sound to override default notification sound": "نوای دلخواه به جای نوای پیشفرض اعلان",
+ "Time Sensitive (iOS Only)": "حساس به زمان (فقط iOS)",
+ "Can be found on:": "در {0} یافت میشود",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "شناسه ارسال کننده متنی و در صورتی که میخواهید پاسخها را دریافت کنید، شماره موبایل در قالب E.164.",
+ "rabbitmqNodesDescription": "آدرس گرههای مدیریت RabbitMQ را به همراه پروتکل و شماره پورت وارد کنید. مثال: {0}",
+ "RabbitMQ Username": "نام کاربری RabbitMQ",
+ "Separate multiple email addresses with commas": "آدرسهای ایمیل را با استفاده از ویرگول انگلیسی یا کاما جدا کنید",
+ "Plain Text": "متن ساده",
+ "aboutSlackUsername": "نام نمایشی ارسال کننده پیام را تغییر میدهد. اگر میخواهید شخصی را نام ببرید، در قسمت نام دوستانه بنویسید.",
+ "Clear": "پاکسازی",
+ "templateServiceName": "نام خدمت",
+ "templateHostnameOrURL": "آدرس یا نام میزبان",
+ "templateStatus": "وضعیت",
+ "telegramUseTemplate": "استفاده از قالب پیام دلخواه",
+ "telegramUseTemplateDescription": "در صورت فعالسازی، پیام با قالب دلخواه ارسال خواهد شد.",
+ "telegramTemplateFormatDescription": "در تلگرام امکان استفاده از زبانهای نشانهگذاری مختلفی وجود دارد، برای جزئیات بیشتر {0} را ببینید."
}
diff --git a/src/lang/fi.json b/src/lang/fi.json
index 0b8682e07..bf203a749 100644
--- a/src/lang/fi.json
+++ b/src/lang/fi.json
@@ -1,7 +1,7 @@
{
"Dashboard": "Kojetaulu",
"Help": "Apua",
- "New Update": "Uusi Päivitys",
+ "New Update": "Uusi päivitys",
"Language": "Kieli",
"Appearance": "Ulkonäkö",
"Theme": "Teema",
@@ -11,15 +11,15 @@
"List": "Lista",
"Add": "Lisää",
"Add New Monitor": "Lisää uusi seurain",
- "Quick Stats": "Nopeat tilastot",
+ "Quick Stats": "Pikakatsaus",
"Up": "Ylös",
"Down": "Alas",
"Pending": "Odottaa",
"statusMaintenance": "Huolto",
"Maintenance": "Huolto",
"Unknown": "Tuntematon",
- "General Monitor Type": "Yleinen seuranta tyyppi",
- "Passive Monitor Type": "Passiivinen seuranta tyyppi",
+ "General Monitor Type": "Yleinen seuraintyyppi",
+ "Passive Monitor Type": "Passiivinen seuraintyyppi",
"markdownSupported": "Markdown-syntaksi tuettu",
"pauseDashboardHome": "Tauko",
"Pause": "Tauko",
@@ -35,47 +35,47 @@
"Uptime": "Päälläoloaika",
"Monitor": "Seurain | Seuraimet",
"day": "Päivä | Päivää",
- "-day": "-päivä",
- "hour": "Tunti",
- "-hour": "-tunti",
+ "-day": "-päivä(ä)",
+ "hour": "tunti",
+ "-hour": "-tunti(a)",
"Response": "Vastaus",
- "Ping": "Signaali",
- "Monitor Type": "Seurain tyyppi",
+ "Ping": "Ping",
+ "Monitor Type": "Seuraintyyppi",
"Keyword": "Avainsana",
"URL": "URL",
"Hostname": "Isäntänimi",
- "Heartbeat Interval": "Sydämensyke intervalli",
+ "Heartbeat Interval": "Sydämensykkeiden aikaväli",
"Retries": "Uusintayrityksiä",
"Resend Notification if Down X times consequently": "Uudelleen lähetä ilmoitus jos ei vastausta X määrä peräkkäin",
"Advanced": "Edistynyt",
- "checkEverySecond": "Tarkista jokainen {0} sekuntti",
- "retryCheckEverySecond": "Yritä uudelleen jokainen {0} sekuntti",
- "resendEveryXTimes": "Uudelleen lähetä jokainen {0} kerta",
- "ignoreTLSError": "Älä huomioi TLS/SSL virhettä HTTPS nettisivuilla",
- "upsideDownModeDescription": "Pyöräytä tila ylösalaisin. Jos palvelu on saavutettavissa, merkitse se SAMMUNEEKSI.",
- "maxRedirectDescription": "Maksimi määrä uudelleen ohjauksia joita seurata. Aseta 0 estääksesi uudelleenohjaukset.",
- "Upside Down Mode": "Ylösalaisin-moodi",
- "Max. Redirects": "Maksimi määrä uudelleenohjauksia",
- "Accepted Status Codes": "Sallitut tila koodit",
- "Push URL": "Työnnä URL",
+ "checkEverySecond": "Tarkista joka {0} sekunti",
+ "retryCheckEverySecond": "Yritä uudelleen joka {0} sekunti",
+ "resendEveryXTimes": "Uudelleen lähetä joka {0} kerta",
+ "ignoreTLSError": "Älä huomioi TLS/SSL virheitä HTTPS nettisivuilla",
+ "upsideDownModeDescription": "Käännä tila vastakkaiseksi. Jos palvelu on saavutettavissa, merkitse se SAMMUNEEKSI.",
+ "maxRedirectDescription": "Enimmäismäärä seurattavia uudelleenohjauksia. Aseta arvoksi 0 estääksesi uudelleenohjaukset.",
+ "Upside Down Mode": "Käänteinen tila",
+ "Max. Redirects": "Uudelleenohjauksia enintään",
+ "Accepted Status Codes": "Sallitut tilakoodit",
+ "Push URL": "Push-ilmoitus URL",
"Save": "Tallenna",
"Notifications": "Ilmoitukset",
"Setup Notification": "Määritä ilmoitukset",
"Light": "Vaalea",
"Dark": "Tumma",
"Auto": "Automaattinen",
- "Theme - Heartbeat Bar": "Teema - Sydänlyönti palkki",
+ "Theme - Heartbeat Bar": "Teema - Sydämensykepalkki",
"Normal": "Normaali",
- "Bottom": "Pohja",
+ "Bottom": "Alhaalla",
"None": "Ei mitään",
"Timezone": "Aikavyöhyke",
- "Search Engine Visibility": "Hakukone näkyvyys",
+ "Search Engine Visibility": "Hakukonenäkyvyys",
"Allow indexing": "Salli indeksointi",
"Change Password": "Vaihda salasana",
"Current Password": "Nykyinen salasana",
"New Password": "Uusi salasana",
"Repeat New Password": "Toista uusi salasana",
- "Update Password": "Päivätä salasana",
+ "Update Password": "Päivitä salasana",
"Disable Auth": "Poista todennus käytöstä",
"Enable Auth": "Ota todennus käyttöön",
"Logout": "Kirjaudu ulos",
@@ -87,37 +87,37 @@
"Username": "Käyttäjänimi",
"Password": "Salasana",
"Login": "Kirjaudu",
- "add one": "Lisää yksi",
- "Notification Type": "Ilmoitus tyyppi",
+ "add one": "lisää",
+ "Notification Type": "Ilmoitustyyppi",
"Email": "Sähköposti",
"Test": "Testi",
- "Certificate Info": "Sertifikaatti tiedot",
+ "Certificate Info": "Varmenteen tiedot",
"Settings": "Asetukset",
"Check Update On GitHub": "Tarkista päivitys GitHub:ssa",
- "Specific Monitor Type": "Tietty seuranta tyyppi",
- "Cert Exp.": "Sertifikaatti vanh.",
+ "Specific Monitor Type": "Tietty seuraintyyppi",
+ "Cert Exp.": "Varmenne vanh.",
"Friendly Name": "Ystävällinen nimi",
"Port": "Portti",
- "Heartbeat Retry Interval": "Sydämensyke uudelleen yritys intervalli",
- "resendDisabled": "Uudelleen lähetys poissa käytöstä",
- "retriesDescription": "Maksimi määrä uudelleen yrityksiä ennen kuin palvelu merkitään sammuneeksi ja ilmoitus lähetetään",
+ "Heartbeat Retry Interval": "Sydämensykkeen uudelleenyritysten aikaväli",
+ "resendDisabled": "Uudelleenlähetys poissa käytöstä",
+ "retriesDescription": "Enimmäismäärä uudelleenyrityksiä ennen kuin palvelu merkitään sammuneeksi ja ilmoitus lähetetään",
"Discourage search engines from indexing site": "Estä hakukoneita indeksoimasta sivua",
"Please use this option carefully!": "Käytä tätä vaihtoehtoa varoen!",
"Remember me": "Muista minut",
"languageName": "Suomi",
- "Primary Base URL": "Ensisijainen perus-URL-osoite",
+ "Primary Base URL": "Ensisijainen perus-URL",
"pushOptionalParams": "Valinnaiset parametrit: {0}",
"Not available, please setup.": "Ei saatavilla, määritä ensin.",
- "needPushEvery": "Sinun pitäisi kutsua tätä URL joka {0} sekuntti.",
+ "needPushEvery": "Sinun tulee kutsua tätä URLia joka {0} sekunti.",
"disableauth.message1": "Oletko varma että haluat {disableAuth}?",
"disable authentication": "poistaa todennuksen käytöstä",
"disableauth.message2": "Se on suunniteltu tilanteisiin {intendThirdPartyAuth} Uptime Kuma:n edessä, kuten Cloudflare Access, Authelia tai jotain muuta todennus mekanismia.",
"where you intend to implement third-party authentication": "jossa aiot käyttää kolmannen osapuolen todennnusta",
- "No Monitors, please": "Ei seuraimia, kiitos",
- "Resolver Server": "Ratkaisija palvelin",
- "Resource Record Type": "Resusrssi tallenne tyyppi",
- "Last Result": "Viimeinen tulos",
- "Create your admin account": "Luo sinun järjestelmänvalvoja käyttäjä",
+ "No Monitors, please": "Ei seuraimia, ole hyvä",
+ "Resolver Server": "Nimipalvelin",
+ "Resource Record Type": "Tietueen tyyppi (RR)",
+ "Last Result": "Viimeisin tulos",
+ "Create your admin account": "Luo ylläpitäjän käyttäjätili",
"Repeat Password": "Toista salasana",
"Import Backup": "Tuo varmuuskopio",
"Export Backup": "Vie varmuuskopio",
@@ -125,40 +125,40 @@
"Import": "Tuo",
"respTime": "Vast. aika (ms)",
"notAvailableShort": "Ei käytössä",
- "Default enabled": "Oletus käytössä",
- "Apply on all existing monitors": "Aseta jokaiselle olemassa olevaan seuraimeen",
+ "Default enabled": "Oletuksena käytössä",
+ "Apply on all existing monitors": "Aseta jokaiselle olemassa olevalle seuraimelle",
"Create": "Luo",
- "Clear Data": "Tyhjennä data",
+ "Clear Data": "Tyhjennä tiedot",
"Events": "Tapahtumat",
"Heartbeats": "Sydämensyke",
"Auto Get": "Automaattinen haku",
- "Schedule maintenance": "Ajoita huolto",
+ "Schedule maintenance": "Aikatauluta huolto",
"Affected Monitors": "Vaikutetut seuraimet",
"Pick Affected Monitors...": "Poimi vaikutetut seuraimet…",
"Start of maintenance": "Huollon aloitus",
- "All Status Pages": "Kaikki tilanne sivut",
- "Select status pages...": "Valitse tilanne sivu…",
+ "All Status Pages": "Kaikki tilasivut",
+ "Select status pages...": "Valitse tilasivu…",
"alertNoFile": "Valitse tuotava tiedosto.",
- "alertWrongFileType": "Valitse JSON tiedosto.",
+ "alertWrongFileType": "Valitse JSON-tiedosto.",
"Clear all statistics": "Tyhjennä kaikki tilastot",
"Skip existing": "Ohita olemassa oleva",
- "Overwrite": "Päälle kirjoita",
+ "Overwrite": "Päällekirjoita",
"Options": "Vaihtoehdot",
"Keep both": "Pidä molemmat",
"Verify Token": "Vahvista tunnus",
"Setup 2FA": "Määritä 2FA",
"Enable 2FA": "Ota 2FA käyttöön",
"Disable 2FA": "Poista 2FA käytöstä",
- "2FA Settings": "2FA asetukset",
- "Two Factor Authentication": "kaksivaiheinen tunnistautuminen",
+ "2FA Settings": "2FA-asetukset",
+ "Two Factor Authentication": "Kaksivaiheinen tunnistautuminen (2FA)",
"Active": "Aktiivinen",
- "Token": "Tokeni",
+ "Token": "Token",
"Show URI": "Näytä URI",
"Tags": "Tunnisteet",
"Tag with this name already exist.": "Tunniste tällä nimellä on jo olemassa.",
"Tag with this value already exist.": "Tunniste tällä arvolla on jo olemassa.",
"color": "Väri",
- "value (optional)": "Arvo (valinnainen)",
+ "value (optional)": "arvo (valinnainen)",
"Gray": "Harmaa",
"Red": "Punainen",
"Orange": "Oranssi",
@@ -168,7 +168,7 @@
"Pink": "Vaaleanpunainen",
"Custom": "Mukautettu",
"Search...": "Etsi…",
- "Avg. Ping": "kesk.arv. viive",
+ "Avg. Ping": "Kesk.arv. viive",
"Entry Page": "Sisääntulosivu",
"statusPageNothing": "Täällä ei ole mitään. Lisää ryhmä tai seurain.",
"No Services": "Ei palveluita",
@@ -176,21 +176,21 @@
"Degraded Service": "Heikentynyt palvelu",
"Add Group": "Lisää ryhmä",
"Add a monitor": "Lisää seurain",
- "Edit Status Page": "Muokkaa tilanne sivua",
+ "Edit Status Page": "Muokkaa tilasivua",
"Go to Dashboard": "Mene kojelaudalle",
- "Status Page": "Tilanne sivu",
- "Status Pages": "Tilanne sivut",
+ "Status Page": "Tilasivu",
+ "Status Pages": "Tilasivut",
"here": "täällä",
"Required": "Vaadittu",
"webhook": "Webhookki",
- "Post URL": "Lähetys URL",
- "Content Type": "Sisältö tyyppi",
- "webhookJsonDesc": "{0} on hyvä jokaisille modernilleille HTTP palvelimille kuten Express.js",
- "webhookAdditionalHeadersTitle": "Lisä otsakkeet",
- "webhookAdditionalHeadersDesc": "Asettaa lisäpäätteet, jotka on lähetetty webhookilla.",
+ "Post URL": "Lähetys-URL",
+ "Content Type": "Sisältötyyppi",
+ "webhookJsonDesc": "{0} soveltuu mille tahansa modernille HTTP-palvelimille kuten Express.js",
+ "webhookAdditionalHeadersTitle": "Lisäotsakkeet",
+ "webhookAdditionalHeadersDesc": "Asettaa lisäotsakkeet, jotka lähetetään webhookille. Jokainen lisäotsake tulisi määritellä JSON-avaimena ja -arvona.",
"Webhook URL": "Webhookin URL",
- "Application Token": "Sovellus tokeni",
- "Server URL": "Palvelin URL",
+ "Application Token": "Sovellus-token",
+ "Server URL": "Palvelimen URL",
"Priority": "Prioriteetti",
"emojiCheatSheet": "Emoji lunttilappu: {0}",
"Read more": "Lue lisää",
@@ -199,9 +199,9 @@
"Method": "Menetelmä",
"Body": "Runko",
"Headers": "Otsikot",
- "PushUrl": "Työntö URL",
- "BodyInvalidFormat": "Pyynnön runko ei ole kelvollinen JSON: ",
- "Monitor History": "Seuraa historiaa",
+ "PushUrl": "Push-ilmoitus URL",
+ "BodyInvalidFormat": "Pyynnön sisältörunko ei ole kelvollisessa JSON-muodossa: ",
+ "Monitor History": "Seurannan historia",
"PasswordsDoNotMatch": "Salasanat eivät täsmää.",
"records": "tallenteet",
"One record": "Yksi tallenne",
@@ -216,24 +216,24 @@
"Security": "Turvallisuus",
"Steam API Key": "Steam API-avain",
"Shrink Database": "Pienennä tietokanta",
- "Pick a RR-Type...": "Valitse RR-tyyppi…",
+ "Pick a RR-Type...": "Valitse tietuetyyppi (RR)…",
"Pick Accepted Status Codes...": "Valitse hyväksytyt tilakoodit…",
"Default": "Oletus",
- "HTTP Options": "HTTP-asetukset",
+ "HTTP Options": "HTTP-valinnat",
"Create Incident": "Luo tapaus",
"Title": "Otsikko",
"Content": "Sisältö",
"Style": "Tyyli",
- "info": "Tiedot",
- "warning": "Varoitus",
+ "info": "tiedote",
+ "warning": "varoitus",
"danger": "vaara",
"error": "virhe",
"critical": "kriittinen",
"primary": "ensisijainen",
- "dark": "Tumma",
+ "dark": "tumma",
"Post": "Lähetä",
"Please input title and content": "Syötä otsikko ja sisältö",
- "Created": "Luo",
+ "Created": "Luotu",
"Last Updated": "Viimeksi päivitetty",
"Unpin": "Irroita",
"Switch to Dark Theme": "Vaihda tummaan teemaan",
@@ -245,7 +245,7 @@
"No Monitors": "Ei seuraimia",
"Untitled Group": "Nimetön ryhmä",
"Services": "Palvelut",
- "Discard": "Hävitä",
+ "Discard": "Peruuta",
"Cancel": "Peruuttaa",
"Customize": "Mukauta",
"Custom Footer": "Mukautettu alatunniste",
@@ -254,12 +254,12 @@
"Proxies": "Välityspalvelimet",
"default": "Oletus",
"enabled": "Käytössä",
- "setAsDefault": "Oletusasetuksena",
+ "setAsDefault": "Aseta oletukseksi",
"deleteProxyMsg": "Haluatko varmasti poistaa tämän välityspalvelimen kaikista seuraimista?",
"proxyDescription": "Välityspalvelimet on määritettävä seuraimelle toimiakseen.",
"enableProxyDescription": "Tämä välityspalvelin ei vaikuta valvontapyyntöihin ennen kuin se on aktivoitu. Voit hallita välityspalvelimen väliaikaista poistamista käytöstä kaikista seuraimista aktivointitilan perusteella.",
"setAsDefaultProxyDescription": "Tämä välityspalvelin on oletuksena käytössä uusissa seuraimissa. Voit silti poistaa välityspalvelimen käytöstä erikseen jokaisesta seuraimesta.",
- "Certificate Chain": "Sertifikaattiketju",
+ "Certificate Chain": "Varmenneketju",
"Valid": "Voimassa oleva",
"Invalid": "Pätemätön",
"User": "Käyttäjä",
@@ -298,10 +298,10 @@
"No status pages": "Ei tilasivuja",
"Domain Name Expiry Notification": "Verkkotunnuksen vanhenemisilmoitus",
"Proxy": "Välityspalvelin",
- "Date Created": "Luomis päivämäärä",
+ "Date Created": "Luomispäivämäärä",
"Footer Text": "Alatunnisteen teksti",
- "Show Powered By": "Näytä \"voimanlähteenä\"",
- "Domain Names": "Verkkotunnus nimet",
+ "Show Powered By": "Näytä \"Voimanlähteenä\"",
+ "Domain Names": "Verkkotunnukset",
"signedInDisp": "Kirjautunut sisään käyttäjänä {0}",
"signedInDispDisabled": "Todennus poistettu käytöstä.",
"RadiusSecretDescription": "Asiakkaan ja palvelimen välinen yhteinen salaisuus",
@@ -311,13 +311,13 @@
"API Username": "API-käyttäjänimi",
"API Key": "API-avain",
"Show update if available": "Näytä päivitys, jos saatavilla",
- "Also check beta release": "Tarkista myös betaversio",
+ "Also check beta release": "Tarkista myös beta-versio",
"Using a Reverse Proxy?": "Käytätkö käänteistä välityspalvelinta?",
"The slug is already taken. Please choose another slug.": "Slug on jo otettu. Ole hyvä ja valitse toinen slug.",
- "RadiusSecret": "Radius Secret",
+ "RadiusSecret": "Radius-salaisuus",
"RadiusCalledStationId": "Kutsuttu aseman tunnus",
- "Steam Game Server": "Steam pelipalvelin",
- "Most likely causes:": "todennäköisimmät syyt:",
+ "Steam Game Server": "Steam-pelipalvelin",
+ "Most likely causes:": "Todennäköisimmät syyt:",
"The resource is no longer available.": "Resurssi ei ole enää saatavilla.",
"There might be a typing error in the address.": "Osoitteessa saattaa olla kirjoitusvirhe.",
"What you can try:": "Mitä voit kokeilla:",
@@ -325,10 +325,10 @@
"Go back to the previous page.": "Palaa edelliselle sivulle.",
"Coming Soon": "Tulossa pian",
"Connection String": "Yhteysmerkkijono",
- "Query": "Tiedustelu",
- "settingsCertificateExpiry": "TLS-sertifikaatin vanheneminen",
+ "Query": "Tiedustelu (Query)",
+ "settingsCertificateExpiry": "TLS-varmenteen vanheneminen",
"certificationExpiryDescription": "HTTPS-seuraimet käynnistävät ilmoituksen, kun TLS-varmenne vanhenee:",
- "Setup Docker Host": "Asenna Docker-isäntä",
+ "Setup Docker Host": "Määritä Docker-isäntä",
"Connection Type": "Yhteystyyppi",
"tcp": "TCP / HTTP",
"Docker Container": "Docker-kontti",
@@ -337,15 +337,15 @@
"Docker Hosts": "Docker-isännät",
"Domain": "Verkkotunnus",
"Workstation": "Työasema",
- "socket": "kanta",
+ "socket": "Socket",
"Packet Size": "Paketin koko",
"telegram": "Telegram",
"ZohoCliq": "ZohoCliq",
- "Bot Token": "Botti tokeni",
+ "Bot Token": "Botin tokeni",
"wayToGetTelegramToken": "Voit saada tunnuksen osoitteesta {0}.",
"Chat ID": "Chat-tunnus",
"wayToGetTelegramChatID": "Saat chat-tunnuksesi lähettämällä viestin botille ja siirtymällä tähän URL-osoitteeseen nähdäksesi chat_id:",
- "YOUR BOT TOKEN HERE": "BOT TOKENISI TÄHÄN",
+ "YOUR BOT TOKEN HERE": "BOTIN TOKEN TÄHÄN",
"chatIDNotFound": "Chat ID:tä ei löydy; lähetä ensin viesti tälle botille",
"disableCloudflaredNoAuthMsg": "Olet No Auth -tilassa, salasanaa ei tarvita.",
"trustProxyDescription": "Luota \"X-Forwarded-*\"-otsikoihin. Jos haluat saada oikean asiakas-IP:n ja Uptime Kumasi on välityspalvelimen, kuten Nginx tai Apache, takana, sinun tulee ottaa tämä käyttöön.",
@@ -355,7 +355,7 @@
"Long-Lived Access Token": "Pitkäikäinen pääsytunnus",
"Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Pitkäikäinen pääsytunnus voidaan luoda napsauttamalla profiilisi nimeä (vasemmalla alareunassa) ja vierittämällä alas ja napsauttamalla sitten Luo tunnus. ",
"Notification Service": "Ilmoituspalvelu",
- "default: notify all devices": "oletus: Ilmoita kaikille laitteille",
+ "default: notify all devices": "oletus: ilmoita kaikille laitteille",
"A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Luettelo ilmoituspalveluista löytyy Home Assistantin kohdasta \"Kehittäjätyökalut > Palvelut\". Hae hakusanalla \"ilmoitus\" löytääksesi laitteesi/puhelimesi nimen.",
"Automations can optionally be triggered in Home Assistant:": "Automaatiot voidaan vaihtoehtoisesti laukaista Home Assistantissa:",
"Trigger type:": "Triggerin tyyppi:",
@@ -363,7 +363,7 @@
"Frontend Version": "Käyttöliittymän versio",
"Frontend Version do not match backend version!": "Käyttöliittymän versio ei vastaa taustaversiota!",
"backupRecommend": "Varmuuskopioi asema tai tietokansio (./data/) suoraan sen sijaan.",
- "Optional": "Vapaaehtoinen",
+ "Optional": "Valinnainen",
"squadcast": "Squadcast",
"or": "tai",
"recurringInterval": "Aikaväli",
@@ -386,21 +386,21 @@
"No Maintenance": "Ei huoltoa",
"pauseMaintenanceMsg": "Haluatko varmasti keskeyttää?",
"maintenanceStatus-under-maintenance": "Huollossa",
- "maintenanceStatus-inactive": "Epäaktiivinen",
+ "maintenanceStatus-inactive": "Ei-aktiivinen",
"maintenanceStatus-scheduled": "Aikataulutettu",
"maintenanceStatus-ended": "Päättyi",
"maintenanceStatus-unknown": "Tuntematon",
- "Display Timezone": "Näytä aikavyöhyke",
+ "Display Timezone": "Käyttöliittymän aikavyöhyke",
"Server Timezone": "Palvelimen aikavyöhyke",
"statusPageMaintenanceEndDate": "Loppu",
"Enable": "Ota käyttöön",
"Disable": "Poista käytöstä",
"Single Maintenance Window": "Yksi huoltoikkuna",
"Maintenance Time Window of a Day": "Päivän huoltoaikaikkuna",
- "Effective Date Range": "Voimassa oleva ajanjakso",
+ "Effective Date Range": "Voimassa oleva ajanjakso (valinnainen)",
"Schedule Maintenance": "Ajoita huolto",
"Date and Time": "Päivämäärä ja aika",
- "DateTime Range": "Päivämäärä-aika-alue",
+ "DateTime Range": "Päivämäärä- ja aika-alue",
"loadingError": "Tietoja ei voi noutaa, yritä myöhemmin uudelleen.",
"plugin": "Lisäosa | Lisäosat",
"install": "Asenna",
@@ -427,16 +427,16 @@
"Recipients": "Vastaanottajat",
"Access Token": "Käyttöoikeustunnus",
"Channel access token": "Kanavan käyttöoikeustunnus",
- "Basic Settings": "Perus asetukset",
- "User ID": "käyttäjätunnus",
- "Messaging API": "Viestintä API",
- "Line Developers Console": "Line Developers Console",
- "lineDevConsoleTo": "Line Developers Console - {0}",
+ "Basic Settings": "Perusasetukset",
+ "User ID": "Käyttäjätunnus",
+ "Messaging API": "Viestintä-API",
+ "Line Developers Console": "Line Kehittäjän Konsoli",
+ "lineDevConsoleTo": "Line Kehittäjän Konsoli - {0}",
"dataRetentionTimeError": "Säilytysajan on oltava 0 tai suurempi",
- "infiniteRetention": "Aseta arvoon 0, jos haluat loputtoman säilytyksen.",
+ "infiniteRetention": "Aseta arvoksi 0, jos haluat ikuisen säilytyksen.",
"confirmDeleteTagMsg": "Haluatko varmasti poistaa tämän tunnisteen? Tähän tunnisteeseen liittyviä näyttöjä ei poisteta.",
"enableGRPCTls": "Salli lähettää gRPC-pyyntö TLS-yhteydellä",
- "grpcMethodDescription": "Menetelmän nimi muunnetaan cammelCase-muotoon, kuten sayHello, check jne.",
+ "grpcMethodDescription": "Menetelmän nimi muunnetaan camelCase-muotoon, kuten sayHello, check jne.",
"acceptedStatusCodesDescription": "Valitse tilakoodit, jotka katsotaan onnistuneeksi vastaukseksi.",
"deleteMonitorMsg": "Haluatko varmasti poistaa tämän seuraimen?",
"deleteMaintenanceMsg": "Haluatko varmasti poistaa tämän huollon?",
@@ -444,10 +444,10 @@
"dnsPortDescription": "DNS-palvelimen portti. Oletusarvo on 53. Voit vaihtaa porttia milloin tahansa.",
"rrtypeDescription": "Valitse valvottava RR-tyyppi",
"pauseMonitorMsg": "Haluatko varmasti keskeyttää?",
- "clearHeartbeatsMsg": "Haluatko varmasti poistaa kaikki tämän seuraimen sydämenlyönnit?",
+ "clearHeartbeatsMsg": "Haluatko varmasti poistaa kaikki tämän seuraimen sydämensykkeet?",
"confirmImportMsg": "Haluatko varmasti tuoda varmuuskopion? Varmista, että olet valinnut oikean tuontivaihtoehdon.",
"twoFAVerifyLabel": "Anna tunnuksesi vahvistaaksesi 2FA:",
- "tokenValidSettingsMsg": "Token on voimassa! Voit nyt tallentaa 2FA-asetukset.",
+ "tokenValidSettingsMsg": "Tunnus on voimassa! Voit nyt tallentaa 2FA-asetukset.",
"confirmEnableTwoFAMsg": "Haluatko varmasti ottaa 2FA:n käyttöön?",
"confirmDisableTwoFAMsg": "Haluatko varmasti poistaa 2FA:n käytöstä?",
"recurringIntervalMessage": "Juokse kerran päivässä | Suorita kerran {0} päivässä",
@@ -461,22 +461,22 @@
"octopushLogin": "\"Kirjaudu\" ohjauspaneelin HTTP API -tunnistetiedoista",
"promosmsLogin": "API-kirjautumisnimi",
"promosmsPassword": "API-salasana",
- "pushoversounds pushover": "Työnnä yli (oletus)",
+ "pushoversounds pushover": "Pushover (oletus)",
"pushoversounds bike": "Pyörä",
"pushoversounds bugle": "Merkkitorvi",
"pushoversounds cashregister": "Kassakone",
"pushoversounds classical": "Klassinen",
"pushoversounds cosmic": "Kosminen",
"pushoversounds falling": "Putoaminen",
- "pushoversounds gamelan": "Gamelan",
+ "pushoversounds gamelan": "Gamelan-soitin",
"pushoversounds incoming": "Saapuva",
"pushoversounds intermission": "Väliaika",
"pushoversounds magic": "Taika",
"pushoversounds mechanical": "Mekaaninen",
- "pushoversounds pianobar": "Piano Baari",
+ "pushoversounds pianobar": "Pianobaari",
"pushoversounds spacealarm": "Avaruushälytys",
"pushoversounds tugboat": "Hinaaja",
- "pushoversounds alien": "Avaruusolio hälytys (pitkä)",
+ "pushoversounds alien": "Avaruusoliohälytys (pitkä)",
"pushoversounds climb": "Kiipeily (pitkä)",
"pushoversounds persistent": "Pysyvä (pitkä)",
"pushoversounds updown": "Ylös Alas (pitkä)",
@@ -512,8 +512,8 @@
"octopushTypeLowCost": "Alhaiset kustannukset (hidas - joskus operaattori estää)",
"checkPrice": "Tarkista kohteen {0} hinnat:",
"apiCredentials": "API-tunnistetiedot",
- "Check octopush prices": "Tarkista octopush hinnat {0}.",
- "octopushPhoneNumber": "Puhelinnumero (Intl-muoto, esim.: +33612345678) ",
+ "Check octopush prices": "Tarkista Octopush-hinnat {0}.",
+ "octopushPhoneNumber": "Puhelinnumero (Kansainvälinen muoto, esim.: +33612345678) ",
"octopushSMSSender": "Tekstiviestin lähettäjän nimi: 3-11 aakkosnumeerista merkkiä ja välilyönti (a-zA-Z0-9)",
"LunaSea Device ID": "LunaSea laitetunnus",
"Apprise URL": "Apprise URL-osoite",
@@ -529,32 +529,32 @@
"Economy": "Talous",
"Lowcost": "Halpa",
"high": "korkea",
- "SendKey": "LähetäAvain",
+ "SendKey": "Lähetysavain (SendKey)",
"SMSManager API Docs": "SMSManager API Dokumentointi ",
"Gateway Type": "Yhdyskäytävän tyyppi",
"SMSManager": "SMSManager",
- "Base URL": "Perus-URL-osoite",
+ "Base URL": "Perus-URL",
"goAlertIntegrationKeyInfo": "Hanki yleinen API-integrointiavain palvelulle tässä muodossa \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" yleensä kopioidun URL-osoitteen tunnusparametrin arvona.",
"goAlert": "GoAlert",
- "AccessKeyId": "Pääsyn avaimen tunnus",
- "SecretAccessKey": "Pääsyn avaimen salaisuus",
- "PhoneNumbers": "PuhelinNumerot",
- "TemplateCode": "Mallikoodi",
- "SignName": "AllekirjoitusNimi",
+ "AccessKeyId": "Pääsyavaimen tunnus (AccessKey ID)",
+ "SecretAccessKey": "Pääsyavaimen salaisuus (AccessKey Secret)",
+ "PhoneNumbers": "Puhelinnumerot (PhoneNumbers)",
+ "TemplateCode": "Mallikoodi (TemplateCode)",
+ "SignName": "Allekirjoitusnimi (SignName)",
"Sms template must contain parameters: ": "Tekstiviestimallin tulee sisältää parametrit: ",
"Bark Group": "Bark ryhmä",
"Bark Sound": "Bark ääni",
- "WebHookUrl": "WebHookUrl-osoite",
- "SecretKey": "Salainen avain",
+ "WebHookUrl": "Webhookin URL-osoite (WebHookUrl)",
+ "SecretKey": "Salainen avain (SecretKey)",
"For safety, must use secret key": "Turvallisuuden vuoksi on käytettävä salaista avainta",
"Device Token": "Laitteen tunnus",
"Platform": "Alusta",
"Bark Endpoint": "Bark päätepiste",
- "Huawei": "Huawei",
+ "Huawei": "Huawei-merkki",
"High": "Korkea",
"Topic": "Aihe",
"WeCom Bot Key": "WeCom-bottiavain",
- "Setup Proxy": "Asenna välityspalvelin",
+ "Setup Proxy": "Määritä välityspalvelin",
"Proxy Protocol": "Välityspalvelinprotokolla",
"Proxy Server": "Välityspalvelin",
"matrix": "Matriisi",
@@ -569,13 +569,13 @@
"Uptime Kuma URL": "Uptime Kuma URL-osoite",
"Icon Emoji": "Ikoni Emoji",
"signalImportant": "TÄRKEÄÄ: Et voi sekoittaa ryhmiä ja numeroita vastaanottajissa!",
- "aboutWebhooks": "Lisätietoja Webhooksista osoitteessa: {0}",
+ "aboutWebhooks": "Lisätietoja Webhookeista osoitteessa: {0}",
"aboutChannelName": "Kirjoita kanavan nimi {0} Kanavan nimi -kenttään, jos haluat ohittaa Webhook-kanavan. Esimerkki: #muu-kanava",
"aboutKumaURL": "Jos jätät Uptime Kuma URL -kentän tyhjäksi, se on oletuksena Project GitHub -sivu.",
"smtpDkimSettings": "DKIM-asetukset",
"smtpDkimDesc": "Katso Nodemailer DKIM {0} -sovelluksen käytöstä.",
"documentation": "dokumentointi",
- "smtpDkimDomain": "Verkkotunnus nimi",
+ "smtpDkimDomain": "Verkkotunnus",
"smtpDkimKeySelector": "Näppäinvalitsin",
"smtpDkimPrivateKey": "Yksityinen avain",
"smtpDkimHashAlgo": "Hash-algoritmi (valinnainen)",
@@ -612,55 +612,54 @@
"From Name/Number": "Nimestä/numerosta",
"Leave blank to use a shared sender number.": "Jätä tyhjäksi, jos haluat käyttää jaettua lähettäjän numeroa.",
"Octopush API Version": "Octopush API -versio",
- "Legacy Octopush-DM": "Legacy Octopush-DM",
- "ntfy Topic": "ntfy aihe",
+ "Legacy Octopush-DM": "Vanha Octopush-DM",
+ "ntfy Topic": "ntfy-aihe",
"HomeAssistant": "Home Assistant",
"onebotHttpAddress": "OneBot HTTP-osoite",
"onebotGroupMessage": "Ryhmä",
"onebotPrivateMessage": "Yksityinen",
"onebotUserOrGroupId": "Ryhmä/käyttäjätunnus",
"onebotSafetyTips": "Käyttöoikeustunnus on asetettava turvallisuuden vuoksi",
- "PushDeer Key": "PushDeer avain",
+ "PushDeer Key": "PushDeer-avain",
"wayToGetClickSendSMSToken": "Voit saada API-käyttäjänimen ja API-avaimen osoitteesta {0}.",
- "Custom Monitor Type": "Mukautettu seurain tyyppi",
+ "Custom Monitor Type": "Mukautettu seuraintyyppi",
"Google Analytics ID": "Google Analytics -tunnus",
"Edit Tag": "Muokkaa tunnistetta",
"Server Address": "Palvelimen osoite",
"Learn More": "Lisätietoja",
- "Inactive": "Epäaktiivinen",
- "Add New below or Select...": "Lisää uusi alapuolella tai valitse…",
+ "Inactive": "Ei-aktiivinen",
+ "Add New below or Select...": "Lisää uusi alapuolelle tai valitse…",
"Blue": "Sininen",
"Avg. Response": "Kesk.arv. vastaus",
"All Systems Operational": "Kaikki järjestelmät toiminnassa",
- "defaultNotificationName": "Minun {ilmoitus} Hälytys ({numero})",
- "webhookFormDataDesc": "{multipart} on hyvä PHP:lle. JSON pitää parsia {decodeFunction} avulla",
- "HeadersInvalidFormat": "Pyynnön otsikot eivät ole kelvollisia JSON-tiedostoja: ",
- "clearDataOlderThan": "Säilytä seuraimen historiatiedot {0} päivää.",
- "steamApiKeyDescription": "Steam peli palveliment valvontaa varten tarvitset Steam Web-API -avaimen. Voit rekisteröidä API-avaimesi täällä: ",
- "light": "Vaalea",
+ "defaultNotificationName": "Minun {notification} Hälytys ({number})",
+ "webhookFormDataDesc": "{multipart} soveltuu PHP:lle. JSON pitää tulkita {decodeFunction} avulla",
+ "HeadersInvalidFormat": "Pyynnön otsikot eivät ole kelvollisessa JSON-muodossa: ",
+ "clearDataOlderThan": "Säilytä seuraimen historiatiedot {0} päivän ajan.",
+ "steamApiKeyDescription": "Steam-pelipalvelimen valvontaa varten tarvitset Steam Web API-avaimen. Voit rekisteröidä API-avaimesi täällä: ",
+ "light": "vaalea",
"Switch to Light Theme": "Vaihda vaaleaan teemaan",
"Powered by": "Voimanlähteenä",
- "shrinkDatabaseDescription": "Käynnistä tietokanta VACUUM SQLitelle. Jos tietokanta on luotu 1.10.0:n jälkeen, AUTO_VACUUM on jo käytössä eikä tätä toimintoa tarvita.",
"Accept characters:": "Hyväksy merkit:",
"New Status Page": "Uusi tilasivu",
"wayToGetCloudflaredURL": "(Lataa cloudflared osoitteesta {0})",
"The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Nykyinen yhteys saattaa katketa, jos muodostat parhaillaan yhteyttä Cloudflare-tunnelin kautta. Haluatko varmasti lopettaa sen? Vahvista se kirjoittamalla nykyinen salasanasi.",
"RadiusCallingStationIdDescription": "Kutsu laitteen tunniste",
"Check how to config it for WebSocket": "Tarkista, kuinka se määritetään WebSocketille",
- "Docker Daemon": "Docker taustatoiminta",
+ "Docker Daemon": "Docker-daemon",
"deleteDockerHostMsg": "Haluatko varmasti poistaa tämän docker-isännän kaikista seuraimista?",
"supportTelegramChatID": "Tukee suoraa chattia / ryhmää / kanavan chat-tunnusta",
- "Event data:": "Tapahtumatyyppi:",
+ "Event data:": "Tapahtuman tiedot:",
"Then choose an action, for example switch the scene to where an RGB light is red.": "Valitse sitten toiminto, esimerkiksi vaihda kohtaus sellaiseen, jossa RGB-valo on punainen.",
"backupOutdatedWarning": "Vanhentunut: Koska monia ominaisuuksia lisättiin ja tätä varmuuskopiointitoimintoa ei ole ylläpidetty, se ei voi luoda tai palauttaa täydellistä varmuuskopiota.",
"lastDay4": "Kuukauden 4. viimeinen päivä",
"IconUrl": "Kuvakkeen URL-osoite",
- "Enable DNS Cache": "Ota DNS-välimuisti käyttöön",
+ "Enable DNS Cache": "(Vanhentunut) Ota DNS-välimuisti käyttöön HTTP(s)-seuraimille",
"dnsCacheDescription": "Se ei ehkä toimi joissakin IPv6-ympäristöissä, poista se käytöstä, jos kohtaat ongelmia.",
"confirmUninstallPlugin": "Haluatko varmasti poistaa tämän laajennuksen?",
"wayToGetDiscordURL": "Saat tämän siirtymällä kohtaan Palvelinasetukset -> Integraatiot -> Näytä Webhookit -> Uusi Webhook",
"needSignalAPI": "Sinulla on oltava signaaliasiakas, jossa on REST API.",
- "wayToGetLineChannelToken": "Avaa ensin {0}, luo palveluntarjoaja ja kanava (Viestintä API), sitten saat kanavan käyttö tokenin ja käyttäjätunnuksen yllä mainituista valikon kohdista.",
+ "wayToGetLineChannelToken": "Avaa ensin {0}, luo palveluntarjoaja ja kanava (Messaging API), sitten saat kanavan käyttö tokenin ja käyttäjätunnuksen yllä mainituista valikon kohdista.",
"Icon URL": "Kuvakkeen URL-osoite",
"aboutIconURL": "Voit ohittaa oletusprofiilikuvan antamalla linkin kuvaan kohdassa \"kuvakeen URL\". Ei käytetä, jos kuvake emoji on asetettu.",
"aboutMattermostChannelName": "Voit ohittaa oletuskanavan, jolle Webhook lähettää viestejä, kirjoittamalla kanavan nimen Kanavan nimi -kenttään. Tämä on otettava käyttöön Mattermost Webhook -asetuksissa. Esimerkki: #muu-kanava",
@@ -670,11 +669,11 @@
"confirmClearStatisticsMsg": "Haluatko varmasti poistaa KAIKKI tilastot?",
"importHandleDescription": "Valitse \"Ohita olemassa oleva\", jos haluat ohittaa jokaisen samannimisen seuraimen tai ilmoituksen. \"Korvaa\" poistaa kaikki olemassa olevat seuraimet ja ilmoitukset.",
"passwordNotMatchMsg": "Toistettu salasana ei täsmää.",
- "backupDescription3": "Arkaluonteiset tiedot, kuten ilmoitustunnukset, sisältyvät vientitiedostoon. säilytä vienti turvallisesti.",
+ "backupDescription3": "Arkaluonteiset tiedot, kuten ilmoitustunnukset, sisältyvät vientitiedostoon. Säilytä vienti turvallisesti.",
"endpoint": "päätepiste",
"octopushAPIKey": "\"API-avain\" ohjauspaneelin HTTP API -tunnistetiedoista",
"pushoversounds siren": "Sireeni",
- "pushoversounds echo": "Ylityöntö kaiku (pitkä)",
+ "pushoversounds echo": "Pushover-kaiku (pitkä)",
"pushover": "Ylityöntö",
"apprise": "Apprise (tukee yli 50 ilmoituspalvelua)",
"pushbullet": "Pushbullet",
@@ -695,5 +694,427 @@
"wayToGetPagerDutyKey": "Saat tämän siirtymällä kohtaan Palvelu -> Palveluhakemisto -> (Valitse palvelu) -> Integraatiot -> Lisää integraatio. Täältä voit etsiä \"Events API V2\". Lisätietoja {0}",
"alertaAlertState": "Varoitustila",
"serwersmsSenderName": "Tekstiviestin lähettäjän nimi (rekisteröity asiakasportaalin kautta)",
- "onebotMessageType": "OneBot-viestityyppi"
+ "onebotMessageType": "OneBot-viestityyppi",
+ "pushViewCode": "Kuinka käyttää Push-seurainta? (Näytä Koodi)",
+ "settingUpDatabaseMSG": "Tietokannan asennus käynnissä. Tämä voi kestää hetken, ole kärsivällinen.",
+ "setupDatabaseChooseDatabase": "Mitä tietokantaa haluat käyttää?",
+ "setupDatabaseEmbeddedMariaDB": "Sinun ei tarvitse asettaa mitään. Tämä Docker-kuva on sisäänrakentanut ja konfiguroinut MariaDB:n sinulle automaattisesti. Uptime Kuma yhdistää tähän tietokantaan Unix-socketin kautta.",
+ "setupDatabaseMariaDB": "Yhdistä ulkoiseen MariaDB-tietokantaan. Sinun on asetettava tietokantayhteyden tiedot.",
+ "setupDatabaseSQLite": "Yksinkertainen tietokantatiedosto, suositeltu pienimuotoisiin käyttöönottoihin. Ennen versiota 2.0.0 Uptime Kuma käytti SQLitea oletustietokantana.",
+ "dbName": "Tietokannan nimi",
+ "pushOthers": "Muut",
+ "programmingLanguages": "Ohjelmointikielet",
+ "Home": "Koti",
+ "Cannot connect to the socket server": "Ei voi yhdistää socket-palvelimeen",
+ "Reconnecting...": "Yhdistetään uudelleen...",
+ "Invert Keyword": "Käänteinen Avainsana",
+ "Request Timeout": "Pyynnön aikakatkaisu",
+ "timeoutAfter": "Aikakatkaisu {0} sekunnin jälkeen",
+ "Resend Notification if Down X times consecutively": "Lähetä ilmoitus uudelleen, jos alhaalla X kertaa peräkkäin",
+ "Expected Value": "Odotettu arvo",
+ "Json Query": "JSON-kysely",
+ "wayToGetHeiiOnCallDetails": "Trigger ID:n ja API-avainten hankinta selitetään ohjeistuksessa {documentation}",
+ "documentationOf": "{0} Dokumentaatio",
+ "Enter the list of brokers": "Syötä lista välittäjistä",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Joko palvelimen osoite johon haluat yhdistää tai {localhost} jos aiot käyttää {local_mta}",
+ "successKeyword": "Onnistumisen avainsana",
+ "tailscalePingWarning": "Käyttääksesi Tailscale Ping-seurainta, sinun täytyy asentaa Uptime Kuma ilman Dockeria ja asentaa Tailscale-asiakasohjelma palvelimellesi.",
+ "cronExpression": "Cron-määrittely",
+ "Remove domain": "Poista verkkotunnus '{0}'",
+ "ntfyPriorityHelptextAllEvents": "Kaikki tapahtumat lähetetään korkeimmalla prioriteetilla",
+ "Press Enter to add broker": "Paina Enter lisätäksesi välittäjän",
+ "wayToGetFlashDutyKey": "Mene 'Channel -> (Select a Channel) -> Integrations -> Add a new integration' -sivulle, lisää 'Uptime Kuma' saadaksesi push-osoitteen ja kopioi 'Integration Key' osoitteesta. Lisätietoja saat vierailemalla",
+ "Saved.": "Tallennettu.",
+ "receiverInfoSevenIO": "Jos vastaanottajan numero ei ole Saksassa, sinun täytyy lisätä maakoodi numeron eteen (esim. Yhdysvaltojen maakoodille 1 käytä muotoa 117612121212 - ei muotoa 017612121212)",
+ "gtxMessagingFromHint": "Matkapuhelimissa vastaanottajat näkevät TPOA:n viestin lähettäjänä. Sallittu on korkeintaan 11 aakkosnumeerista merkkiä, lyhytkoodi, paikallinen pitkä koodi tai kansainväliset numerot ({e164}, {e212} or {e214})",
+ "monitorToastMessagesLabel": "Seuraimen ponnahdusilmoitukset",
+ "Browser Screenshot": "Selaimen ruutukaappaus",
+ "Mentioning": "Mainitaan",
+ "Don't mention people": "Älä mainitse ihmisiä",
+ "Mention group": "Mainitse {group}",
+ "API Keys": "API-avaimet",
+ "Expiry": "Vanhenee",
+ "Expiry date": "Vanhenemispäivä",
+ "Don't expire": "Ei vanhene",
+ "Continue": "Jatka",
+ "Add Another": "Lisää toinen",
+ "apiKey-expired": "Vanhentunut",
+ "apiKey-inactive": "Ei-aktiivinen",
+ "Expires": "Vanhenee",
+ "Badge Down Color": "Badgen alhaalla-väri",
+ "Badge Pending Color": "Badgen odottaa-väri",
+ "Originator type": "Lähettäjän tyyppi",
+ "cellsyntDestination": "Vastaanottajan puhelinnumero kansainvälisessä muodossa: etuliitteenä 00 + maakoodi, esim. 00447920110000 numerolle 07920 110 000 (enint. 17 numeroa). Enintään 25000 pilkulla erotettua vastaanottajaa yhtä HTTP-kyselyä kohti.",
+ "cellsyntOriginatortypeAlphanumeric": "Aakkosnumeerinen merkkijono (enint. 11 merkkiä). Vastaanottajat eivät voi vastata viestiin.",
+ "cellsyntOriginatortypeNumeric": "Lukuarvo (enint. 15 numeroa). Puhelinnumero kansainvälisessä formaatissa ilman 00-etuliitettä (esim. UK puhelinnumero 07920 110 000 tulisi syöttää 447920110000). Vastaanottajat eivät voi vastata viestiin.",
+ "callMeBotGet": "Täällä voit luoda päätepisteen {0}, {1} ja {2}. Muistathan, että palvelu saattaa rajoittavan pääsyäsi. Rajoite näyttäisi olevan: {3}",
+ "cellsyntOriginator": "Näkyy vastaanottajan matkapuhelimessa viestin lähettäjänä. Sallitut arvot ja toiminta riippuvat lähettäjän tyypistä.",
+ "Allow Long SMS": "Salli pitkä SMS",
+ "max 15 digits": "Enint. 15 numeroa",
+ "Host URL": "Isäntä-URL",
+ "liquidIntroduction": "Sisältömallit toteutetaan Liquid-kielellä. Katso osoitteesta {0} lisäohjeita. Käytettävissä olevat muuttujat:",
+ "templateMsg": "ilmoituksen viesti",
+ "templateHeartbeatJSON": "sydämensyke-objekti",
+ "templateMonitorJSON": "seurain-objekti",
+ "templateLimitedToUpDownNotifications": "saatavilla vain YLÖS/ALAS -ilmoituksille",
+ "templateLimitedToUpDownCertNotifications": "saatavilla vain YLÖS/ALAS/Varmenteen vanheneminen -ilmoituksille",
+ "successKeywordExplanation": "MQTT-avainsana joka tulkitaan onnistumiseksi",
+ "Check/Uncheck": "Valitse/Poista valinta",
+ "statusPageSpecialSlugDesc": "Erityinen slug {0}: tätä sivua ei näytetä kun slugia ei ole määritelty",
+ "Add a new expiry notification day": "Lisää uusi vanhenemismuistutuspäivä",
+ "Remove the expiry notification": "Poista vanhenemismuistutuspäivä",
+ "telegramMessageThreadID": "(Valinnainen) Viestilangan ID",
+ "telegramSendSilently": "Lähetä hiljaisesti",
+ "telegramSendSilentlyDescription": "Lähettää viestin hiljaisesti. Käyttäjät saavat ilmoituksen ilman äänimerkkiä.",
+ "telegramProtectContentDescription": "Jos käytössä, botin viestit Telegramissa suojataan uudelleenlähetykseltä ja tallennukselta.",
+ "telegramProtectContent": "Suojaa uudelleenlähetykseltä ja tallennukselta",
+ "telegramMessageThreadIDDescription": "Valinnainen yksilöllinen tunnus keskustelualueen viestilangalle (ketju); vain keskustelualueen superryhmille",
+ "sameAsServerTimezone": "Sama kuin palvelimen aikavyöhyke",
+ "startDateTime": "Aloitusajankohta",
+ "endDateTime": "Päättymisajankohta",
+ "enableNSCD": "Ota käyttöön NSCD (Name Service Cache Daemon) kaikkien DNS-kyselyiden välimuistitusta varten",
+ "chromeExecutable": "Chrome/Chromium -sovellus",
+ "chromeExecutableAutoDetect": "Tunnista automaattisesti",
+ "chromeExecutableDescription": "Docker käyttäjillä, jos Chromium ei ole vielä asennettu, saattaa kulua muutamia minuutteja asennukseen ennen testituloksen näyttämistä. Levytilaa vaaditaan 1 Gt.",
+ "Edit Maintenance": "Muokkaa Huoltoa",
+ "smtpLiquidIntroduction": "Kaksi seuraavaa kenttää ovat muokattavissa Liquid template-kielellä. Katso osoitteesta {0} lisäohjeita. Käytettävissä olevat muuttujat:",
+ "Clone Monitor": "Monista seurain",
+ "leave blank for default subject": "jätä tyhjäksi käyttääksesi oletusaihetta",
+ "emailCustomBody": "Mukautettu sisältörunko",
+ "leave blank for default body": "jätä tyhjäksi käyttääksesi oletussisältörunkoa",
+ "emailTemplateServiceName": "Palvelun nimi",
+ "emailTemplateHostnameOrURL": "Isäntänimi tai URL",
+ "emailTemplateStatus": "Tila",
+ "emailTemplateMonitorJSON": "seurain-objekti",
+ "emailTemplateHeartbeatJSON": "sydämensyke-objekti",
+ "emailTemplateMsg": "ilmoitusviesti",
+ "emailTemplateLimitedToUpDownNotification": "saatavilla vain YLÖS/ALAS sydämensykkeille, muulloin null",
+ "Your User ID": "Käyttäjätunnuksesi",
+ "invertKeywordDescription": "Etsi puuttuvaa avainsanaa.",
+ "Bark API Version": "Bark API-versio",
+ "Notify Channel": "Ilmoitus kanavalle",
+ "aboutNotifyChannel": "Ilmoitus kanavalle antaa työpöytä- tai mobiili-ilmoituksen kaikille kanavan jäsenille; riippumatta ovatko he paikalla vai poissa.",
+ "setup a new monitor group": "luo uusi seurainryhmä",
+ "openModalTo": "avaa ikkuna kohteeseen {0}",
+ "Server URL should not contain the nfty topic": "Palvelimen URL ei saa sisältää nfty-aihetta",
+ "PushDeer Server": "PushDeer -palvelin",
+ "pushDeerServerDescription": "Jätä tyhjäksi käyttääksesi virallista palvelinta",
+ "Add API Key": "Lisää API-avain",
+ "No API Keys": "Ei API-avaimia",
+ "apiKeyAddedMsg": "API-avaimesi on lisätty. Laitathan sen muistiin, sillä sitä ei näytetä uudelleen.",
+ "Body Encoding": "Sisällön muoto (encoding)",
+ "Key Added": "Avain lisätty",
+ "apiKey-active": "Aktiivinen",
+ "disableAPIKeyMsg": "Haluatko varmasti kytkeä tämän API-avaimen pois käytöstä?",
+ "deleteAPIKeyMsg": "Haluatko varmasti poistaa tämän API-avaimen?",
+ "Generate": "Luo",
+ "pagertreeIntegrationUrl": "Integrointi-URL",
+ "pagertreeUrgency": "Kiireellisyysaste",
+ "pagertreeSilent": "Hiljainen",
+ "pagertreeLow": "Alhainen",
+ "pagertreeMedium": "Keskitaso",
+ "pagertreeHigh": "Korkea",
+ "pagertreeCritical": "Kriittinen",
+ "pagertreeDoNothing": "Älä tee mitään",
+ "pagertreeResolve": "Ratkaise automaattisesti",
+ "wayToGetPagerTreeIntegrationURL": "Kun olet luonut PagerTree Uptime Kuma -integraation, kopioi endpoint-URL. Katso lisätietoja: {0}",
+ "lunaseaTarget": "Kohde",
+ "lunaseaDeviceID": "Laitetunnus",
+ "lunaseaUserID": "Käyttäjätunnus",
+ "ntfyAuthenticationMethod": "Tunnistautumismenetelmä",
+ "ntfyPriorityHelptextAllExceptDown": "Kaikki tapahtumat lähetetään tällä prioriteetilla, paitsi {0}-tapahtumat, joilla on prioriteetti {1}",
+ "twilioApiKey": "API-avain (valinnainen)",
+ "twilioAuthToken": "Tunnistautumis-token / API-avaimen salaisuus",
+ "twilioFromNumber": "Numerosta",
+ "Badge Prefix": "Badgen arvon etuliite",
+ "Badge Suffix": "Badgen arvon pääte",
+ "Badge Label Color": "Badgen tekstin väri",
+ "Badge Color": "Badgen väri",
+ "Badge Label Prefix": "Badgen tekstin etuliite",
+ "Badge Warn Color": "Badgen varoitusväri",
+ "Badge Maintenance Color": "Badgen huoltoväri",
+ "Authorization Identity": "Todennuksen Identititeetti",
+ "Badge Down Days": "Badgen alhaalla-päivät",
+ "Badge Style": "Badgen tyyli",
+ "Badge URL": "Badgen URL",
+ "monitorToastMessagesDescription": "Ponnahdusilmoitukset seuraimille katoavat annetun sekuntimäärän kuluttua. Arvo -1 kytkee ajastuksen pois. Aseta arvoksi 0 estääksesi ponnahdusilmoitukset.",
+ "toastErrorTimeout": "Virheilmoitusten kesto",
+ "Enable Kafka Producer Auto Topic Creation": "Käytä Kafka Producerin automaattista aiheen luontia",
+ "Kafka SASL Options": "Kafka SASL-valinnat",
+ "Mechanism": "Mekanismi",
+ "AccessKey Id": "AccessKey-tunnus",
+ "Secret AccessKey": "Salainen AccessKey",
+ "Session Token": "Istunnon token",
+ "noGroupMonitorMsg": "Ei saatavilla. Luo seurainryhmä ensin.",
+ "Close": "Sulje",
+ "Request Body": "Pyynnön sisältörunko",
+ "FlashDuty Severity": "Vakavuus",
+ "nostrRelays": "Nostr-releet",
+ "nostrSender": "Lähettäjän yksityisavain (nsec)",
+ "nostrRecipients": "Vastaanottajan julkiset avaimet (npub)",
+ "nostrRecipientsHelp": "npub-formaatissa, yksi per rivi",
+ "showCertificateExpiry": "Näytä varmenteen vanheneminen",
+ "noOrBadCertificate": "Puuttuva tai virheellinen varmenne",
+ "gamedigGuessPort": "Gamedig: Arvaa portti",
+ "gamedigGuessPortDescription": "Valve Server Query Protocol -portti voi olla eri kuin asiakasportti. Kokeile tätä jos seurain ei voi yhdistää palvelimeesi.",
+ "authUserInactiveOrDeleted": "Käyttäjä on ei ole aktiivinen tai on poistettu.",
+ "authInvalidToken": "Virheellinen token.",
+ "successAdded": "Lisätty onnistuneesti.",
+ "authIncorrectCreds": "Virheellinen käyttäjänimi tai salasana.",
+ "2faDisabled": "2FA poistettu käytöstä.",
+ "2faEnabled": "2FA käytössä.",
+ "2faAlreadyEnabled": "2FA on jo käytössä.",
+ "successDeleted": "Poistettu onnistuneesti.",
+ "successEdited": "Muokattu onnistuneesti.",
+ "successAuthChangePassword": "Salasana on päivitetty onnistuneesti.",
+ "successBackupRestored": "Varmuuskopio on palautettu onnistuneesti.",
+ "successDisabled": "Kytketty pois päältä onnistuneesti.",
+ "successEnabled": "Kytketty päälle onnistuneesti.",
+ "useRemoteBrowser": "Käytä etäselainta",
+ "deleteRemoteBrowserMessage": "Oletko varma että haluat poistaa tämän etäselaimen kaikilta seuraimilta?",
+ "wayToWriteWhapiRecipient": "Puhelinnumero kansainvälisellä etuliitteellä, mutta ilman plus-merkkiä alussa ({0}), kontaktin tunnusta ({1}) tai ryhmän tunnusta ({2}).",
+ "Alphanumeric (recommended)": "Aakkosnumeerinen (suositeltu)",
+ "wayToGetWhapiUrlAndToken": "Voit saada API URLin ja token-avaimen käymällä haluamallasi kanavalla osoitteessa {0}",
+ "whapiRecipient": "Puhelinnumero / Kontaktin tunnus / Ryhmän tunnus",
+ "API URL": "API-URL",
+ "gtxMessagingApiKeyHint": "Löydät API-avaimesi täältä: My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "Lähettäjän puhelinnumero / Transmission Path Originating Address (TPOA)",
+ "To Phone Number": "Vastaanottajan puhelinnumero",
+ "cellsyntSplitLongMessages": "Jaa pitkät viestit korkeintaan kuuteen osaan. 153 x 6 = 918 merkkiä.",
+ "max 11 alphanumeric characters": "Enint. 11 aakkosnumeerista merkkiä",
+ "GrafanaOncallUrl": "Grafana Oncall-URL",
+ "emailCustomisableContent": "Mukautettava sisältö",
+ "Pick a SASL Mechanism...": "Valitse SASL-mekanismi…",
+ "Group": "Ryhmä",
+ "Monitor Group": "Seurainryhmä",
+ "What is a Remote Browser?": "Mikä on etäselain?",
+ "Badge Warn Days": "Badgen varoitus-päivät",
+ "Remote Browsers": "Etäselaimet",
+ "self-hosted container": "Itse ylläpidetty kontti",
+ "remoteBrowserToggle": "Oletuksena Chromium ajetaan Uptime Kuma -kontin sisällä. Voit käyttää etäselainta kytkemällä tämän valinnan.",
+ "Remote Browser": "Etäselain",
+ "Add a Remote Browser": "Lisää etäselain",
+ "Remote Browser not found!": "Etäselainta ei löytynyt!",
+ "remoteBrowsersDescription": "Etäselaimet ovat vaihtoehto paikalliselle Chromiumille. Käytä palvelua kuten browserless.io tai yhdistä oma etäselaimesi",
+ "Reset Token": "Nollaa token",
+ "notificationRegional": "Alueellinen",
+ "twilioToNumber": "Numeroon",
+ "Monitor Setting": "{0}'s seurainasetukset",
+ "Badge Duration (in hours)": "Badgen kesto (tunneissa)",
+ "Badge Label": "Badgen teksti",
+ "Show Clickable Link Description": "Jos valittu, jokainen jolla on pääsy tälle tilasivulle saavat pääsyn seuraimen URL-osoitteeseen.",
+ "Show Clickable Link": "Näytä klikattava linkki",
+ "Open Badge Generator": "Avaa Badge-generaattori",
+ "Badge Generator": "{0} Badge-generaattori",
+ "Badge Type": "Badgen tyyppi",
+ "Badge Preview": "Badgen esikatselu",
+ "Badge Label Suffix": "Badgen tekstin pääte",
+ "Badge Up Color": "Badgen ylhäällä-väri",
+ "tagNotFound": "Tunnistetta ei löydy.",
+ "foundChromiumVersion": "Löydettiin Chromium/Chrome. Versio: {0}",
+ "noDockerHostMsg": "Ei saatavilla. Asenna Docker-isäntä ensin.",
+ "Badge value (For Testing only.)": "Badgen arvo (Vain testausta varten.)",
+ "toastSuccessTimeout": "Onnistumisilmoitusten kesto",
+ "wayToGetSevenIOApiKey": "Vieraile hallintasivustolla app.seven.io > developer > api key ja paina vihreää 'add' -painiketta",
+ "senderSevenIO": "Lähettävä numero tai nimi",
+ "receiverSevenIO": "Vastaanottajan numero",
+ "apiKeySevenIO": "SevenIO API-avain",
+ "Telephone number": "Puhelinnumero",
+ "gtxMessagingToHint": "Kansainvälisessä muodossa, etuliitteenä \"+\" ({e164}, {e212} or {e214})",
+ "Originator": "Lähettäjä",
+ "Destination": "Vastaanottaja",
+ "locally configured mail transfer agent": "Paikallisesti asetettu postiagentti (MTA)",
+ "Search monitored sites": "Etsi valvotuista sivustoista",
+ "DockerHostRequired": "Aseta Docker-isäntä tälle seuraimelle.",
+ "Clone": "Monista",
+ "cloneOf": "Monistettu {0}",
+ "pushoverMessageTtl": "Viestin TTL (Sekuntia)",
+ "Add a domain": "Lisää verkkotunnus",
+ "ntfyUsernameAndPassword": "Käyttäjänimi ja salasana",
+ "twilioAccountSID": "Tilin SID",
+ "successPaused": "Laitettu tauolle onnistuneesti.",
+ "successResumed": "Jatkettu onnistuneesti.",
+ "Channel access token (Long-lived)": "Kanavan pääsyavain (pitkäaikainen)",
+ "Kafka Brokers": "Kafla-välittäjät",
+ "Kafka Producer Message": "Kafka Producer -viesti",
+ "Enable Kafka SSL": "Käytä Kafka SSL:ää",
+ "cronSchedule": "Aikataulu: ",
+ "Kafka Topic Name": "Kafka aihenimi",
+ "nostrRelaysHelp": "Yksi rele-URL riviä kohden",
+ "styleElapsedTime": "Kulunut aika sydämensykepalkin alla",
+ "styleElapsedTimeShowNoLine": "Näytä (Ei viivaa)",
+ "styleElapsedTimeShowWithLine": "Näytä (Viivan kanssa)",
+ "filterActive": "Aktiivinen",
+ "filterActivePaused": "Tauolla",
+ "statusPageRefreshIn": "Päivitetään: {0}",
+ "webhookBodyPresetOption": "Esivalinta - {0}",
+ "Select": "Valitse",
+ "selectedMonitorCount": "Valittu: {0}",
+ "Add New Tag": "Lisää uusi tunniste",
+ "webhookBodyCustomOption": "Mukautettu sisältörunko",
+ "invalidCronExpression": "Virheellinen Cron-määrittely: {0}",
+ "wayToGetDiscordThreadId": "Langan / keskustelualueketjun ID haetaan samalla tavalla kuin kanavan ID. Lue lisää ID:n hakemisesta {0}",
+ "mongodbCommandDescription": "Aja MongoDB-komento tietokannassa. Lisätietoja saatavilla olevista komennoista saat osoitteesta {documentation}",
+ "Bitrix24 Webhook URL": "Bitrix24 Webhookin URL",
+ "wayToGetBitrix24Webhook": "Voit luoda webhookin seuraamalla ohjeita osoitteessa {0}",
+ "bitrix24SupportUserID": "Syötä Bitrix24 käyttäjä-ID:si. Löydät käyttäjä-ID:n linkistä vierailemalla käyttäjän profiilissa.",
+ "Refresh Interval": "Päivityksen aikaväli",
+ "Refresh Interval Description": "Tilasivu latautuu uudelleen joka {0} sekunti",
+ "forumPostName": "Keskustelualueketjun nimi",
+ "ignoreTLSErrorGeneral": "Ohita yhteyden TLS/SSL-virheet",
+ "Select message type": "Valitse viestityyppi",
+ "Send to channel": "Lähetä kanavalle",
+ "postToExistingThread": "Lähetä jo olemassaolevaan lankaan / keskustelualueen ketjuun",
+ "Create new forum post": "Luo uusi ketju keskustelualueelle",
+ "threadForumPostID": "Langan / Keskustelualueketjun ID",
+ "e.g. {discordThreadID}": "esim. {discordThreadID}",
+ "whatHappensAtForumPost": "Luo uusi keskustelualueketju. Tämä EI jatka edellistä ketjua. Lähettääksesi olemassaolevaan ketjuun käytä toimintoa \"{option}\"",
+ "Command": "Komento",
+ "smspartnerApiurl": "Löydät API-avaimesi kojelaudalta osoitteesta {0}",
+ "smspartnerPhoneNumber": "Puhelinnumero(t)",
+ "smspartnerPhoneNumberHelptext": "Numeron täytyy olla kansainvälisessä muodossa {0},{1}. Jos numeroita on useita, ne täytyy erottaa merkillä {2}",
+ "smspartnerSenderName": "SMS-lähettäjän nimi",
+ "smspartnerSenderNameInfo": "Täytyy sisältää 3..=11 tavallista merkkiä",
+ "threemaRecipient": "Vastaanottaja",
+ "threemaRecipientType": "Vastaanottajan tyyppi",
+ "threemaRecipientTypeIdentityFormat": "8 merkkiä",
+ "threemaRecipientTypePhone": "Puhelinnumero",
+ "threemaRecipientTypePhoneFormat": "E.164, ilman etuliitettä +",
+ "threemaRecipientTypeEmail": "Sähköpostiosoite",
+ "threemaSenderIdentity": "Yhdyskäytävän tunnus (Gateway-ID)",
+ "threemaApiAuthenticationSecret": "Gateway-ID salaisuus",
+ "wayToGetThreemaGateway": "Voit rekisteröityä Threema Gateway:n käyttäjäksi {0}.",
+ "threemaRecipientTypeIdentity": "Threema-tunnus (Threema-ID)",
+ "threemaSenderIdentityFormat": "8 merkkiä, alkaa useimmiten merkillä *",
+ "threemaBasicModeInfo": "Huomio: Tämä integraatio käyttää Threema Gateway:tä perustilassa (palvelinpohjainen salaus). Lisätietoja löytyy {0}.",
+ "apiKeysDisabledMsg": "API-avaimet eivät ole käytössä koska tunnistautuminen ei ole käytössä.",
+ "snmpCommunityStringHelptext": "Tämä merkkijono toimii salasanana ja pääsyoikeutena SNMP-laitteisiin. Aseta se samaksi kuin SNMP-laitteen asetuksissa.",
+ "privateOnesenderDesc": "Varmista, että puhelinnumero on kelvollinen. Lähettääksesi viestin yksityiseen numeroon esim. 628123456789",
+ "Authorization Header": "Tunnistautumisen otsikko (Authorization Header)",
+ "Optional: Space separated list of scopes": "Valinnainen: Luettelo näkyvyysalueista (scope) välilyönnillä erotettuna",
+ "jsonQueryDescription": "Valitse sisältö palvelimen JSON-vastauksesta käyttämällä JSON-kyselyä tai käytä alkuperäistä sisältöä merkillä \"$\", jos palvelimen vastaus ei ole JSON-muodossa. Tämän jälkeen sisältöä verrataan odotettuun arvoon (merkkijonona). Katso kyselykielen ohjeita osoitteesta {0}. Leikkikenttä löytyy osoitteesta {1}.",
+ "now": "nyt",
+ "time ago": "{0} sitten",
+ "-year": "-vuosi",
+ "Json Query Expression": "Json-kyselylauseke",
+ "and": "ja",
+ "cacheBusterParam": "Lisää parametri {0}",
+ "cacheBusterParamDescription": "Satunnaisesti luotu parametri välimuistien ohittamiseksi.",
+ "Community String": "Yhteisömerkkijono",
+ "OID (Object Identifier)": "OID (Objektin tunniste)",
+ "snmpOIDHelptext": "Syötä OID anturille tai tilalle jota haluat valvoa. Käytä verkonvalvontatyökaluja kuten MIB-selaimia tai SNMP-ohjelmistoja jos olet epävarma OID:n valinnasta.",
+ "Condition": "Ehto",
+ "SNMP Version": "SNMP-versio",
+ "Please enter a valid OID.": "Ole hyvä ja syötä kelvollinen OID.",
+ "Host Onesender": "OneSender-isäntä",
+ "Token Onesender": "OneSender-tokeni",
+ "Recipient Type": "Vastaanottajan tyyppi",
+ "Private Number": "Yksityinen numero",
+ "Group ID": "Ryhmän tunnus (Group ID)",
+ "groupOnesenderDesc": "Varmista, että ryhmän tunnus (Group ID) on kelvollinen. Lähettääksesi viestin ryhmälle, esim. 628123456789-342345",
+ "wayToGetOnesenderUrlandToken": "Saat URL-osoitteen ja tokenin vierailemalla OneSenderin verkkosivulla. Lisätietoja osoitteesta {0}",
+ "Add Remote Browser": "Lisää etäselain",
+ "New Group": "Uusi ryhmä",
+ "Group Name": "Ryhmän nimi",
+ "OAuth2: Client Credentials": "OAuth2: Asiakkaan tunnukset",
+ "Authentication Method": "Tunnistustapa",
+ "Form Data Body": "Lomakkeen tietosisältö (Form data body)",
+ "OAuth Token URL": "OAuth tokenin URL",
+ "Client ID": "Asiakkaan ID",
+ "Client Secret": "Asiakkaan salaisuus",
+ "OAuth Scope": "OAuth-näkyvyysalue (scope)",
+ "Go back to home page.": "Palaa etusivulle.",
+ "No tags found.": "Tunnisteita ei löytynyt.",
+ "Lost connection to the socket server.": "Menetettiin yhteys Socket-palvelimeen.",
+ "Cannot connect to the socket server.": "Socket-palvelimeen ei voi yhdistää.",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "SIGNL4 Webhookin URL",
+ "signl4Docs": "Löydät lisätietoja SIGNL4-asetuksista ja webhook URLin hankinnasta osoitteesta {0}.",
+ "Conditions": "Ehdot",
+ "conditionAdd": "Lisää ehto",
+ "conditionDelete": "Poista ehto",
+ "conditionAddGroup": "Lisää ryhmä",
+ "conditionDeleteGroup": "Poista ryhmä",
+ "conditionValuePlaceholder": "Arvo",
+ "contains": "sisältää",
+ "not contains": "ei sisällä",
+ "not equals": "ei yhtä suuri kuin",
+ "equals": "yhtä suuri kuin",
+ "starts with": "alkaa",
+ "not starts with": "ei ala",
+ "ends with": "päättyy",
+ "not ends with": "ei pääty",
+ "less than": "vähemmän kuin",
+ "greater than": "enemmän kuin",
+ "less than or equal to": "vähemmän tai yhtä paljon kuin",
+ "greater than or equal to": "enemmän tai yhtä paljon kuin",
+ "record": "tietue",
+ "Notification Channel": "Ilmoituskanava",
+ "Custom sound to override default notification sound": "Mukautettu ääni oletusäänen sijaan",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "Aikaherkät ilmoitukset toimitetaan välittömästi vaikka laite olisi Älä Häiritse-tilassa.",
+ "ignoredTLSError": "TLS/SSL-virheitä ei huomioida",
+ "Debug": "Debug",
+ "Copy": "Kopioi",
+ "CopyToClipboardError": "Leikepöydälle kopiointi ei onnistunut: {error}",
+ "CopyToClipboardSuccess": "Kopioitu!",
+ "CurlDebugInfo": "Debugataksesi seurainta, voit joko kopioida tämän oman tietokoneesi komentoriville tai sen tietokoneen komentoriville jossa uptime kuma on käynissä nähdäksesi pyyntösi.{newiline}Otathan huomioon verkkoympäristöjen erot kuten {firewalls}, {dns_resolvers} tai {docker_networks}.",
+ "firewalls": "palomuurit",
+ "dns resolvers": "DNS-palvelimet",
+ "docker networks": "Docker-verkot",
+ "CurlDebugInfoOAuth2CCUnsupported": "{curl} ei tue täydellistä oauth-asiakkaan kirjautumistietojen välittämistä.{newline}Hanki bearer token -tunnus ja välitä se {oauth2_bearer}-vaihtoehdon kautta.",
+ "CurlDebugInfoProxiesUnsupported": "Välityspalvelimen tukea yllä olevassa {curl}-komennossa ei ole tällä hetkellä toteutettu.",
+ "shrinkDatabaseDescriptionSqlite": "Käynnistä tietokannan {vacuum} SQLitelle. {auto_vacuum} on jo käytössä, mutta se ei eheytä tietokantaa tai uudelleenpakkaa yksittäisiä tietokantasivuja samoin kuin {vacuum}.",
+ "Message format": "Viestin muoto",
+ "Send rich messages": "Lähetä monipuolisia viestejä (rich messages)",
+ "Sound": "Ääni",
+ "Alphanumerical string and hyphens only": "Vain aakkosnumeerinen merkkijono ja yhdysmerkit",
+ "Arcade": "Pelihalli",
+ "Harp": "Harppu",
+ "Fail": "Virhe",
+ "Correct": "Onnistuminen",
+ "Reveal": "Ilmestys",
+ "Bubble": "Kupla",
+ "Doorbell": "Ovikello",
+ "Flute": "Huilu",
+ "Money": "Raha",
+ "Clear": "Kirkas",
+ "Elevator": "Hissi",
+ "Guitar": "Kitara",
+ "Time Sensitive (iOS Only)": "Aikaherkkä (vain iOS)",
+ "From": "Lähettäjä",
+ "Can be found on:": "Löydettävissä: {0}",
+ "The phone number of the recipient in E.164 format.": "Vastaanottajan puhelinnumero E.164-muodossa.",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "Joko lähettäjätunnus (sender ID) tai puhelinnumero E-164-muodossa jos haluat pystyä vastaanottamaan vastausviestejä.",
+ "Scifi": "Tieteisseikkailu",
+ "Pop": "Poksahdus",
+ "rabbitmqNodesRequired": "Aseta tämän seuraimen solmut.",
+ "rabbitmqNodesInvalid": "Käytä RabbitMQ-solmuille täysin hyväksyttyä ('http' alkavaa) URL-osoitetta.",
+ "RabbitMQ Username": "RabbitMQ Käyttäjänimi",
+ "RabbitMQ Password": "RabbitMQ Salasana",
+ "SendGrid API Key": "SendGrid API-avain",
+ "Separate multiple email addresses with commas": "Erottele useammat sähköpostiosoitteet pilkuilla",
+ "RabbitMQ Nodes": "RabbitMQ-hallintasolmut",
+ "rabbitmqNodesDescription": "Anna URL RabbitMQ-hallintasolmuille sisältäen protokollan ja portin. Esimerkki: {0}",
+ "rabbitmqHelpText": "Jotta voit käyttää seurainta, sinun on otettava hallintalaajennus käyttöön RabbitMQ-asetuksissa. Lisätietoja saat osoitteesta {rabitmq_documentation}.",
+ "aboutSlackUsername": "Muuttaa viestin lähettäjän näyttönimeä. Jos haluat mainita jonkun, lisää se ystävälliseen nimeen.",
+ "Font Twemoji by Twitter licensed under": "Twemoji-fontti (Twitter) on lisensoitu seuraavalla lisenssillä",
+ "wayToGetWahaSession": "Tästä istunnosta WAHA lähettää ilmoituksia Chat ID:hen. Löydät sen WAHA kojelaudasta.",
+ "wayToWriteWahaChatId": "Puhelinnumero kansainvälisellä etuliitteellä, mutta ilman plusmerkkiä alussa ({0}), yhteystietotunnusta ({1}) tai ryhmätunnusta ({2}). Ilmoitukset lähetetään tähän chat-tunnukseen WAHA-istunnosta.",
+ "wahaSession": "Istunto",
+ "wahaChatId": "Viesti ID (Puhelinnumero / Yhteystieto ID / Ryhmä ID)",
+ "Template Format": "Malli Muotoilu",
+ "wayToGetWahaApiUrl": "Sinun WAHA instanssin URL.",
+ "YZJ Webhook URL": "YZJ Webhook URL",
+ "telegramServerUrl": "(Valinnainen) Palvelin Url",
+ "telegramServerUrlDescription": "Telegramin bot-api-rajoitusten poistamiseksi tai pääsyn saamiseksi estetyille alueille (Kiina, Iran jne.). Saat lisätietoja napsauttamalla {0}. Oletus: {1}",
+ "Message Template": "Viesti Malli",
+ "YZJ Robot Token": "YZJ Robotti tokeni",
+ "wayToGetWahaApiKey": "API Key on WHATSAPP_API_KEY ympäristömuuttujan arvo, jota käytit WAHA käynnistämiseen.",
+ "Plain Text": "Pelkkää tekstiä",
+ "templateServiceName": "palvelin nimi",
+ "templateHostnameOrURL": "isäntänimi tai URL",
+ "templateStatus": "tila",
+ "telegramUseTemplate": "Käytä mukautettua viesti mallia",
+ "telegramUseTemplateDescription": "Jos aktivoitu, viesti lähetetään käyttämällä mukautettua mallia.",
+ "telegramTemplateFormatDescription": "Telegram sallii erilaisten merkintäkielien käytön viesteissä, katso Telegram {0} tarkempia tietoja."
}
diff --git a/src/lang/fr-FR.json b/src/lang/fr-FR.json
index feb244ea3..2d09b0bac 100644
--- a/src/lang/fr-FR.json
+++ b/src/lang/fr-FR.json
@@ -4,7 +4,7 @@
"retryCheckEverySecond": "Réessayer toutes les {0} secondes",
"resendEveryXTimes": "Renvoyez toutes les {0} fois",
"resendDisabled": "Renvoi désactivé",
- "retriesDescription": "Nombre d'essais avant que le service ne soit déclaré hors ligne et qu'une notification soit envoyée",
+ "retriesDescription": "Nombre de tentatives avant que le service ne soit déclaré hors ligne et qu'une notification soit envoyée",
"ignoreTLSError": "Ignorer les erreurs liées au certificat SSL/TLS",
"upsideDownModeDescription": "Si le service est en ligne, il sera alors noté hors ligne et vice-versa.",
"maxRedirectDescription": "Nombre maximal de redirections avant que le service ne soit marqué comme hors ligne.",
@@ -73,11 +73,11 @@
"Delete": "Supprimer",
"Current": "Actuellement",
"Uptime": "Disponibilité",
- "Cert Exp.": "Expiration Cert SSL",
+ "Cert Exp.": "Expiration Cert SSL.",
"day": "jour | jours",
- "-day": "-jour",
+ "-day": "-jours",
"hour": "heure",
- "-hour": "heures",
+ "-hour": "-heures",
"Response": "Temps de réponse",
"Ping": "Ping",
"Monitor Type": "Type de sonde",
@@ -87,8 +87,8 @@
"Hostname": "Nom d'hôte / adresse IP",
"Port": "Port",
"Heartbeat Interval": "Intervalle de vérification",
- "Retries": "Essais",
- "Heartbeat Retry Interval": "Intervalle de ré-essai",
+ "Retries": "Tentatives",
+ "Heartbeat Retry Interval": "Intervalle entre chaque nouvelle tentative",
"Resend Notification if Down X times consecutively": "Renvoyer la notification si hors ligne X fois consécutivement",
"Advanced": "Avancé",
"Upside Down Mode": "Mode inversé",
@@ -310,7 +310,7 @@
"lineDevConsoleTo": "Console développeurs Line - {0}",
"Basic Settings": "Paramètres de base",
"User ID": "Identifiant utilisateur",
- "Messaging API": "Messaging API",
+ "Messaging API": "API de messagerie",
"wayToGetLineChannelToken": "Premièrement accédez à {0}, créez un provider et définissez un type de salon à «Messaging API». Vous obtiendrez alors le jeton d'accès du salon et l'identifiant utilisateur demandés.",
"Icon URL": "URL vers l'icône",
"aboutIconURL": "Vous pouvez mettre un lien vers une image dans « URL vers l'icône » pour remplacer l'image de profil par défaut. Elle ne sera utilisé que si « Icône émoji » n'est pas défini.",
@@ -332,13 +332,13 @@
"Headers": "En-têtes",
"PushUrl": "URL Push",
"HeadersInvalidFormat": "Les en-têtes de la requête ne sont pas dans un format JSON valide : ",
- "BodyInvalidFormat": "Le corps de la requête n'est pas dans un format JSON valide : ",
+ "BodyInvalidFormat": "Le corps de la requête n'est pas dans un format JSON valide : ",
"Monitor History": "Historique de la sonde",
"clearDataOlderThan": "Conserver l'historique des données de la sonde durant {0} jours.",
"PasswordsDoNotMatch": "Les mots de passe ne correspondent pas.",
"records": "enregistrements",
"One record": "Un enregistrement",
- "steamApiKeyDescription": "Pour surveiller un serveur Steam, vous avez besoin d'une clé Steam Web-API. Vous pouvez enregistrer votre clé ici : ",
+ "steamApiKeyDescription": "Pour surveiller un serveur Steam, vous avez besoin d'une clé Steam Web-API. Vous pouvez enregistrer votre clé ici : ",
"Current User": "Utilisateur actuel",
"topic": "Sujet",
"topicExplanation": "Topic MQTT à surveiller",
@@ -384,7 +384,6 @@
"Discard": "Abandonner",
"Cancel": "Annuler",
"Powered by": "Propulsé par",
- "shrinkDatabaseDescription": "Déclenche la commande VACUUM pour SQLite. Si votre base de données a été créée après la version 1.10.0, AUTO_VACUUM est déjà activé et cette action n'est pas nécessaire.",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "Nom d'utilisateur de l'API (incl. webapi_ prefix)",
"serwersmsAPIPassword": "Mot de passe API",
@@ -456,7 +455,7 @@
"Huawei": "Huawei",
"High": "Haute",
"Retry": "Recommencez",
- "Topic": "Topic",
+ "Topic": "Sujet",
"WeCom Bot Key": "Clé de robot WeCom",
"Setup Proxy": "Configurer le proxy",
"Proxy Protocol": "Protocole proxy",
@@ -473,7 +472,7 @@
"Uptime Kuma": "Uptime Kuma",
"Add New Status Page": "Ajouter une page de statut",
"Slug": "Chemin",
- "Accept characters:": "Caractères acceptés : ",
+ "Accept characters:": "Caractères acceptés :",
"startOrEndWithOnly": "Commence uniquement par {0}",
"No consecutive dashes": "Pas de double tirets",
"Next": "Continuer",
@@ -488,7 +487,7 @@
"About": "À propos",
"wayToGetCloudflaredURL": "(télécharger cloudflared depuis {0})",
"cloudflareWebsite": "Site web de Cloudflare",
- "Message:": "Message : ",
+ "Message:": "Message :",
"Don't know how to get the token? Please read the guide:": "Vous ne savez pas comment obtenir le jeton ? Lisez le guide :",
"The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "La connexion actuelle peut être perdue si vous vous connectez actuellement via un tunnel Cloudflare. Êtes-vous sûr de vouloir l'arrêter ? Tapez votre mot de passe actuel pour le confirmer.",
"HTTP Headers": "En-têtes HTTP",
@@ -496,11 +495,11 @@
"Other Software": "Autres logiciels",
"For example: nginx, Apache and Traefik.": "Par exemple : nginx, Apache et Traefik.",
"Please read": "Veuillez lire",
- "Subject:": "Objet : ",
- "Valid To:": "Valable jusqu'au : ",
- "Days Remaining:": "Jours restants : ",
- "Issuer:": "Émetteur : ",
- "Fingerprint:": "Empreinte : ",
+ "Subject:": "Objet :",
+ "Valid To:": "Valable jusqu'au :",
+ "Days Remaining:": "Jours restants :",
+ "Issuer:": "Émetteur :",
+ "Fingerprint:": "Empreinte :",
"No status pages": "Aucune page de statut",
"Domain Name Expiry Notification": "Notification d'expiration du nom de domaine",
"Proxy": "Proxy",
@@ -518,7 +517,7 @@
"Domain Names": "Noms de domaine",
"signedInDisp": "Connecté en tant que {0}",
"signedInDispDisabled": "Authentification désactivée.",
- "RadiusSecret": "Radius Secret",
+ "RadiusSecret": "Secret Radius",
"RadiusSecretDescription": "Secret partagé entre le client et le serveur",
"RadiusCalledStationId": "Identifiant de la station appelée",
"RadiusCalledStationIdDescription": "Identifiant de l'appareil appelé",
@@ -567,7 +566,7 @@
"Using a Reverse Proxy?": "Utiliser un proxy inverse ?",
"Check how to config it for WebSocket": "Vérifier comment le configurer pour WebSocket",
"Steam Game Server": "Serveur de jeu Steam",
- "Most likely causes:": "Causes les plus probables : ",
+ "Most likely causes:": "Causes les plus probables :",
"The resource is no longer available.": "La ressource n'est plus disponible.",
"There might be a typing error in the address.": "Il se peut qu'il y ait une erreur de frappe dans l'adresse.",
"What you can try:": "Ce que vous pouvez essayer :",
@@ -602,10 +601,10 @@
"Notification Service": "Service de notifications",
"default: notify all devices": "par défaut : notifier tous les appareils",
"A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Une liste des services de notification peut être trouvée dans Home Assistant sous \"Outils de développement > Services\" recherchez \"notification\" pour trouver le nom de votre appareil/téléphone.",
- "Automations can optionally be triggered in Home Assistant:": "Les automatisations peuvent éventuellement être déclenchées dans Home Assistant : ",
- "Trigger type:": "Type de déclencheur : ",
- "Event type:": "Type d'événement : ",
- "Event data:": "Données d'événement : ",
+ "Automations can optionally be triggered in Home Assistant:": "Les automatisations peuvent éventuellement être déclenchées dans Home Assistant :",
+ "Trigger type:": "Type de déclencheur :",
+ "Event type:": "Type d'événement :",
+ "Event data:": "Données d'événement :",
"Then choose an action, for example switch the scene to where an RGB light is red.": "Ensuite, choisissez une action, par exemple basculer la scène là où une lumière RVB est rouge.",
"Frontend Version": "Version frontend",
"Frontend Version do not match backend version!": "La version frontend ne correspond pas à la version backend !",
@@ -699,7 +698,7 @@
"Edit Tag": "Modifier l'étiquette",
"Body Encoding": "Encodage du corps",
"telegramMessageThreadID": "(Facultatif) ID du fil de message",
- "telegramMessageThreadIDDescription": "(Facultatif) Identifiant unique pour le fil de discussion ciblé (sujet) du forum; pour les supergroupes du forum uniquement",
+ "telegramMessageThreadIDDescription": "(Facultatif) Identifiant unique pour le fil de discussion ciblé (sujet) du forum ; pour les supergroupes du forum uniquement",
"telegramProtectContent": "Protéger le transfert/l'enregistrement",
"telegramProtectContentDescription": "S'il est activé, les messages du robot dans Telegram seront protégés contre le transfert et l'enregistrement.",
"telegramSendSilently": "Envoyer silencieusement",
@@ -717,7 +716,7 @@
"No API Keys": "Aucune clé API",
"apiKey-active": "Active",
"apiKey-expired": "Expirée",
- "apiKey-inactive": "Inactive",
+ "apiKey-inactive": "Inactif",
"Expires": "Expire",
"disableAPIKeyMsg": "Voulez-vous vraiment désactiver cette clé API ?",
"deleteAPIKeyMsg": "Voulez-vous vraiment supprimer cette clé API ?",
@@ -797,7 +796,6 @@
"twilioApiKey": "Clé API (facultatif)",
"Expected Value": "Valeur attendue",
"Json Query": "Requête Json",
- "jsonQueryDescription": "Faites une requête json contre la réponse et vérifiez la valeur attendue (la valeur de retour sera convertie en chaîne pour comparaison). Consultez {0} pour la documentation sur le langage de requête. Une aire de jeux peut être trouvée {1}.",
"Badge Duration (in hours)": "Durée du badge (en heures)",
"Badge Preview": "Aperçu du badge",
"aboutNotifyChannel": "Notifier le canal déclenchera une notification de bureau ou mobile pour tous les membres du canal, que leur disponibilité soit active ou absente.",
@@ -828,12 +826,12 @@
"nostrSender": "Émetteur clé privée (nsec)",
"nostrRecipientsHelp": "Format npub, un par ligne",
"nostrRelays": "Relais Nostr",
- "PushDeer Server": "PushDeer Server",
+ "PushDeer Server": "Serveur PushDeer",
"showCertificateExpiry": "Afficher l'expiration du certificat",
"noOrBadCertificate": "Pas/Mauvais certificat",
"pushDeerServerDescription": "Laissez le champ vide pour utiliser le serveur officiel",
"FlashDuty Severity": "Gravité",
- "wayToGetFlashDutyKey": "Vous pouvez aller dans Canal -> (Sélectionner un canal) -> Intégrations -> Ajouter une nouvelle page d'intégration, ajouter un \"événement personnalisé\" pour obtenir une adresse push, copier la clé d'intégration dans l'adresse. Pour plus d'informations, veuillez visiter",
+ "wayToGetFlashDutyKey": "Vous pouvez aller dans Canal -> (Sélectionner un canal) -> Intégrations -> Ajouter une nouvelle page d'intégration, ajouter un « Uptime Kuma » pour obtenir une adresse push, copier la clé d'intégration dans l'adresse. Pour plus d'informations, veuillez visiter",
"Request Timeout": "Délai d'expiration de la demande",
"timeoutAfter": "Délai dépassé après {0} secondes",
"gamedigGuessPort": "Gamedig : Devinez le port",
@@ -918,5 +916,207 @@
"ntfyPriorityHelptextAllEvents": "Tous les événements sont envoyés avec la priorité maximale",
"ntfyPriorityHelptextAllExceptDown": "Tous les événements sont envoyés avec cette priorité, à l'exception des événements {0}, qui ont une priorité de {1}",
"statusPageSpecialSlugDesc": "Chemin spécial {0} : cette page sera affichée en l'absence de chemin",
- "What is a Remote Browser?": "Qu'est-ce qu'un navigateur distant ?"
+ "What is a Remote Browser?": "Qu'est-ce qu'un navigateur distant ?",
+ "Channel access token (Long-lived)": "Jeton d'accès au canal (longue durée)",
+ "Your User ID": "Votre identifiant",
+ "documentationOf": "{0} Documentation",
+ "wayToGetHeiiOnCallDetails": "Comment obtenir l'ID de déclencheur et les clés API d'après la {documentation}",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "À partir du numéro de téléphone / Adresse d'origine du chemin de transmission (TPOA)",
+ "To Phone Number": "Au numéro de téléphone",
+ "gtxMessagingToHint": "Format international, avec \"+\" ({e164}, {e212} ou {e214})",
+ "gtxMessagingApiKeyHint": "Vous pouvez trouver votre clé API à l'adresse suivante : Mes comptes de routage > Afficher les informations du compte > Informations d'identification de l'API > API REST (v2.x)",
+ "gtxMessagingFromHint": "Sur les téléphones mobiles, vos destinataires voient le TPOA affiché comme l'expéditeur du message. Sont autorisés jusqu'à 11 caractères alphanumériques, un shortcode, le longcode local ou les numéros internationaux ({e164}, {e212} ou {e214})",
+ "Telephone number": "Numéro de téléphone",
+ "Originator": "Auteur",
+ "cellsyntOriginator": "Visible sur le téléphone mobile du destinataire en tant qu'expéditeur du message. Les valeurs autorisées et la fonction dépendent du type d'auteur du paramètre.",
+ "Destination": "Destination",
+ "Allow Long SMS": "Autoriser les SMS longs",
+ "cellsyntSplitLongMessages": "Divisez les longs messages en 6 parties maximum. 153 x 6 = 918 caractères.",
+ "max 15 digits": "maximum 15 chiffres",
+ "max 11 alphanumeric characters": "maximum 11 caractères alphanumériques",
+ "Originator type": "Type d'auteur",
+ "Alphanumeric (recommended)": "Alphanumérique (recommandé)",
+ "cellsyntOriginatortypeAlphanumeric": "Chaîne alphanumérique (max 11 caractères alphanumériques). Les destinataires ne peuvent pas répondre au message.",
+ "cellsyntOriginatortypeNumeric": "Valeur numérique (maximum 15 chiffres) avec numéro de téléphone au format international sans 00 en tête (par exemple, le numéro britannique 07920 110 000 doit être défini comme 447920110000). Les destinataires peuvent répondre au message.",
+ "cellsyntDestination": "Numéro de téléphone du destinataire au format international commençant par 00 suivi de l'indicatif du pays, par ex. 00447920110000 pour le numéro britannique 07920 110 000 (max 17 chiffres au total). Max 25 000 destinataires séparés par des virgules par requête HTTP.",
+ "callMeBotGet": "Ici, vous pouvez générer un point de terminaison pour {0}, {1} et {2}. Gardez à l’esprit que votre tarif peut être limité. Les limites de débit semblent être : {3}",
+ "wayToGetWhapiUrlAndToken": "Vous pouvez obtenir l'URL de l'API et le jeton en allant dans votre canal souhaité à partir de {0}",
+ "whapiRecipient": "Numéro de téléphone / ID de contact / ID de groupe",
+ "API URL": "URL de l'API",
+ "wayToWriteWhapiRecipient": "Le numéro de téléphone avec le préfixe international, mais sans le signe plus au début ({0}), l'ID de contact ({1}) ou l'ID de groupe ({2}).",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Entrez le nom d'hôte du serveur auquel vous souhaitez vous connecter ou {localhost} si vous avez l'intention d'utiliser un {local_mta}",
+ "locally configured mail transfer agent": "Agent de transfert de courrier configuré localement",
+ "Don't mention people": "Ne mentionne pas les personnes",
+ "Mention group": "Mentionne {groupe}",
+ "Mentioning": "Mentionner",
+ "senderSevenIO": "Numéro ou nom d'envoi",
+ "receiverSevenIO": "Numéro de réception",
+ "apiKeySevenIO": "Clé API SevenIO",
+ "wayToGetSevenIOApiKey": "Visitez le tableau de bord sous app.seven.io > développeur > clé api > le bouton d'ajout vert",
+ "receiverInfoSevenIO": "Si le numéro de réception n'est pas situé en Allemagne, vous devez ajouter l'indicatif du pays devant le numéro (par exemple, pour l'indicatif de pays 1 des États-Unis, utilisez 117612121212 au lieu de 017612121212)",
+ "Host URL": "URL de l'hôte",
+ "Select message type": "Sélectionnez le type de message",
+ "Create new forum post": "Créer un nouveau message sur le forum",
+ "postToExistingThread": "Publier sur le fil de discussion / forum existant",
+ "forumPostName": "Nom du post sur le forum",
+ "threadForumPostID": "ID du fil / ID du post sur le forum",
+ "whatHappensAtForumPost": "Créer un nouveau post sur le forum. Cela ne publie PAS de messages dans un post existant. Pour publier dans un post existant, utilisez \"{option}\"",
+ "wayToGetDiscordThreadId": "Obtenir un ID de fil / post sur le forum est similaire à obtenir un ID de canal. Pour en savoir plus sur la manière d'obtenir des IDs, lisez {0}",
+ "Send to channel": "Envoyer au canal",
+ "e.g. {discordThreadID}": "e.g. {discordThreadID}",
+ "Command": "Commande",
+ "mongodbCommandDescription": "Exécutez une commande MongoDB sur la base de données. Pour plus d'informations sur les commandes disponibles, consultez la {documentation}",
+ "Refresh Interval": "Intervalle de rafraîchissement",
+ "Refresh Interval Description": "La page de statut effectuera un rafraîchissement complet du site toutes les {0} secondes",
+ "ignoreTLSErrorGeneral": "Ignorer l'erreur TLS/SSL pour la connexion",
+ "Bitrix24 Webhook URL": "URL du Webhook Bitrix24",
+ "wayToGetBitrix24Webhook": "Vous pouvez créer un webhook en suivant les étapes de {0}",
+ "bitrix24SupportUserID": "Entrez votre identifiant d'utilisateur dans Bitrix24. Vous pouvez trouver l'ID à partir du lien en allant sur le profil de l'utilisateur.",
+ "smspartnerPhoneNumber": "Numéro(s) de téléphone",
+ "smspartnerPhoneNumberHelptext": "Le numéro doit être au format international {0}, {1}. Plusieurs numéros doivent être séparés par {2}",
+ "smspartnerSenderName": "Nom de l'expéditeur SMS",
+ "smspartnerSenderNameInfo": "Doit être compris entre 3 et 11 caractères réguliers",
+ "smspartnerApiurl": "Vous pouvez trouver votre clé API dans votre tableau de bord à {0}",
+ "threemaRecipient": "Destinataire",
+ "threemaRecipientType": "Type de destinataire",
+ "threemaRecipientTypeIdentity": "Threema-ID",
+ "threemaRecipientTypeIdentityFormat": "8 caractères",
+ "threemaRecipientTypePhone": "Numéro de téléphone",
+ "threemaRecipientTypePhoneFormat": "E.164, sans le signe + initial",
+ "threemaRecipientTypeEmail": "Adresse email",
+ "threemaSenderIdentity": "Identifiant de passerelle",
+ "threemaSenderIdentityFormat": "8 caractères, commence généralement par *",
+ "threemaApiAuthenticationSecret": "Secret de l'identifiant de la passerelle",
+ "wayToGetThreemaGateway": "Vous pouvez vous inscrire à Threema Gateway {0}.",
+ "threemaBasicModeInfo": "Note : Cette intégration utilise Threema Gateway en mode basique (chiffrement basé sur le serveur). Vous pouvez trouver plus de détails {0}.",
+ "apiKeysDisabledMsg": "Les clés API sont désactivées car l'authentification est désactivée.",
+ "cacheBusterParam": "Ajoutez le paramètre {0}",
+ "snmpCommunityStringHelptext": "Cette chaîne fonctionne comme un mot de passe pour authentifier et contrôler l'accès aux appareils compatibles SNMP. Faites-le correspondre à la configuration de votre périphérique SNMP.",
+ "privateOnesenderDesc": "Assurez-vous que le numéro de téléphone est valide. Pour envoyer un message vers un numéro de téléphone privé, ex : 628123456789",
+ "groupOnesenderDesc": "Assurez-vous que le GroupID est valide. Pour envoyer un message dans le groupe, ex : 628123456789-342345",
+ "Optional: Space separated list of scopes": "Facultatif : liste des étendues séparées par des espaces",
+ "jsonQueryDescription": "Analyser et extraire des données spécifiques de la réponse JSON du serveur en utilisant une requête JSON ou utiliser « $ » pour la réponse brute, si un JSON n'est pas attendu. Le résultat est ensuite comparé à la valeur attendue, en tant que chaînes de caractères. Consultez {0} pour la documentation et utilisez {1} pour expérimenter avec des requêtes.",
+ "now": "Maintenant",
+ "time ago": "il y a {0}",
+ "-year": "-année",
+ "Json Query Expression": "Expression de requête JSON",
+ "and": "et",
+ "cacheBusterParamDescription": "Paramètre généré aléatoirement pour ignorer les caches.",
+ "Community String": "Chaîne de communauté",
+ "OID (Object Identifier)": "OID (identifiant d'objet)",
+ "snmpOIDHelptext": "Entrez l'OID du capteur ou de l'état que vous souhaitez surveiller. Utilisez des outils de gestion de réseau tels que les navigateurs MIB ou le logiciel SNMP si vous n'êtes pas sûr de l'OID.",
+ "Condition": "Condition",
+ "SNMP Version": "Version SNMP",
+ "Please enter a valid OID.": "Veuillez saisir un OID valide.",
+ "Host Onesender": "Héberger un expéditeur",
+ "Token Onesender": "Jeton Onesender",
+ "Recipient Type": "Type de destinataire",
+ "Private Number": "Numéro privé",
+ "Group ID": "Identifiant du groupe",
+ "wayToGetOnesenderUrlandToken": "Vous pouvez obtenir l'URL et le jeton en accédant au site Web Onesender. Plus d'informations {0}",
+ "Add Remote Browser": "Ajouter un navigateur distant",
+ "New Group": "Nouveau groupe",
+ "Group Name": "Nom du groupe",
+ "OAuth2: Client Credentials": "OAuth2 : informations d'identification du client",
+ "Authentication Method": "Méthode d'authentification",
+ "Authorization Header": "En-tête d'autorisation",
+ "Form Data Body": "Corps des données du formulaire",
+ "OAuth Token URL": "URL du jeton OAuth",
+ "Client ID": "Identifiant client",
+ "Client Secret": "Secret client",
+ "OAuth Scope": "Portée OAuth",
+ "Go back to home page.": "Retournez à la page d'accueil.",
+ "No tags found.": "Aucune étiquettes trouvée.",
+ "Lost connection to the socket server.": "Connexion au serveur de socket perdue.",
+ "Cannot connect to the socket server.": "Impossible de se connecter au serveur de socket.",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "URL du webhook SIGNL4",
+ "signl4Docs": "Vous pouvez trouver plus d'informations sur la façon de configurer SIGNL4 et sur la façon d'obtenir l'URL du webhook SIGNL4 dans le {0}.",
+ "Conditions": "Conditions",
+ "conditionAdd": "Ajouter une condition",
+ "conditionDelete": "Supprimer la condition",
+ "conditionAddGroup": "Ajouter un groupe",
+ "conditionDeleteGroup": "Supprimer le groupe",
+ "conditionValuePlaceholder": "Valeur",
+ "equals": "est égal",
+ "not equals": "pas égal",
+ "contains": "contient",
+ "not contains": "ne contient pas",
+ "starts with": "commence par",
+ "not starts with": "ne commence pas par",
+ "ends with": "se termine par",
+ "not ends with": "ne se termine pas par",
+ "less than": "moins que",
+ "greater than": "supérieur à",
+ "less than or equal to": "inférieur ou égal à",
+ "greater than or equal to": "supérieur ou égal à",
+ "record": "enregistrer",
+ "shrinkDatabaseDescriptionSqlite": "Déclencher la commande {vacuum} pour la base de données SQLite. {auto_vacuum} est déjà activé, mais cela ne défragmente pas la base de données ni ne réorganise les pages individuelles de la base de données de la même manière que la commande {vacuum}.",
+ "ignoredTLSError": "Les erreurs TLS/SSL ont été ignorées",
+ "CopyToClipboardError": "Impossible de copier dans le presse-papiers : {error}",
+ "CurlDebugInfo": "Pour déboguer la sonde, vous pouvez soit le coller dans le terminal de votre propre machine, soit dans le terminal de la machine sur lequel kuma de disponibilité s'exécute et voir ce qui vous est demandé. {newiline} Veuillez être conscient des différences de réseau telles que {firewalls}, {dns_resolvers}. ou {docker_networks}.",
+ "Notification Channel": "Canal de notification",
+ "Alphanumerical string and hyphens only": "Chaîne alphanumérique et tirets uniquement",
+ "Custom sound to override default notification sound": "Son personnalisé pour remplacer le son de notification par défaut",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "Les notifications urgentes seront envoyées immédiatement, même si l'appareil est en mode Ne pas déranger.",
+ "Debug": "Déboguer",
+ "Copy": "Copie",
+ "CopyToClipboardSuccess": "Copié !",
+ "firewalls": "pare-feu",
+ "dns resolvers": "résolveurs DNS",
+ "docker networks": "réseaux dockers",
+ "CurlDebugInfoOAuth2CCUnsupported": "Le flux complet des informations d'identification du client OAuth n'est pas pris en charge dans {curl}. {newline}Veuillez obtenir un jeton d'accès bearer token et le transmettre via l'option {oauth2_bearer}.",
+ "CurlDebugInfoProxiesUnsupported": "La prise en charge du proxy dans la commande {curl} ci-dessus n'est actuellement pas implémentée.",
+ "Message format": "Format des messages",
+ "Send rich messages": "Envoyer des messages enrichis",
+ "Sound": "Son",
+ "Arcade": "Arcade",
+ "Correct": "Correcte",
+ "Fail": "Échouer",
+ "Harp": "Harpe",
+ "Reveal": "Révéler",
+ "Bubble": "Bulle",
+ "Doorbell": "Sonnette",
+ "Flute": "Flûte",
+ "Money": "Argent",
+ "Scifi": "Science-fiction",
+ "Clear": "Effacer",
+ "Elevator": "Ascenseur",
+ "Guitar": "Guitare",
+ "Pop": "Pop",
+ "Time Sensitive (iOS Only)": "Sensible au temps (iOS uniquement)",
+ "From": "De",
+ "Can be found on:": "Disponible sur : {0}",
+ "The phone number of the recipient in E.164 format.": "Le numéro de téléphone du destinataire au format E.164.",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "Soit un identifiant d'expéditeur de texte, soit un numéro de téléphone au format E.164 si vous souhaitez pouvoir recevoir des réponses.",
+ "RabbitMQ Nodes": "Nœuds de gestion RabbitMQ",
+ "rabbitmqNodesDescription": "Entrez l'URL des nœuds de gestion RabbitMQ, y compris le protocole et le port. Exemple : {0}",
+ "rabbitmqNodesRequired": "Veuillez définir les nœuds pour cette sonde.",
+ "rabbitmqNodesInvalid": "Veuillez utiliser une URL complète (commençant par « http ») pour les nœuds RabbitMQ.",
+ "RabbitMQ Username": "Nom d'utilisateur RabbitMQ",
+ "RabbitMQ Password": "Mot de passe RabbitMQ",
+ "rabbitmqHelpText": "Pour utiliser la sonde, vous devrez activer le plug-in de gestion dans votre configuration RabbitMQ. Pour plus d'informations, veuillez consulter la {rabitmq_documentation}.",
+ "SendGrid API Key": "Clé API SendGrid",
+ "Separate multiple email addresses with commas": "Séparez plusieurs adresses e-mail par des virgules",
+ "aboutSlackUsername": "Modifie le nom d'affichage de l'expéditeur du message. Si vous souhaitez mentionner quelqu’un, incluez-le plutôt dans le nom convivial.",
+ "templateHostnameOrURL": "Nom d'hôte ou URL",
+ "telegramUseTemplate": "Utiliser un modèle de message personnalisé",
+ "telegramTemplateFormatDescription": "Telegram permet d'utiliser différents langages de balisage pour les messages, voir Telegram {0} pour plus de détails.",
+ "Plain Text": "Texte brut",
+ "YZJ Webhook URL": "URL du webhook YZJ",
+ "YZJ Robot Token": "Jeton robot YZJ",
+ "templateServiceName": "Nom du service",
+ "templateStatus": "Status",
+ "telegramUseTemplateDescription": "Si cette option est activée, le message sera envoyé à l'aide d'un modèle personnalisé.",
+ "Message Template": "Modèle de message",
+ "Template Format": "Format du modèle",
+ "wayToGetWahaApiUrl": "L’URL de votre instance WAHA.",
+ "wayToGetWahaSession": "À partir de cette session, WAHA envoie des notifications à l'ID de discussion. Vous pouvez le trouver dans le tableau de bord WAHA.",
+ "wahaSession": "Session",
+ "wahaChatId": "ID de discussion (numéro de téléphone / ID de contact / ID de groupe)",
+ "wayToGetWahaApiKey": "La clé API est la valeur de la variable d'environnement WHATSAPP_API_KEY que vous avez utilisée pour exécuter WAHA.",
+ "wayToWriteWahaChatId": "Le numéro de téléphone avec le préfixe international, mais sans le signe plus ({0}), l'identifiant de contact ({1}) ni l'identifiant de groupe ({2}). Les notifications sont envoyées à cet identifiant de chat depuis la session WAHA.",
+ "telegramServerUrlDescription": "Pour lever les limitations de l’API des bots Telegram ou accéder aux zones bloquées (Chine, Iran, etc.). Pour plus d’informations, cliquez sur {0}. Par défaut : {1}",
+ "telegramServerUrl": "(Facultatif) URL du serveur",
+ "Font Twemoji by Twitter licensed under": "La police Twemoji de Twitter est sous licence"
}
diff --git a/src/lang/ga.json b/src/lang/ga.json
new file mode 100644
index 000000000..45fbec8e6
--- /dev/null
+++ b/src/lang/ga.json
@@ -0,0 +1,1057 @@
+{
+ "setupDatabaseMariaDB": "Ceangail le bunachar sonraí MariaDB seachtrach. Ní mór duit eolas ceangailte na bunachar sonraí a shocrú.",
+ "settingUpDatabaseMSG": "Ag socrú an bhunachair sonraí. D'fhéadfadh sé tamaill, biodh foighne agat, le do thoil.",
+ "dbName": "Ainm an Bhunachair Sonraí",
+ "Settings": "Socruithe",
+ "Dashboard": "Deais",
+ "Help": "Cabhair",
+ "New Update": "Nuashonrú Nua",
+ "Language": "Teanga",
+ "Appearance": "Dealramh",
+ "Theme": "Téama",
+ "General": "Ginearálta",
+ "Game": "Cluiche",
+ "Primary Base URL": "Bonn URL Príomhach",
+ "Version": "Leagan",
+ "List": "Liosta",
+ "Home": "Abhaile",
+ "Add": "Cui",
+ "Add New Monitor": "Cuir Monatóir Nua leis",
+ "Quick Stats": "Staitisticí Tapa",
+ "Up": "Suas",
+ "Down": "Síos",
+ "Pending": "Ar feitheamh",
+ "Maintenance": "Cothabháil",
+ "Unknown": "Anaithnid",
+ "Cannot connect to the socket server": "Ní féidir ceangal a dhéanamh leis an freastalaí soicéad",
+ "Passive Monitor Type": "Cineál Monatóir Éighníomhach",
+ "Specific Monitor Type": "Cineál Sonrach Monatóir",
+ "markdownSupported": "Tacaítear le comhréir Markdown",
+ "pauseDashboardHome": "Sos",
+ "Pause": "Sos",
+ "Name": "Ainm",
+ "Status": "Stádas",
+ "DateTime": "Dáta Am",
+ "Message": "Teachtaireacht",
+ "Resume": "Lean ar aghaidh",
+ "Edit": "Cuir in Eagar",
+ "Delete": "Scrios",
+ "Current": "Reatha",
+ "Monitor": "Monatóir | Monatóirí",
+ "day": "lá | laethanta",
+ "-day": "-lá",
+ "hour": "Uair",
+ "-hour": "-uair",
+ "Response": "Freagra",
+ "Ping": "Ping",
+ "Uptime": "Am Ata ar Fáil",
+ "Cert Exp.": "Teastas in éag.",
+ "Keyword": "Eochairfhocal",
+ "Invert Keyword": "Inbhéartaigh Eochairfhocal",
+ "Expected Value": "Luach Meastaithe",
+ "Json Query": "Ceist Json",
+ "Friendly Name": "Ainm Cairdiúil",
+ "URL": "URL",
+ "Hostname": "Ainm Óstach",
+ "Port": "Port",
+ "Request Timeout": "Iarr am istigh",
+ "timeoutAfter": "Am istigh tar éis {0} soicind",
+ "Retries": "Atriall",
+ "languageName": "Gaeilge",
+ "setupDatabaseChooseDatabase": "Cén bunachar sonraí is mian leat a úsáid?",
+ "setupDatabaseSQLite": "Comhad bunachar sonraí simplí, molta do sholáthairí beaga scála. Roimh v2.0.0, úsáid Uptime Kuma SQLite mar an bunachar sonraí réamhshocraithe.",
+ "setupDatabaseEmbeddedMariaDB": "Ní gá duit aon rud a shocrú. Tá MariaDB leabaithe agus cumraithe ag an íomhá Docker seo go huathoibríoch duit. Ceanglóidh Uptime Kuma leis an mbunachar sonraí seo trí soicéad unix.",
+ "Check Update On GitHub": "Seiceáil an Nuashonrú ar GitHub",
+ "statusMaintenance": "Cothabháil",
+ "Reconnecting...": "Ag athcheangal…",
+ "General Monitor Type": "Cineál Monatóir Ginearálta",
+ "No important events": "Gan imeachtaí tábhachtacha",
+ "Monitor Type": "Cineal Monatóir",
+ "Heartbeat Interval": "Buille Croí Eatramh",
+ "Heartbeat Retry Interval": "Eatramh Athtriail Buille Croí",
+ "Resend Notification if Down X times consecutively": "Seol Fógra arís má tá Down X uair i ndiaidh a chéile",
+ "Advanced": "Ardleibhéal",
+ "checkEverySecond": "Seiceáil gach {0} soicind",
+ "retryCheckEverySecond": "Atriail gach {0} soicind",
+ "resendEveryXTimes": "Seol ar ais gach {0} uair eile",
+ "resendDisabled": "Seol ar ais dhíchumasaithe",
+ "retriesDescription": "Uasmhéid triailí sula ndéantar an tseirbhís a mharcáil mar síos agus go seoltar fógra",
+ "ignoreTLSError": "Déan neamhaird de earráidí TLS/SSL do shuíomhanna Gréasáin HTTPS",
+ "upsideDownModeDescription": "Smeach an stádas bun os cionn. Má tá an tseirbhís inrochtana, tá sé SÍOS.",
+ "maxRedirectDescription": "Uasmhéid na n-athreoraigh le leanúint. Socraigh go 0 chun athreoraigh a dhíchumasú.",
+ "Upside Down Mode": "Mód bunoscionn",
+ "Max. Redirects": "Uasmhéid Athreoraíochtaí",
+ "Push URL": "Brúigh URL",
+ "pushOptionalParams": "Paraiméadair roghnacha: {0}",
+ "Accepted Status Codes": "Códanna Stádais a nGlactar leo",
+ "needPushEvery": "Ba cheart duit an URL seo a ghairm gach {0} soicind.",
+ "pushOthers": "Eile",
+ "programmingLanguages": "Teangacha Programála",
+ "Save": "Sábháil",
+ "Notifications": "Fógraí",
+ "Setup Notification": "Socrú Fógra",
+ "Light": "Solas",
+ "Dark": "Dorcha",
+ "Auto": "Uathoibríoch",
+ "Theme - Heartbeat Bar": "Téama - Barra Buille Croí",
+ "styleElapsedTime": "Am caite faoi bharra an bhuille croí",
+ "styleElapsedTimeShowNoLine": "Taispeáin (Gan Líne)",
+ "Normal": "Gnáth",
+ "Bottom": "Bun",
+ "None": "Gan rud",
+ "Timezone": "Crios ama",
+ "Disable Auth": "Auth dhíchumasú",
+ "Enable Auth": "Cumasaigh Auth",
+ "Change Password": "Athraigh do Phasfhocal",
+ "Current Password": "Pasfhocal Reatha",
+ "New Password": "Pasfhocal Nua",
+ "Repeat New Password": "Déan Pasfhocal Nua arís",
+ "Search Engine Visibility": "Infheictheacht Inneall Cuardaigh",
+ "Allow indexing": "Ceadaigh innéacsú",
+ "Please use this option carefully!": "Bain úsáid as an rogha seo go cúramach, le do thoil!",
+ "Logout": "Logáil Amach",
+ "Leave": "Fág",
+ "I understand, please disable": "Tuigim, le do thoil, múch",
+ "Confirm": "Deimhnigh",
+ "Yes": "Tá",
+ "No": "Níl",
+ "Username": "Ainm úsáideora",
+ "Password": "Pasfhocal",
+ "Remember me": "Cuimhnigh orm",
+ "Login": "Logáil isteach",
+ "where you intend to implement third-party authentication": "áit a bhfuil sé ar intinn agat fíordheimhniú tríú páirtí a chur i bhfeidhm",
+ "disableauth.message1": "An bhfuil tú cinnte gur mhaith leat {disableAuth}?",
+ "disable authentication": "fíordheimhniú a dhíchumasú",
+ "No Monitors, please": "Gan Monatóirí, le do thoil",
+ "add one": "Cuir ceann leis",
+ "Notification Type": "Cineál Fógra",
+ "Email": "Ríomhphost",
+ "Test": "Scrúdú",
+ "Certificate Info": "Eolas Teastais",
+ "Resolver Server": "Freastalaí Resolver",
+ "Resource Record Type": "Cineál Taifead Acmhainn",
+ "Last Result": "Toradh Deireanach",
+ "Create your admin account": "Cruthaigh do chuntas riaracháin",
+ "Repeat Password": "Athscríobh an Pasfhocal",
+ "Import Backup": "Iompórtáil Cúltaca",
+ "Export Backup": "Easpórtáil Cúltaca",
+ "Export": "Easpórtáil",
+ "Import": "Iompórtáil",
+ "respTime": "Am freagartha (ms)",
+ "notAvailableShort": "N/A",
+ "Default enabled": "Réamhshocrú cumasaithe",
+ "Apply on all existing monitors": "Déan iarratas ar gach monatóir atá ann cheana féin",
+ "Create": "Cruthaigh",
+ "Events": "Imeachtaí",
+ "Heartbeats": "Buillí croí",
+ "Auto Get": "Faigh Uathoibríoch",
+ "Affected Monitors": "Monatóirí Impiachtaithe",
+ "Pick Affected Monitors...": "Roghnaigh na Monatóirí Impiachtaithe…",
+ "Start of maintenance": "Tús na Cothabhála",
+ "All Status Pages": "Gach Leathanach Stádais",
+ "alertNoFile": "Roghnaigh comhad le haghaidh iompórtála, le do thoil.",
+ "alertWrongFileType": "Roghnaigh comhad JSON, le do thoil.",
+ "Clear all statistics": "Glan na Staitistici uile",
+ "Skip existing": "Scipeáil atá ann cheana",
+ "Overwrite": "Forscríobh",
+ "Options": "Roghanna",
+ "Verify Token": "Dearbhaigh an Tócan",
+ "Setup 2FA": "Socraigh 2FA",
+ "Enable 2FA": "Cumasaigh 2FA",
+ "Disable 2FA": "Díchumasigh 2FA",
+ "2FA Settings": "Socruithe 2FA",
+ "filterActive": "Gníomhach",
+ "filterActivePaused": "Sos",
+ "Active": "Gníomhach",
+ "Inactive": "Neamhghníomhach",
+ "Token": "Tócan",
+ "Show URI": "Taispeáin URI",
+ "Tags": "Clibanna",
+ "Add New Tag": "Cuir Clib Nua",
+ "Add New below or Select...": "Cuir Nua leis thíos nó Roghnaigh…",
+ "Tag with this value already exist.": "Tá clib leis an luach seo ann cheana féin.",
+ "color": "Dath",
+ "value (optional)": "luach (roghnach)",
+ "Gray": "Liath",
+ "Red": "Dearg",
+ "Orange": "Oráiste",
+ "Green": "Glas",
+ "Blue": "Gorm",
+ "Indigo": "Indeagó",
+ "Custom": "Gnás",
+ "Search...": "Cuardach…",
+ "Search monitored sites": "Cuardaigh suíomhanna monatóireachta",
+ "Avg. Ping": "Meán Ping",
+ "Avg. Response": "Meán Freagra",
+ "statusPageNothing": "Ní dhéanfaidh aon ní anseo, cuir grúpa nó monatóir leis.",
+ "statusPageRefreshIn": "Athnuaigh i: {0}",
+ "No Services": "Uimh Seirbhísí",
+ "Degraded Service": "Seirbhís Díghrádaithe",
+ "Add Group": "Cuir Grúpa",
+ "Add a monitor": "Cuir monatóir leis",
+ "Edit Status Page": "Cuir Leathanach Stádais in Eagar",
+ "Go to Dashboard": "Téigh go dtí an Deais",
+ "Status Page": "Leathanach Stádais",
+ "Status Pages": "Leathanaigh Stádais",
+ "here": "anseo",
+ "Required": "Ag teastáil",
+ "Post URL": "Post URL",
+ "Content Type": "Cineál Ábhar",
+ "webhookJsonDesc": "Tá {0} go maith d’aon fhreastalaithe HTTP nua-aimseartha ar nós Express.js",
+ "templateMsg": "teachtaireacht an fhógra",
+ "templateHeartbeatJSON": "réad ag cur síos ar bhuille an chroí",
+ "templateMonitorJSON": "réad ag cur síos ar an monatóir",
+ "templateLimitedToUpDownCertNotifications": "ar fáil ach amháin le haghaidh fógraí éaga SUAS/SÍOS/Teastas",
+ "templateLimitedToUpDownNotifications": "ar fáil ach amháin le fógraí SUAS/SÍOS",
+ "webhookAdditionalHeadersTitle": "Ceanntásca Breise",
+ "webhookBodyPresetOption": "Réamhshocrú - {0}",
+ "webhookBodyCustomOption": "Comhlacht Saincheaptha",
+ "Webhook URL": "URL Crúca Gréasáin",
+ "Application Token": "Tócan Feidhmchláir",
+ "Server URL": "Fhreastalaí URL",
+ "Priority": "Tosaíocht",
+ "emojiCheatSheet": "Bileog cheat Emoji: {0}",
+ "Read more": "Leigh Nios mo",
+ "appriseInstalled": "Tá Apprise suiteáilte.",
+ "appriseNotInstalled": "Níl Apprise suiteáilte. {0}",
+ "Method": "Modh",
+ "Body": "Corp",
+ "Headers": "Ceanntásca",
+ "PushUrl": "Brúigh URL",
+ "BodyInvalidFormat": "Ní JSON bailí an comhlacht iarratais: ",
+ "Monitor History": "Stair an Mhiontóra",
+ "clearDataOlderThan": "Keep monitoring history data for {0} days.",
+ "PasswordsDoNotMatch": "Ní hionann pasfhocail.",
+ "records": "taifid",
+ "One record": "Taifead amháin",
+ "Current User": "Úsáideoir Reatha",
+ "topic": "Topaic",
+ "topicExplanation": "Ábhar MQTT le monatóireacht",
+ "successKeyword": "Keyword Success",
+ "successKeywordExplanation": "MQTT Keyword to be considered a success",
+ "recent": "Le déanaí",
+ "Reset Token": "Athshocraigh Tócan",
+ "Done": "Déanta",
+ "Info": "Eolas",
+ "Security": "Slándáil",
+ "Steam API Key": "Eochair Steam API",
+ "Pick a RR-Type...": "Roghnaigh Cineál RR…",
+ "Pick Accepted Status Codes...": "Roghnaigh Cóid Stádais a nGlactar leo…",
+ "Default": "Réamhshocrú",
+ "HTTP Options": "Roghanna HTTP",
+ "Create Incident": "Cruthaigh Teagmhas",
+ "Title": "Teideal",
+ "Content": "Ábhar",
+ "Style": "Stíl",
+ "info": "eolas",
+ "warning": "rabhadh",
+ "danger": "contúirt",
+ "error": "earráid",
+ "critical": "criticiúil",
+ "primary": "príomha",
+ "light": "solas",
+ "dark": "dorcha",
+ "Post": "Post",
+ "Please input title and content": "Cuir isteach teideal agus ábhar",
+ "Created": "Cruthaithe",
+ "Last Updated": "Nuashonraithe Deiridh",
+ "Unpin": "Díbhútaigh",
+ "Switch to Light Theme": "Athraigh go Téama Solais",
+ "Switch to Dark Theme": "Athraigh go Téama Dorcha",
+ "Show Tags": "Taispeáin Clibeanna",
+ "Hide Tags": "Folaigh Clibeanna",
+ "Description": "Cur síos",
+ "Add one": "Cuir ceann leis",
+ "No Monitors": "Uimh Monatóirí",
+ "Untitled Group": "Grúpa Gan Teideal",
+ "Services": "Seirbhísí",
+ "Discard": "Caith amach",
+ "Cancel": "Cealaigh",
+ "Select": "Roghnaigh",
+ "selectedMonitorCount": "Roghnaithe: {0}",
+ "Check/Uncheck": "Seiceáil/Díthiceáil",
+ "Powered by": "Cumhachtaithe ag",
+ "Customize": "Saincheap",
+ "Custom Footer": "Buntásc an Chustaim",
+ "Custom CSS": "CSS saincheaptha",
+ "default": "Réamhshocrú",
+ "enabled": "Cumasaithe",
+ "setAsDefault": "Socraigh Mar Réamhshocrú",
+ "Proxies": "Seachfhreastalaithe",
+ "proxyDescription": "Ní mór seachvótálaithe a shannadh do mhonatóir chun feidhmiú.",
+ "setAsDefaultProxyDescription": "Cumasófar an seachfhreastalaí seo de réir réamhshocraithe le haghaidh monatóirí nua. Is féidir leat an seachfhreastalaí a dhíchumasú fós ar leithligh do gach monatóir.",
+ "Certificate Chain": "Slabhra Teastais",
+ "Valid": "Bailí",
+ "Invalid": "Neamhbhailí",
+ "User": "Úsáideoir",
+ "Installed": "Suiteáilte",
+ "Not installed": "Gan suiteáilte",
+ "Not running": "Gan rith",
+ "Running": "Ag Rith",
+ "Remove Token": "Bain Tócan",
+ "Start": "Tosaigh",
+ "Stop": "Stad",
+ "Add New Status Page": "Cuir Leathanach Stádais Nua leis",
+ "Slug": "Sluga",
+ "Accept characters:": "Glac le carachtair:",
+ "startOrEndWithOnly": "Tosaigh nó críoch le {0} amháin",
+ "statusPageSpecialSlugDesc": "Sluga speisialta {0}: taispeánfar an leathanach seo nuair nach gcuirtear aon sluga ar fáil",
+ "Next": "Ar aghaidh",
+ "No Proxy": "Gan Seachfhreastalaí",
+ "Authentication": "Fíordheimhniú",
+ "HTTP Basic Auth": "Fíordheimhniú Bunúsach HTTP",
+ "New Status Page": "Leathanach Stádais Nua",
+ "Page Not Found": "Ní bhfuarthas an leathanach",
+ "Reverse Proxy": "Seachfhreastalaí Droim ar Ais",
+ "Backup": "Cúltaca",
+ "About": "Faoi",
+ "wayToGetCloudflaredURL": "(Íoslódáil cloudflared ó {0})",
+ "cloudflareWebsite": "Láithreán gréasáin Cloudflare",
+ "HTTP Headers": "Ceanntásca HTTP",
+ "Trust Proxy": "Iontaobhas Seachfhreastalaí",
+ "Other Software": "Bogearraí Eile",
+ "For example: nginx, Apache and Traefik.": "Mar shampla: nginx, Apache agus Traefik.",
+ "Please read": "Léigh le do thoil",
+ "Subject:": "Ábhar:",
+ "Valid To:": "Bailí do:",
+ "Days Remaining:": "Laethanta fágtha:",
+ "Issuer:": "Eisitheoir:",
+ "Fingerprint:": "Fingerprint:",
+ "No status pages": "Gan leathanaigh stádais",
+ "Domain Name Expiry Notification": "Fógra Éaga Ainm Fearainn",
+ "Add a new expiry notification day": "Cuir lá fógra éaga nua leis",
+ "Remove the expiry notification": "Bain an lá fógra éaga",
+ "Proxy": "Seachfhreastalaí",
+ "Date Created": "Dáta Cruthaithe",
+ "Footer Text": "Téacs Buntásc",
+ "Show Powered By": "Taispeáin Cumhachtaithe ag",
+ "Domain Names": "Ainmneacha Fearainn",
+ "signedInDisp": "Sínithe isteach mar {0}",
+ "signedInDispDisabled": "Auth Díchumasaithe.",
+ "RadiusSecret": "Rún Radius",
+ "RadiusCalledStationId": "Stáisiún Id a thugtar air",
+ "RadiusCallingStationId": "Ag glaoch ar Aitheantas an Stáisiúin",
+ "RadiusCallingStationIdDescription": "Aitheantóir an ghléis ghlaoigh",
+ "Certificate Expiry Notification": "Fógra Éaga Teastais",
+ "API Username": "Ainm Úsáideora API",
+ "API Key": "Eochair API",
+ "Show update if available": "Taispeáin nuashonrú má tá sé ar fáil",
+ "Using a Reverse Proxy?": "Ag Úsáid Inléasaithe Dearcadh?",
+ "Check how to config it for WebSocket": "Seiceáil conas é a chumrú le haghaidh WebSocket",
+ "Steam Game Server": "Freastalaí Cluiche Steam",
+ "Most likely causes:": "Na cúiseanna is dócha:",
+ "There might be a typing error in the address.": "Seans go bhfuil earráid chlóscríobh sa seoladh.",
+ "What you can try:": "Cad is féidir leat triail a bhaint as:",
+ "Retype the address.": "Athchlóscríobh an seoladh.",
+ "Go back to the previous page.": "Téigh ar ais go dtí an leathanach roimhe seo.",
+ "Coming Soon": "Ag teacht go luath",
+ "Connection String": "Teaghrán Ceangail",
+ "Query": "Ceist",
+ "certificationExpiryDescription": "Spreagann Monatóirí HTTPS fógra nuair a théann teastas TLS in éag i:",
+ "Setup Docker Host": "Socraigh Suas Óstach Docker",
+ "Connection Type": "Cineál Ceangail",
+ "Docker Daemon": "Deamhan Docker",
+ "DockerHostRequired": "Socraigh an tÓstríomhaire Docker don mhonatóir seo.",
+ "deleteDockerHostMsg": "An bhfuil tú cinnte gur mian leat an t-óstach docker seo a scriosadh do gach monatóir?",
+ "socket": "Soicéad",
+ "tcp": "TCP / HTTP",
+ "Container Name / ID": "Ainm Coimeádán / ID",
+ "Docker Host": "Óstach Docker",
+ "Domain": "Fearann",
+ "Workstation": "Stáisiún Oibre",
+ "Packet Size": "Méid an Phaicéid",
+ "Bot Token": "Tócan Bot",
+ "wayToGetTelegramToken": "Is féidir leat tócan a fháil ó {0}.",
+ "Chat ID": "Aitheantas Comhrá",
+ "telegramSendSilently": "Seol Go Ciúin",
+ "telegramSendSilentlyDescription": "Seolann an teachtaireacht go ciúin. Gheobhaidh úsáideoirí fógra gan aon fhuaim.",
+ "telegramProtectContent": "Cosain Cur ar Aghaidh/Sábháil",
+ "telegramProtectContentDescription": "Má tá sé cumasaithe, déanfar na teachtaireachtaí bot in Telegram a chosaint ó chur ar aghaidh agus a shábháil.",
+ "supportTelegramChatID": "Tacaigh le hAitheantas Comhrá Díreach / Grúpa / Cainéal",
+ "YOUR BOT TOKEN HERE": "DO CHOMHARTHA BOT ANSEO",
+ "chatIDNotFound": "Ní aimsítear ID Comhrá; seol teachtaireacht chuig an bot seo ar dtús",
+ "disableCloudflaredNoAuthMsg": "Tá tú i mód Gan Údar, níl pasfhocal ag teastáil.",
+ "wayToGetLineNotifyToken": "Is féidir leat comhartha rochtana a fháil ó {0}",
+ "pushViewCode": "Conas úsáid a bhaint as monatóir Brúigh? (Amharc ar an gCod)",
+ "Not available, please setup.": "Níl sé ar fáil, socraigh le do thoil.",
+ "styleElapsedTimeShowWithLine": "Taispeáin (Le Líne)",
+ "Update Password": "Nuashonraigh Pasfhocal",
+ "Discourage search engines from indexing site": "Déan innill chuardaigh a dhíspreagadh ón suíomh innéacsaithe",
+ "disableauth.message2": "Tá sé deartha do chásanna {intendThirdPartyAuth} os comhair Uptime Kuma cosúil le Cloudflare Access, Authelia, nó meicníochtaí fíordheimhnithe eile.",
+ "Clear Data": "Glan Sonraí",
+ "Schedule maintenance": "Cothabháil sceideal",
+ "Select status pages...": "Roghnaigh leathanaigh stádais…",
+ "Keep both": "Coinnigh an dá rud",
+ "Two Factor Authentication": "Fíordheimhniú Dhá Fhachtóir",
+ "Tag with this name already exist.": "Tá clib leis an ainm seo ann cheana féin.",
+ "Purple": "Corcra",
+ "Pink": "Bándearg",
+ "Entry Page": "Leathanach Iontráil",
+ "All Systems Operational": "Gach Córas Oibriúcháin",
+ "Partially Degraded Service": "Seirbhís Díghrádaithe i bPáirt",
+ "defaultNotificationName": "Mo {notification} Fhógra ({number})",
+ "webhookFormDataDesc": "Tá {multipart} go maith do PHP. Beidh gá an JSON a pharsáil le {decodeFunction}",
+ "liquidIntroduction": "Baintear an teimpléad amach tríd an teanga Templating Leachtach. Féach ar an {0} le haghaidh treoracha úsáide. Seo iad na hathróga atá ar fáil:",
+ "webhookAdditionalHeadersDesc": "Socraítear ceanntásca breise a sheoltar leis an gcuaille gréasáin. Ba cheart gach ceanntásc a shainiú mar eochair/luach JSON.",
+ "HeadersInvalidFormat": "Níl na ceanntásca iarratais bailí JSON: ",
+ "steamApiKeyDescription": "Chun monatóireacht a dhéanamh ar Fhreastalaí Cluiche Gaile is gá duit eochair Steam Web-API. Is féidir leat d’eochair API a chlárú anseo: ",
+ "Shrink Database": "Laghdaigh Bunachar Sonraí",
+ "No monitors available.": "Níl monatóirí ar fáil.",
+ "deleteStatusPageMsg": "An bhfuil tú cinnte gur mhaith leat an leathanach stádais seo a scriosadh?",
+ "deleteProxyMsg": "An bhfuil tú cinnte gur mhaith leat an seachfhreastalaí seo a scriosadh do gach monatóir?",
+ "enableProxyDescription": "Ní bheidh éifeacht ag an seachfhreastalaí seo ar iarratais ar mhonatóir go dtí go ngníomhófar é. Is féidir leat an seachfhreastalaí a dhíchumasú go sealadach ó gach monatóir de réir stádas gníomhachtaithe.",
+ "No consecutive dashes": "Uimh dashes as a chéile",
+ "The slug is already taken. Please choose another slug.": "Tá an sluga glactha cheana féin. Roghnaigh sluga eile le do thoil.",
+ "Message:": "Teachtaireacht:",
+ "Don't know how to get the token? Please read the guide:": "Níl a fhios agat conas an tócan a fháil? Léigh an treoir le do thoil:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Seans go gcaillfear an nasc reatha más rud é go bhfuil tú ag nascadh trí Thollán Cloudflare faoi láthair. An bhfuil tú cinnte gur mhaith leat é a stopadh? Clóscríobh do phasfhocal reatha chun é a dhearbhú.",
+ "RadiusSecretDescription": "Rún Comhroinnte idir an cliant agus an freastalaí",
+ "RadiusCalledStationIdDescription": "Aitheantóir na feiste ar a dtugtar",
+ "Also check beta release": "Seiceáil freisin scaoileadh béite",
+ "The resource is no longer available.": "Níl an acmhainn ar fáil a thuilleadh.",
+ "settingsCertificateExpiry": "Éaga Teastas TLS",
+ "noDockerHostMsg": "Níl sé ar fáil. Socraigh Óstach Docker ar dtús.",
+ "tailscalePingWarning": "D'fhonn an monatóir Tailscale Ping a úsáid, ní mór duit Uptime Kuma gan Docker a shuiteáil agus cliant Tailscale a shuiteáil ar do fhreastalaí freisin.",
+ "Docker Container": "Coimeádán Docker",
+ "Docker Hosts": "Óstáin Docker",
+ "telegramMessageThreadID": "(Roghnach) ID Snáithe Teachtaireacht",
+ "telegramMessageThreadIDDescription": "Roghnach Aitheantóir uathúil don snáithe sprice teachtaireachta (ábhar) an fhóraim; d'ollghrúpaí fóraim amháin",
+ "wayToGetTelegramChatID": "Is féidir leat d'aitheantas comhrá a fháil trí theachtaireacht a sheoladh chuig an bot agus dul chuig an URL seo chun an chat_id a fheiceáil:",
+ "trustProxyDescription": "Cuir muinín i gceanntásca 'X-Ar Aghaidh-*'. Más mian leat an IP cleint ceart a fháil agus má tá do Uptime Kuma taobh thiar de sheachfhreastalaí cosúil le Nginx nó Apache, ba cheart duit é seo a chumasú.",
+ "Examples": "Samplaí",
+ "Home Assistant URL": "URL an Home Assistant",
+ "Long-Lived Access Token": "Tócan Rochtana Fadsaoil",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Is féidir Comhartha Rochtana Fad-Saoil a chruthú trí chliceáil ar ainm do phróifíle (bun ar chlé) agus ag scroill go dtí an bun, ansin cliceáil ar 'Cruthaigh Tócan'. ",
+ "Notification Service": "Seirbhís Fógra",
+ "default: notify all devices": "réamhshocraithe: cuir gach feiste ar an eolas",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Is féidir liosta de Sheirbhísí Fógra a fháil i Home Assistant faoi \"Uirlisí Forbróra > Seirbhísí\" cuardach \"fógra\" chun ainm do ghléis/teileafóin a aimsiú.",
+ "Automations can optionally be triggered in Home Assistant:": "Is féidir uathoibriú a chur i ngníomh go roghnach in Home Assistant:",
+ "Trigger type:": "Cineál Tionscadal Truicear:",
+ "Event type:": "Cineál imeachta:",
+ "Event data:": "Sonraí imeachta:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Ansin roghnaigh gníomh, mar shampla athraigh an radharc go dtí an áit a bhfuil solas RGB dearg.",
+ "Frontend Version": "Leagan Frontend",
+ "Frontend Version do not match backend version!": "Ní hionann Leagan Frontend leis an leagan inneall!",
+ "backupOutdatedWarning": "Gan úsáid: Mar gur cuireadh go leor gnéithe nua leis agus mar go bhfuil an gné chúltaca seo neamhcheadaithe go leor, ní féidir leis cúltaca iomlán a ghiniúint ná a thabhairt ar ais.",
+ "backupRecommend": "Le do thoil cúltaca an toirt nó an fillteán sonraí (./data/) go díreach ina ionad.",
+ "Optional": "Roghnach",
+ "or": "nó",
+ "sameAsServerTimezone": "Mar an gcéanna le Crios Ama an Fhreastalaí",
+ "endDateTime": "Dáta/Am Deiridh",
+ "cronExpression": "Slonn Cron",
+ "cronSchedule": "Sceideal: ",
+ "invalidCronExpression": "Slonn Cron Neamhbhailí: {0}",
+ "recurringInterval": "Eatramh",
+ "Recurring": "Athfhillteach",
+ "warningTimezone": "Tá sé ag baint úsáide as crios ama an fhreastalaí",
+ "weekdayShortMon": "Luan",
+ "weekdayShortTue": "Már",
+ "weekdayShortWed": "Céa",
+ "weekdayShortThu": "Déa",
+ "weekdayShortFri": "Aoí",
+ "weekdayShortSat": "Sát",
+ "weekdayShortSun": "Dom",
+ "No Maintenance": "Gan Cothabháil",
+ "lastDay1": "Lá deiridh den Mhí",
+ "dayOfWeek": "Lá den Seachtaine",
+ "lastDay2": "2ú Lá Deireanach den Mhí",
+ "lastDay3": "3ú Lá Deireanach den Mhí",
+ "lastDay": "Lá Deiridh",
+ "pauseMaintenanceMsg": "An bhfuil tú cinnte gur mhaith leat sos?",
+ "maintenanceStatus-under-maintenance": "Faoi Chothabháil",
+ "maintenanceStatus-inactive": "Neamhghníomhach",
+ "maintenanceStatus-ended": "Dar Críoch",
+ "maintenanceStatus-unknown": "Anaithnid",
+ "Display Timezone": "Crios Ama Taispeána",
+ "Server Timezone": "Crios Ama Freastalaí",
+ "statusPageMaintenanceEndDate": "Deireadh",
+ "IconUrl": "URL deilbhín",
+ "Enable": "Cumasaigh",
+ "Disable": "Díchumasaigh",
+ "enableNSCD": "Cumasaigh NSCD (Deamhan Taisce Ainm na Seirbhíse) chun gach iarratas DNS a thaisceadh",
+ "chromeExecutable": "Chrome/Chromium Inrite",
+ "chromeExecutableAutoDetect": "Braith Uathoibríoch",
+ "dnsCacheDescription": "B'fhéidir nach bhfuil sé ag obair i roinnt timpeallachtaí IPv6, é a dhíchumasú má thagann tú ar aon fhadhbanna.",
+ "Single Maintenance Window": "Fuinneog Chothabhála Aonair",
+ "Maintenance Time Window of a Day": "Fuinneog Am Cothabhála Lá",
+ "Effective Date Range": "Raon Dáta Éifeachtach (Roghnach)",
+ "Schedule Maintenance": "Cothabháil Sceideal",
+ "Edit Maintenance": "Cuir Cothabháil in Eagar",
+ "DateTime Range": "Raon DátaTime",
+ "install": "Suiteáil",
+ "installing": "Ag Suiteáil",
+ "uninstall": "Dhíshuiteáil",
+ "uninstalling": "Ag Dhíshuiteáil",
+ "confirmUninstallPlugin": "An bhfuil tú cinnte gur mhaith leat an breiseán seo a dhíshuiteáil?",
+ "plugin": "Breiseán | Breiseáni",
+ "notificationRegional": "Réigiúnach",
+ "Clone": "Clón",
+ "cloneOf": "Clón de {0}",
+ "secureOptionNone": "Ceann ar bith / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "Déan neamhaird de Earráid TLS",
+ "From Email": "Ó Ríomhphost",
+ "emailCustomSubject": "Ábhar an Chustaim",
+ "leave blank for default subject": "fág bán don ábhar réamhshocraithe",
+ "emailCustomBody": "Comhlacht Saincheaptha",
+ "leave blank for default body": "fág bán don chomhlacht réamhshocraithe",
+ "emailTemplateServiceName": "Ainm Seirbhíse",
+ "emailTemplateHostnameOrURL": "Óstainm nó URL",
+ "emailTemplateStatus": "Stádas",
+ "emailTemplateMsg": "teachtaireacht an fhógra",
+ "emailTemplateLimitedToUpDownNotification": "ar fáil ach amháin le haghaidh buillí croí SUAS/SÍOS, ar shlí eile ar neamhní",
+ "emailTemplateMonitorJSON": "réad a mhíníonn an monatóir",
+ "emailTemplateHeartbeatJSON": "réad a mhíníonn bhuille an chroí",
+ "To Email": "Chun Ríomhphost",
+ "smtpCC": "CC",
+ "smtpBCC": "BCC",
+ "Discord Webhook URL": "Discord Crúca Gréasáin URL",
+ "Bot Display Name": "Ainm Taispeána Bot",
+ "Prefix Custom Message": "Réimír Teachtaireacht Chustaim",
+ "Hello @everyone is...": "Dia duit {'@'}tá gach duine…",
+ "wayToGetTeamsURL": "Is féidir leat foghlaim conas URL crúca gréasáin {0} a chruthú.",
+ "wayToGetZohoCliqURL": "Is féidir leat foghlaim conas URL crúca gréasáin {0} a chruthú.",
+ "wayToCheckSignalURL": "Is féidir leat an URL seo a sheiceáil chun féachaint ar conas ceann a shocrú:",
+ "Number": "Uimhir",
+ "Recipients": "Faighteoirí",
+ "Access Token": "Tócan Rochtana",
+ "Channel access token": "Tócan rochtana cainéal",
+ "Line Developers Console": "Consól Forbróirí Líne",
+ "Basic Settings": "Socruithe Bunúsacha",
+ "User ID": "ID Úsáideora",
+ "Messaging API": "API Teachtaireachtaí",
+ "Icon URL": "URL Deilbhín",
+ "aboutIconURL": "Is féidir leat nasc chuig pictiúr a sholáthar i \"URL Deilbhín\" chun an pictiúr próifíle réamhshocraithe a shárú. Ní úsáidfear é má tá Icon Emoji socraithe.",
+ "confirmDeleteTagMsg": "An bhfuil tú cinnte gur mhaith leat an chlib seo a scriosadh? Ní scriosfar monatóirí a bhaineann leis an gclib seo.",
+ "enableGRPCTls": "Ceadaigh iarratas gRPC a sheoladh le ceangal TLS",
+ "acceptedStatusCodesDescription": "Roghnaigh cóid stádais a mheastar mar fhreagra rathúil.",
+ "deleteMonitorMsg": "An bhfuil tú cinnte gur mhaith leat an monatóir seo a scriosadh?",
+ "deleteMaintenanceMsg": "An bhfuil tú cinnte gur mhaith leat an cothabháil seo a scriosadh?",
+ "dnsPortDescription": "Port freastalaí DNS. Réamhshocrú go 53. Is féidir leat an port a athrú am ar bith.",
+ "rrtypeDescription": "Roghnaigh an cineál RR is mian leat chun monatóireacht a dhéanamh",
+ "pauseMonitorMsg": "An bhfuil tú cinnte gur mhaith leat sos?",
+ "clearEventsMsg": "An bhfuil tú cinnte gur mhaith leat gach imeacht don mhonatóir seo a scriosadh?",
+ "clearHeartbeatsMsg": "An bhfuil tú cinnte gur mhaith leat gach buille croí don mhonatóir seo a scriosadh?",
+ "confirmClearStatisticsMsg": "An bhfuil tú cinnte gur mian leat GACH staitisticí a scriosadh?",
+ "confirmImportMsg": "An bhfuil tú cinnte gur mhaith leat an cúltaca a iompórtáil? Cinntigh gur roghnaigh tú an rogha iompórtála ceart.",
+ "twoFAVerifyLabel": "Cuir isteach do tócan chun 2FA a fhíorú:",
+ "tokenValidSettingsMsg": "Tá tócan bailí! Is féidir leat na socruithe 2FA a shábháil anois.",
+ "confirmEnableTwoFAMsg": "An bhfuil tú cinnte gur mhaith leat 2FA a chumasú?",
+ "recurringIntervalMessage": "Rith uair amháin gach lá | Rith uair amháin gach {0} lá",
+ "affectedMonitorsDescription": "Roghnaigh monatóirí a bhfuil tionchar ag cothabháil reatha orthu",
+ "atLeastOneMonitor": "Roghnaigh monatóir difear amháin ar a laghad",
+ "passwordNotMatchMsg": "Ní hionann an pasfhocal athfhillteach.",
+ "notificationDescription": "Ní mór fógraí a shannadh do mhonatóir chun feidhmiú.",
+ "invertKeywordDescription": "Cuardaigh an eochairfhocal a bheith as láthair seachas i láthair.",
+ "backupDescription3": "Tá sonraí íogaire amhail comharthaí fógra san áireamh sa chomhad easpórtála; stóráil an t-easpórtáil go slán.",
+ "endpoint": "críochphointe",
+ "octopushLogin": "\"Logáil isteach\" ó HTTP API dintiúir sa phainéal rialú",
+ "promosmsLogin": "Ainm Logála Isteach API",
+ "promosmsPassword": "Pasfhocal API",
+ "pushoversounds pushover": "Brúite (réamhshocraithe)",
+ "pushoversounds bike": "Rothar",
+ "pushoversounds bugle": "buabhall",
+ "pushoversounds cashregister": "Clár Airgid",
+ "pushoversounds classical": "Clasaiceach",
+ "pushoversounds cosmic": "Cósmach",
+ "pushoversounds falling": "Titim",
+ "pushoversounds gamelan": "Ceol Traidisiúnta Indinéise",
+ "pushoversounds incoming": "Teachtaireacht Teacht",
+ "pushoversounds magic": "Draíocht",
+ "pushoversounds mechanical": "Meicniúil",
+ "pushoversounds pianobar": "Báir Pianó",
+ "pushoversounds siren": "Síorán",
+ "pushoversounds spacealarm": "Aláram Spáis",
+ "pushoversounds tugboat": "Bád Tuga",
+ "pushoversounds alien": "Aláram Eachtráin (fad)",
+ "pushoversounds climb": "Dreapadh (fad)",
+ "pushoversounds persistent": "Dianseasmhach (fad)",
+ "pushoversounds updown": "Suas Síos (fad)",
+ "pushoversounds vibrate": "Vibráil Amháin",
+ "pushoversounds none": "Aon Cheann (ciúin)",
+ "pushyAPIKey": "Eochair Rúnda API",
+ "pushyToken": "Tócan gléas",
+ "apprise": "Apprise (Tacaíocht le 50+ seirbhís fógra)",
+ "wayToGetKookBotToken": "Cruthaigh feidhmchlár agus faigh do tócan bot ag {0}",
+ "Guild ID": "ID Guild",
+ "User Key": "Eochair Úsáideora",
+ "Device": "Gléas",
+ "Message Title": "Teideal na Teachtaireachta",
+ "More info on:": "Tuilleadh eolais ar: {0}",
+ "pushoverDesc2": "Más mian leat fógraí a sheoladh chuig gléasanna éagsúla, líon amach Gléas réimse.",
+ "pushoverMessageTtl": "Teachtaireacht TTL (Soicindí)",
+ "SMS Type": "Cineál SMS",
+ "octopushTypePremium": "Préimh (Gasta - molta le haghaidh foláirimh)",
+ "octopushTypeLowCost": "Costas Íseal (Mall - uaireanta bac ag oibreoir)",
+ "checkPrice": "Seiceáil {0} praghsanna:",
+ "apiCredentials": "Dintiúir API",
+ "Check octopush prices": "Seiceáil praghsanna ochtapas {0}.",
+ "octopushPhoneNumber": "Uimhir theileafóin (formáid intl, m.sh. : +33612345678)- ",
+ "octopushSMSSender": "Ainm Seoltóra SMS : 3-11 carachtar alfa-uimhriúil agus spás (a-zA-Z0-9)",
+ "LunaSea Device ID": "Aitheantas Gléas LunaSea",
+ "Apprise URL": "URL Apprise",
+ "Example:": "Sampla: {0}",
+ "Read more:": "Léigh tuilleadh: {0}",
+ "Strategy": "Straitéis",
+ "Free Mobile User Identifier": "Aitheantóir soghluaiste saor in aisce",
+ "Free Mobile API Key": "Eochair Soghluaiste API Saor in Aisce",
+ "Enable TLS": "Cumasaigh TLS",
+ "Proto Method": "Modh Prótacal",
+ "Proto Content": "Ábhar Prótacal",
+ "Economy": "Geilleagar",
+ "Lowcost": "Chostas Íseal",
+ "high": "ard",
+ "SendKey": "Seol Eochair",
+ "SMSManager API Docs": "Docs API SMSManager ",
+ "Gateway Type": "Cineál Geata",
+ "Base URL": "Bun URL",
+ "goAlertIntegrationKeyInfo": "Faigh eochair chomhtháthaithe cineálach API don tseirbhís san fhormáid seo \"aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" luach paraiméadar comharthaíochta an URL cóipeáilte de ghnáth.",
+ "AccessKeyId": "Aitheantas Eochair Rochtana",
+ "SecretAccessKey": "Rúin AccessKey",
+ "PhoneNumbers": "Uimhreacha Teileafóin",
+ "Huawei": "Huawei",
+ "TemplateCode": "Cód Teimpléad",
+ "SignName": "Ainm Comhartha",
+ "Bark API Version": "Leagan Bark API",
+ "Bark Endpoint": "Críochphointe Coirt",
+ "Bark Group": "Grúpa Bark",
+ "Bark Sound": "Fuaim Coirt",
+ "WebHookUrl": "URL Crúca Gréasáin",
+ "SecretKey": "Eochair Rúnda",
+ "For safety, must use secret key": "Ar mhaithe le sábháilteacht, ní mór eochair rúnda a úsáid",
+ "Device Token": "Tócan Gléas",
+ "Platform": "Ardán",
+ "High": "Ard",
+ "Retry": "Bain triail eile as",
+ "Topic": "Topaic",
+ "Setup Proxy": "Socrú Seachfhreastalaí",
+ "Proxy Protocol": "Prótacal Seachfhreastalaí",
+ "Proxy Server": "Seachfhreastalaí",
+ "promosmsTypeEco": "SMS ECO - chostas iseal ach mall agus ró-ualach go minic. Teoranta do fhaighteoirí Polainnis amháin.",
+ "promosmsTypeFull": "SMS IOMLÁN - Sraith préimhe de SMS, Is féidir leat d'Ainm Seoltóra a úsáid (Ní mór duit ainm a chlárú ar dtús). Iontaofa le haghaidh foláirimh.",
+ "promosmsPhoneNumber": "Uimhir theileafóin (d’fhaighteoir Polannach Is féidir leat cóid limistéir a scipeáil)",
+ "promosmsSMSSender": "Ainm Seoltóra SMS : Ainm réamhchláraithe nó ceann de na réamhshocruithe: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "promosmsAllowLongSMS": "Ceadaigh SMS fada",
+ "Feishu WebHookUrl": "URL Crúca Gréasáin Feishu",
+ "matrixHomeserverURL": "URL an fhreastalaí baile (le http(s):// agus go roghnach port)",
+ "Internal Room Id": "Aitheantas Seomra Inmheánach",
+ "Channel Name": "Ainm Cainéal",
+ "Notify Channel": "Cainéal a chur ar an eolas",
+ "Uptime Kuma URL": "URL Uptime Kuma",
+ "setup a new monitor group": "grúpa monatóireachta nua a bhunú",
+ "openModalTo": "módúil a oscailt go {0}",
+ "Add a domain": "Cuir fearann leis",
+ "Remove domain": "Bain an fearann '{0}'",
+ "Icon Emoji": "Deilbhín Emoji",
+ "signalImportant": "TÁBHACHTACH: Ní féidir leat grúpaí agus uimhreacha i faighteoirí a mheascadh!",
+ "aboutWebhooks": "Tuilleadh eolais faoi Crúca Gréasáin ar: {0}",
+ "aboutChannelName": "Cuir isteach ainm an chainéil ar an réimse Ainm Cainéal {0} más mian leat an cainéal Crúca Gréasáin a sheachbhóthar. Mar shampla: #anotherchannel",
+ "smtpDkimSettings": "Socruithe DKIM",
+ "smtpDkimDesc": "Déan tagairt don Nodemailer DKIM {0} le haghaidh úsáide.",
+ "documentation": "doiciméadú",
+ "smtpDkimKeySelector": "Roghnóir Eochracha",
+ "smtpDkimPrivateKey": "Eochair Phríobháideach",
+ "smtpDkimHashAlgo": "Algartam Hash (Roghnach)",
+ "smtpDkimskipFields": "Eochracha Ceanntásca gan síniú (Roghnach)",
+ "startDateTime": "Dáta/Am Tosaithe",
+ "strategyManual": "Gníomhach/Neamhghníomhach de Láimh",
+ "dayOfMonth": "Lá den Mhí",
+ "lastDay4": "4ú Lá Deireanach den Mhí",
+ "maintenanceStatus-scheduled": "Sceidealta",
+ "Enable DNS Cache": "(Ligthe i léig) Cumasaigh Taisce DNS le haghaidh monatóirí HTTP(s)",
+ "chromeExecutableDescription": "I gcás úsáideoirí Docker, mura bhfuil Chromium suiteáilte fós, féadfaidh sé cúpla nóiméad a ghlacadh chun toradh na tástála a shuiteáil agus a thaispeáint. Tógann sé 1GB de spás diosca.",
+ "Date and Time": "Dáta agus Am",
+ "loadingError": "Ní féidir na sonraí a fháil, bain triail eile as ar ball.",
+ "Clone Monitor": "Monatóir Clón",
+ "smtp": "Ríomhphost (SMTP)",
+ "emailCustomisableContent": "Ábhar inoiriúnaithe",
+ "smtpLiquidIntroduction": "Tá an dá réimse seo a leanas inphléite trí Theanga Teimpléadúcháin Liquid. Féach ar an {0} le haghaidh treoracha úsáide. Seo iad na hathróga atá ar fáil:",
+ "wayToGetDiscordURL": "Is féidir leat é seo a fháil ach dul go Socruithe Freastalaí -> Comhtháthaithe -> Féach ar Crúca Gréasáin -> Nua Crúca Gréasán",
+ "needSignalAPI": "Ní mór duit cliant comhartha a bheith agat le REST API.",
+ "lineDevConsoleTo": "Consól Forbróirí Líne - {0}",
+ "wayToGetLineChannelToken": "Déan rochtain ar {0} ar dtús, cruthaigh soláthraí agus cainéal (API Teachtaireachtaí), ansin is féidir leat an comhartha rochtana cainéal agus an t-aitheantas úsáideora a fháil ó na míreanna roghchláir thuasluaite.",
+ "aboutMattermostChannelName": "Is féidir leat an cainéal réamhshocraithe a phostálann an Crúca Gréasáin dó a shárú trí ainm an chainéil a chur isteach sa réimse \"Ainm na Cainéal\". Ní mór é seo a chumasú i socruithe Mattermost Crúca Gréasáin. Mar shampla: #other-channel",
+ "dataRetentionTimeError": "Ní mór don tréimhse choinneála a bheith 0 nó níos mó",
+ "infiniteRetention": "Socraigh go 0 le haghaidh coinneála gan teorainn.",
+ "grpcMethodDescription": "Tiontaítear ainm an mhodha go formáid camelCase mar sayHello, seiceáil, etc.",
+ "deleteNotificationMsg": "An bhfuil tú cinnte gur mhaith leat an fógra seo a scriosadh do gach monatóir?",
+ "resolverserverDescription": "Is é Cloudflare an freastalaí réamhshocraithe. Is féidir leat an freastalaí réititheora a athrú am ar bith.",
+ "enableDefaultNotificationDescription": "Cumasófar an fógra seo de réir réamhshocraithe le haghaidh monatóirí nua. Is féidir leat an fógra a dhíchumasú fós ar leithligh do gach monatóir.",
+ "importHandleDescription": "Roghnaigh 'Scipeáil atá ann cheana féin' más mian leat scipeáil a dhéanamh ar gach monatóir nó fógra leis an ainm céanna. Scriosfaidh ‘Forscríobh’ gach monatóir agus fógra atá ann cheana.",
+ "confirmDisableTwoFAMsg": "An bhfuil tú cinnte gur mhaith leat 2FA a dhíchumasú?",
+ "affectedStatusPages": "Taispeáin an teachtaireacht cothabhála seo ar leathanaigh stádais roghnaithe",
+ "keywordDescription": "Cuardaigh eochairfhocal i ngnáthfhreagra HTML nó JSON. Tá an cuardach cás-íogair.",
+ "backupDescription": "Is féidir leat gach monatóir agus fógra a chúltaca isteach i gcomhad JSON.",
+ "backupDescription2": "Nóta: níl sonraí staire agus imeachta san áireamh.",
+ "octopushAPIKey": "\"Eochair API\" ó dhintiúir API HTTP sa phainéal rialaithe",
+ "pushoversounds intermission": "Idirsheasúr",
+ "pushoversounds echo": "Pushover Macalla (fad)",
+ "GoogleChat": "Google Chat (Google Workspace amháin)",
+ "wayToGetKookGuildID": "Cuir 'Mód Forbróra' ar siúl i suíomh Kook, agus cliceáil ar dheis ar an guild chun a ID a fháil",
+ "Notification Sound": "Fuaim Fógra",
+ "pushoverDesc1": "Tá teorainn ama réamhshocraithe 30 soicind ag tosaíocht éigeandála (2) idir na hathiarratais agus rachaidh sé in éag tar éis 1 uair an chloig.",
+ "octopushLegacyHint": "An úsáideann tú an leagan oidhreachta de Octopush (2011-2020) nó an leagan nua?",
+ "Status:": "Stádas: {0}",
+ "Proto Service Name": "Ainm Seirbhíse Proto",
+ "You can divide numbers with": "Is féidir leat uimhreacha a roinnt le",
+ "goAlertInfo": "Is feidhmchlár foinse oscailte é GoAlert le haghaidh sceidealaithe ar ghlao-dhualgas, arduithe uathoibrithe agus fógraí (amhail SMS nó glaonna gutha). Téigh i dteagmháil go huathoibríoch leis an duine ceart, ar an mbealach ceart, agus ag an am ceart! {0}",
+ "Sms template must contain parameters: ": "Ní mór paraiméadair a bheith sa teimpléad sms: ",
+ "WeCom Bot Key": "Eochair do WeCom Bot",
+ "Proxy server has authentication": "Tá fíordheimhniú ag an seachfhreastalaí",
+ "promosmsTypeFlash": "SMS FLASH - Taispeánfar an teachtaireacht go huathoibríoch ar an ngléas faighteora. Teoranta do fhaighteoirí Polainnis amháin.",
+ "promosmsTypeSpeed": "SMS LUAS - An tosaíocht is airde sa chóras. An-tapa agus iontaofa ach costasach (thart ar dhá uair de phraghas IOMLÁN SMS).",
+ "matrixDesc1": "Is féidir leat an t-aitheantas seomra inmheánach a fháil ach breathnú ar an rannán ardleibhéil de shocruithe an tseomra i do chliant Maitrís. Ba cheart go mbeadh cuma air !QMdRCpUIfLwsfjxye6:home.server.",
+ "matrixDesc2": "Moltar go mór duit úsáideoir nua a chruthú agus ná húsáid do chomhartha rochtana úsáideora Matrix féin mar go gceadóidh sé rochtain iomlán ar do chuntas agus ar na seomraí go léir a ndeachaigh tú isteach ann. Ina áit sin, cruthaigh úsáideoir nua agus gan ach tabhair cuireadh dó go dtí an seomra inar mian leat an fógra a fháil. Is féidir leat an comhartha rochtana a fháil trí {0} a rith",
+ "aboutNotifyChannel": "Spreagfaidh an cainéal fógra deisce nó soghluaiste do gach ball den chineál, cibé infhaighteacht atá socraithe acu go gníomhach nó as oifig.",
+ "aboutKumaURL": "Má fhágann tú an réimse URL Uptime Kuma bán, beidh sé réamhshocraithe chuig an leathanach Project GitHub.",
+ "smtpDkimDomain": "Ainm Fearainn",
+ "smtpDkimheaderFieldNames": "Eochracha Ceanntásc le síniú (Roghnach)",
+ "wayToGetPagerDutyKey": "Is féidir leat é seo a fháil ach dul chuig Seirbhís -> Eolaire Seirbhíse -> (Roghnaigh seirbhís) -> Comhtháthaithe -> Cuir comhtháthú leis. Anseo is féidir leat cuardach a dhéanamh ar \"Imeachtaí API V2\". Tuilleadh eolais {0}",
+ "Integration Key": "Eochair Chomhtháthaithe",
+ "Integration URL": "URL Comhtháthaithe",
+ "Auto resolve or acknowledged": "Réiteach uathoibríoch nó admháil",
+ "do nothing": "ná déan faic",
+ "auto acknowledged": "auto admháil",
+ "auto resolve": "réiteach uathoibríoch",
+ "alertaApiEndpoint": "Críochphointe API",
+ "alertaEnvironment": "Timpeallacht",
+ "alertaApiKey": "Eochair API",
+ "alertaAlertState": "Stát Foláirimh",
+ "alertaRecoverState": "Aisghabháil Stáit",
+ "serwersmsAPIUser": "Ainm Úsáideora API (lena n-áirítear réimír webapi_)",
+ "serwersmsAPIPassword": "Pasfhocal API",
+ "serwersmsPhoneNumber": "Uimhir teileafón",
+ "smseagleTo": "Uimhir(eacha) gutháin",
+ "smseagleGroup": "Ainm(neacha) an ghrúpa ghutháin",
+ "smseagleContact": "Ainm(neacha) teagmhála an leabhair ghutháin",
+ "smseagleRecipientType": "Cineál faighteora",
+ "smseagleRecipient": "Faighteoir(í) (ní mór an iliomad a bheith scartha le camóg)",
+ "smseagleToken": "Comhartha rochtana API",
+ "smseagleUrl": "URL do ghléis SMSEagle",
+ "smseaglePriority": "Tosaíocht na teachtaireachta (0-9, réamhshocraithe = 0)",
+ "Recipient Number": "Uimhir Faighteoir",
+ "From Name/Number": "Ó Ainm/Uimhir",
+ "Octopush API Version": "Leagan API Octopush",
+ "Legacy Octopush-DM": "Oidhreacht Octopush-DM",
+ "ntfy Topic": "ntfy Topaic",
+ "Server URL should not contain the nfty topic": "Níor cheart go mbeadh an topaic nfty i URL an fhreastalaí",
+ "onebotHttpAddress": "Seoladh HTTP OneBot",
+ "onebotMessageType": "Cineál Teachtaireachta OneBot",
+ "onebotPrivateMessage": "Príobháideach",
+ "onebotSafetyTips": "Ar mhaithe le sábháilteacht, ní mór comhartha rochtana a shocrú",
+ "PushDeer Server": "Freastalaí PushDeer",
+ "PushDeer Key": "Eochair PushDeer",
+ "wayToGetClickSendSMSToken": "Is féidir leat Ainm Úsáideora API agus Eochair API a fháil ó {0} .",
+ "Custom Monitor Type": "Cineál Monatóir an Chustaim",
+ "Google Analytics ID": "Aitheantas Google Analytics",
+ "Edit Tag": "Cuir Clib in Eagar",
+ "Server Address": "Seoladh an fhreastalaí",
+ "Learn More": "Foghlaim níos mó",
+ "API Keys": "Eochracha API",
+ "Expiry": "Éaga",
+ "Expiry date": "Dáta éaga",
+ "Don't expire": "Ná éag",
+ "Continue": "Leanúint ar aghaidh",
+ "Add Another": "Cuir Eile leis",
+ "Key Added": "Cuireadh eochair leis",
+ "Add API Key": "Cuir Eochair API leis",
+ "No API Keys": "Gan Eochracha API",
+ "apiKey-active": "Gníomhach",
+ "apiKey-expired": "Imithe in Éag",
+ "apiKey-inactive": "Neamhghníomhach",
+ "Expires": "In éag",
+ "disableAPIKeyMsg": "An bhfuil tú cinnte gur mhaith leat an eochair API seo a dhíchumasú?",
+ "Generate": "Gin",
+ "pagertreeIntegrationUrl": "URL Comhtháthaithe",
+ "pagertreeUrgency": "Práinne",
+ "pagertreeSilent": "Ciúin",
+ "pagertreeLow": "Íseal",
+ "pagertreeMedium": "Mheán",
+ "pagertreeHigh": "Ard",
+ "pagertreeCritical": "Criticiúil",
+ "pagertreeResolve": "Uathréiteach",
+ "pagertreeDoNothing": "Ná Déan Faic",
+ "lunaseaDeviceID": "Aitheantas an Ghléis",
+ "lunaseaUserID": "ID Úsáideora",
+ "ntfyAuthenticationMethod": "Modh Fíordheimhnithe",
+ "ntfyPriorityHelptextAllExceptDown": "Seoltar gach imeacht leis an tosaíocht seo, seachas {0}-imeachtaí, a bhfuil tosaíocht de {1} acu",
+ "ntfyUsernameAndPassword": "Ainm Úsáideora agus Pasfhocal",
+ "twilioAccountSID": "SID cuntais",
+ "twilioApiKey": "Eochair Api (roghnach)",
+ "twilioAuthToken": "Auth Tócan / Eochair API Rúnda",
+ "twilioFromNumber": "Ó Uimhir",
+ "Show Clickable Link": "Taispeáin Nasc Inchliceáilte",
+ "Open Badge Generator": "Oscail Gineadóir Suaitheantais",
+ "Badge Generator": "Gineadóir Suaitheantais {0}",
+ "Badge Type": "Cineál Suaitheantais",
+ "Badge Duration (in hours)": "Fad Suaitheantais (in uaireanta)",
+ "Badge Label": "Lipéad Suaitheantais",
+ "Badge Prefix": "Réimír Luach Suaitheanta",
+ "Badge Suffix": "Iarmhír Luach Suaitheanta",
+ "Badge Label Color": "Dath Lipéad Suaitheantais",
+ "Badge Color": "Dath Suaitheantas",
+ "Badge Label Prefix": "Réimír Lipéad Suaitheantais",
+ "Badge Preview": "Réamhamharc Suaitheantais",
+ "Badge Label Suffix": "Iarmhír Lipéad Suaitheantais",
+ "Badge Down Color": "Suaitheantas Síos Dath",
+ "Badge Pending Color": "Suaitheantas ar Feitheamh Dath",
+ "Badge Maintenance Color": "Dath Cothabhála Suaitheantais",
+ "Badge Warn Color": "Dath Rabhadh Suaitheantas",
+ "Badge Warn Days": "Laethanta Rabhaidh Suaitheanta",
+ "Badge Style": "Stíl Suaitheantas",
+ "Badge value (For Testing only.)": "Luach suaitheantais (Le haghaidh Tástála amháin.)",
+ "Badge URL": "URL Suaitheantais",
+ "Group": "Grúpa",
+ "Monitor Group": "Grúpa Monatóireachta",
+ "toastErrorTimeout": "Teorainn Ama le haghaidh Fógraí Earráide",
+ "toastSuccessTimeout": "Teorainn Ama le haghaidh Fógraí Ratha",
+ "Kafka Brokers": "Bróicéirí Kafka",
+ "Enter the list of brokers": "Cuir isteach an liosta bróicéirí",
+ "Press Enter to add broker": "Brúigh Enter chun bróicéir a chur leis",
+ "Kafka Topic Name": "Ainm an Ábhair Kafka",
+ "Kafka Producer Message": "Teachtaireacht Léiritheoir Kafka",
+ "Enable Kafka SSL": "Cumasaigh Kafka SSL",
+ "Kafka SASL Options": "Roghanna Kafka SASL",
+ "Mechanism": "Meicníocht",
+ "Pick a SASL Mechanism...": "Roghnaigh Meicníocht SASL…",
+ "Authorization Identity": "Aitheantas Údaraithe",
+ "AccessKey Id": "Aitheantas AccessKey",
+ "Secret AccessKey": "Eochair Rochtana Rúnda",
+ "Session Token": "Comhartha Seisiúin",
+ "Close": "Dún",
+ "Request Body": "Comhlacht Iarratas",
+ "FlashDuty Severity": "Déine",
+ "nostrRelays": "Athsheachadáin Nostr",
+ "nostrRelaysHelp": "URL sealaíochta amháin in aghaidh an líne",
+ "nostrSender": "Eochair Phríobháideach an Seoltóra (nsec)",
+ "nostrRecipients": "Eochracha Poiblí Faighteoirí (npub)",
+ "nostrRecipientsHelp": "formáid npub, ceann in aghaidh an líne",
+ "showCertificateExpiry": "Taispeáin Éaga Teastais",
+ "noOrBadCertificate": "Níl/Drochteastas",
+ "gamedigGuessPort": "Gamedig: Port a Fháil Amach",
+ "Saved.": "Shábháil.",
+ "authUserInactiveOrDeleted": "Tá an t-úsáideoir neamhghníomhach nó scriostar é.",
+ "authInvalidToken": "Tócan Neamhbhailí.",
+ "authIncorrectCreds": "Ainm úsáideora nó pasfhocal mícheart.",
+ "2faAlreadyEnabled": "Tá 2FA cumasaithe cheana féin.",
+ "2faEnabled": "2FA Cumasaithe.",
+ "2faDisabled": "2FA faoi Mhíchumas.",
+ "successAdded": "Curtha leis go rathúil.",
+ "successResumed": "Tá an próiseas ar ais ar bun go rathúil.",
+ "successPaused": "Curtha ar sos go rathúil.",
+ "successDeleted": "Scriosta go rathúil.",
+ "successEdited": "Tá an t-eagarthóireacht athruithe go rathúil.",
+ "successAuthChangePassword": "Tá an pasfhocal nuashonraithe go rathúil.",
+ "successDisabled": "Díchumasaithe go rathúil.",
+ "successEnabled": "Cumasaithe go rathúil.",
+ "tagNotFound": "Clib gan aimsiú.",
+ "foundChromiumVersion": "Aimsíodh Cróimiam/Chrome. Leagan: {0}",
+ "Remote Browsers": "Brabhsálaithe cianda",
+ "Remote Browser": "Brabhsálaí cianda",
+ "Add a Remote Browser": "Cuir Brabhsálaí Cianda leis",
+ "Remote Browser not found!": "Brabhsálaí cianda gan aimsiú!",
+ "remoteBrowsersDescription": "Is rogha eile iad Brabhsálaithe Cian chun Cróimiam a rith go háitiúil. Socraigh le seirbhís cosúil le browserless.io nó ceangail le do cheann féin",
+ "self-hosted container": "coimeádán féin-óstach",
+ "remoteBrowserToggle": "De réir réamhshocraithe ritheann Cróimiam taobh istigh den choimeádán Uptime Kuma. Is féidir leat cianbhrabhsálaí a úsáid tríd an lasc seo a scoránú.",
+ "useRemoteBrowser": "Úsáid Brabhsálaí Cianda",
+ "deleteRemoteBrowserMessage": "An bhfuil tú cinnte gur mhaith leat an Cianbhrabhsálaí seo a scriosadh do gach monatóir?",
+ "GrafanaOncallUrl": "URL Grafana Oncall",
+ "Browser Screenshot": "Scáileán Brabhsálaí",
+ "What is a Remote Browser?": "Cad is Brabhsálaí Cianda ann?",
+ "serwersmsSenderName": "Ainm Seoltóra SMS (cláraithe trí thairseach custaiméirí)",
+ "smseagleEncoding": "Seol mar Unicode",
+ "Leave blank to use a shared sender number.": "Fág bán chun uimhir seoltóra roinnte a úsáid.",
+ "onebotGroupMessage": "Grúpa",
+ "onebotUserOrGroupId": "Aitheantas Grúpa/Úsáideora",
+ "pushDeerServerDescription": "Fág bán chun an freastalaí oifigiúil a úsáid",
+ "Body Encoding": "Ionchódú Coirp",
+ "apiKeyAddedMsg": "Cuireadh d'eochair API leis. Déan nóta de le do thoil mar ní thaispeánfar arís é.",
+ "deleteAPIKeyMsg": "An bhfuil tú cinnte gur mhaith leat an eochair API seo a scriosadh?",
+ "wayToGetPagerTreeIntegrationURL": "Tar éis comhtháthú Uptime Kuma a chruthú i PagerTree, cóipeáil an Endpoint. Féach ar na sonraí iomlána {0}",
+ "lunaseaTarget": "Sprioc",
+ "ntfyPriorityHelptextAllEvents": "Seoltar gach imeacht leis an tosaíocht uasta",
+ "twilioToNumber": "A Uimhir",
+ "Monitor Setting": "Socrú Monatóir {0}",
+ "Show Clickable Link Description": "Má dhéantar é a sheiceáil is féidir le gach duine a bhfuil rochtain acu ar an leathanach stádais seo rochtain a fháil ar an monatóireacht a dhéanamh ar URL.",
+ "Badge Up Color": "Suaitheantas Suas Dath",
+ "Badge Down Days": "Laethanta Dúin Suaitheanta",
+ "monitorToastMessagesLabel": "Monatóireacht a dhéanamh ar fhógraí Tósta",
+ "monitorToastMessagesDescription": "Imíonn fógraí tósta le haghaidh monatóirí tar éis am tugtha i soicindí. Díchumasaítear am istigh le socrú go -1. Díchumasaigh Socrú go 0 fógraí tósta.",
+ "Enable Kafka Producer Auto Topic Creation": "Cumasaigh Cruthú Uath-Ábhair Táirgeora Kafka",
+ "noGroupMonitorMsg": "Níl sé ar fáil. Cruthaigh Monatóir Grúpa ar dtús.",
+ "wayToGetFlashDutyKey": "Is féidir leat dul go Cainéal -> (Roghnaigh Cainéal) -> Comhtháthaithe -> Cuir leathanach comhtháthú nua leis, cuir 'Uptime Kuma' leis chun seoladh brúigh a fháil, cóipeáil an Eochair Chomhtháthaithe sa seoladh. Le haghaidh tuilleadh eolais, tabhair cuairt le do thoil",
+ "gamedigGuessPortDescription": "Féadfaidh an calafort a úsáideann Prótacal Iarratas Freastalaí Comhla a bheith difriúil ó phort an chliaint. Bain triail as seo mura bhfuil an monatóir in ann ceangal le do fhreastalaí.",
+ "successBackupRestored": "Tá an cúltaca athchóirithe go rathúil.",
+ "Host URL": "URL Óstach",
+ "senderSevenIO": "Sraithnú uimhir nó ainm a sheoladh",
+ "receiverInfoSevenIO": "Má bhíonn an uimhir atá á fháil ann nach bhfuil i nGearmáin, caithfidh tú an cód tíre a chur leis romhainn na huimhreacha (m.sh. le haghaidh cód tíre 1 ón RA, úsáid 117612121212 in ionad 017612121212)",
+ "apiKeySevenIO": "Eochair API SevenIO",
+ "locally configured mail transfer agent": "feidhmchlár aistrúcháin phoist cumraithe go háitiúil",
+ "wayToGetDiscordThreadId": "Tá sé cosúil le haitheantas poist snáithe / fóraim a fháil agus aitheantas cainéil a fháil. Léigh tuilleadh faoi conas aitheantais a fháil {0}",
+ "wayToGetHeiiOnCallDetails": "Mínítear sa {documentation} conas an Trigger ID agus Eochracha API a fháil",
+ "documentationOf": "{0} Doiciméadúchán",
+ "gtxMessagingApiKeyHint": "Is féidir leat d’eochair API a aimsiú ag: Mo Chuntais Ródúcháin > Taispeáin Eolas Cuntais > Dintiúir API > REST API (v2.x)",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "Ón Uimhir Theileafóin / Seoladh Bunaidh Conair Tarchuir (TPOA)",
+ "Command": "Ordú",
+ "mongodbCommandDescription": "Rith ordú MongoDB i gcoinne an bhunachair sonraí. Le haghaidh faisnéise faoi na horduithe atá ar fáil féach ar an {documentation}",
+ "whapiRecipient": "Uimhir Theileafóin / Aitheantas Teagmhála / ID Grúpa",
+ "API URL": "URL API",
+ "callMeBotGet": "Anseo is féidir leat críochphointe a ghiniúint le haghaidh {0}, {1} agus {2}. Coinnigh i gcuimhne go mb'fhéidir go mbeadh an ráta teoranta agat. Is cosúil gurb iad na teorainneacha ráta: {3}",
+ "To Phone Number": "A chuig Uimhir Theileafóin",
+ "Mentioning": "Ag lua",
+ "Don't mention people": "Ná luaigh daoine",
+ "Mention group": "Luaigh {group}",
+ "Allow Long SMS": "Ceadaigh SMS Fada",
+ "Bitrix24 Webhook URL": "URL Webbhook Bitrix24",
+ "wayToGetBitrix24Webhook": "Is féidir leat cuaille gréasáin a chruthú trí na céimeanna ag {0} a leanúint",
+ "bitrix24SupportUserID": "Cuir isteach d’aitheantas úsáideora in Bitrix24. Is féidir leat an ID a fháil amach ón nasc ach dul chuig próifíl an úsáideora.",
+ "Originator": "Tionscnóir",
+ "wayToWriteWhapiRecipient": "An uimhir theileafóin leis an réimír idirnáisiúnta, ach gan an comhartha móide ag an tús ({0}), an ID Teagmhála ({1}) nó an Grúpa ID ({2}).",
+ "wayToGetWhapiUrlAndToken": "Is féidir leat an URL API agus an comhartha a fháil ach dul isteach sa chainéal atá uait ó {0}",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Cuir isteach óstainm an fhreastalaí a bhfuil tú ag iarraidh ceangal leis nó {localhost} má tá sé ar intinn agat {local_mta} a úsáid",
+ "Refresh Interval": "Eatramh Athnuaigh",
+ "Refresh Interval Description": "Déanfaidh an leathanach stádais athnuachan iomlán ar an suíomh gach {0} soicind",
+ "whatHappensAtForumPost": "Cruthaigh post fóraim nua. NÍ phostann sé seo teachtaireachtaí sa phostáil reatha. Chun postáil sa phostáil reatha úsáid \"{option}\"",
+ "cellsyntOriginatortypeAlphanumeric": "Teaghrán alfa-uimhriúil (uasmhéid 11 carachtar alfa-uimhriúil). Ní féidir leis na faighteoirí freagra a thabhairt ar an teachtaireacht.",
+ "gtxMessagingFromHint": "Ar fhóin phóca, feiceann d’fhaighteoirí an TPOA ar taispeáint mar sheoltóir na teachtaireachta. Tá suas le 11 gcarachtar alfa-uimhriúla ceadaithe, gearrchód, an longchód áitiúil nó uimhreacha idirnáisiúnta ({e164}, {e212} nó {e214})",
+ "gtxMessagingToHint": "Formáid idirnáisiúnta, le \"+\" chun tosaigh ({e164}, {e212} nó {e214})",
+ "Originator type": "Cineál tionscnóra",
+ "Select message type": "Roghnaigh cineál teachtaireachta",
+ "wayToGetSevenIOApiKey": "Tabhair cuairt ar an painéal faoi app.seven.io > forbróir > eochair api > an cnaipe cuir glas",
+ "max 11 alphanumeric characters": "11 carachtar alfa-uimhriúil ar a mhéad",
+ "Your User ID": "D'aitheantas úsáideora",
+ "cellsyntOriginatortypeNumeric": "Luach uimhriúil (15 dhigit ar a mhéad) le huimhir theileafóin ar an bhformáid idirnáisiúnta gan 00 a threorú (mar shampla ba cheart uimhir RA 07920 110 000 a shocrú mar 447920110000). Is féidir le faighteoirí freagra a thabhairt ar an teachtaireacht.",
+ "cellsyntOriginator": "Le feiceáil ar ghuthán póca an fhaighteora mar thionscnóir na teachtaireachta. Braitheann luachanna agus feidhm cheadaithe ar chineál tionscnóra paraiméadar.",
+ "cellsyntDestination": "Uimhir theileafóin an fhaighteora ag baint úsáide as formáid idirnáisiúnta le 00 chun tosaigh agus cód tíre ina dhiaidh, e.g. 00447920110000 don uimhir RA 07920 110 000 (uasmhéid 17 ndigit san iomlán). Uasmhéid 25000 faighteoir scartha le camóg in aghaidh an iarratais HTTP.",
+ "Destination": "Ceann Scríbe",
+ "Channel access token (Long-lived)": "Comhartha rochtana cainéal (fadsaolach)",
+ "ignoreTLSErrorGeneral": "Déan neamhaird de earráid TLS/SSL le haghaidh ceangail",
+ "Send to channel": "Seol chuig cainéal",
+ "Create new forum post": "Cruthaigh post fóraim nua",
+ "postToExistingThread": "Cuir chuig an bpost snáithe / fóram atá ann cheana féin",
+ "forumPostName": "Ainm post an Fhóraim",
+ "threadForumPostID": "Snáithe / ID post an Fhóraim",
+ "e.g. {discordThreadID}": "e.g. {discordThreadID}",
+ "receiverSevenIO": "Uimhir glactha",
+ "Alphanumeric (recommended)": "Alfa-uimhriúil (molta)",
+ "Telephone number": "Uimhir theileafóin",
+ "cellsyntSplitLongMessages": "Roinn teachtaireachtaí fada suas le 6 chuid. 153 x 6 = 918 carachtar.",
+ "max 15 digits": "15 dhigit ar a mhéad",
+ "threemaRecipient": "Faighteoir",
+ "threemaRecipientType": "Cineál Faighteoir",
+ "threemaRecipientTypeIdentity": "Threema-ID",
+ "threemaRecipientTypeIdentityFormat": "8 gcarachtar",
+ "threemaRecipientTypePhone": "Uimhir teileafón",
+ "threemaRecipientTypePhoneFormat": "E.164, gan tosaigh +",
+ "threemaRecipientTypeEmail": "Seoladh ríomhphoist",
+ "threemaSenderIdentity": "Geata-ID",
+ "threemaApiAuthenticationSecret": "Rún Geata-ID",
+ "smspartnerPhoneNumber": "Uimhir(neacha) fóin",
+ "smspartnerSenderName": "Ainm Seoltóra SMS",
+ "smspartnerSenderNameInfo": "Caithfidh sé a bheith idir 3..=11 charachtar rialta",
+ "apiKeysDisabledMsg": "Tá eochracha API díchumasaithe toisc go bhfuil fíordheimhniú díchumasaithe.",
+ "smspartnerApiurl": "Is féidir leat d'eochair API a aimsiú ar do dheais ag {0}",
+ "smspartnerPhoneNumberHelptext": "Caithfidh an uimhir a bheith san fhormáid idirnáisiúnta {0}, {1}. Ní mór uimhreacha iolracha a dheighilt le {2}",
+ "wayToGetThreemaGateway": "Is féidir leat clárú le haghaidh Threema Gateway {0}.",
+ "threemaSenderIdentityFormat": "8 gcarachtar, a thosaíonn le * de ghnáth",
+ "threemaBasicModeInfo": "Nóta: Úsáideann an comhtháthú seo Threema Gateway i mód bunúsach (criptiúchán freastalaí-bhunaithe). Is féidir tuilleadh sonraí a fháil {0}.",
+ "jsonQueryDescription": "Parsáil agus bain sonraí ar leith ó fhreagra JSON an fhreastalaí ag baint úsáide as ceist JSON nó úsáid \"$\" don fhreagra amh, mura bhfuil tú ag súil le JSON. Cuirtear an toradh i gcomparáid ansin leis an luach ionchais, mar teaghráin. Féach ar {0} le haghaidh doiciméadú agus úsáid {1} chun triail a bhaint as fiosruithe.",
+ "snmpCommunityStringHelptext": "Feidhmíonn an teaghrán seo mar phasfhocal chun rochtain ar ghléasanna SNMP-chumasaithe a fhíordheimhniú agus a rialú. Meaitseáil sé le cumraíocht do ghléis SNMP.",
+ "snmpOIDHelptext": "Cuir isteach an OID don braiteoir nó don stádas ar mhaith leat monatóireacht a dhéanamh air. Úsáid uirlisí bainistíochta líonra ar nós brabhsálaithe MIB nó bogearraí SNMP mura bhfuil tú cinnte faoin OID.",
+ "wayToGetOnesenderUrlandToken": "Is féidir leat an URL agus Token a fháil ach dul chuig láithreán gréasáin Onesender. Tuilleadh eolais {0}",
+ "Lost connection to the socket server.": "Ceangal caillte leis an bhfreastalaí soicéad.",
+ "signl4Docs": "Is féidir leat tuilleadh faisnéise a fháil faoi conas SIGNL4 a chumrú agus conas an URL SIGNL4 a fháil sa {0}.",
+ "not starts with": "ní thosaíonn le",
+ "greater than or equal to": "níos mó ná nó cothrom le",
+ "now": "anois",
+ "time ago": "{0} ó shin",
+ "-year": "-bliain",
+ "Json Query Expression": "Léiriú Ceist Json",
+ "and": "agus",
+ "cacheBusterParam": "Cuir an {0} paraiméadar leis",
+ "cacheBusterParamDescription": "Paraiméadar ginte go randamach chun scipeáil a dhéanamh ar thaisce.",
+ "Community String": "Teaghrán Pobail",
+ "OID (Object Identifier)": "OID (Aitheantóir Oibiachta)",
+ "Condition": "Coinníoll",
+ "SNMP Version": "Leagan SNMP",
+ "Please enter a valid OID.": "Cuir isteach OID bailí.",
+ "Host Onesender": "Óstach Onesender",
+ "Token Onesender": "Licín Onesender",
+ "Recipient Type": "Cineál Faighteoir",
+ "Private Number": "Uimhir Phríobháideach",
+ "privateOnesenderDesc": "Cinntigh go bhfuil an uimhir theileafóin bailí. Chun teachtaireacht a sheoladh chuig uimhir ghutháin phríobháideach, sean: 628123456789",
+ "groupOnesenderDesc": "Cinntigh go bhfuil an GroupID bailí. Chun teachtaireacht a sheoladh chuig an nGrúpa, sean: 628123456789-342345",
+ "Group ID": "ID grúpa",
+ "Add Remote Browser": "Cuir Brabhsálaí Cianda leis",
+ "New Group": "Grúpa Nua",
+ "Group Name": "Ainm an Ghrúpa",
+ "OAuth2: Client Credentials": "OAuth2: Dintiúir Cliant",
+ "Authentication Method": "Modh Fíordheimhnithe",
+ "Authorization Header": "Ceanntásc Údaraithe",
+ "Form Data Body": "Comhlacht Sonraí Foirm",
+ "OAuth Token URL": "URL OAuth Token",
+ "Client ID": "ID Cliant",
+ "Client Secret": "Rúnda Cliant",
+ "OAuth Scope": "OAuth Scóip",
+ "Optional: Space separated list of scopes": "Roghnach: Liosta scóip spásscartha",
+ "Go back to home page.": "Téigh ar ais go dtí an leathanach baile.",
+ "No tags found.": "Níor aimsíodh clibeanna.",
+ "Cannot connect to the socket server.": "Ní féidir ceangal leis an bhfreastalaí soicéad.",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "URL SIGNL4 Cabhrán Gréasáin",
+ "Conditions": "Coinníollacha",
+ "conditionAdd": "Cuir Coinníoll leis",
+ "conditionDelete": "Scrios Coinníoll",
+ "conditionAddGroup": "Cuir Grúpa leis",
+ "conditionDeleteGroup": "Scrios Grúpa",
+ "conditionValuePlaceholder": "Luach",
+ "equals": "comhionann",
+ "not equals": "ní ionann",
+ "contains": "ina bhfuil",
+ "not contains": "nach bhfuil",
+ "starts with": "thosaíonn le",
+ "ends with": "chríochnaíonn le",
+ "not ends with": "ní chríochnaíonn le",
+ "less than": "níos lú ná",
+ "greater than": "níos mó ná",
+ "less than or equal to": "níos lú ná nó cothrom le",
+ "record": "taifead",
+ "shrinkDatabaseDescriptionSqlite": "Bunachar sonraí truicear {vacuum} le haghaidh SQLite. Tá {auto_vacuum} cumasaithe cheana féin ach ní dhéanann sé seo scoilt ar an mbunachar sonraí ná athphacáil leathanaigh aonair an bhunachair sonraí mar a dhéanann an t-ordú {vacuum}.",
+ "aboutSlackUsername": "Athraítear ainm taispeána sheoltóir na teachtaireachta. Más mian leat duine éigin a lua, cuir san ainm cairdiúil é ina ionad sin.",
+ "Custom sound to override default notification sound": "Fuaim shaincheaptha chun fuaim fógra réamhshocraithe a shárú",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "Déanfar fógraí atá íogair ó thaobh ama a sheachadadh láithreach, fiú má tá an gléas i mód ná cuir isteach.",
+ "rabbitmqNodesInvalid": "Bain úsáid as URL láncháilithe (ag tosú le 'http') le haghaidh nóid RabbitMQ.",
+ "rabbitmqHelpText": "Chun an monatóir a úsáid, beidh ort an Breiseán Bainistíochta a chumasú i do chumrú RabbitMQ. Le haghaidh tuilleadh faisnéise, féach ar an {rabitmq_documentation}.",
+ "Pop": "Popcheol",
+ "Time Sensitive (iOS Only)": "Am-íogair (iOS amháin)",
+ "From": "Ó",
+ "Can be found on:": "Is féidir é a fháil ar: {0}",
+ "The phone number of the recipient in E.164 format.": "Uimhir theileafóin an fhaighteora san fhormáid E.164.",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "Aitheantas seoltóir téacs nó uimhir theileafóin i bhformáid E.164 más mian leat a bheith in ann freagraí a fháil.",
+ "RabbitMQ Nodes": "Nóid Bainistíochta RabbitMQ",
+ "rabbitmqNodesDescription": "Cuir isteach an URL do na nóid bhainistíochta RabbitMQ lena n-áirítear prótacal agus port. Sampla: {0}",
+ "rabbitmqNodesRequired": "Socraigh na nóid don mhonatóir seo le do thoil.",
+ "RabbitMQ Username": "Ainm Úsáideora RabbitMQ",
+ "RabbitMQ Password": "RabbitMQ Pasfhocal",
+ "SendGrid API Key": "Eochair API SendGrid",
+ "Separate multiple email addresses with commas": "Scar seoltaí ríomhphoist iolracha le camóga",
+ "ignoredTLSError": "Níor tugadh aird ar earráidí TLS/SSL",
+ "Message format": "Formáid teachtaireachta",
+ "Send rich messages": "Seol teachtaireachtaí saibhir",
+ "Notification Channel": "Cainéal Fógraí",
+ "Sound": "Fuaim",
+ "Alphanumerical string and hyphens only": "Teaghrán alfa-uimhriúil agus fleiscíní amháin",
+ "Arcade": "Stuara",
+ "Correct": "Ceart",
+ "Fail": "Teip",
+ "Harp": "Cláirseach",
+ "Reveal": "Nocht",
+ "Bubble": "Mboilgeog",
+ "Doorbell": "Cloigín an dorais",
+ "Flute": "Fliúit",
+ "Money": "Airgead",
+ "Clear": "Glan",
+ "Elevator": "Ardaitheoir",
+ "Guitar": "Giotár",
+ "Scifi": "Ficsean eolaíochta"
+}
diff --git a/src/lang/he-IL.json b/src/lang/he-IL.json
index 50f67cfd6..fc79889a4 100644
--- a/src/lang/he-IL.json
+++ b/src/lang/he-IL.json
@@ -378,7 +378,6 @@
"Discard": "להשליך",
"Cancel": "לְבַטֵל",
"Powered by": "פועל על",
- "shrinkDatabaseDescription": "ואקום מסד נתונים להפעיל עבור SQLITE.אם בסיס הנתונים שלך נוצר לאחר 1.10.0, Auto_VACUUM כבר מופעל ואין צורך בפעולה זו.",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "שם משתמש ל-API (כולל webapi_prefix)",
"serwersmsAPIPassword": "סיסמת API",
diff --git a/src/lang/hi.json b/src/lang/hi.json
index 08efa6ff5..101cb3a85 100644
--- a/src/lang/hi.json
+++ b/src/lang/hi.json
@@ -40,5 +40,71 @@
"Down": "बंद",
"Passive Monitor Type": "निष्क्रिय मॉनिटर प्रकार",
"Status": "स्थिति",
- "showCertificateExpiry": "प्रमाणपत्र समाप्ति दिखाएँ"
+ "showCertificateExpiry": "प्रमाणपत्र समाप्ति दिखाएँ",
+ "setupDatabaseEmbeddedMariaDB": "आपको कुछ भी सेट करने की जरूरत नहीं है. इस डॉकर छवि ने आपके लिए मारियाडीबी को स्वचालित रूप से एम्बेड और कॉन्फ़िगर किया है। अपटाइम कुमा यूनिक्स सॉकेट के माध्यम से इस डेटाबेस से कनेक्ट होगा।",
+ "setupDatabaseChooseDatabase": "आप किस डेटाबेस का उपयोग करना चाहेंगे?",
+ "setupDatabaseMariaDB": "किसी बाहरी मारियाडीबी डेटाबेस से कनेक्ट करें। आपको डेटाबेस कनेक्शन जानकारी सेट करने की आवश्यकता है।",
+ "setupDatabaseSQLite": "एक सरल डेटाबेस फ़ाइल, जो छोटे पैमाने पर तैनाती के लिए अनुशंसित है। V2.0.0 से पहले, अपटाइम कुमा ने डिफ़ॉल्ट डेटाबेस के रूप में SQLite का उपयोग किया था।",
+ "settingUpDatabaseMSG": "डेटाबेस की स्थापना. इसमें थोड़ा समय लग सकता है, कृपया धैर्य रखें।",
+ "markdownSupported": "मार्कडाउन सिंटैक्स समर्थित",
+ "time ago": "समय पहले",
+ "day": "दिन",
+ "Primary Base URL": "प्राथमिक आधार यूआरएल",
+ "-hour": "-घंटा",
+ "-day": "-दिन",
+ "hour": "घंटे",
+ "DateTime": "दिनांक समय",
+ "Uptime": "उपरिकाल",
+ "Cert Exp.": "प्रमाणपत्र अनुभव.",
+ "dbName": "डेटाबेस का नाम",
+ "now": "अभी",
+ "-year": "-वर्ष",
+ "Not available, please setup.": "उपलब्ध नहीं है, कृपया सेट अप करें।",
+ "Auto": "स्वतः",
+ "styleElapsedTime": "हार्टबीट बार के नीचे बीता हुआ समय",
+ "Setup Notification": "सूचना सेट अप करें",
+ "Light": "प्रकाश",
+ "Dark": "अंधकार",
+ "Theme - Heartbeat Bar": "थीम - हार्टबीट बार",
+ "Host URL": "होस्ट यूआरएल",
+ "Request Timeout": "अनुरोध समय सीमा",
+ "Accepted Status Codes": "स्वीकृत स्थिति कोड",
+ "Response": "प्रतिक्रिया",
+ "locally configured mail transfer agent": "स्थानीय रूप से कॉन्फ़िगर किया गया मेल ट्रांसफर एजेंट",
+ "Heartbeat Interval": "हार्टबीट अंतराल",
+ "Retries": "पुनः प्रयासों की संख्या",
+ "Heartbeat Retry Interval": "हार्टबीट पुनः प्रयास अंतराल",
+ "Port": "पोर्ट",
+ "checkEverySecond": "हर {0} सेकंड में जांच करें",
+ "retryCheckEverySecond": "हर {0} सेकंड में पुनः प्रयास करें",
+ "ignoreTLSErrorGeneral": "कनेक्शन के लिए TLS/SSL त्रुटि को अनदेखा करें",
+ "needPushEvery": "आपको हर {0} सेकंड में इस URL को कॉल करना चाहिए।",
+ "pushOptionalParams": "वैकल्पिक पैरामीटर: {0}",
+ "Save": "सहेजें",
+ "retriesDescription": "सेवा को डाउन के रूप में चिह्नित करने और सूचना भेजने से पहले अधिकतम पुनः प्रयासों की संख्या",
+ "Notifications": "सूचनाएँ",
+ "Check Update On GitHub": "गिटहब पर अपडेट जांचें",
+ "timeoutAfter": "{0} सेकंड के बाद समय सीमा समाप्त",
+ "upsideDownModeDescription": "स्थिति को उल्टा करें। यदि सेवा पहुंच योग्य है, तो यह DOWN है।",
+ "Upside Down Mode": "उल्टा मोड",
+ "Max. Redirects": "अधिकतम पुनर्निर्देश",
+ "Push URL": "पुश यूआरएल",
+ "Monitor": "मॉनिटर | मॉनिटर्स",
+ "maxRedirectDescription": "अनुसरण करने के लिए अधिकतम पुनर्निर्देशनों की संख्या। पुनर्निर्देशनों को अक्षम करने के लिए 0 पर सेट करें।",
+ "Advanced": "उन्नत",
+ "Invert Keyword": "कीवर्ड उलटें",
+ "Json Query Expression": "JSON क्वेरी अभिव्यक्ति",
+ "URL": "यूआरएल",
+ "Hostname": "होस्टनेम",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "या तो उस सर्वर का होस्टनेम दर्ज करें जिससे आप कनेक्ट करना चाहते हैं या {localhost} यदि आप {local_mta} का उपयोग करना चाहते हैं",
+ "Resend Notification if Down X times consecutively": "यदि लगातार X बार डाउन हो, तो पुनः सूचना भेजें",
+ "resendEveryXTimes": "हर {0} बार में पुनः भेजें",
+ "resendDisabled": "पुनः भेजना निष्क्रिय किया गया है",
+ "ignoredTLSError": "TLS/SSL त्रुटियों को अनदेखा किया गया है",
+ "pushOthers": "अन्य",
+ "programmingLanguages": "प्रोग्रामिंग भाषाएँ",
+ "styleElapsedTimeShowNoLine": "दिखाएँ (कोई रेखा नहीं)",
+ "Expected Value": "अपेक्षित मान",
+ "ignoreTLSError": "HTTPS वेबसाइटों के लिए TLS/SSL त्रुटियों को अनदेखा करें",
+ "pushViewCode": "पुश मॉनिटर का उपयोग कैसे करें? (कोड देखें)"
}
diff --git a/src/lang/hr-HR.json b/src/lang/hr-HR.json
index 34ddcabf6..164cd217f 100644
--- a/src/lang/hr-HR.json
+++ b/src/lang/hr-HR.json
@@ -194,11 +194,11 @@
"telegram": "Telegram",
"Bot Token": "Token bota",
"wayToGetTelegramToken": "Token možete nabaviti preko {0}.",
- "Chat ID": "ID razgovora",
- "supportTelegramChatID": "Podržani su ID-jevi izravnih razgovora, grupa i kanala",
- "wayToGetTelegramChatID": "ID razgovora možete saznati tako da botu pošaljete poruku te odete na ovaj URL:",
- "YOUR BOT TOKEN HERE": "OVDJE IDE TOKEN BOTA",
- "chatIDNotFound": "ID razgovora nije pronađen; prvo morate poslati poruku botu",
+ "Chat ID": "Identifikator razgovora",
+ "supportTelegramChatID": "Podržani su identifikatori izravnih razgovora, grupa i kanala",
+ "wayToGetTelegramChatID": "Identifikator razgovora možete saznati tako da botu pošaljete poruku te odete na ovaj URL:",
+ "YOUR BOT TOKEN HERE": "TOKEN BOTA STAVITI OVDJE",
+ "chatIDNotFound": "Identifikator razgovora nije pronađen; prvo morate poslati poruku botu",
"webhook": "Webhook",
"Post URL": "URL Post zahtjeva",
"Content Type": "Tip sadržaja (Content Type)",
@@ -267,7 +267,7 @@
"Check octopush prices": "Provjerite cijene usluge Octopush {0}.",
"octopushPhoneNumber": "Telefonski broj (međunarodni format, primjerice: +38512345678) ",
"octopushSMSSender": "Naziv SMS pošiljatelja : 3-11 alfanumeričkih znakova i razmak (a-zA-Z0-9)",
- "LunaSea Device ID": "LunaSea ID Uređaja",
+ "LunaSea Device ID": "LunaSea identifikator uređaja",
"Apprise URL": "URL usluge Apprise",
"Example:": "Primjerice: {0}",
"Read more:": "Pročitajte više: {0}",
@@ -280,9 +280,9 @@
"Line Developers Console": "LINE razvojnoj konzoli",
"lineDevConsoleTo": "LINE razvojna konzola - {0}",
"Basic Settings": "Osnovne Postavke",
- "User ID": "Korisnički ID",
+ "User ID": "Korisnički identifikator",
"Messaging API": "API za razmjenu poruka",
- "wayToGetLineChannelToken": "Prvo, pristupite {0}, kreirajte pružatelja usluga te kanal (API za razmjenu poruka), zatim možete dobiti token za pristup kanalu te korisnički ID za polja iznad.",
+ "wayToGetLineChannelToken": "Prvo, pristupite {0}, kreirajte pružatelja usluga te kanal (API za razmjenu poruka), zatim možete dobiti token za pristup kanalu te identifikator korisnika za polja iznad.",
"Icon URL": "URL slike",
"aboutIconURL": "Možete postaviti poveznicu na sliku u polju \"URL slike\" kako biste spriječili korištenje zadane slike. Ovo se polje neće koristiti ako je postavljeno polje \"Emotikon\".",
"aboutMattermostChannelName": "Možete promijeniti kanal u kojeg webhook šalje tako da ispunite polje \"Naziv kanala\". Ta opcija mora biti omogućena unutar Mattermost postavki za webhook. Primjerice: #neki-kanal",
@@ -353,7 +353,6 @@
"Saved.": "Spremljeno.",
"PushByTechulus": "Push by Techulus",
"GoogleChat": "Google Chat (preko platforme Google Workspace)",
- "shrinkDatabaseDescription": "Pokreni VACUUM operaciju za SQLite. Ako je baza podataka kreirana nakon inačice 1.10.0, AUTO_VACUUM opcija već je uključena te ova akcija nije nužna.",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "API korisničko ime (uključujući webapi_ prefiks)",
"serwersmsAPIPassword": "API lozinka",
@@ -555,7 +554,7 @@
"socket": "Docker socket",
"tcp": "TCP / HTTP",
"Docker Container": "Docker kontejner",
- "Container Name / ID": "Naziv / ID kontejnera",
+ "Container Name / ID": "Naziv / identifikator kontejnera",
"Docker Host": "Docker domaćin",
"Docker Hosts": "Docker domaćini",
"ntfy Topic": "ntfy tema",
@@ -633,7 +632,7 @@
"Authorization Identity": "Identitet autorizacije",
"weekdayShortThu": "Čet",
"setupDatabaseChooseDatabase": "Koju bazu podataka želite koristiti?",
- "setupDatabaseEmbeddedMariaDB": "Ne morate ništa dodatno postavljati. Ovaj docker image ima ugrađenu i konfiguriranu MariaDB bazu podataka za Vas. Uptime Kuma će se spojiti na ovu bazu preko UNIX socketa.",
+ "setupDatabaseEmbeddedMariaDB": "Ne morate ništa dodatno postavljati. Ovaj Docker image ima ugrađenu i konfiguriranu MariaDB bazu podataka za Vas. Uptime Kuma će se spojiti na ovu bazu preko UNIX socketa.",
"setupDatabaseMariaDB": "Spojite vanjsku MariaDB bazu podataka. Morate unijeti informacije o konekciji prema bazi.",
"setupDatabaseSQLite": "Jednostavna datoteka s bazom podataka, preporuča se samo za manje implementacije. Prije inačice v2.0.0, Uptime Kuma je koristila SQLite kao zadanu bazu podataka.",
"dbName": "Naziv baze podataka",
@@ -649,7 +648,7 @@
"webhookBodyCustomOption": "Prilagođeno tijelo zahtjeva",
"selectedMonitorCount": "Odabrano: {0}",
"Check/Uncheck": "Označi/odznači",
- "telegramMessageThreadID": "(Neobavezno) ID dretve poruka",
+ "telegramMessageThreadID": "(Neobvezno) Identivikator dretve poruka",
"telegramMessageThreadIDDescription": "Neobavezni jedinstveni identifikator za dretvu poruka (temu) foruma; samo za forumske supergrupe",
"telegramSendSilently": "Pošalji nečujno",
"telegramSendSilentlyDescription": "Šalje poruku nečujno. Primatelji će dobiti obavijest bez zvuka.",
@@ -690,7 +689,7 @@
"confirmDeleteTagMsg": "Jeste li sigurni da želite izbrisati ovu oznaku? Monitori povezani s ovom oznakom neće biti izbrisani.",
"enableGRPCTls": "Omogući sigurno slanje gRPC zahtjeva koristeći TLS",
"deleteMaintenanceMsg": "Jeste li sigurni da želite izbrisati ovo održavanje?",
- "Guild ID": "ID za guild",
+ "Guild ID": "Identifikator za guild",
"pushoverMessageTtl": "Vrijeme isteka poruke (u sekundama)",
"Proto Method": "Metoda poziva",
"Proto Content": "Proto sadržaj",
@@ -799,7 +798,6 @@
"affectedStatusPages": "Prikazuje poruku o održavanju na odabranim statusnim stranicama",
"atLeastOneMonitor": "Odaberite barem jedan zahvaćeni Monitor",
"invertKeywordDescription": "Postavi da ključna riječ mora biti odsutna umjesto prisutna.",
- "jsonQueryDescription": "Izvršite JSON upit nad primljenim odgovorom i provjerite očekivanu povrtanu vrijednost. Ona će se za usporedbu pretvoriti u niz znakova (string). Pogledajte stranicu {0} za dokumentaciju o jeziku upita. Testno okruženje možete pronaći {1}.",
"Strategy": "Strategija",
"Free Mobile User Identifier": "Besplatni mobilni korisnički identifikator",
"Free Mobile API Key": "Besplatni mobilni ključ za API",
@@ -833,7 +831,7 @@
"noGroupMonitorMsg": "Nije dostupno. Prvo kreirajte grupu Monitora.",
"Close": "Zatvori",
"Request Body": "Tijelo zahtjeva",
- "wayToGetFlashDutyKey": "Možete otići na 'Channel' -> (Odaberite kanal) -> 'Integrations' -> 'Add a new integration' i odaberite 'Custom Event' da biste dobili push adresu. Zatim kopirajte integracijski ključ u adresu. Za više informacija posjetite",
+ "wayToGetFlashDutyKey": "Možete otići na 'Channel' -> (Odaberite kanal) -> 'Integrations' -> 'Add a new integration' i odaberite 'Uptime Kuma' da biste dobili push adresu. Zatim kopirajte integracijski ključ u adresu. Za više informacija posjetite",
"FlashDuty Severity": "Stupanj ozbiljnosti",
"nostrRelays": "Nostr releji",
"nostrRelaysHelp": "Jedan URL releja po liniji",
@@ -911,5 +909,207 @@
"self-hosted container": "kontejner koji je self-hosted",
"useRemoteBrowser": "Korištenje udaljenog preglednika",
"Add a new expiry notification day": "Dodaj novi dan za istek obavijesti",
- "Remove the expiry notification": "Ukloni dan za istek obavijesti"
+ "Remove the expiry notification": "Ukloni dan za istek obavijesti",
+ "What is a Remote Browser?": "Što je udaljeni preglednik?",
+ "documentationOf": "{0} dokumentacija",
+ "wayToGetHeiiOnCallDetails": "Postupak pribavljanja identifikatora okidača i API ključeva objašnjeno je u {documentation}",
+ "gtxMessagingApiKeyHint": "Svoj API ključ možete pronaći odlaskom na postavku: My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)",
+ "To Phone Number": "Telefonski broj primatelja",
+ "Originator type": "Izvorišni tip",
+ "Alphanumeric (recommended)": "Alfanumerički (preporučeno)",
+ "Destination": "Odredište",
+ "callMeBotGet": "Ovdje se može generirati krajnja točka za {0}, {1} i {2}. Imajte na umu da biste mogli biti ograničeni tarifom. Čini se da je trenutna tarifa: {3}",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "Telefonski broj pošiljatelja / Izvorišna adresa prijenosnog puta (TPOA)",
+ "whapiRecipient": "Broj telefona / Identifikator kontakta / Identifikator grupe",
+ "API URL": "URL API-ja",
+ "gtxMessagingToHint": "Međunarodni format, s početnim plusom (\"+\") ({e164}, {e212} ili {e214})",
+ "Telephone number": "Telefonski broj",
+ "cellsyntOriginatortypeAlphanumeric": "Alfanumerički niz znakova (maksimalne duljine 11). Primatelji ne mogu odgovoriti na poruku.",
+ "cellsyntOriginatortypeNumeric": "Brojčana vrijednost (maksimalno 15 znamenki) telefonskog broja u međunarodnom formatu bez \"00\" na početku (primjerice, broj iz UK-a 07920-110-000 trebao bi biti postavljen kao 447920110000). Primatelji mogu odgovoriti na poruku.",
+ "Originator": "Izvorište",
+ "Allow Long SMS": "Dozvoli dugačke SMS poruke",
+ "cellsyntSplitLongMessages": "Podijeli dugačke poruke na više dijelova, do maksimalnih 6. Maksimalan broj znakova tada je 153 x 6 = 918.",
+ "max 15 digits": "maks. 15 znamenki",
+ "max 11 alphanumeric characters": "maks. 11 alfanumeričkih znakova",
+ "wayToWriteWhapiRecipient": "Telefonski broj s međunarodnim prefiksom, ali bez znaka plus na početku ({0}), identifikatora kontakta ({1}) ili identifikatora grupe ({2}).",
+ "wayToGetWhapiUrlAndToken": "Moguće je pribaviti token te URL API-ja odlaskom na željeni kanal s {0}",
+ "gtxMessagingFromHint": "Na mobilnim telefonima, vaši primatelji vide TPOA prikazanu kao pošiljatelja poruke. Dopušteno je do 11 alfanumeričkih znakova, kratki kod, lokalni dugi kod ili međunarodni brojevi ({e164}, {e212} ili {e214})",
+ "cellsyntOriginator": "Vidljivo na mobilnom telefonu primatelja kao autor poruke. Dopuštene vrijednosti i funkcija ovise o vrsti izvorišta.",
+ "cellsyntDestination": "Telefonski broj primatelja u međunarodnom formatu s početnim 00 iza kojeg slijedi pozivni broj države (maksimalno 17 znamenki). Primjerice, za broj iz UK-a 07920-110-000 vrijednost mora biti 00447920110000 . Maksimalno 25.000 primatelja odvojenih zarezom po HTTP zahtjevu.",
+ "Channel access token (Long-lived)": "Pristupni token za kanal (dugovječni)",
+ "Your User ID": "Vaš korisnički identifikator (ID)",
+ "wayToGetSevenIOApiKey": "Posjetite nadzornu ploču odlaskom na app.seven.io > Developer > API Key i dodajte novi ključ koristeći zeleni gumb za dodavanje",
+ "Command": "Naredba",
+ "mongodbCommandDescription": "Pokreni MongoDB naredbu na bazi podataka. Za informacije o dostupnim naredbama posjetite {documentation}",
+ "Mentioning": "Spominjanje",
+ "Don't mention people": "Ne spominji ljude",
+ "Bitrix24 Webhook URL": "URL webhooka za Bitrix24",
+ "wayToGetBitrix24Webhook": "Možete napraviti webhook prateći upute na {0}",
+ "bitrix24SupportUserID": "Unesite svoj korisnički identifikator u Bitrix24. Možete ga dobiti iz URL-a odlaskom na vlastiti profil.",
+ "apiKeySevenIO": "SevenIO API ključ",
+ "Host URL": "URL domaćina",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Unesite adresu poslužitelja na koju se želite spojiti ili {localhost} ako planirate koristiti {local_mta}",
+ "Select message type": "Odaberite tip poruke",
+ "postToExistingThread": "Pošalji u postojeću temu / forumsku raspravu",
+ "Send to channel": "Slanje u kanal",
+ "Create new forum post": "Stvori novu forumsku objavu",
+ "whatHappensAtForumPost": "Stvori novu forumsku raspravu. Ova opcija ne dozvoljava objavu poruka u postojeću raspravu, za to je potrebno koristiti \"{option}\"",
+ "wayToGetDiscordThreadId": "Pronalaženje indentifikatora forumske rasprave ili objave slično je kao i za indentifikator kanala. Više o tome: {0}",
+ "Refresh Interval": "Interval osvježavanja",
+ "Refresh Interval Description": "Statusna stranica će napraviti cjelovito osvježavanje svake/ih {0} sekunde/i",
+ "locally configured mail transfer agent": "agent prijenosa e-pošte postavljen lokalno",
+ "ignoreTLSErrorGeneral": "Ignoriraj greške TLS-a/SSL-a prilikom spajanja",
+ "forumPostName": "Naziv forumske objave",
+ "e.g. {discordThreadID}": "npr. {discordThreadID}",
+ "threadForumPostID": "Identifikator forumske rasprave ili objave",
+ "Mention group": "Spomeni {group}",
+ "senderSevenIO": "Broj ili naziv pošiljatelja",
+ "receiverSevenIO": "Broj primatelja",
+ "receiverInfoSevenIO": "Ako broj primatelja nije registriran u Njemačkoj, potrebno je uključiti i pozivni broj države (primjerice, umjesto 023123123 potrebno je koristiti 36523123123 ako je riječ o hrvatskom broju)",
+ "threemaRecipient": "Primatelj",
+ "threemaRecipientType": "Tip pošiljatelja",
+ "threemaRecipientTypeIdentity": "Threema ID",
+ "threemaRecipientTypeIdentityFormat": "8 znakova",
+ "threemaRecipientTypeEmail": "Adresa e-pošte",
+ "threemaSenderIdentity": "ID pristupnika",
+ "threemaSenderIdentityFormat": "8 znakova, obično počinje znakom *",
+ "threemaApiAuthenticationSecret": "Tajna pristupnika",
+ "smspartnerApiurl": "Možete pronaći svoj API ključ na nadzornoj ploči: {0}",
+ "smspartnerPhoneNumber": "Broj(evi) telefona",
+ "smspartnerPhoneNumberHelptext": "Broj mora biti u međunarodnom formatu {0}, {1}. Višestruki unosi moraju biti odvojeni znakom {2}",
+ "smspartnerSenderName": "Naziv SMS pošiljatelja",
+ "apiKeysDisabledMsg": "API ključevi su onemogućeni jer je provjera autentičnosti onemogućena.",
+ "wayToGetThreemaGateway": "Možete se registrirati za uslugu Threema Gateway {0}.",
+ "threemaRecipientTypePhone": "Telefonski broj",
+ "threemaRecipientTypePhoneFormat": "E.164, bez vodećeg znaka +",
+ "threemaBasicModeInfo": "Napomena: Ova integracija koristi Threema Gateway u osnovnom načinu rada (enkripcija temeljena na poslužitelju). Dodatne pojedinosti možete pronaći na {0}.",
+ "smspartnerSenderNameInfo": "Mora biti između 3 i 11 znakova",
+ "shrinkDatabaseDescriptionSqlite": "Pokreni {vacuum} baze podataka za SQLite. Opcija {auto_vacuum} je već omogućena, ali to ne defragmentira bazu podataka niti ponovno pakira pojedinačne stranice baze podataka na način na koji to radi naredba {vacuum}.",
+ "ignoredTLSError": "TLS/SSL greške se ignoriraju",
+ "cacheBusterParam": "Dodaj parametar {0}",
+ "cacheBusterParamDescription": "Nasumično generirani parametar, za preskakanje predmemorije.",
+ "snmpCommunityStringHelptext": "Ovaj niz funkcionira kao lozinka za provjeru autentičnosti i kontrolu pristupa uređajima s omogućenim SNMP-om. Uskladite ga sa svojom konfiguracijom SNMP uređaja.",
+ "privateOnesenderDesc": "Provjerite je li broj telefona valjan. Za slanje poruke na privatni telefonski broj, npr. 628123456789",
+ "Go back to home page.": "Vratite se na početnu stranicu.",
+ "signl4Docs": "Više informacija o tome kako konfigurirati SIGNL4 i kako dobiti SIGNL4 URL webhooka možete pronaći na {0}.",
+ "not starts with": "ne počinje s",
+ "less than or equal to": "manje od ili jednako",
+ "Doorbell": "Zvono na vratima",
+ "Custom sound to override default notification sound": "Prilagođeni zvuk za zamjenu zadanog zvuka obavijesti",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "Vremenski osjetljive obavijesti bit će isporučene odmah, čak i ako je uređaj u načinu rada bez ometanja.",
+ "now": "sada",
+ "time ago": "prije {0}",
+ "-year": "-godišnje",
+ "Json Query Expression": "Upit u JSON obliku",
+ "Community String": "Zajednički niz teksta",
+ "conditionAddGroup": "Dodaj grupu",
+ "conditionDeleteGroup": "Obriši grupu",
+ "Debug": "Otklanjanje grešaka",
+ "Copy": "Kopirati",
+ "CopyToClipboardError": "Greška pri kopiranju u međuspremnik: {error}",
+ "CopyToClipboardSuccess": "Kopirano!",
+ "dns resolvers": "DNS razrješivači",
+ "firewalls": "vatrozidi",
+ "CurlDebugInfo": "Za otklanjanje grešaka u Monitoru, možete zalijepiti ovo u terminal na vlastitom računalu ili računalu na kojem se Uptime Kuma pokreće, kako biste isprobali Vaš mrežni zahtjev.{newiline}Budite svjesni mrežnih razlika koje mogu činiti {firewalls}, {dns_resolvers} ili {docker_networks}.",
+ "docker networks": "Dockerove mreže",
+ "CurlDebugInfoOAuth2CCUnsupported": "Potpuni tok vjerodajnica klijenta OAuth nije podržan u {curl}.{newline}Nabavite token nositelja i proslijedite ga koristeći opciju {oauth2_bearer}.",
+ "CurlDebugInfoProxiesUnsupported": "Proxy podrška u gornjoj naredbi {curl} trenutno nije implementirana.",
+ "and": "i",
+ "Message format": "Format poruke",
+ "Send rich messages": "Slanje poruka s obogaćenim tekstom",
+ "OID (Object Identifier)": "OID (Identifikator objekta)",
+ "snmpOIDHelptext": "Unesite OID za senzor ili status kojeg želite monitorirati. Koristite alate za upravljanje mrežom poput MIB preglednika ili SNMP programa ako niste sigurni koja je vrijednost OID-a.",
+ "Condition": "Uvjet",
+ "SNMP Version": "Inačica SNMP-a",
+ "Please enter a valid OID.": "Unesite važeći OID.",
+ "Recipient Type": "Tip primatelja",
+ "Private Number": "Privatni broj",
+ "wayToGetOnesenderUrlandToken": "URL i token možete dobiti odlaskom na OneSender web stranicu. Više informacija na {0}",
+ "Token Onesender": "OneSender Token",
+ "Host Onesender": "Adresa OneSender domaćina",
+ "Group ID": "Identifikator Grupe",
+ "groupOnesenderDesc": "Provjerite je li Identifikator Grupe valjan. Za slanje poruke na Grupu, npr. 628123456789-342345",
+ "Add Remote Browser": "Dodaj udaljeni preglednik",
+ "New Group": "Nova grupa",
+ "Group Name": "Naziv grupe",
+ "OAuth2: Client Credentials": "OAuth2: vjerodajnice klijenta",
+ "Authentication Method": "Metoda provjere autentičnosti",
+ "Authorization Header": "Zaglavlje autorizacije",
+ "Form Data Body": "Tijelo podataka obrasca",
+ "OAuth Token URL": "URL OAuth tokena",
+ "Client ID": "Klijentski identifikator",
+ "Client Secret": "Klijentska tajna",
+ "OAuth Scope": "OAuth opseg",
+ "Optional: Space separated list of scopes": "Neobavezno: popis opsega odvojen razmakom",
+ "No tags found.": "Nema pronađenih oznaka.",
+ "Lost connection to the socket server.": "Izgubljena veza sa socket poslužiteljem.",
+ "Cannot connect to the socket server.": "Nije moguće spojiti se na socket poslužitelj.",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "SIGNL4 URL webhooka",
+ "Conditions": "Uvjeti",
+ "conditionAdd": "Dodaj uvjet",
+ "conditionDelete": "Obriši uvjet",
+ "conditionValuePlaceholder": "Vrijednost",
+ "equals": "je jednako",
+ "not equals": "nije jednako",
+ "contains": "sadržava",
+ "not contains": "ne sadržava",
+ "starts with": "počinje s",
+ "ends with": "završava s",
+ "not ends with": "ne završava s",
+ "less than": "manje od",
+ "greater than": "veće od",
+ "greater than or equal to": "veće od ili jednako",
+ "record": "zapis",
+ "Notification Channel": "Kanal obavijesti",
+ "Sound": "Zvuk",
+ "Alphanumerical string and hyphens only": "Samo alfanumerički niz i crtice",
+ "Arcade": "Arkadno",
+ "Fail": "Neuspjeh",
+ "Correct": "Ispravno",
+ "Harp": "Harfa",
+ "Reveal": "Otkrivanje",
+ "Bubble": "Mjehurić",
+ "Flute": "Flauta",
+ "Money": "Novac",
+ "Scifi": "Znanstvena fantastika",
+ "Clear": "Čisto",
+ "Elevator": "Dizalo",
+ "Guitar": "Gitara",
+ "Pop": "Pop",
+ "Time Sensitive (iOS Only)": "Vremenski osjetljivo (samo iOS)",
+ "From": "Od",
+ "Can be found on:": "Može se pronaći na: {0}",
+ "The phone number of the recipient in E.164 format.": "Telefonski broj primatelja u formatu E.164.",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "Ili identifikator pošiljatelja tekstualne poruke ili telefonski broj u formatu E.164 ako želite primati odgovore.",
+ "jsonQueryDescription": "Izvršite JSON upit nad primljenim odgovorom i provjerite očekivanu povratnu vrijednost. Koristite \"$\" za zahtjeve u kojima ne očekujete JSON odgovor. Povratna vrijednost će se za usporedbu pretvoriti u niz znakova (string). Pogledajte stranicu {0} za dokumentaciju o jeziku upita. Testno okruženje možete pronaći na {1}.",
+ "rabbitmqNodesRequired": "Postavite čvorove za ovaj Monitor.",
+ "rabbitmqNodesInvalid": "Koristite potpuni URL (onaj koji počinje s 'http') za RabbitMQ čvorove.",
+ "RabbitMQ Username": "RabbitMQ korisničko ime",
+ "RabbitMQ Password": "RabbitMQ lozinka",
+ "SendGrid API Key": "SendGrid API ključ",
+ "Separate multiple email addresses with commas": "Više adresa e-pošte potrebno je odvojiti zarezima",
+ "RabbitMQ Nodes": "RabbitMQ upravljački čvorovi",
+ "rabbitmqNodesDescription": "Unesite URL za upravljačke čvorove RabbitMQ uključujući protokol i port. Primjer: {0}",
+ "rabbitmqHelpText": "Za korištenje ovog Monitora morat ćete omogućiti dodatak \"Management Plugin\" u svom RabbitMQ-u. Za više informacija pogledajte {rabitmq_documentation}.",
+ "aboutSlackUsername": "Mijenja ime pošiljatelja vidljivo svima ostalima.",
+ "templateServiceName": "naziv servisa",
+ "telegramUseTemplate": "Koristi prilagođeni predložak poruke",
+ "telegramTemplateFormatDescription": "Telegram dozvoljava korištenje različitih markup jezika za formatiranje poruka, pogledajte {0} za više detalja.",
+ "YZJ Robot Token": "YZJ token robota",
+ "YZJ Webhook URL": "YZJ URL webhooka",
+ "templateHostnameOrURL": "domaćin ili URL",
+ "templateStatus": "status",
+ "telegramUseTemplateDescription": "Ako je omogućeno, poruka će biti poslana koristeći prilagođeni predložak.",
+ "Plain Text": "Obični tekst",
+ "Message Template": "Predložak poruke",
+ "Template Format": "Format predloška",
+ "wahaSession": "Sjednica",
+ "wahaChatId": "Identifikator razgovora (telefonski broj / ID kontakta / ID grupe)",
+ "wayToGetWahaApiUrl": "URL instance WAHA.",
+ "wayToGetWahaApiKey": "API ključ je vrijednost varijable okruženja WHATSAPP_API_KEY koju ste koristili za pokretanje servisa WAHA.",
+ "wayToGetWahaSession": "Iz ove sjednice WAHA šalje obavijesti na identifikator razgovora. Može se pronaći na WAHA nadzornoj ploči.",
+ "wayToWriteWahaChatId": "Telefonski broj s međunarodnim prefiksom, ali bez znaka plus na početku ({0}), identifikator kontakta ({1}) ili identifikator grupe ({2}). Obavijesti se šalju na ovaj identifikator chata iz WAHA sesije.",
+ "telegramServerUrl": "(Neobvezno) URL Poslužitelja",
+ "telegramServerUrlDescription": "Za ukidanje ograničenja API-ja za botove Telegrama ili dobivanje pristupa u blokiranim područjima (Kina, Iran, itd.). Za više informacija kliknite {0}. Zadano: {1}"
}
diff --git a/src/lang/hu.json b/src/lang/hu.json
index 6f2de8977..2eb829c68 100644
--- a/src/lang/hu.json
+++ b/src/lang/hu.json
@@ -9,7 +9,7 @@
"acceptedStatusCodesDescription": "Válassza ki az állapot kódokat amelyek sikeres válasznak fognak számítani.",
"passwordNotMatchMsg": "A megismételt jelszó nem egyezik.",
"notificationDescription": "Kérem, rendeljen egy értesítést a figyeléshez, hogy működjön.",
- "keywordDescription": "Kulcsszó keresése a HTML-ben vagy a JSON válaszban. (kis-nagybetű érzékeny)",
+ "keywordDescription": "Kulcsszó keresése a HTML-ben vagy a JSON válaszban. A keresés kis-nagybetű érzékeny.",
"pauseDashboardHome": "Szünetel",
"deleteMonitorMsg": "Biztos, hogy törölni akarja ezt a figyelőt?",
"deleteNotificationMsg": "Biztos, hogy törölni akarja ezt az értesítést az összes figyelőnél?",
@@ -37,7 +37,7 @@
"Check Update On GitHub": "Frissítések keresése a GitHub-on",
"List": "Lista",
"Add": "Hozzáadás",
- "Add New Monitor": "Új figyelő hozzáadása",
+ "Add New Monitor": "Új monitor hozzáadása",
"Quick Stats": "Gyors statisztikák",
"Up": "Működik",
"Down": "Leállt",
@@ -61,7 +61,7 @@
"-hour": "- óra",
"Response": "Válasz",
"Ping": "Ping",
- "Monitor Type": "Figyelő típusa",
+ "Monitor Type": "Monitor típusa",
"Keyword": "Kulcsszó",
"Friendly Name": "Rövid név",
"URL": "URL",
@@ -111,7 +111,7 @@
"Password": "Jelszó",
"Remember me": "Emlékezzen rám",
"Login": "Bejelentkezés",
- "No Monitors, please": "Nincs figyelő, kérem",
+ "No Monitors, please": "Nincsenek megfigyelők, kérem",
"add one": "adjon hozzá egyet",
"Notification Type": "Értesítés típusa",
"Email": "Email",
@@ -129,7 +129,7 @@
"respTime": "Válaszidő (ms)",
"notAvailableShort": "N/A",
"Default enabled": "Alapértelmezetten engedélyezett",
- "Apply on all existing monitors": "Alkalmazza az összes figyelőre",
+ "Apply on all existing monitors": "Alkalmazza az összes monitorra",
"Create": "Létrehozás",
"Clear Data": "Adatok törlése",
"Events": "Események",
@@ -174,7 +174,7 @@
"Avg. Response": "Átl. válasz",
"Entry Page": "Nyitólap",
"statusPageNothing": "Semmi nincs itt. Adjon hozzá egy vagy több figyelőt.",
- "No Services": "Nincs szolgáltatás",
+ "No Services": "Nincsenek szolgáltatások",
"All Systems Operational": "Minden rendszer működik",
"Partially Degraded Service": "Részlegesen leállt szolgáltatás",
"Degraded Service": "Leállt szolgáltatás",
@@ -259,8 +259,8 @@
"pushoverDesc1": "A vészhelyzeti prioritásnak (2) 30 másodperc az újrapróbálkozási alapértéke és egy óra után lejár.",
"pushoverDesc2": "Ha különböző eszközökre szeretne értesítést küldeni, töltse ki az Eszköz mezőt.",
"SMS Type": "SMS típusa",
- "octopushTypePremium": "Premium (Fast - recommended for alerting)",
- "octopushTypeLowCost": "Low Cost (Slow - sometimes blocked by operator)",
+ "octopushTypePremium": "Prémium (Gyors - riasztáshoz ajánlott)",
+ "octopushTypeLowCost": "Alacsony költség (lassú - néha az üzemeltető blokkolja)",
"checkPrice": "Ellenőrizze {0} árat:",
"apiCredentials": "API kulcsok",
"octopushLegacyHint": "Az Octopush régi (2011-2020) verzióját használod vagy az újat?",
@@ -343,13 +343,12 @@
"Description": "Leírás",
"No monitors available.": "Nincs még figyelő beállítva.",
"Add one": "Adjon hozzá egyet",
- "No Monitors": "Nincs figyelő",
+ "No Monitors": "Nincsenek megfigyelők",
"Untitled Group": "Névtelen csoport",
"Services": "Szolgáltatások",
"Discard": "Elvet",
"Cancel": "Mégsem",
"Powered by": "A megoldást szállítja az",
- "shrinkDatabaseDescription": "VACUUM futtatása az SQLite-on. Ha az adatbázisod 1.10.0-nál újabb, akkor az AUTO_VACUUM engedélyezve van, nincs szükség a műveletre.",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "API felhasználónév (webapi_ előtaggal együtt)",
"serwersmsAPIPassword": "API jelszó",
@@ -447,7 +446,7 @@
"Next": "Következő",
"The slug is already taken. Please choose another slug.": "Ez a slug már használatban van. Kérlek válassz másikat.",
"No Proxy": "Nincs Proxy",
- "HTTP Basic Auth": "HTTP Basic Auth",
+ "HTTP Basic Auth": "HTTP Alap Hitelesítés",
"New Status Page": "Új Állapot Oldal",
"Page Not Found": "Oldal Nem Található",
"Reverse Proxy": "Reverse Proxy",
@@ -520,9 +519,9 @@
"wayToGetKookGuildID": "Válts át 'Developer Mode'-ra a Kook beállításoknál majd jobb klikkelve a guildra megtalálod az ID-jét",
"Resend Notification if Down X times consecutively": "Értesítés Újraküldése ha X-szer nem válaszol",
"Authentication": "Hitelesítés",
- "Passive Monitor Type": "Passzív megfigyelési típus",
- "General Monitor Type": "Általános figyelő típus",
- "Specific Monitor Type": "Specifikus megfigyelési típus",
+ "Passive Monitor Type": "Passzív monitor típus",
+ "General Monitor Type": "Általános monitor típus",
+ "Specific Monitor Type": "Specifikus monitor típus",
"Reconnecting...": "Újracsatlakozás...",
"Saved.": "Elmentve.",
"authUserInactiveOrDeleted": "A felhasználó inaktív vagy nem létezik.",
@@ -543,7 +542,7 @@
"chromeExecutableAutoDetect": "Automatikus felismerés",
"emailTemplateStatus": "Státusz",
"deleteMaintenanceMsg": "Biztosan törölni szeretné ezt a karbantartást?",
- "apiKeyAddedMsg": "Az ön API kulcsa létrejött. Kérjük jegyezze fel, mert nem lesz a felületen elérhető.",
+ "apiKeyAddedMsg": "Az ön API kulcsa létrejött. Kérjük jegyezze fel, mert nem lesz a felületen elérhető a jövőben!",
"Expires": "Lejár",
"disableAPIKeyMsg": "Biztosan le fel szeretné függeszteni ezt az API kulcsot?",
"Key Added": "Kulcs létrehozva",
@@ -605,7 +604,7 @@
"filterActivePaused": "Szünetel",
"Add New Tag": "Új címke hozzáadása",
"webhookBodyCustomOption": "Egyedi törzs",
- "Search monitored sites": "Megfigyelt oldalak keresése",
+ "Search monitored sites": "Monitorozott oldalak keresése",
"templateMsg": "az értesítés üzenete",
"templateHeartbeatJSON": "a szívverést leíró objektum",
"templateMonitorJSON": "a monitort leíró objektum",
@@ -632,7 +631,7 @@
"Connection String": "Csatlakozási karakterlánc",
"statusPageSpecialSlugDesc": "Speciális slug {0}: ez az oldal akkor jelenik meg, ha nincs slug megadva",
"certificationExpiryDescription": "A HTTPS-monitorok értesítést váltanak ki, ha a TLS-tanúsítvány lejár:",
- "Setup Docker Host": "Docker hoszt beállítása",
+ "Setup Docker Host": "Docker Gazda beállítása",
"Connection Type": "Csatlakozás Típusa",
"Docker Daemon": "Docker Daemon",
"deleteDockerHostMsg": "Biztos, hogy törölni akarod ezt a docker hostot az összes monitorról?",
@@ -642,7 +641,7 @@
"Docker Hosts": "Docket Hosztok",
"Domain": "Domain",
"Docker Host": "Docket Hoszt",
- "noDockerHostMsg": "Nem elérhető. Először állíts be egy Docker Hosztot.",
+ "noDockerHostMsg": "Nem elérhető. Először állítson be egy Docker Gazdát.",
"DockerHostRequired": "Kérlek állítsd be a Docker Hosztot ehhez a monitorhoz.",
"tailscalePingWarning": "A Tailscale Ping monitor használatához telepítenie kell az Uptime Kuma-t Docker nélkül, és telepíteni kell a Tailscale klienst is a szerverre.",
"Workstation": "Munkaállomás",
@@ -674,7 +673,7 @@
"wayToGetZohoCliqURL": "Megtudhatja, hogy hogyan hozz létre egy webhook URL-címet {0}.",
"chromeExecutableDescription": "A Docker-felhasználók számára, ha a Chromium még nincs telepítve, a telepítés és a teszteredmény megjelenítése néhány percet vehet igénybe. 1 GB lemezterületet foglal.",
"loadingError": "Nem sikerült lekérni az adatokat, kérjük, próbálja meg később újra.",
- "cloneOf": "{0} klónja",
+ "cloneOf": "{0} duplikációja",
"dataRetentionTimeError": "A megőrzési időszaknak 0-nak vagy annál nagyobbnak kell lennie",
"infiniteRetention": "Végtelen visszatartás esetén állítsa 0-ra.",
"confirmDeleteTagMsg": "Biztos, hogy törölni szeretné ezt a címkét? Az ehhez a címkéhez tartozó monitorok nem kerülnek törlésre.",
@@ -736,7 +735,7 @@
"RadiusSecretDescription": "Megosztott titok az ügyfél és a szerver között",
"RadiusCalledStationId": "Hívott állomás azonosítója",
"Date and Time": "Dátum és idő",
- "enableNSCD": "Az NSCD (Name Service Cache Daemon) engedélyezése az összes DNS-kérés gyorsítótárba helyezéséhez",
+ "enableNSCD": "Az NSCD (Name Service Cache Daemon) engedélyezése az összes DNS-kérés gyorsítótárazásához.",
"Edit Maintenance": "Karbantartás szerkesztése",
"smseagleGroup": "Telefonkönyv csoport neve(i)",
"styleElapsedTime": "Az eltelt idő a heartbeat sáv alatt",
@@ -752,7 +751,7 @@
"Automations can optionally be triggered in Home Assistant:": "Az automatizálás opcionálisan elindítható a Home Assistantban:",
"Event type:": "Esemény típusa:",
"Topic": "Téma",
- "WeCom Bot Key": "WeCom Bot Key",
+ "WeCom Bot Key": "WeCom Bot Kulcs",
"Setup Proxy": "Proxy beállítása",
"Proxy Protocol": "Proxy Protokol",
"Proxy Server": "Proxy szerver",
@@ -763,7 +762,7 @@
"smseagleUrl": "Az Ön SMSEagle eszközének URL címe",
"smseagleEncoding": "Unicode-ként küldés",
"smseaglePriority": "Üzenet prioritása (0-9, alapértelmezett = 0)",
- "Recipient Number": "Recipient Number",
+ "Recipient Number": "Fogadó telefonszáma",
"From Name/Number": "A névtől/számtól",
"Leave blank to use a shared sender number.": "Hagyd üresen, ha megosztott feladószámot szeretnél használni.",
"Octopush API Version": "Octopush API verzió",
@@ -773,5 +772,332 @@
"SecretAccessKey": "Titkos Hozzáférési Kulcs",
"Invert Keyword": "Kulcsszó invertálása",
"or": "vagy",
- "For safety, must use secret key": "Biztonsági okoból kötelező a titkos kulcs használata"
+ "For safety, must use secret key": "Biztonsági okoból kötelező a titkos kulcs használata",
+ "emailCustomisableContent": "Testreszabható tartalom",
+ "leave blank for default subject": "hagyja üresen az alapértelmezett email tárgyát",
+ "smtpLiquidIntroduction": "A következő két mező a Liquid sablonozási nyelven keresztül szerkeszthető. Kérjük, olvassa el a következőt: {0} a használati utasításokért. Ezek az elérhető változók:",
+ "Learn More": "Tudjon meg többet",
+ "Notify Channel": "Csatorna értesítése",
+ "install": "Telepítés",
+ "installing": "Telepítés",
+ "grpcMethodDescription": "A metódus neve camelCase formátumba konvertálva, például sayHello, check stb.",
+ "Custom Monitor Type": "Egyedi monitor típus",
+ "uninstall": "Eltávolítás",
+ "confirmUninstallPlugin": "Biztosan eltávolítja ezt a bővítményt?",
+ "notificationRegional": "Regionális",
+ "uninstalling": "Eltávolítás",
+ "Clone Monitor": "Monitor Duplikálása",
+ "Clone": "Duplikáció",
+ "emailCustomBody": "Egyedi email törzs",
+ "leave blank for default body": "hagyja üresen az alapértelmezett email törzsét",
+ "emailTemplateServiceName": "Szolgáltatás neve",
+ "emailTemplateHostnameOrURL": "Hosztnév vagy URL",
+ "emailTemplateMonitorJSON": "a monitort leíró objektum",
+ "emailTemplateHeartbeatJSON": "a szívverést leíró objektum",
+ "emailTemplateMsg": "az értesítés üzenete",
+ "emailTemplateLimitedToUpDownNotification": "csak FEL/LE szívverés esetén érhető el, egyébként null érték",
+ "pushoverMessageTtl": "TTL üzenet (másodperc)",
+ "Platform": "Platform",
+ "aboutNotifyChannel": "A Csatorna értesítése opció, értesítést fog küldeni a csatorna összes tagjának, függetlenül a tagok elérhetőségétől.",
+ "setup a new monitor group": "állítson be egy új monitorcsoportot",
+ "openModalTo": "felugró ablak megnyitása ide: {0}",
+ "Add a domain": "Adjon hozzá egy domaint",
+ "Server URL should not contain the nfty topic": "A szerver URL-je nem tartalmazhatja az nfty témát",
+ "PushDeer Server": "PushDeer Szerver",
+ "pushDeerServerDescription": "Hagyja üresen a hivatalos szerver használatához",
+ "Edit Tag": "Címke szerkesztése",
+ "plugin": "Bővítmény | Bővítmények",
+ "Expiry date": "Lejárati dátum",
+ "pagertreeDoNothing": "Ne csináljon semmit",
+ "ntfyUsernameAndPassword": "Felhasználónév és jelszó",
+ "Body Encoding": "Törzs kódolás",
+ "API Keys": "API Kulcsok",
+ "Expiry": "Lejár",
+ "Don't expire": "Nem jár le",
+ "Add Another": "Másik hozzáadása",
+ "twilioApiKey": "API-kulcs (opcionális)",
+ "Monitor Setting": "{0} monitor beállítása",
+ "pagertreeResolve": "Automatikus megoldás",
+ "wayToGetPagerTreeIntegrationURL": "Miután létrehozta az Uptime Kuma integrációt a PagerTree-ben, másolja át a végpontot. A részletek megtekintése {0}",
+ "lunaseaTarget": "Cél",
+ "ntfyPriorityHelptextAllEvents": "Minden esemény maximális prioritással került elküldésre",
+ "ntfyPriorityHelptextAllExceptDown": "Minden esemény ezzel a prioritással került elküldésre, kivéve a {0} események, amelyek prioritása {1}",
+ "twilioAccountSID": "Fiók SID",
+ "Mechanism": "Mechanizmus",
+ "No API Keys": "Nincsenek API kulcsok",
+ "Monitor Group": "Monitor csoport",
+ "ntfyAuthenticationMethod": "Hitelesítési metódus",
+ "Host URL": "Gazda URL",
+ "Select message type": "Válasszon üzenet típust",
+ "Send to channel": "Küldés erre a csatornára",
+ "Create new forum post": "Új fórum üzenet készítése",
+ "Refresh Interval Description": "Az állapot megfigyelő {0} másodpercenként teljesen újra frissíti a weboldalt",
+ "Refresh Interval": "Frissítési intervallum",
+ "postToExistingThread": "Létező szál / fórum -ra küldés",
+ "forumPostName": "Fórum üzenet neve",
+ "threadForumPostID": "Szál / Fórum üzenet ID",
+ "e.g. {discordThreadID}": "például. {discordThreadID}",
+ "locally configured mail transfer agent": "helyileg beállított email továbbító",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Adja meg a csatlakoztatni kívánt szerver gazdagép nevét vagy {localhost} ha a {local_mta}-t szeretné használni",
+ "ignoreTLSErrorGeneral": "Mellőzze a TLS/SSL hibákat a csatlakozáshoz",
+ "threemaRecipientTypeIdentityFormat": "8 karakter",
+ "threemaRecipientTypeEmail": "Email cím",
+ "threemaSenderIdentity": "Gateway-azonosító",
+ "threemaRecipientTypeIdentity": "Threema-azonosító",
+ "threemaSenderIdentityFormat": "8 karakter, általában *-al kezdődik",
+ "threemaRecipientTypePhone": "Telefonszám",
+ "max 15 digits": "max 15 karakter",
+ "cellsyntDestination": "A címzett telefonszáma nemzetközi formátumban megadva. A kezdő 00-t követően az országkód, pl. 003612127654 egy magyarországi 0612127654 szám esetében (max 17 karakter összesen). HTTP lekérdezésenként max 25000, vesszővel elválaszott címzett.",
+ "Telephone number": "Telefonszám",
+ "Allow Long SMS": "Hosszú SMS engedélyezve",
+ "now": "most",
+ "Channel access token (Long-lived)": "Csatorna-hozzáférési token (Hosszú-élettartamú)",
+ "Mentioning": "Megemlítés",
+ "Don't mention people": "Ne említsen embereket",
+ "aboutSlackUsername": "Megváltoztatja az üzenet feladójának megjelenített nevét. Ha valakit meg akar említeni, helyette írja be a barátságos névbe.",
+ "smspartnerApiurl": "Az API-kulcsot az irányítópulton találja {0}",
+ "smspartnerPhoneNumberHelptext": "A számnak nemzetközi formátumúnak kell lennie {0}, {1}. Több szám elválasztása esetén jelölje {2}",
+ "toastSuccessTimeout": "Sikerértesítések időkorlátja",
+ "and": "és",
+ "Your User ID": "Felhasználói azonosítód",
+ "Mention group": "Említ {csoport}",
+ "smspartnerPhoneNumber": "Telefonszám(ok)",
+ "smspartnerSenderName": "SMS feladó neve",
+ "Generate": "Generálás",
+ "pagertreeIntegrationUrl": "Integrációs URL",
+ "pagertreeUrgency": "Sürgősség",
+ "pagertreeSilent": "Csendes",
+ "pagertreeLow": "Alacsony",
+ "pagertreeMedium": "Közepes",
+ "pagertreeCritical": "Kritikus",
+ "twilioAuthToken": "Hitelesítési Token / API Kulcs",
+ "Show Clickable Link": "Kattintható link megjelenítése",
+ "Group": "Csoport",
+ "monitorToastMessagesLabel": "Toast értesítések figyelése",
+ "toastErrorTimeout": "Hibaértesítések időkorlátja",
+ "Json Query Expression": "Json lekérdezés",
+ "ignoredTLSError": "TLS/SSL hibák figyelmen kívül hagyva",
+ "time ago": "előtt",
+ "-year": "- év",
+ "deleteAPIKeyMsg": "Biztosan törölni szeretné ezt az API kulcsot?",
+ "RabbitMQ Nodes": "RabbitMQ menedszer csomópontok",
+ "jsonQueryDescription": "Végezzen JSON-lekérdezést a válasz alapján, és ellenőrizze a várt értéket (a visszatérési értéket a rendszer karakterlánccá alakítja az összehasonlításhoz). Nézze meg a {0} webhelyet a lekérdezés paramétereivel kapcsolatos dokumentációért. A test környezet itt található: {1}.",
+ "Authorization Identity": "Jogosultság Identitás",
+ "noGroupMonitorMsg": "Nem lehetséges. Először létre kell hozni egy monitorozandó csoportot.",
+ "wayToGetFlashDutyKey": "Menjen a Csatorna -> (Csatorna kiválasztása) -> Integrációk -> Új integráció hozzáadása oldalra, adjon hozzá egy 'Uptime Kuma' push címet, másolja az Integrációs kulcsot a címbe. További információkért kérjük, látogasson el a",
+ "gamedigGuessPortDescription": "A Valve Server Query Protocol által használt port eltérhet az kliens portjától. Próbáld ki ezt, ha a monitor nem tud csatlakozni a kiszolgálóhoz.",
+ "remoteBrowsersDescription": "A távoli böngészők a Chromium helyi futtatásának alternatívája. Állítsa be egy olyan szolgáltatással, mint a browserless.io, vagy csatlakozzon a sajátjával",
+ "mongodbCommandDescription": "Egy utasítás futtatásának kérése a MongoDB adatbázishoz. A rendelkezésre álló parancsokról a {documentation}",
+ "receiverInfoSevenIO": "Ha a fogadó szám nem Németországban van, akkor a szám elé kell írni az országkódot (pl. az USA-ból érkező 1-es országkódhoz a 017612121212 helyett a 117612121212 címet kell használni)",
+ "conditionAddGroup": "Csoport hozzáadása",
+ "less than or equal to": "kisebb vagy egyenlő, mint",
+ "Alphanumerical string and hyphens only": "Csak alfanumerikus karakterlánc és kötőjelek",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "Időérzékeny értesítések azonnal kézbesítve lesznek, még akkor is ha az eszköz ne zavarjanak üzemmódban van.",
+ "successEnabled": "Sikeresen engedélyezve.",
+ "smspartnerSenderNameInfo": "3..=11 általános karakternek kell lennie",
+ "Show Clickable Link Description": "Ha be van jelölve, mindenkinek akinek hozzáférése van ehhez a státusz oldalhoz, hozzáférése van a monitor URL-hez is.",
+ "Enter the list of brokers": "Adja meg a brókerek listáját",
+ "Press Enter to add broker": "Bróker hozzáadásához nyomja meg az ENTER billentyűt",
+ "Enable Kafka SSL": "Kafka SSL engedélyezése",
+ "Enable Kafka Producer Auto Topic Creation": "Kafka Producer automatikus téma létrehozásának engedélyezése",
+ "Kafka Producer Message": "Kafka Producer üzenet",
+ "Kafka SASL Options": "Kafka SASL opciók",
+ "Pick a SASL Mechanism...": "Válassz egy SASL mechanizmus-t…",
+ "AccessKey Id": "Hozzáférési Kulcs ID",
+ "Secret AccessKey": "Titkos Hozzáférési Kulcs",
+ "Session Token": "Munkamenet-azonosító",
+ "nostrRelaysHelp": "Soronként egy közvetítő URL",
+ "nostrSender": "Küldő privát kulcsa (nsec)",
+ "nostrRecipients": "Címzettek nyilvános kulcsai (npub)",
+ "nostrRecipientsHelp": "npub formátum, soronként egy",
+ "showCertificateExpiry": "Tanúsítvány lejáratának megjelenítése",
+ "cacheBusterParam": "Adja hozzá a {0} paramétert",
+ "cacheBusterParamDescription": "Véletlenszerűen generált paraméter a gyorsítótárak kihagyásához.",
+ "Message format": "Üzenet formátuma",
+ "Send rich messages": "RCS üzenetek küldése",
+ "wayToGetBitrix24Webhook": "Webhookot a következő lépésekkel hozhat létre {0}",
+ "nostrRelays": "Nostr közvetítők",
+ "bitrix24SupportUserID": "Adja meg felhasználói azonosítóját a Bitrix24-ben. Az azonosítót a felhasználó profiljába lépve a linkről tudhatja meg.",
+ "authInvalidToken": "Érvénytelen token.",
+ "2faEnabled": "Kétlépcsős azonosítás engedélyezve.",
+ "successDisabled": "Sikeresen letiltva.",
+ "Remote Browsers": "Távoli böngészők",
+ "Remote Browser": "Távoli böngésző",
+ "Add a Remote Browser": "Távoli böngésző hozzáadása",
+ "Remote Browser not found!": "Távoli böngésző nem található!",
+ "self-hosted container": "Helyi futtatású konténer",
+ "useRemoteBrowser": "Távoli böngésző használata",
+ "deleteRemoteBrowserMessage": "Biztos-e Ön benne, hogy törölni akarja ezt a távoli böngészőt az összes monitorozandó számára?",
+ "GrafanaOncallUrl": "Grafana Hívás URL",
+ "Browser Screenshot": "Böngésző képernyőkép",
+ "Command": "Utasítás",
+ "wayToGetSevenIOApiKey": "Látogasson el a műszerfalra az app.seven.io > developer > api key > a zöld hozzáadás gombra",
+ "senderSevenIO": "Szám vagy név küldése",
+ "receiverSevenIO": "Fogadó telefonszáma",
+ "apiKeySevenIO": "SevenIO API kulcs",
+ "wayToWriteWhapiRecipient": "A telefonszám a nemzetközi előtaggal, de az elején lévő pluszjel nélkül ({0}), a kapcsolattartó azonosítója ({1}) vagy a csoport azonosítója ({2}).",
+ "Separate multiple email addresses with commas": "Több e-mail cím elválasztása vesszővel",
+ "conditionDeleteGroup": "Csoport törlése",
+ "conditionValuePlaceholder": "Érték",
+ "equals": "egyenlő",
+ "not equals": "nem egyenlő",
+ "contains": "tartalmaz",
+ "not contains": "nem tartalmaz",
+ "ends with": "végződik a",
+ "not ends with": "nem végződik a",
+ "greater than": "nagyobb, mint",
+ "less than": "kisebb, mint",
+ "greater than or equal to": "nagyobb vagy egyenlő, mint",
+ "record": "sor",
+ "Notification Channel": "Értesítési csatorna",
+ "Sound": "Hang",
+ "Arcade": "Árkád",
+ "Correct": "Helyes",
+ "Harp": "Hárfa",
+ "Reveal": "Felfed",
+ "Bubble": "Buborék",
+ "Doorbell": "Ajtócsengő",
+ "Flute": "Fuvola",
+ "Money": "Pénz",
+ "Scifi": "Tudományos-fantasztikus",
+ "Clear": "Törlés",
+ "Elevator": "Felvonó",
+ "Guitar": "Gitár",
+ "Time Sensitive (iOS Only)": "Időérzékeny (Csak iOS)",
+ "From": "Tól",
+ "Can be found on:": "Megtalálható: {0}",
+ "The phone number of the recipient in E.164 format.": "A címzett telefonszáma E.164-es formában.",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "Vagy egy feladó azonosító, vagy egy telefonszám E.164 formátumban kell lennie, ha válaszokat szeretne fogadni.",
+ "RabbitMQ Username": "RabbitMQ felhaszálónév",
+ "RabbitMQ Password": "RabbitMQ jelszó",
+ "SendGrid API Key": "SendGrid API kulcs",
+ "pagertreeHigh": "Magas",
+ "noOrBadCertificate": "Nincs/rossz tanúsítvány",
+ "whatHappensAtForumPost": "Új fórumbejegyzés létrehozása. NEM küldi el a meglévő hozzászólásokhoz. Meglévő hozzászólásokhoz az \"{option}\" használatával lehet hozzászólni",
+ "snmpCommunityStringHelptext": "Ez a karakterlánc jelszóként szolgál az SNMP-kompatibilis eszközök hitelesítésére és a hozzáférés ellenőrzésére. Egyeztesse az SNMP-eszköz konfigurációjával.",
+ "snmpOIDHelptext": "Adja meg a megfigyelni kívánt érzékelő vagy állapot OID azonosítóját. Ha nem biztos az OID-ben, használjon hálózatirányítási eszközöket, például MIB-böngészőket vagy SNMP-szoftvereket.",
+ "privateOnesenderDesc": "Győződjön meg róla, hogy a telefonszám érvényes. Üzenet küldése privát telefonszámra, például: 628123456789",
+ "Authorization Header": "Hitelesítési Fejléc",
+ "wayToGetDiscordThreadId": "Szál / fórum bejegyzés ID lekérése hasonló, a csatorna ID lekéréséhez. Itt olvashatsz tovább az ID-k lekérésől{0}",
+ "Badge Type": "Jelvény típusa",
+ "Badge Duration (in hours)": "Jelvény Időtartam (órákban)",
+ "Badge Label": "Jelvény Címke",
+ "Badge Prefix": "Jelvény Érték Előtag",
+ "Badge Suffix": "Jelvény Érték Utótag",
+ "Badge Label Color": "Jelvény Címke Szín",
+ "Badge Color": "Jelvény Szín",
+ "Badge Label Prefix": "Jelvény Címke Előtag",
+ "Badge Preview": "Jelvény Előnézet",
+ "Badge Label Suffix": "Jelvény Címke Utótag",
+ "Badge Up Color": "Jelvény Online Szín",
+ "Badge Down Color": "Jelvény Offline Szín",
+ "Badge Pending Color": "Jelvény Folyamatban Levő Szín",
+ "Badge Maintenance Color": "Jelvény Karbantartás Szín",
+ "Badge Warn Color": "Jelvény Figyelmeztetés Szín",
+ "Badge Warn Days": "Jelvény Figyelmeztetés Napok",
+ "Badge Down Days": "Jelvény Offline Napok",
+ "Badge value (For Testing only.)": "Jelvény érték (Csak tesztelés számára.)",
+ "Badge URL": "Jelvény URL",
+ "Kafka Brokers": "Kafka brókerek",
+ "Kafka Topic Name": "Kafka Téma Név",
+ "wayToGetWhapiUrlAndToken": "Az API URL-t és a tokent lekérheted a kívánt csatornára belépve a {0}",
+ "API URL": "API URL",
+ "What is a Remote Browser?": "Mi az a távol böngésző?",
+ "gtxMessagingApiKeyHint": "Az API kulcsokat megtalálhatod: Útvonalválasztási fiókom > Fiók megtekintése > API hitelesítőadatok > REST API (v2.x)",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "Telefonszámból / Átviteli útvonal kiindulási címe (TPOA)",
+ "gtxMessagingFromHint": "Mobiltelefonokon a címzettek az üzenet feladójaként a TPOA-t látják. Legfeljebb 11 alfanumerikus karakter, egy rövidkód, a helyi hosszúkód vagy nemzetközi számok ({e164}, {e212} vagy {e214}) engedélyezettek",
+ "To Phone Number": "Telefonszámmá",
+ "gtxMessagingToHint": "Nemzetközi formátum, vezető \"+\" jel és ({e164}, {e212} vagy {e214})",
+ "Alphanumeric (recommended)": "Alfanumerikus (ajánlott)",
+ "cellsyntOriginatortypeAlphanumeric": "Alfanumerikus karakterlánc (legfeljebb 11 alfanumerikus karakter). A címzettek nem tudnak válaszolni az üzenetre.",
+ "Originator": "Kezdeményező",
+ "cellsyntOriginator": "Látható a címzett mobiltelefonján az üzenet küldőjeként. A megengedett értékek és a funkció az kezdeményező-típus(originatortype) paramétertől függ.",
+ "Destination": "Cél",
+ "cellsyntSplitLongMessages": "Hosszú üzenetek tördelése legfeljebb 6 részre. 153 x 6 = 918 karakter.",
+ "max 11 alphanumeric characters": "legfeljebb 11 alfanumerikus karakter",
+ "Community String": "Közösségi Karakterlánc",
+ "OID (Object Identifier)": "OID (Objektum azonosító)",
+ "Condition": "Feltétel",
+ "SNMP Version": "SNMP Verzió",
+ "Please enter a valid OID.": "Kérem adjon meg egy helyes OID-t.",
+ "wayToGetThreemaGateway": "Regisztrálhat a Threema Gatewayre {0}.",
+ "threemaRecipient": "Címzett",
+ "threemaRecipientTypePhoneFormat": "E.164, vezető \"+\" nélkül",
+ "threemaApiAuthenticationSecret": "Gateway-ID Kulcs",
+ "threemaBasicModeInfo": "Megjegyzés: Ez az integráció a Threema Gateway-t alapmódban használja (szerver alapú titkosítás). További részletek {0} találhatók.",
+ "apiKeysDisabledMsg": "Az API-kulcsok le vannak tiltva, mivel a hitelesítés le van tiltva.",
+ "Host Onesender": "Onesender futtató gép",
+ "Token Onesender": "Onesender Token",
+ "Recipient Type": "Címzett Típusa",
+ "Private Number": "Privát Telefonszám",
+ "groupOnesenderDesc": "Győződjön meg róla, hogy a GroupID érvényes. Üzenet küldése a csoportba, például: 628123456789-342345",
+ "Group ID": "Group ID",
+ "wayToGetOnesenderUrlandToken": "Az URL-t és a Tokent az Onesender weboldalán keresztül kaphatja meg. További információ {0}",
+ "Add Remote Browser": "Távoli böngésző hozzáadása",
+ "New Group": "Új csoport",
+ "Group Name": "Csoport név",
+ "OAuth2: Client Credentials": "OAuth2: Ügyfél hitelesítő adatok",
+ "Authentication Method": "Hitelesítési metódus",
+ "Form Data Body": "Adat törzsből",
+ "OAuth Token URL": "OAuth Token URL",
+ "Client ID": "Ügyfél Azonosító",
+ "Client Secret": "Ügyfél Kulcs",
+ "OAuth Scope": "OAuth hatókör",
+ "Badge Style": "Jelvény Stílus",
+ "whapiRecipient": "Telefonszám / Kontakt ID / Csoport ID",
+ "documentationOf": "{0} Dokumentáció",
+ "threemaRecipientType": "Címzett Típusa",
+ "rabbitmqNodesRequired": "Állítsa be a csomópontokat ehhez a figyelőhöz.",
+ "rabbitmqNodesDescription": "Adja meg a RabbitMQ menedszer csomópontok URL-jét beleértve a protokollt és a port számát is. Példa: {0}",
+ "shrinkDatabaseDescriptionSqlite": "SQLite adatbázis {vacuum} indítása. Az {auto_vacuum} már engedélyezve van, de ez nem defragmentálja az adatbázist, és nem csomagolja újra az egyes adatbázisoldalakat, ahogyan a {vacuum} parancs teszi.",
+ "invertKeywordDescription": "Keresse meg, hogy a kulcsszó inkább hiányzik-e, mint jelen van.",
+ "No tags found.": "Nem található címkék.",
+ "twilioToNumber": "Címzett szám",
+ "twilioFromNumber": "Feladó szám",
+ "Open Badge Generator": "Nyílt jelvény generátor",
+ "Badge Generator": "{0} jelvény generátora",
+ "monitorToastMessagesDescription": "A figyelőktől érkező Toast értesítések eltűnnek megadott másodpercen belül. Eltűnés kikapcsolásához állítsd \"-1\"-re. Toast értesítések kikapcsolásához pedig \"0\"-ra.",
+ "gamedigGuessPort": "Gamedig: Port",
+ "remoteBrowserToggle": "Alapértelmezetten Chromium böngésző fut az Uptime Kuma konténerben. Távoli böngésző használatához aktiválja a kapcsolót.",
+ "callMeBotGet": "Itt létre tud hozni egy végpontot {0}, {1} és {2} számára. Tartsa észben, lehet le lesz korlátozva. A korlátozások a következők: {3}",
+ "Originator type": "A kezdeményező típusa",
+ "cellsyntOriginatortypeNumeric": "Numerikus érték (legfeljebb 15 számjegy) nemzetközi formátumú telefonszámmal, 00 előtag nélkül (például a 06-20-534-6789 magyar számot 36205346789-ként kell beállítani). A címzettek válaszolhatnak az üzenetre.",
+ "Optional: Space separated list of scopes": "Opcionális: A hatókörök (scopes) listája szóközzel elválasztva",
+ "Go back to home page.": "Vissza a fő oldalra.",
+ "Lost connection to the socket server.": "Kapcsolat megszakadt a socket szerverrel.",
+ "Cannot connect to the socket server.": "Nem képes kapcsolódni a socket szerverhez.",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "SIGNL4 Webhook URL",
+ "Conditions": "Feltételek",
+ "conditionAdd": "Feltétel hozzáadása",
+ "conditionDelete": "Feltétel törlése",
+ "signl4Docs": "A SIGNL4 konfigurálásával és a SIGNL4 webhook URL-címének beszerzésével kapcsolatos további információkat itt talál: {0}.",
+ "starts with": "kezdődik",
+ "not starts with": "nem kezdődik",
+ "Custom sound to override default notification sound": "Eredeti értesítési hang felülírása egyedi hanggal",
+ "rabbitmqNodesInvalid": "Kérjük, használjon teljesen minősített (\"http\"-vel kezdődő) URL-t a RabbitMQ csomópontokhoz.",
+ "rabbitmqHelpText": "Figyelő használatához, engedélyeznie kell a Management Plugin-t a RabbitMQ beállításai között. További információért, tekintse meg {rabitmq_documentation} dokumentumot.",
+ "Fail": "Hiba",
+ "Pop": "Megjelen",
+ "Bitrix24 Webhook URL": "Bitrix24 Webhook URL",
+ "wayToGetHeiiOnCallDetails": "A Trigger ID és az API kulcsok megszerzésének módja a {dokumentáció}",
+ "telegramServerUrl": "(Választható) Szerver Url",
+ "telegramServerUrlDescription": "A Telegram bot api korlátozásainak feloldása vagy hozzáférés a blokkolt területekhez (Kína, Irán stb.). További információért kattintson a {0} gombra. Alapértelmezett: {1}",
+ "wahaSession": "Munkamenet",
+ "wahaChatId": "Beszélgetés azonosító (Telefonszám / Kontakt azonosító / Csoport azonosító)",
+ "wayToGetWahaApiUrl": "WAHA példányod URL-je.",
+ "wayToGetWahaApiKey": "Az API-kulcs a WHATSAPP_API_KEY környezeti változó értéke, amelyet a WAHA futtatásához használt.",
+ "wayToWriteWahaChatId": "A telefonszám nemzetközi előtaggal, de az elején lévő pluszjel ({0}), a kapcsolattartó azonosítója ({1}) vagy a csoportazonosító ({2}) nélkül. A WAHA Session értesítéseket küld erre a beszélgetési azonosítóra.",
+ "Plain Text": "Sima Szöveg",
+ "Message Template": "Üzenet Sablon",
+ "Template Format": "Sablon Formátum",
+ "wayToGetWahaSession": "A munkamenetből WAHA küld egy értesítést a Beszélgetés azonosítóra. Az értesítést megtalálhatod a WAHA műszerfalon.",
+ "YZJ Webhook URL": "YZJ Webhook URL",
+ "YZJ Robot Token": "YZJ Robot token",
+ "templateServiceName": "szolgáltatás név",
+ "templateHostnameOrURL": "kiszolgáló név vagy URL",
+ "templateStatus": "státusz",
+ "telegramUseTemplate": "Egyéni üzenetsablon használata",
+ "telegramUseTemplateDescription": "Ha engedélyezve van, az üzenet egy egyéni sablon szerint lesz elküldve.",
+ "telegramTemplateFormatDescription": "Telegram különböző jelölőnyelvek használatát engedi, további információkért lásd {0}."
}
diff --git a/src/lang/id-ID.json b/src/lang/id-ID.json
index 6af8b3e14..d2a3245bd 100644
--- a/src/lang/id-ID.json
+++ b/src/lang/id-ID.json
@@ -4,15 +4,15 @@
"retryCheckEverySecond": "Coba lagi setiap {0} detik",
"resendEveryXTimes": "Kirim ulang setiap {0} kali",
"resendDisabled": "Kirim ulang dinonaktifkan",
- "retriesDescription": "Percobaan ulang maksimum sebelum layanan dinyatakan tidak aktif dan notifikasi dikirim",
+ "retriesDescription": "Percobaan ulang maksimum sebelum layanan ditandai sebagai tidak aktif dan pemberitahuan dikirim",
"ignoreTLSError": "Abaikan kesalahan TLS/SSL untuk situs web HTTPS",
- "upsideDownModeDescription": "Balikkan statusnya. Jika layanan dapat dijangkau, TIDAK AKTIF.",
- "maxRedirectDescription": "Jumlah maksimum pengalihan untuk diikuti. Setel ke 0 untuk menonaktifkan pengalihan.",
+ "upsideDownModeDescription": "Balikkan status menjadi terbalik. Jika layanan dapat dijangkau, statusnya adalah TIDAK AKTIF.",
+ "maxRedirectDescription": "Jumlah maksimum pengalihan yang harus diikuti. Atur ke 0 untuk menonaktifkan pengalihan.",
"acceptedStatusCodesDescription": "Pilih kode status yang dianggap sebagai tanggapan yang berhasil.",
"passwordNotMatchMsg": "Kata sandi kedua tidak cocok.",
"notificationDescription": "Harap atur notifikasi ke monitor agar berfungsi.",
"keywordDescription": "Kata kunci pencarian dalam HTML biasa atau respons JSON. Pencarian bersifat peka terhadap huruf besar/kecil.",
- "pauseDashboardHome": "Jeda",
+ "pauseDashboardHome": "Dijeda",
"deleteMonitorMsg": "Apakah Anda mau menghapus monitor ini?",
"deleteNotificationMsg": "Apakah Anda mau menghapus notifikasi untuk semua monitor?",
"dnsPortDescription": "Port server DNS. Bawaan menggunakan 53. Anda dapat mengubah port kapan saja.",
@@ -36,21 +36,21 @@
"Appearance": "Tampilan",
"Theme": "Tema",
"General": "Umum",
- "Primary Base URL": "URL Dasar Utama",
+ "Primary Base URL": "Base URL Utama",
"Version": "Versi",
"Check Update On GitHub": "Cek Pembaruan di GitHub",
"List": "Daftar",
"Add": "Tambah",
"Add New Monitor": "Tambah Monitor Baru",
- "Quick Stats": "Statistik",
+ "Quick Stats": "Statistik Singkat",
"Up": "Aktif",
"Down": "Tidak Aktif",
"Pending": "Tertunda",
"Unknown": "Tidak diketahui",
- "Pause": "Jeda",
+ "Pause": "Dijeda",
"Name": "Nama",
"Status": "Status",
- "DateTime": "Tanggal Waktu",
+ "DateTime": "Tanggal/Waktu",
"Message": "Pesan",
"No important events": "Tidak ada peristiwa penting",
"Resume": "Lanjut",
@@ -59,25 +59,25 @@
"Current": "Saat ini",
"Uptime": "Waktu aktif",
"Cert Exp.": "Sertifikat Kedaluwarsa.",
- "day": "hari | hari-hari",
+ "day": "hari",
"-day": "-hari",
- "hour": "Jam",
- "-hour": "-Jam",
- "Response": "Tanggapan",
+ "hour": "jam",
+ "-hour": "-jam",
+ "Response": "Respon",
"Ping": "Ping",
"Monitor Type": "Tipe Monitor",
"Keyword": "Kata Kunci",
- "Friendly Name": "Nama yang Ramah",
+ "Friendly Name": "Nama Yang Bersahabat",
"URL": "URL",
"Hostname": "Nama Host",
"Port": "Port",
- "Heartbeat Interval": "Jeda Waktu Heartbeat",
- "Retries": "Coba lagi",
- "Heartbeat Retry Interval": "Jeda Pengulangan Heartbeat",
- "Resend Notification if Down X times consecutively": "Kirim Ulang Notifikasi jika Tidak Aktif X kali",
+ "Heartbeat Interval": "Interval Heartbeat",
+ "Retries": "Mencoba lagi",
+ "Heartbeat Retry Interval": "Interval Pengulangan Heartbeat",
+ "Resend Notification if Down X times consecutively": "Kirim Ulang Pemberitahuan jika Tidak Aktif X kali berturut-turut",
"Advanced": "Tingkat Lanjut",
"Upside Down Mode": "Mode Terbalik",
- "Max. Redirects": "Maksimal Pengalihan",
+ "Max. Redirects": "Pengalihan Maksimum",
"Accepted Status Codes": "Kode Status yang Diterima",
"Push URL": "Push URL",
"needPushEvery": "Anda harus memanggil URL berikut setiap {0} detik..",
@@ -85,7 +85,7 @@
"Save": "Simpan",
"Notifications": "Notifikasi",
"Not available, please setup.": "Tidak tersedia, silakan atur.",
- "Setup Notification": "Setelan Notifikasi",
+ "Setup Notification": "Atur Pemberitahuan",
"Light": "Terang",
"Dark": "Gelap",
"Auto": "Otomatis",
@@ -95,66 +95,66 @@
"None": "Tidak ada",
"Timezone": "Zona Waktu",
"Search Engine Visibility": "Visibilitas Mesin Pencari",
- "Allow indexing": "Mengizinkan untuk diindex",
- "Discourage search engines from indexing site": "Mencegah mesin pencari untuk mengindex situs",
- "Change Password": "Ganti Sandi",
- "Current Password": "Sandi Lama",
- "New Password": "Sandi Baru",
- "Repeat New Password": "Ulangi Sandi Baru",
+ "Allow indexing": "Izinkan pengindeksan",
+ "Discourage search engines from indexing site": "Mencegah mesin pencari untuk mengindeks situs",
+ "Change Password": "Ubah Kata Sandi",
+ "Current Password": "Kata Sandi Saat Ini",
+ "New Password": "Kata Sandi Baru",
+ "Repeat New Password": "Ulangi Kata Sandi Baru",
"Update Password": "Perbarui Kata Sandi",
- "Disable Auth": "Matikan Autentikasi",
- "Enable Auth": "Aktifkan Autentikasi",
+ "Disable Auth": "Nonaktifkan Auth",
+ "Enable Auth": "Aktifkan Auth",
"disableauth.message1": "Apakah Anda yakin ingin {disableAuth}?",
"disable authentication": "menonaktifkan autentikasi",
- "disableauth.message2": "Ini untuk {intendThirdPartyAuth} diletakkan di depan Uptime Kuma, misalnya akses Cloudflare.",
- "where you intend to implement third-party authentication": "mereka yang memiliki autentikasi pihak ketiga",
- "Please use this option carefully!": "Gunakan pilihan ini dengan hati-hati!",
+ "disableauth.message2": "Ini dirancang untuk skenario {intendThirdPartyAuth} di depan Uptime Kuma seperti Cloudflare Access, Authelia, atau mekanisme autentikasi lainnya.",
+ "where you intend to implement third-party authentication": "di mana Anda bermaksud menerapkan autentikasi pihak ketiga",
+ "Please use this option carefully!": "Harap gunakan opsi ini dengan hati-hati!",
"Logout": "Keluar",
- "Leave": "Pergi",
- "I understand, please disable": "Saya mengerti, silakan dinonaktifkan",
+ "Leave": "Tinggalkan",
+ "I understand, please disable": "Saya mengerti, tolong nonaktifkan",
"Confirm": "Konfirmasi",
"Yes": "Ya",
"No": "Tidak",
"Username": "Nama Pengguna",
- "Password": "Sandi",
+ "Password": "Kata Sandi",
"Remember me": "Ingat saya",
"Login": "Masuk",
- "No Monitors, please": "Tolong, jangan ada Monitor",
+ "No Monitors, please": "Tidak ada monitor, silakan",
"add one": "tambahkan satu",
- "Notification Type": "Tipe Notifikasi",
+ "Notification Type": "Tipe Pemberitahuan",
"Email": "Surel",
"Test": "Tes",
- "Certificate Info": "Info Sertifikasi",
- "Resolver Server": "Server Penjawab",
- "Resource Record Type": "Jenis Rekam Sumber Daya",
+ "Certificate Info": "Info Sertifikat",
+ "Resolver Server": "Server Penyelesai",
+ "Resource Record Type": "Jenis Rekaman Sumber Daya",
"Last Result": "Hasil Terakhir",
"Create your admin account": "Buat akun admin Anda",
- "Repeat Password": "Ulangi Sandi",
+ "Repeat Password": "Ulangi Kata Sandi",
"Import Backup": "Impor Cadangan",
"Export Backup": "Ekspor Cadangan",
"Export": "Ekspor",
"Import": "Impor",
- "respTime": "Tanggapan. Waktu (milidetik)",
+ "respTime": "Waktu Respons (ms)",
"notAvailableShort": "N/A",
- "Default enabled": "Bawaan diaktifkan",
+ "Default enabled": "Diaktifkan secara default",
"Apply on all existing monitors": "Terapkan pada semua monitor yang ada",
"Create": "Buat",
"Clear Data": "Bersihkan Data",
"Events": "Peristiwa",
- "Heartbeats": "Detak",
+ "Heartbeats": "Heartbeat",
"Auto Get": "Ambil Otomatis",
"backupDescription": "Anda dapat mencadangkan semua monitor dan semua notifikasi ke dalam berkas JSON.",
"backupDescription2": "Catatan: Data sejarah dan peristiwa tidak disertakan.",
"backupDescription3": "Data sensitif seperti notifikasi token disertakan dalam berkas ekspor, harap simpan dengan hati-hati.",
- "alertNoFile": "Silakan pilih berkas untuk diimpor.",
+ "alertNoFile": "Silakan pilih berkas yang akan diimpor.",
"alertWrongFileType": "Silakan pilih berkas JSON.",
"Clear all statistics": "Hapus semua statistik",
- "Skip existing": "Lewati yang ada",
+ "Skip existing": "Lewati yang sudah ada",
"Overwrite": "Timpa",
"Options": "Opsi",
"Keep both": "Simpan keduanya",
"Verify Token": "Verifikasi Token",
- "Setup 2FA": "Pengaturan 2FA",
+ "Setup 2FA": "Siapkan 2FA",
"Enable 2FA": "Aktifkan 2FA",
"Disable 2FA": "Nonaktifkan 2FA",
"2FA Settings": "Pengaturan 2FA",
@@ -164,12 +164,12 @@
"Token": "Token",
"Show URI": "Lihat URI",
"Tags": "Tanda",
- "Add New below or Select...": "Tambahkan Baru di bawah atau Pilih…",
+ "Add New below or Select...": "Tambahkan Baru di Bawah ini atau Pilih…",
"Tag with this name already exist.": "Tanda dengan nama ini sudah ada.",
"Tag with this value already exist.": "Tanda dengan nilai ini sudah ada.",
- "color": "warna",
- "value (optional)": "nilai (harus diisi)",
- "Gray": "Abu-abu",
+ "color": "Warna",
+ "value (optional)": "nilai (opsional)",
+ "Gray": "Abu-Abu",
"Red": "Merah",
"Orange": "Jingga",
"Green": "Hijau",
@@ -180,7 +180,7 @@
"Search...": "Cari…",
"Avg. Ping": "Rata-rata Ping",
"Avg. Response": "Rata-rata Tanggapan",
- "Entry Page": "Halaman Masuk",
+ "Entry Page": "Beranda",
"statusPageNothing": "Tidak ada di sini, silakan tambahkan grup atau monitor.",
"No Services": "Tidak ada Layanan",
"All Systems Operational": "Semua Sistem Berfungsi",
@@ -361,7 +361,6 @@
"Discard": "Buang",
"Cancel": "Batal",
"Powered by": "Dipersembahkan oleh",
- "shrinkDatabaseDescription": "Trigger database VACUUM untuk SQLite. Jika database Anda dibuat setelah 1.10.0, AUTO_VACUUM sudah otomatis diaktifkan dan aksi berikut tidak dibutuhkan.",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "Nama Pengguna API ( termamsuk awalan webapi_ )",
"serwersmsAPIPassword": "Kata Sandi API",
@@ -559,7 +558,7 @@
"ntfy Topic": "Topik ntfy",
"Domain": "Domain",
"Workstation": "Workstation",
- "disableCloudflaredNoAuthMsg": "Anda berada dalam mode Tanpa Otentikasi, kata sandi tidak diperlukan.",
+ "disableCloudflaredNoAuthMsg": "Anda berada dalam mode Tanpa Autentikasi, kata sandi tidak diperlukan.",
"trustProxyDescription": "Trust 'X-Forwarded-*' headers. Jika Anda ingin mendapatkan IP klien yang benar dan Uptime Kuma Anda dibalik proxy seperti Nginx or Apache, Anda harus mengaktifkan ini.",
"wayToGetLineNotifyToken": "Anda bisa mendapatkan token akses dari {0}",
"Examples": "Contoh",
@@ -584,7 +583,7 @@
"backupRecommend": "Silahkan backup volume atau folder (./data/) secara langsung.",
"Help": "Bantuan",
"Game": "Permainan",
- "markdownSupported": "Dukungan sintaks markdown",
+ "markdownSupported": "Sintaks markdown didukung",
"statusMaintenance": "Pemeliharaan",
"Maintenance": "Tidak Ada Pemeliharaan",
"General Monitor Type": "Tipe Monitor Umum",
@@ -636,7 +635,7 @@
"Badge Label Prefix": "Prefiks Label Lencana",
"telegramSendSilently": "Kirim Secara Senyap",
"Invert Keyword": "Balikkan Kata Kunci",
- "Pick Affected Monitors...": "Pilih Monitor yang Terkena Dampak…",
+ "Pick Affected Monitors...": "Pilih Monitor yang Terpengaruh…",
"Badge Label Suffix": "Suffix Label Lencana",
"statusPageMaintenanceEndDate": "berakhir",
"Add API Key": "Tambahkan Kunci API",
@@ -666,7 +665,7 @@
"pagertreeHigh": "Tinggi",
"Group": "Grup",
"Body Encoding": "Body Encoding",
- "Add New Tag": "Tambahkan Tag Baru",
+ "Add New Tag": "Tambahkan Tanda Baru",
"chromeExecutableDescription": "Untuk pengguna Docker, jika Chromium belum diinstal, mungkin perlu waktu beberapa menit untuk menginstal dan menampilkan hasil pengujian. Dibutuhkan 1GB ruang penyimpanan.",
"recurringIntervalMessage": "Jalankan sekali setiap hari | Jalankan sekali setiap {0} hari",
"wayToGetKookBotToken": "Buat aplikasi dan dapatkan token bot Anda di {0}",
@@ -717,7 +716,7 @@
"No Maintenance": "Tidak Ada Pemeliharaan",
"pauseMaintenanceMsg": "Anda yakin ingin menjeda?",
"maintenanceStatus-inactive": "Tidak aktif",
- "Display Timezone": "Tampilkan Zona Waktu",
+ "Display Timezone": "Zona Waktu Tampilan",
"IconUrl": "URL ikon",
"Enable DNS Cache": "(Tidak berlaku lagi) Aktifkan Cache DNS untuk monitor HTTP(s)",
"Enable": "Aktifkan",
@@ -746,7 +745,7 @@
"smseagleRecipientType": "Tipe Penerima",
"smseagleToken": "Token Akses API",
"smseagleUrl": "URL perangkat SMSEagle Anda",
- "Schedule maintenance": "Perbaikan Terjadwal",
+ "Schedule maintenance": "Jadwalkan Pemeliharaan",
"Affected Monitors": "Monitor yang Terpengaruh",
"Start of maintenance": "Mulai pemeliharaan",
"All Status Pages": "Semua Halaman Status",
@@ -766,7 +765,7 @@
"maintenanceStatus-scheduled": "Dijadwalkan",
"maintenanceStatus-ended": "Berakhir",
"dataRetentionTimeError": "Periode retensi harus 0 atau lebih besar",
- "chromeExecutable": "Chrome/Chromium Dapat Dijalankan",
+ "chromeExecutable": "Chrome/Chromium yang Dapat di Eksekusi",
"chromeExecutableAutoDetect": "Deteksi otomatis",
"Edit Maintenance": "Sunting Pemeliharaan",
"DateTime Range": "Rentang Tanggal dan Waktu",
@@ -789,7 +788,7 @@
"promosmsAllowLongSMS": "Izinkan SMS panjang",
"Badge Pending Color": "Warna Lencana Tertunda",
"Monitor Group": "Monitor Grup",
- "Expected Value": "Parameter yang diharapkan",
+ "Expected Value": "Nilai Yang Diharapkan",
"Json Query": "Kueri JSON",
"setupDatabaseSQLite": "File database sederhana, direkomendasikan untuk penerapan skala kecil. Sebelum v2.0.0, Uptime Kuma menggunakan SQLite sebagai database default.",
"setupDatabaseMariaDB": "Hubungkan ke database MariaDB eksternal. Anda perlu mengatur informasi koneksi database.",
@@ -805,7 +804,7 @@
"emailTemplateLimitedToUpDownNotification": "hanya tersedia untuk detak jantung ATAS/BAWAH, jika tidak, null",
"aboutNotifyChannel": "Beritahu saluran akan memicu pemberitahuan desktop atau seluler untuk semua anggota saluran, baik ketersediaannya diatur ke aktif atau tidak.",
"monitorToastMessagesDescription": "Notifikasi Toast untuk monitor hilang setelah waktu tertentu dalam hitungan detik. Setel ke -1 akan menonaktifkan batas waktu. Setel ke 0 akan menonaktifkan notifikasi Toast.",
- "wayToGetFlashDutyKey": "Anda dapat membuka Saluran -> (Pilih Saluran) -> Integrasi -> Tambahkan halaman integrasi baru, tambahkan 'Acara Khusus' untuk mendapatkan alamat push, salin Kunci Integrasi di alamat tersebut. Untuk informasi lebih lanjut, silahkan kunjungi",
+ "wayToGetFlashDutyKey": "Anda dapat membuka Saluran -> (Pilih Saluran) -> Integrasi -> Tambahkan halaman integrasi baru, tambahkan 'Uptime Kuma' untuk mendapatkan alamat push, salin Kunci Integrasi di alamat tersebut. Untuk informasi lebih lanjut, silakan kunjungi",
"Saved.": "Tersimpan.",
"authUserInactiveOrDeleted": "Pengguna tidak aktif atau dihapus.",
"authInvalidToken": "Token Tidak Valid.",
@@ -838,7 +837,6 @@
"emailTemplateHeartbeatJSON": "objek yang menggambarkan heartbeat",
"emailTemplateMsg": "pesan pemberitahuan",
"emailCustomBody": "Kustomisasi Body",
- "jsonQueryDescription": "Lakukan Query json terhadap respons dan periksa nilai yang diharapkan (Nilai yang dikembalikan akan diubah menjadi string untuk perbandingan). Lihat {0} untuk dokumentasi tentang bahasa kueri. Taman bermain dapat ditemukan {1}.",
"Notify Channel": "Beritahu Saluran",
"Server URL should not contain the nfty topic": "URL server tidak boleh berisi topik nfty",
"PushDeer Server": "Server PushDeer",
@@ -869,26 +867,26 @@
"tagNotFound": "Tag tidak ditemukan.",
"foundChromiumVersion": "Ditemukan Chromium/Chrome. Versi: {0}",
"Kafka SASL Options": "Opsi Kafka SASL",
- "Pick a SASL Mechanism...": "Pilih Mekanisme SASL...",
+ "Pick a SASL Mechanism...": "Pilih Mekanisme SASL…",
"AccessKey Id": "Id AccessKey",
"Secret AccessKey": "Secret AccessKey",
"Session Token": "Sesi Token",
"pushOthers": "Lainnya",
"programmingLanguages": "Bahasa Pemrograman",
- "filterActivePaused": "Berhenti",
+ "filterActivePaused": "Dijeda",
"templateMsg": "pesan pemberitahuan",
"templateHeartbeatJSON": "objek yang menggambarkan heartbeat",
"templateMonitorJSON": "objek yang menggambarkan monitor",
- "templateLimitedToUpDownCertNotifications": "hanya tersedia untuk notifikasi ATAS/BAWAH/Sertifikat yang kadaluarsa",
- "templateLimitedToUpDownNotifications": "hanya tersedia untuk notifikasi ATAS/BAWAH",
+ "templateLimitedToUpDownCertNotifications": "hanya tersedia untuk notifikasi AKTIF/TIDAK AKTIF/Sertifikat yang kedaluwarsa",
+ "templateLimitedToUpDownNotifications": "hanya tersedia untuk notifikasi AKTIF/TIDAK AKTIF",
"liquidIntroduction": "Kemampuan templat dicapai melalui bahasa templating Liquid. Silakan lihat {0} untuk petunjuk penggunaan. Ini adalah variabel yang tersedia:",
"selectedMonitorCount": "Terpilih: {0}",
"Check/Uncheck": "Centang/Hapus centang",
"Authorization Identity": "Identitas Otorisasi",
- "styleElapsedTime": "Waktu yang berlalu di bawah bilah heartbeat",
+ "styleElapsedTime": "Waktu yang telah berlalu di bawah bilah heartbeat",
"styleElapsedTimeShowNoLine": "Tampilkan (Tanpa Garis)",
"styleElapsedTimeShowWithLine": "Tampilkan (Dengan Garis)",
- "Request Timeout": "Batas Waktu Habis",
+ "Request Timeout": "Batas Waktu Permintaan",
"timeoutAfter": "Waktu habis setelah {0} detik",
"successKeywordExplanation": "Kata Kunci MQTT yang akan dianggap sukses",
"Remove the expiry notification": "Hapus hari pemberitahuan kedaluwarsa",
@@ -897,7 +895,7 @@
"Remote Browser": "Peramban Jarak Jauh",
"Add a Remote Browser": "Tambahkan Remote Browser",
"Remote Browser not found!": "Remote Browser tidak ditemukan!",
- "remoteBrowsersDescription": "Remote Browsers adalah alternatif untuk menjalankan Chromium secara lokal. Siapkan dengan layanan seperti browserless.io atau sambungkan ke layanan Anda sendiri",
+ "remoteBrowsersDescription": "Remote Browsers adalah cara alternatif untuk menjalankan Chromium secara lokal. Siapkan dengan layanan seperti browserless.io atau sambungkan ke layanan Anda sendiri",
"self-hosted container": "kontainer self-hosted",
"remoteBrowserToggle": "Secara default, Chromium berjalan di dalam kontainer Uptime Kuma. Anda dapat menggunakan remote browser dengan menekan tombol ini.",
"useRemoteBrowser": "Gunakan Remote Browser",
@@ -910,7 +908,185 @@
"successKeyword": "Kata Kunci Sukses",
"ntfyPriorityHelptextAllExceptDown": "Semua peristiwa dikirim dengan prioritas ini, kecuali peristiwa {0}, yang memiliki prioritas {1}",
"statusPageSpecialSlugDesc": "Tanda khusus {0}: halaman ini akan ditampilkan jika tidak ada tanda khusus yang disediakan",
- "settingUpDatabaseMSG": "Menyiapkan basis data. Mungkin perlu waktu beberapa saat, harap bersabar.",
+ "settingUpDatabaseMSG": "Menyiapkan database. Mungkin perlu waktu beberapa saat, harap bersabar.",
"Search monitored sites": "Mencari situs yang dipantau",
- "ntfyPriorityHelptextAllEvents": "Semua peristiwa dikirim dengan prioritas maksimum"
+ "ntfyPriorityHelptextAllEvents": "Semua peristiwa dikirim dengan prioritas maksimum",
+ "What is a Remote Browser?": "Apa itu Remote Browser?",
+ "wayToGetHeiiOnCallDetails": "Cara mendapatkan ID Pemicu dan Kunci API dijelaskan di {documentation}",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "Dari Nomor Telepon / Transmission Path Originating Address (TPOA)",
+ "gtxMessagingFromHint": "Penerima pesan akan melihat TPOA yang ditampilkan sebagai pengirim pesan. Diperbolehkan maksimal 11 karakter alfanumerik, kode pendek, kode panjang lokal atau internasional ({e164}, {e212} or {e214})",
+ "To Phone Number": "Untuk Nomor Telepon",
+ "gtxMessagingToHint": "Format internasional, dimulai dengan tanda plus \"+\" ({e164}, {e212} or {e214})",
+ "gtxMessagingApiKeyHint": "Anda dapat menemukan Kunci API Anda di: Perutean Akun Saya > Lihat Informasi Akun > Kredensial API > REST API (v2.x)",
+ "Originator type": "Tipe Originator",
+ "Alphanumeric (recommended)": "Alfanumerik (direkomendasikan)",
+ "Telephone number": "Nomor telepon",
+ "cellsyntOriginatortypeAlphanumeric": "String alfanumerik (maks 11 karakter). Penerima tidak dapat membalas pesan tersebut.",
+ "cellsyntOriginatortypeNumeric": "Nilai numerik (maks 15 digit) dengan nomor telepon dalam format internasional tanpa awalan 00 (contoh nomor Inggris 07920 110 000 harus diisi sebagai 447920110000). Penerima dapat membalas pesan tersebut.",
+ "cellsyntDestination": "Nomor telepon penerima dalam format internasional yang diawali angka 00, diikuti dengan kode negara, contoh : 00447920110000 untuk nomor Inggris 07920 110 000 (maks total 17 digit). Maksimum 25.000 penerima yang dipisahkan dengan tanda koma per permintaan HTTP.",
+ "Allow Long SMS": "Izinkan SMS Panjang",
+ "max 15 digits": "Maksimal 15 digit",
+ "callMeBotGet": "Anda dapat membuat endpoint untuk {0}, {1} dan {2}. Ingatlah bahwa Anda mungkin akan terkena batas tarif. Batas tarif saat ini adalah: {3}",
+ "Originator": "Originator",
+ "cellsyntOriginator": "Terlihat di ponsel penerima sebagai pencetus pesan. Nilai dan fungsi yang diizinkan bergantung pada parameter tipe pencetus.",
+ "Destination": "Tujuan",
+ "wayToGetWhapiUrlAndToken": "Anda dapat menggunakan URL API dan token dengan bergabung ke saluran yang Anda inginkan dari {0}",
+ "whapiRecipient": "Nomor Telepon / Kontak ID / Grup ID",
+ "API URL": "URL API",
+ "cellsyntSplitLongMessages": "Pisahkan pesan panjang ke dalam 6 bagian. 153 x 6 = 918 karakter.",
+ "max 11 alphanumeric characters": "maksimal 11 karakter alfanumerik",
+ "wayToWriteWhapiRecipient": "Nomor telepon dalam format internasional, tanpa tanda tambah ({0}), Kontak ID ({1}) atau Grup ID ({2}).",
+ "documentationOf": "{0} Dokumentasi",
+ "Channel access token (Long-lived)": "Token akses saluran (durasi panjang)",
+ "Your User ID": "User ID Anda",
+ "mongodbCommandDescription": "Jalankan perintah MongoDB terhadap database. Untuk informasi tentang perintah yang tersedia, lihat {documentation}",
+ "Command": "Perintah",
+ "threemaRecipient": "Penerima",
+ "threemaRecipientType": "Tipe Penerima",
+ "threemaRecipientTypeIdentity": "Threem-ID",
+ "threemaRecipientTypeIdentityFormat": "8 karakter",
+ "threemaRecipientTypePhone": "Nomor Telepon",
+ "threemaRecipientTypePhoneFormat": "E.164, tanpa awalan +",
+ "threemaRecipientTypeEmail": "Alamat Email",
+ "threemaSenderIdentity": "Gateway-ID",
+ "threemaApiAuthenticationSecret": "Gateway-ID Secret",
+ "smspartnerPhoneNumber": "Nomor telepon",
+ "smspartnerSenderName": "Nama Pengirim SMS",
+ "Mentioning": "Menyebut",
+ "Don't mention people": "Jangan menyebut orang",
+ "bitrix24SupportUserID": "Masukkan ID pengguna Anda di Bitrix24. Anda dapat mengetahui ID dari tautan dengan membuka profil pengguna.",
+ "Bitrix24 Webhook URL": "Bitrix24 Webhook URL",
+ "wayToGetBitrix24Webhook": "Anda dapat membuat webhook dengan mengikuti langkah-langkah di {0}",
+ "receiverSevenIO": "Menerima nomor",
+ "receiverInfoSevenIO": "Jika nomor penerima tidak berlokasi di Jerman, Anda harus menambahkan kode negara di depan nomor tersebut (misalnya untuk kode negara 1 dari AS gunakan 117612121212, bukan 017612121212)",
+ "Host URL": "URL Host",
+ "senderSevenIO": "Mengirim nomor atau nama",
+ "apiKeysDisabledMsg": "Kunci API dinonaktifkan karena autentikasi dinonaktifkan.",
+ "forumPostName": "Nama postingan forum",
+ "threadForumPostID": "Thread / ID postingan Forum",
+ "e.g. {discordThreadID}": "misalnya {discordThreadID}",
+ "Select message type": "Pilih jenis pesan",
+ "Send to channel": "Kirim ke saluran",
+ "Create new forum post": "Buat postingan forum baru",
+ "postToExistingThread": "Posting ke thread/postingan forum yang ada",
+ "whatHappensAtForumPost": "Buat postingan forum baru. Ini TIDAK mempublikasikan pesan di postingan yang sudah ada. Untuk mempublikasikan di postingan yang sudah ada gunakan '{option}'",
+ "smspartnerApiurl": "Anda dapat menemukan kunci API di dasbor Anda di {0}",
+ "smspartnerPhoneNumberHelptext": "Nomor harus dalam format internasional {0}, {1}. Beberapa angka harus dipisahkan dengan {2}",
+ "smspartnerSenderNameInfo": "Harus di antara 3..=11 karakter biasa",
+ "wayToGetSevenIOApiKey": "Kunjungi dasbor di bawah app.seven.io > pengembang > api key > tombol yang berwarna hijau",
+ "wayToGetThreemaGateway": "Anda dapat mendaftar ke Threema Gateway {0}.",
+ "threemaSenderIdentityFormat": "8 karakter, biasanya diawali dengan *",
+ "threemaBasicModeInfo": "Catatan: Integrasi ini menggunakan Threema Gateway dalam mode dasar (enkripsi berbasis server). Detail lebih lanjut dapat ditemukan {0}.",
+ "wayToGetDiscordThreadId": "Mendapatkan id postingan thread/forum mirip dengan mendapatkan id saluran. Baca selengkapnya tentang cara mendapatkan ID {0}",
+ "Mention group": "Sebutkan {grup}",
+ "Refresh Interval Description": "Laman status akan melakukan penyegaran situs secara penuh setiap {0} detik",
+ "Refresh Interval": "Interval muat ulang",
+ "apiKeySevenIO": "Kunci API SevenIO",
+ "locally configured mail transfer agent": "transfer email agent yang dikonfigurasi secara lokal",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Masukkan nama host server yang ingin Anda sambungkan atau {localhost} jika Anda ingin menggunakan {local_mta}",
+ "ignoreTLSErrorGeneral": "Abaikan kesalahan TLS/SSL untuk koneksi",
+ "jsonQueryDescription": "Mengurai dan mengekstrak data spesifik dari respons JSON server menggunakan query JSON atau menggunakan “$” untuk respons mentah, jika tidak menginginkan JSON. Hasilnya kemudian dibandingkan dengan nilai yang diharapkan, sebagai string. Lihat {0} untuk dokumentasi dan gunakan {1} untuk bereksperimen dengan query.",
+ "now": "sekarang",
+ "time ago": "{0} yang lalu",
+ "-year": "-tahun",
+ "Json Query Expression": "Ekspresi Kueri Json",
+ "and": "dan",
+ "cacheBusterParam": "Tambahkan parameter {0}",
+ "cacheBusterParamDescription": "Parameter yang dihasilkan secara acak untuk melewati cache.",
+ "Community String": "Community String",
+ "snmpCommunityStringHelptext": "String ini berfungsi sebagai kata sandi untuk autentikasi dan mengontrol akses ke perangkat SNMP. Cocokkan dengan konfigurasi perangkat SNMP Anda.",
+ "OID (Object Identifier)": "OID (Object Identifier)",
+ "snmpOIDHelptext": "Masukkan OID untuk sensor atau status yang ingin Anda pantau. Gunakan alat manajemen jaringan seperti browser MIB atau perangkat lunak SNMP jika Anda tidak yakin tentang OID.",
+ "signl4Docs": "Anda dapat menemukan informasi selengkapnya tentang cara mengonfigurasi SIGNL4 dan cara mendapatkan URL webhook SIGNL4 di {0}.",
+ "greater than or equal to": "lebih dari atau sama dengan",
+ "wayToGetOnesenderUrlandToken": "Anda bisa mendapatkan URL dan Token dengan mengunjungi situs Onesender. Informasi lebih lanjut {0}",
+ "Condition": "Kondisi",
+ "SNMP Version": "Versi SNMP",
+ "Please enter a valid OID.": "Silakan masukkan OID yang tepat.",
+ "Host Onesender": "Host Onesender",
+ "Token Onesender": "Token Onesender",
+ "Recipient Type": "Tipe Penerima",
+ "Private Number": "Nomor Pribadi",
+ "privateOnesenderDesc": "Pastikan nomor telepon valid. Untuk mengirim pesan ke nomor telepon pribadi, contoh: 628123456789",
+ "Authorization Header": "Authorization Header",
+ "Form Data Body": "Form Data Body",
+ "OAuth Token URL": "OAuth Token URL",
+ "Client ID": "ID Klien",
+ "Client Secret": "Client Secret",
+ "OAuth Scope": "OAuth Scope",
+ "Optional: Space separated list of scopes": "Opsional: Daftar cakupan yang dipisahkan spasi",
+ "Go back to home page.": "Kembali ke halaman beranda.",
+ "No tags found.": "Tidak ada tag yang ditemukan.",
+ "Lost connection to the socket server.": "Kehilangan koneksi ke server soket.",
+ "Cannot connect to the socket server.": "Tidak dapat terhubung ke server soket.",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "SIGNL4 Webhook URL",
+ "Conditions": "Kondisi",
+ "conditionAdd": "Tambahkan Kondisi",
+ "conditionDelete": "Menghapus Kondisi",
+ "conditionAddGroup": "Tambahkan Grup",
+ "conditionDeleteGroup": "Menghapus Grup",
+ "conditionValuePlaceholder": "Nilai",
+ "equals": "sama dengan",
+ "not equals": "tidak sama dengan",
+ "contains": "berisi",
+ "not contains": "tidak berisi",
+ "starts with": "dimulai dengan",
+ "not starts with": "tidak dimulai dengan",
+ "ends with": "diakhiri dengan",
+ "not ends with": "tidak diakhiri dengan",
+ "less than": "kurang dari",
+ "greater than": "lebih dari",
+ "less than or equal to": "kurang dari atau sama dengan",
+ "record": "rekaman",
+ "groupOnesenderDesc": "Pastikan GroupIDnya valid. Untuk mengirim pesan ke Grup, misal: 628123456789-342345",
+ "Group ID": "ID Grup",
+ "Add Remote Browser": "Tambahkan Remote Browser",
+ "New Group": "Grup Baru",
+ "Group Name": "Nama Grup",
+ "OAuth2: Client Credentials": "OAuth2: Kredensial Klien",
+ "Authentication Method": "Metode Autentikasi",
+ "shrinkDatabaseDescriptionSqlite": "Memicu pangkalan data {vacuum} untuk SQLite. {auto_vacuum} sudah diaktifkan, tetapi tidak mendefragmentasi pangkalan data atau mengemas ulang halaman individual dari pangkalan data seperti yang dilakukan oleh perintah {vacuum}.",
+ "ignoredTLSError": "Galat TLS/SSL sudah diabaikan",
+ "Debug": "Awakutu",
+ "Copy": "Salin",
+ "CopyToClipboardError": "Tidak bisa menyalin ke papan klip: {galat}",
+ "CopyToClipboardSuccess": "Tersalin!",
+ "CurlDebugInfo": "Untuk pengawakutuan monitor, Anda bisa menempelkan ini ke terminal mesin Anda sendiri atau ke terminal mesin di mana uptime kuma sedang berjalan dan melihat apa yang Anda harapkan. Mohon perhatikan perbedaan jaringan seperti {firewalls}, {dns_resolvers}, atau {docker_networks}.",
+ "aboutSlackUsername": "Mengubah nama tampilan pengirim pesan. Jika Anda ingin menyebut seseorang, sertakan dalam nama yang mudah diingat.",
+ "Message format": "Format pesan",
+ "Sound": "Suara",
+ "Alphanumerical string and hyphens only": "Hanya string alfanumerik dan tanda hubung",
+ "Elevator": "Pengundak",
+ "Custom sound to override default notification sound": "Suara khusus untuk mengganti suara notifikasi bawaan",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "Pemberitahuan yang sensitif terhadap waktu akan segera dikirimkan, meskipun perangkat dalam mode jangan ganggu.",
+ "RabbitMQ Nodes": "RabbitMQ Management Nodes",
+ "rabbitmqNodesDescription": "Masukkan URL untuk node manajemen RabbitMQ termasuk protokol dan port. Contoh: {0}",
+ "RabbitMQ Password": "Kata kunci RabbitMQ",
+ "rabbitmqHelpText": "Untuk menggunakan monitor, Anda perlu mengaktifkan Plugin Manajemen di pengaturan RabbitMQ Anda. Untuk informasi lebih lanjut, silakan baca {rabitmq_documentation}.",
+ "rabbitmqNodesRequired": "Harap atur node untuk monitor ini.",
+ "rabbitmqNodesInvalid": "Harap gunakan URL yang memenuhi syarat (dimulai dengan 'http') untuk node RabbitMQ.",
+ "RabbitMQ Username": "Nama pengguna RabbitMQ",
+ "Notification Channel": "Notifikasi Kanal",
+ "Send rich messages": "Kirim rich messages",
+ "Arcade": "Arkade",
+ "Correct": "Benar",
+ "Fail": "Gagal",
+ "Harp": "Harpa",
+ "Reveal": "Mengungkap",
+ "Bubble": "Gelembung",
+ "Doorbell": "Bel pintu",
+ "Flute": "Seruling",
+ "Money": "Uang",
+ "Scifi": "Fiksi ilmiah",
+ "Clear": "Jernih",
+ "Guitar": "Gitar",
+ "Pop": "Letupan",
+ "Time Sensitive (iOS Only)": "Sensitif terhadap Waktu (Khusus iOS)",
+ "From": "Dari",
+ "Can be found on:": "Bisa ditemukan di: {0}",
+ "The phone number of the recipient in E.164 format.": "Nomor telepon penerima dalam format E.164.",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "Antara ID pengirim teks atau nomor telepon dalam format E.164 jika Anda ingin menerima balasan.",
+ "SendGrid API Key": "Kunci API SendGrid",
+ "Separate multiple email addresses with commas": "Pisahkan beberapa alamat email dengan koma"
}
diff --git a/src/lang/it-IT.json b/src/lang/it-IT.json
index 9767e7613..3104e5fcb 100644
--- a/src/lang/it-IT.json
+++ b/src/lang/it-IT.json
@@ -59,7 +59,7 @@
"day": "giorno | giorni",
"-day": "-giorni",
"hour": "ora",
- "-hour": "-ore",
+ "-hour": "-ora",
"Response": "Risposta",
"Ping": "Ping",
"Monitor Type": "Modalità di monitoraggio",
@@ -80,7 +80,7 @@
"pushOptionalParams": "Parametri aggiuntivi: {0}",
"Save": "Salva",
"Notifications": "Notifiche",
- "Not available, please setup.": "Non disponibili, richiesta configurazione manuale.",
+ "Not available, please setup.": "Non disponibile, richiesta configurazione manuale.",
"Setup Notification": "Configura le notifiche",
"Light": "Chiaro",
"Dark": "Scuro",
@@ -114,7 +114,7 @@
"Username": "Nome utente",
"Password": "Password",
"Remember me": "Ricorda credenziali",
- "Login": "Accesso",
+ "Login": "Accedi",
"No Monitors, please": "Nessun monitor presente,",
"add one": "aggiungine uno",
"Notification Type": "Servizio di notifica",
@@ -349,7 +349,6 @@
"Discard": "Scarta modifiche",
"Cancel": "Annulla",
"Powered by": "Powered by",
- "shrinkDatabaseDescription": "Lancia il comando \"VACUUM\" sul database SQLite. Se il database è stato creato dopo la versione 1.10.0, la funzione \"AUTO_VACUUM\" è già abilitata di default e quindi questa azione non è necessaria.",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "Nome utente API (incl. prefisso webapi_)",
"serwersmsAPIPassword": "Password API",
@@ -423,7 +422,7 @@
"styleElapsedTimeShowWithLine": "Mostra (con linea)",
"webhookBodyPresetOption": "Predefinito - {0}",
"webhookBodyCustomOption": "Corpo personalizzato",
- "topic": "Topic",
+ "topic": "Argomento",
"selectedMonitorCount": "Selezionato: {0}",
"Check/Uncheck": "Seleziona/Deseleziona",
"Proxies": "Proxy",
@@ -433,7 +432,7 @@
"HTTP Basic Auth": "Autenticazione di base HTTP",
"Reverse Proxy": "Proxy inverso",
"Backup": "Backup",
- "About": "Di",
+ "About": "Info",
"wayToGetCloudflaredURL": "(Scarica cloudflared da {0})",
"cloudflareWebsite": "Sito web di Cloudflare",
"Message:": "Messaggio:",
@@ -445,7 +444,7 @@
"Subject:": "Soggetto:",
"Valid To:": "Valido per:",
"Days Remaining:": "Giorni rimanenti:",
- "Issuer:": "Emittente",
+ "Issuer:": "Emittente:",
"Fingerprint:": "Impronta digitale:",
"No status pages": "Nessuna pagina di stato",
"Domain Name Expiry Notification": "Notifica di scadenza del nome di dominio",
@@ -535,10 +534,10 @@
"Server Timezone": "Fuso orario del server",
"statusPageMaintenanceEndDate": "Fine",
"IconUrl": "URL dell'icona",
- "Enable DNS Cache": "Abilita la cache DNS per i monitor HTTP(s).",
+ "Enable DNS Cache": "(Obsoleto) Abilita la cache DNS per i monitor HTTP(s)",
"Enable": "Abilitare",
"Disable": "Disattivare",
- "chromeExecutableAutoDetect": "Trovato automaticamente",
+ "chromeExecutableAutoDetect": "Trova automaticamente",
"dnsCacheDescription": "Potrebbe non funzionare in alcuni ambienti IPv6, disabilitalo in caso di problemi.",
"Single Maintenance Window": "Singola finestra di manutenzione",
"Maintenance Time Window of a Day": "Finestra temporale di manutenzione di un giorno",
@@ -554,13 +553,13 @@
"uninstall": "Disinstalla",
"confirmUninstallPlugin": "Sei sicuro di voler disinstallare questo plugin?",
"notificationRegional": "Regionale",
- "Clone": "Clone",
+ "Clone": "Duplica",
"cloneOf": "Clone di {0}",
"wayToGetZohoCliqURL": "Puoi scoprire come creare un URL webhook {0}.",
"dataRetentionTimeError": "Il periodo di conservazione deve essere pari o superiore a 0",
"infiniteRetention": "Impostare su 0 per la conservazione infinita.",
"enableGRPCTls": "Consenti l'invio di richieste gRPC con connessione TLS",
- "grpcMethodDescription": "Il nome del metodo viene convertito nel formato cammelCase come sayHello, check, ecc.",
+ "grpcMethodDescription": "Il nome del metodo viene convertito nel formato camelCase come sayHello, check, ecc.",
"styleElapsedTimeShowNoLine": "Mostra (nessuna riga)",
"Add New Tag": "Aggiungi nuova etichetta",
"webhookCustomBodyDesc": "Definire un corpo HTTP personalizzato per la richiesta. Le variabili modello {msg}, {heartbeat}, {monitor} sono accettate.",
@@ -586,7 +585,7 @@
"invalidCronExpression": "Espressione Cron non valida: {0}",
"lastDay2": "2° ultimo giorno del mese",
"maintenanceStatus-under-maintenance": "In manutenzione",
- "chromeExecutable": "Cromo/cromo eseguibile",
+ "chromeExecutable": "Eseguibile Chrome/Chromium",
"chromeExecutableDescription": "Per gli utenti Docker, se Chromium non è ancora installato, potrebbero essere necessari alcuni minuti per l'installazione e la visualizzazione del risultato del test. Richiede 1 GB di spazio su disco.",
"uninstalling": "Disinstallazione",
"confirmDeleteTagMsg": "Sei sicuro di voler eliminare questo tag? I monitor associati a questo tag non verranno eliminati.",
@@ -620,7 +619,6 @@
"enableNSCD": "Abilita NSCD (Name Service Cache Daemon) per abilitare la cache su tutte le richieste DNS",
"recurringIntervalMessage": "Esegui una volta al giorno | Esegui una volta ogni {0} giorni",
"affectedMonitorsDescription": "Seleziona i monitoraggi che sono influenzati da questa manutenzione",
- "jsonQueryDescription": "Fai una query JSON verso la risposta e controlla se è presente il valore richiesto. (Il valore di ritorno verrà convertito in stringa ai fini della comparazione). Puoi controllare la documentazione su jsonata.org per conoscere come scrivere una query. Un area dimostrativa può essere trovata qui .",
"For safety, must use secret key": "Per sicurezza, devi usare una chiave segreta",
"Proxy server has authentication": "Il server Proxy ha una autenticazione",
"smseaglePriority": "Priorità messaggio (0-9, default = 0)",
@@ -668,5 +666,81 @@
"liquidIntroduction": "La templatabilità è ottenuta attraverso il linguaggio di templating Liquid. Consulta {0} per le istruzioni d'uso. Queste sono le variabili disponibili:",
"templateMsg": "Messaggio della notifica",
"Search monitored sites": "Ricerca tra i siti monitorati",
- "settingUpDatabaseMSG": "Configurazione del database in corso. Potrebbe richiedere un po' di tempo..."
+ "settingUpDatabaseMSG": "Configurazione del database in corso. Potrebbe richiedere un po' di tempo...",
+ "templateHeartbeatJSON": "oggetto che descrive il controllo",
+ "templateLimitedToUpDownNotifications": "disponibile solo per le notifiche UP/DOWN",
+ "Add a new expiry notification day": "Aggiungi un nuovo giorno di notifica di scadenza",
+ "DockerHostRequired": "Per favore, imposta l'host Docker per questo monitor.",
+ "smtpLiquidIntroduction": "I due campi seguenti sono adattabili tramite il linguaggio di templating Liquid. Consulta {0} per le istruzioni d'uso. Queste sono le variabili disponibili:",
+ "emailCustomisableContent": "Contenuto personalizzabile",
+ "noDockerHostMsg": "Non disponibile. Configura prima un host Docker.",
+ "Remove the expiry notification": "Rimuovi il giorno di notifica di scadenza",
+ "emailTemplateHeartbeatJSON": "oggetto che descrive il controllo",
+ "leave blank for default subject": "Lasciare vuoto per oggetto predefinito",
+ "emailCustomBody": "Messaggio personalizzato",
+ "Select message type": "Seleziona il tipo di messaggio",
+ "Send to channel": "Invia al canale",
+ "Create new forum post": "Crea un nuovo post sul forum",
+ "postToExistingThread": "Scrivi in una conversazione / post esistente",
+ "forumPostName": "Nome forum del post",
+ "threadForumPostID": "ID della conversazione / Forum del post",
+ "e.g. {discordThreadID}": "es. {discordThreadID}",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Inserisci l'hostname del server a cui ti vuoi connettere o {localhost} se vuoi usare {local_mta}",
+ "templateLimitedToUpDownCertNotifications": "disponibile solo per le notifiche UP/DOWN/Scadenza certificato",
+ "emailTemplateMsg": "Messaggio della notifica",
+ "emailTemplateLimitedToUpDownNotification": "disponibile solo per controlli UP/DOWN, altrimenti nullo",
+ "Refresh Interval": "Intervallo di aggiornamento",
+ "Refresh Interval Description": "La pagina di stato si aggiornerà completamente ogni {0} secondi",
+ "emailTemplateServiceName": "Nome servizio",
+ "leave blank for default body": "Lasciare vuoto per messaggio predefinito",
+ "emailTemplateHostnameOrURL": "Nome host o URL",
+ "emailTemplateStatus": "Stato",
+ "ignoreTLSErrorGeneral": "Ignora gli errori TLS/SSL per la connessione",
+ "statusPageSpecialSlugDesc": "Slug speciale {0}: questa pagina verrà mostrata quando non viene fornito alcuno slug",
+ "successKeywordExplanation": "Parola chiave MQTT che verrà considerata come corretta",
+ "signl4Docs": "Puoi trovare maggiori informazioni su come configurare SIGNL4 e su come ottenere l'URL del webhook SIGNL4 in {0}.",
+ "contains": "contiene",
+ "not contains": "non contiene",
+ "starts with": "inizia con",
+ "equals": "uguale",
+ "not equals": "non uguale",
+ "less than": "meno di",
+ "greater than": "maggiore di",
+ "successKeyword": "Parola chiave corretta",
+ "templateMonitorJSON": "oggetto che descrive il monitor",
+ "Cannot connect to the socket server.": "Impossibile connettersi al server socket.",
+ "wayToGetDiscordThreadId": "Ottenere l'ID di un thread/post del forum è simile a ottenere un ID di canale. Scopri di più su come ottenere gli ID {0}",
+ "pushoversounds pushover": "Pushover (predefinita)",
+ "pushoversounds none": "Nessuno (silenzioso)",
+ "Don't mention people": "Non menzionare le persone",
+ "Mention group": "Menzionare {group}",
+ "Host URL": "URL dell'host",
+ "emailTemplateMonitorJSON": "oggetto che descrive il monitor",
+ "Channel access token (Long-lived)": "Token di accesso al canale (di lunga durata)",
+ "Your User ID": "Il tuo ID utente",
+ "pushoverMessageTtl": "Messaggio TTL (secondi)",
+ "SendKey": "SendKey",
+ "Sms template must contain parameters: ": "Il modello SMS deve contenere i parametri: ",
+ "Bark API Version": "Versione API Bark",
+ "Bark Group": "Gruppo Bark",
+ "Bark Endpoint": "Endpoint Bark",
+ "Bark Sound": "Suono Bark",
+ "aboutNotifyChannel": "Notify channel attiverà una notifica desktop o mobile per tutti i membri del canale, indipendentemente dal fatto che la loro disponibilità sia impostata su attivo o assente.",
+ "promosmsPassword": "Password API",
+ "You can divide numbers with": "Puoi dividere i numeri con",
+ "Base URL": "URL base",
+ "-year": "-anno",
+ "now": "ora",
+ "time ago": "fa",
+ "Json Query Expression": "Espressione di query JSON",
+ "and": "e",
+ "whatHappensAtForumPost": "Crea un nuovo post sul forum. Questo NON pubblica messaggi in post esistenti. Per pubblicare in un post esistente utilizzare \"{option}\"",
+ "invertKeywordDescription": "Cerca la parola chiave essere assente anziché presente.",
+ "octopushAPIKey": "\"API Key\" dalle credenziali API HTTP nel pannello di controllo",
+ "Enable TLS": "Abilita TLS",
+ "ignoredTLSError": "Ignora errori TLS/SSL",
+ "templateHostnameOrURL": "nome host o URL",
+ "templateStatus": "stato",
+ "templateServiceName": "nome del servizio",
+ "locally configured mail transfer agent": "agente mail configurato localmente"
}
diff --git a/src/lang/ja.json b/src/lang/ja.json
index 6ef7bc822..cb46b1500 100644
--- a/src/lang/ja.json
+++ b/src/lang/ja.json
@@ -30,7 +30,7 @@
"Quick Stats": "統計",
"Up": "正常",
"Down": "停止",
- "Pending": "中止",
+ "Pending": "待機中",
"Unknown": "不明",
"Pause": "一時停止",
"Name": "名前",
@@ -52,7 +52,7 @@
"Ping": "Ping",
"Monitor Type": "監視タイプ",
"Keyword": "キーワード",
- "Friendly Name": "分かりやすい名前",
+ "Friendly Name": "モニター表示名",
"URL": "URL",
"Hostname": "ホスト名",
"Port": "ポート",
@@ -92,7 +92,7 @@
"No": "いいえ",
"Username": "ユーザー名",
"Password": "パスワード",
- "Remember me": "パスワードを忘れた場合",
+ "Remember me": "ログインしたままにする",
"Login": "ログイン",
"No Monitors, please": "監視がありません",
"add one": "add one",
@@ -131,7 +131,7 @@
"confirmDisableTwoFAMsg": "2段階認証を「無効」にします。よろしいですか?",
"Apply on all existing monitors": "既存のすべてのモニターに適用する",
"Verify Token": "認証する",
- "Setup 2FA": "2段階認証の設定",
+ "Setup 2FA": "二要素認証 (2FA) の設定",
"Enable 2FA": "2段階認証を有効にする",
"Disable 2FA": "2段階認証を無効にする",
"2FA Settings": "2段階認証の設定",
@@ -210,7 +210,7 @@
"Content Type": "コンテンツタイプ",
"webhookAdditionalHeadersTitle": "追加ヘッダー",
"Server URL": "Server URL",
- "Priority": "優先順位",
+ "Priority": "優先度",
"Read more": "続きを読む",
"Show Tags": "タグを表示",
"Switch to Dark Theme": "ダークテーマに切り替える",
@@ -225,9 +225,9 @@
"Pink": "ピンク",
"Required": "必須",
"Select status pages...": "ステータスページを選択してください…",
- "webhookAdditionalHeadersDesc": "Webhook で送信される追加ヘッダーを設定します。",
+ "webhookAdditionalHeadersDesc": "Webhook で送信される追加ヘッダーを設定します。各ヘッダーは JSON の key/value 型で定義されている必要があります。",
"Webhook URL": "Webhook URL",
- "Application Token": "Application Token",
+ "Application Token": "アプリケーショントークン",
"steamApiKeyDescription": "Steam Game Server を監視するためには、Steam Web-API キーが必要です。APIキーの登録はこちらから行えます。 ",
"Monitor History": "監視履歴",
"clearDataOlderThan": "監視履歴データを {0} 日間、保持します。",
@@ -270,7 +270,7 @@
"Page Not Found": "ページが見つかりません",
"Reverse Proxy": "リバースプロキシ",
"Backup": "バックアップ",
- "About": "About",
+ "About": "情報",
"cloudflareWebsite": "Cloudflare Website",
"Don't know how to get the token? Please read the guide:": "トークンの取得方法が分かりませんか?ガイドをお読みください。",
"Custom": "カスタム",
@@ -315,8 +315,8 @@
"signedInDisp": "{0}としてログイン中",
"RadiusSecret": "Radius シークレット",
"RadiusSecretDescription": "クライアントとサーバー間の共有シークレット",
- "RadiusCalledStationId": "Called Station Id",
- "RadiusCallingStationId": "Calling Station Id",
+ "RadiusCalledStationId": "Called-Station-Id",
+ "RadiusCallingStationId": "Calling-Station-Id",
"Subject:": "サブジェクト:",
"trustProxyDescription": "ヘッダー「X-Forwarded-*」を信頼します。Uptime Kumaがリバースプロキシの中にあり、正しいクライアントIPを取得する場合は、有効化してください。",
"Home Assistant URL": "ホームアシスタントURL",
@@ -349,7 +349,6 @@
"No monitors available.": "監視対象がありません。",
"Add one": "追加",
"No Monitors": "監視対象なし",
- "shrinkDatabaseDescription": "SQLiteデーターベースにVACUUMを実行します。データーベースがv1.10.0以降に作成されている場合、AUTO_VACUUMが既に有効なため実行する必要はありません。",
"enableProxyDescription": "このプロキシは有効化されない限り、監視リクエストには影響しません。無効化した場合、一時的にプロキシをすべての監視から無効化することができます。",
"Certificate Chain": "証明書チェーン",
"Valid": "有効",
@@ -454,21 +453,21 @@
"maintenanceStatus-unknown": "不明",
"Server Timezone": "サーバータイムゾーン",
"IconUrl": "アイコンURL",
- "Enable DNS Cache": "DNSキャッシュを有効にする",
+ "Enable DNS Cache": "【廃止】HTTP(s)モニターに対してDNSキャッシュを有効にする",
"Enable": "有効",
"Disable": "無効",
"Schedule Maintenance": "スケジュールメンテナンス",
"loadingError": "データを取得できません。後でもう一度試してください。",
"uninstall": "アンインストール",
"installing": "インストール中",
- "Ignore TLS Error": "TLSエラーを無視",
+ "Ignore TLS Error": "TLS エラーを無視",
"smtpCC": "CC",
"secureOptionTLS": "TLS (465)",
"smtpBCC": "BCC",
"Discord Webhook URL": "Discord ウェブフック URL",
"wayToCheckSignalURL": "こちらから設定方法を確認できます:",
"Number": "Number",
- "Line Developers Console": "Line Developers Console",
+ "Line Developers Console": "LINE Developersコンソール",
"Access Token": "アクセストークン",
"Channel access token": "チャンネルアクセストークン",
"enableGRPCTls": "TLS接続でgRPCリクエストを送信できるようにする",
@@ -482,10 +481,10 @@
"No Maintenance": "メンテナンスはありません",
"dnsCacheDescription": "一部のIPv6環境では動作しない場合があります。問題が発生した場合は無効にしてください。",
"uninstalling": "アンインストール中",
- "confirmUninstallPlugin": "本当にこのプラグインをアンインストールしていいですか?",
+ "confirmUninstallPlugin": "本当にこのプラグインをアンインストールしますか?",
"wayToGetDiscordURL": "サーバー設定 -> 連携サービス -> ウェブフックを確認 -> 新しいウェブフック から新たに取得できます",
- "wayToGetTeamsURL": "ウェブフックの作成方法は {0}",
- "wayToGetZohoCliqURL": "ウェブフックの作成方法は {0}",
+ "wayToGetTeamsURL": "Webhook URLの作成方法は {0}",
+ "wayToGetZohoCliqURL": "Webhook URLの作成方法は {0}",
"confirmDeleteTagMsg": "このタグを本当に削除してよろしいですか?このタグが付けられたモニターは削除されません。",
"deleteMaintenanceMsg": "このメンテナンスを本当に削除していいですか?",
"promosmsLogin": "APIログイン名",
@@ -506,7 +505,7 @@
"backupRecommend": "代わりにボリュームまたはデータフォルダ(./data/)を直接バックアップしてください。",
"recurringInterval": "インターバル",
"Recurring": "繰り返し",
- "lineDevConsoleTo": "Line Developers Console - {0}",
+ "lineDevConsoleTo": "LINE Developersコンソール - {0}",
"Basic Settings": "基本設定",
"User ID": "User ID",
"Huawei": "Huawei",
@@ -553,9 +552,9 @@
"octopushSMSSender": "SMS送信者名:3~11文字の英数字とスペース(a~zA~z0~9)",
"Lowcost": "低コスト",
"A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "通知サービスの一覧からデバイス名を見つけるには、Home Assistantの「開発者ツール > サービス」から通知で検索してください。",
- "Notify Channel": "通知チャンネル",
+ "Notify Channel": "チャンネル通知",
"Icon Emoji": "絵文字アイコン",
- "setupDatabaseChooseDatabase": "どのデータベースを利用しますか?",
+ "setupDatabaseChooseDatabase": "どのデータベースを使いたいですか?",
"setupDatabaseEmbeddedMariaDB": "何も設定する必要はありません。この Docker イメージは設定済みの MariaDB が組み込まれています。Uptime Kuma はこのデータベースに unix ソケットを通じて接続します。",
"setupDatabaseSQLite": "小規模な開発のために推奨される小さなデータベースファイルです。v2.0.0 以前は、Uptime Kuma は SQLite を標準のデータベースとして使用していました。",
"tailscalePingWarning": "Tailscale Ping モニターを使用するためには、Uptime Kuma を Docker を利用せずインストールし、そのうえで Tailscale Client をサーバーにインストールしてください。",
@@ -565,7 +564,526 @@
"Request Timeout": "リクエストタイムアウト",
"timeoutAfter": "{0} 秒後にタイムアウト",
"selectedMonitorCount": "選択済み: {0}",
- "Long-Lived Access Token": "Long-Lived Access Token",
+ "Long-Lived Access Token": "長期アクセストークン",
"Invert Keyword": "「含まない」キーワード",
- "Expected Value": "期待値"
+ "Expected Value": "期待値",
+ "dataRetentionTimeError": "保持期間は 0 か、それ以上である必要があります",
+ "settingUpDatabaseMSG": "データベースをセットアップしています。しばらくお待ちください。",
+ "Check/Uncheck": "選択あり/なし",
+ "Alphanumeric (recommended)": "半角英数字(推奨)",
+ "GrafanaOncallUrl": "Grafana オンコール URL",
+ "Command": "コマンド",
+ "Browser Screenshot": "ブラウザ・スクリーンショット",
+ "mongodbCommandDescription": "データベースに対して MongoDB コマンドを実行します。使用できるコマンドについては {documentation} を参照ください",
+ "2faDisabled": "二要素認証 (2FA) を無効にしました。",
+ "Telephone number": "電話番号",
+ "remoteBrowsersDescription": "リモートブラウザは Chromium を実行するための代替手段です。ローカルで実行する代わりに、browserless.io のようなサービスや、独自のサービスに接続します",
+ "max 15 digits": "最大15桁",
+ "What is a Remote Browser?": "リモート・ブラウザとは何ですか?",
+ "Remote Browsers": "リモート・ブラウザ",
+ "Remote Browser": "リモート・ブラウザ",
+ "wayToGetSevenIOApiKey": "app.seven.io > developer > api key > 緑色の追加ボタンの下にあるダッシュボードをご覧ください",
+ "senderSevenIO": "番号もしくは名前を送信しています",
+ "receiverSevenIO": "番号を受信しています",
+ "Search monitored sites": "監視対象サイトの検索",
+ "liquidIntroduction": "Templatability は Liquid テンプレート言語を利用します。使い方は {0} をご覧ください。以下は利用可能な変数です:",
+ "templateMsg": "通知の内容",
+ "templateHeartbeatJSON": "死活監視 (heartbeat) を記述している JSON オブジェクト",
+ "templateMonitorJSON": "監視対象",
+ "Remove the expiry notification": "有効期限の通知日を削除する",
+ "authInvalidToken": "無効なトークンです。",
+ "authIncorrectCreds": "無効なユーザー名かパスワードです。",
+ "self-hosted container": "セルフ・ホストのコンテナ",
+ "useRemoteBrowser": "リモート・ブラウザを使う",
+ "Add a Remote Browser": "リモート・ブラウザを追加する",
+ "remoteBrowserToggle": "デフォルトでは、Chromium は Uptime Kuma コンテナ内で実行されます。このスイッチを切り替えることで、リモート・ブラウザを使用できます。",
+ "Remote Browser not found!": "リモート・ブラウザがありません!",
+ "Select message type": "メッセージ・タイプを選択してください",
+ "Send to channel": "チャンネルに送信",
+ "Create new forum post": "新規フォーラムに投稿",
+ "needSignalAPI": "REST API に対応したシグナリング用のクライアントが必要です。",
+ "aboutIconURL": "「アイコン URL」に画像へのリンクを指定することで、デフォルトのプロフィール画像を上書きすることができます。「アイコン絵文字」が指定されている場合は使用されません。",
+ "octopushAPIKey": "コントロールパネルの HTTP API 認証情報にある「API キー」",
+ "2faEnabled": "二要素認証 (2FA) を有効にしました。",
+ "successAdded": "正常に追加されました。",
+ "successResumed": "正常に再開しました。",
+ "2faAlreadyEnabled": "二要素認証 (2FA) は、すでに有効になっています。",
+ "successDeleted": "正常に削除しました。",
+ "successPaused": "正常に一時停止しました。",
+ "successAuthChangePassword": "正常にパスワードを更新しました。",
+ "successEdited": "正常に編集できました。",
+ "successBackupRestored": "正常にバックアップから復元しました。",
+ "successEnabled": "正常に有効化しました。",
+ "tagNotFound": "タグが見つかりませんでした。",
+ "foundChromiumVersion": "Chromium/Chrome を見つけました。 Version: {0}",
+ "Select": "選択",
+ "Add a new expiry notification day": "有効期限の通知日を追加する",
+ "emailCustomSubject": "カスタム件名",
+ "emailTemplateMsg": "通知の内容",
+ "To Email": "Email へ",
+ "emailTemplateLimitedToUpDownNotification": "UP/DOWN 死活監視 (heartbeat) の場合のみ有効",
+ "deleteRemoteBrowserMessage": "本当にこのリモートブラウザをすべての監視から削除しますか?",
+ "Refresh Interval": "更新間隔",
+ "Refresh Interval Description": "ステータスページは {0} 秒ごとに全面更新されます",
+ "wayToGetLineChannelToken": "まず {0} にアクセスし、プロバイダーとチャネル(Messaging API)を作成します。次に、上記のメニューからアクセストークンとチャネルのユーザー ID を取得します。",
+ "aboutMattermostChannelName": "「チャンネル名」フィールドにチャンネル名を入力することで、Webhook から送信されるデフォルトのチャンネル名を上書きできます。これは Mattermost の Webhook 設定で有効にしておく必要があります。例 #other-channel",
+ "Saved.": "保存しました。",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "接続するサーバーのホスト名を入力するか、{local_mta} を使用する場合は {localhost} を入力します",
+ "e.g. {discordThreadID}": "例 {discordThreadID}",
+ "postToExistingThread": "既存のスレッド/フォーラムに投稿",
+ "forumPostName": "投稿先のフォーラム名",
+ "threadForumPostID": "投稿先のスレッド/フォーラム ID",
+ "whatHappensAtForumPost": "新規フォーラム投稿。既存の投稿がある場合は投稿しません。既存の投稿の中に投稿を作成するには「{option}」を使用してください",
+ "emailTemplateHeartbeatJSON": "死活監視 (heartbeat) を記述している JSON オブジェクト",
+ "leave blank for default subject": "空の場合はデフォルトの件名を使用します",
+ "cellsyntSplitLongMessages": "長文メッセージは最大 6 つに分割してください。153 x 6 = 918文字です。",
+ "Allow Long SMS": "ロングコード SMS を許可する",
+ "cellsyntDestination": "受信者の電話番号。00 に続けて国番号を付ける国際形式である必要があります。たとえば、英国の番号 07920 110 000 の場合は 00447920110000(合計17桁まで)になります。HTTP リクエストごとに指定できる受信者数は、カンマ区切りで最大 25,000 件です。",
+ "emailTemplateMonitorJSON": "監視対象を記述している JSON オブジェクト",
+ "successDisabled": "正常に無効化しました。",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "長期アクセストークンは、プロフィール名(左下)をクリックし、下にスクロールして「トークンを作成」をクリックすると作成できます。 ",
+ "Effective Date Range": "有効範囲(オプション)",
+ "DateTime Range": "日付範囲",
+ "Maintenance Time Window of a Day": "今日のメンテナンス時間のウィンドウ",
+ "octopushLogin": "コントロールパネルの HTTP API 認証情報にある「ログイン」",
+ "notificationRegional": "リージョナル(一部の地域のみ)",
+ "pushOthers": "その他",
+ "Host URL": "ホストURL",
+ "enableNSCD": "NSCD (Name Service Cache Daemon) を有効にして、すべての DNS クエリをキャッシュする",
+ "successKeywordExplanation": "成功としてカウントされる MQTT のキーワード",
+ "DockerHostRequired": "この監視の Docker ホストを設定してください。",
+ "noDockerHostMsg": "利用できません。Docker ホストを先にセットアップしてください。",
+ "styleElapsedTime": "経過時間を監視バーの下に表示",
+ "styleElapsedTimeShowNoLine": "表示(改行なし)",
+ "styleElapsedTimeShowWithLine": "表示(改行あり)",
+ "lastDay": "最終日",
+ "lastDay1": "月末",
+ "lastDay2": "月末の 2 日前",
+ "lastDay3": "月末の 3 日前",
+ "lastDay4": "月末の 4 日前",
+ "chromeExecutable": "Chrome/Chromium の実行ファイル",
+ "chromeExecutableDescription": "Docker を使用しており、Chromium がインストールされていない場合、インストールしてからテスト結果の表示するのに数分かかることがあります。1 GB の容量を必要とします。",
+ "jsonQueryDescription": "サーバーのJSONレスポンスから特定のデータを抽出するにはJSONクエリを使用してください。\"$\"で生のレスポンスが取得できます。抽出結果は文字列として期待結果と比較されます。ドキュメントについては{0}を参照し、クエリの検証には{1}を使用してください。",
+ "leave blank for default body": "空の場合はデフォルトの本文を使用します",
+ "apprise": "Apprise (50以上の通知サービスをサポートしています)",
+ "Apprise URL": "AppriseのURL",
+ "emailTemplateHostnameOrURL": "ホスト名/URL",
+ "emailCustomisableContent": "カスタマイズ可能なコンテンツ",
+ "emailCustomBody": "カスタム本文",
+ "emailTemplateServiceName": "サービス名",
+ "smtpLiquidIntroduction": "次の 2 つのテンプレート・フィールドは Liquid テンプレート言語で記述できます。これらの使い方は {0} にあります。以下は利用可能な変数です:",
+ "emailTemplateStatus": "ステータス",
+ "now": "現在",
+ "time ago": "{0}前",
+ "-year": "年",
+ "Json Query Expression": "Jsonクエリ表現",
+ "ignoredTLSError": "TLS/SSLエラーは無視されました",
+ "locally configured mail transfer agent": "独自設定されたメール転送エージェント",
+ "ignoreTLSErrorGeneral": "接続時のTLS/SSLエラーを無視する",
+ "successKeyword": "成功時のキーワード",
+ "pushViewCode": "Push モニターの使い方(コードを見る)",
+ "Reset Token": "トークンのリセット",
+ "templateLimitedToUpDownCertNotifications": "監視対象の UP/DOWN と証明書の有効期限通知でのみ利用可能",
+ "templateLimitedToUpDownNotifications": "監視対象の UP/DOWN の通知でのみ利用可能",
+ "webhookBodyPresetOption": "プリセット - {0}",
+ "Optional": "オプション",
+ "and": "かつ",
+ "From Email": "送信元メールアドレス",
+ "CurlDebugInfoProxiesUnsupported": "上記コマンド {curl} のProxyサポートは現在、実装されていません。",
+ "Your User ID": "あなたのユーザーID",
+ "programmingLanguages": "プログラミング言語",
+ "Debug": "デバッグ",
+ "Copy": "コピー",
+ "CopyToClipboardError": "クリップボードにコピーできません: {error}",
+ "CopyToClipboardSuccess": "コピーしました!",
+ "firewalls": "ファイアウォール",
+ "dns resolvers": "DNSリゾルバ",
+ "docker networks": "Dockerネットワーク",
+ "sameAsServerTimezone": "サーバーのタイムゾーンと同じ",
+ "cronExpression": "cron表記",
+ "invalidCronExpression": "不正なcron表記です: {0}",
+ "Single Maintenance Window": "単体メンテナンス・ウィンドウ",
+ "shrinkDatabaseDescriptionSqlite": "SQLiteデータベースで{vacuum}をトリガーしてください。{auto_vacuum}は既に有効化されていますが、これは{vacuum}コマンドが行うようなデータベースのデフラグメントや個々のデータベースページの再パックを行いません。",
+ "statusPageSpecialSlugDesc": "特別なスラッグ{0}:スラッグが指定されていない場合にこのページが表示されます",
+ "Automations can optionally be triggered in Home Assistant:": "オートメーションは Home Assistant を使って動作させることもできます:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "次にアクションを選択します。例えば、RGB ライトが赤になるようにシーンを切り替えるなどです。",
+ "wayToGetDiscordThreadId": "スレッド/フォーラム投稿IDを取得する方法は、チャンネルIDを取得する方法に似ています。IDの取得方法について詳しくはこちらをご覧ください{0}",
+ "Recipients": "受信者",
+ "Channel access token (Long-lived)": "チャンネルアクセストークン(長期)",
+ "grpcMethodDescription": "メソッド名はsayHello、checkのようにキャメルケースに変換されます。",
+ "rabbitmqNodesRequired": "このモニターのノードを設定してください。",
+ "rabbitmqNodesInvalid": "RabbitMQノードには完全修飾('http'で始まる)URLを使用してください。",
+ "RabbitMQ Username": "RabbitMQユーザー名",
+ "RabbitMQ Password": "RabbitMQパスワード",
+ "SendGrid API Key": "SendGrid APIキー",
+ "pushoversounds pushover": "Pushover (デフォルト)",
+ "pushoversounds gamelan": "Gamelan",
+ "pushoversounds persistent": "Persistent (long)",
+ "wayToGetKookBotToken": "アプリケーション作成とボットトークンの取得はこちら: {0}",
+ "pushoverDesc1": "緊急優先度(2)を設定すると、リトライ中のタイムアウトはデフォルトで30秒に設定されます。また、1時間が経過すると再試行は行われなくなります。",
+ "octopushTypeLowCost": "Low Cost (低速 - 時々オペレーターにブロックされることがあります)",
+ "octopushLegacyHint": "Octopushの旧バージョン(2011-2020)を使用していますか?それとも新バージョンを使用していますか?",
+ "You can divide numbers with": "数字を次のキーワードで分割できます",
+ "goAlertInfo": "GoAlertはオンコールスケジューリング、自動エスカレーション、通知(SMSや音声通話など)を行うオープンソースのアプリケーションです。適切な人物を、適切な方法で、適切なタイミングで自動的に招集できます! {0}",
+ "Mention group": "メンション {group}",
+ "matrixDesc2": "新しいユーザーを作成し、自分のMatrixユーザーのアクセストークンを使用しないことを強く推奨します。アクセストークンを使用すると、アカウント自体や参加している全てのルームにフルアクセスできてしまいます。代わりに、新しいユーザーを作成して通知を受け取りたいルームにのみ招待してください。アクセストークンは{0}を実行すると取得できます。",
+ "aboutSlackUsername": "メッセージ送信者の表示名を変更します。誰かにメンションしたい場合は、そのメンションをモニター表示名に含めてください。",
+ "aboutChannelName": "Webhookチャンネルをバイパスしたい場合は「チャンネル名」フィールドにWebhookチャンネル名を入力してください。例:#other-channel",
+ "wayToGetPagerDutyKey": "キーを取得するには、サービス -> サービスディレクトリ -> (サービスを選択) -> インテグレーション -> インテグレーション と進み、「Events API V2」で検索してください。詳細情報はこちら: {0}",
+ "smseagleRecipient": "受信者(複数の場合はカンマで区切る)",
+ "smspartnerPhoneNumberHelptext": "番号は次のような国際形式で入力してください: {0}, {1}。複数の場合は{2}で区切ってください。",
+ "Server URL should not contain the nfty topic": "サーバーURLはntfyトピックを含むべきではありません",
+ "onebotSafetyTips": "安全のためにアクセストークンを設定してください",
+ "PushDeer Server": "PushDeerサーバー",
+ "pushDeerServerDescription": "公式サーバーを使用する場合は空白のままにしてください",
+ "apiKeyAddedMsg": "APIキーが追加されました。APIキーは再表示できないため、メモなどに保存してください。",
+ "wayToGetPagerTreeIntegrationURL": "PagerTreeでUptime Kumaインテグレーションを作成後、エンドポイントをコピーしてください。詳細は {0}",
+ "twilioAuthToken": "認証トークン/APIキーシークレット",
+ "Show Clickable Link Description": "チェックを入れると、このステータスページにアクセスできる全ての人がモニターURLにアクセスできるようになります。",
+ "Open Badge Generator": "オープンバッジの生成",
+ "Badge Generator": "{0}のバッジ生成",
+ "Badge Label Color": "バッジラベルの色",
+ "Badge Up Color": "Upを示すバッジの色",
+ "Badge Maintenance Color": "Maintenanceを示すバッジの色",
+ "monitorToastMessagesLabel": "モニターのトースト通知",
+ "monitorToastMessagesDescription": "モニターのトースト通知は、指定された秒数後に消えます。-1に設定するとタイムアウトが無効になり、0に設定するとトースト通知が無効になります。",
+ "Pick a SASL Mechanism...": "SASLメカニズムを選択してください",
+ "noGroupMonitorMsg": "利用できません。先にグループモニターを作成してください。",
+ "wayToGetFlashDutyKey": "チャンネル -> (チャンネルを選択) -> 統合 -> 新しい統合を追加 のページに移動し、「Uptime Kuma」を追加してプッシュアドレスを取得し、アドレス内の統合キーをコピーしてください。詳細はこちら:",
+ "cacheBusterParamDescription": "キャッシュをスキップするためにランダム生成したパラメータ",
+ "gamedigGuessPortDescription": "Valve Server Query Protocolで使用されるポートはクライアントポートとは異なる場合があります。モニターがサーバーに接続できない場合は、この設定を試してください。",
+ "receiverInfoSevenIO": "受信側番号がドイツの番号ではない場合、番号の前に国コードを追加する必要があります(例:アメリカの国コード1の場合は、017612121212の代わりに117612121212を使用します)。",
+ "wayToWriteWhapiRecipient": "電話番号には国コードが必要ですが、先頭のプラス記号は不要です({0})。連絡先IDの場合({1})、グループIDの場合({2})。",
+ "callMeBotGet": "{0}、{1}、および{2}のエンドポイントを生成できます。レート制限がかかる可能性があるため注意してください。レート制限は次のようになります: {3}",
+ "gtxMessagingFromHint": "携帯電話の受信者にはメッセージの送信者としてTPOAが表示されます。最大11文字の英数字、ショートコード、ローカルロングコード、または国際電話番号({e164}、{e212}、または{e214})が使用できます。",
+ "cellsyntOriginatortypeNumeric": "数値(最大15桁)で、先頭に00を付けない国際フォーマットの電話番号(例:イギリスの番号07920 110 000は447920110000として設定する必要があります)。受信者はメッセージに返信できます。",
+ "snmpCommunityStringHelptext": "この文字列はSNMP対応デバイスへの認証とアクセス制御用のパスワードとして機能します。SNMPデバイスの文字列設定と一致させてください。",
+ "snmpOIDHelptext": "センサーや監視したいステータス用のOIDを入力してください。OIDが不明な場合はMIBブラウザやSNMPソフトウェアなどのネットワーク管理ツールを使用してください。",
+ "threemaRecipientTypePhoneFormat": "E.164形式、先頭の+無し",
+ "threemaBasicModeInfo": "注記: このインテグレーションは、ベーシックモード(サーバーベースの暗号化)のThreema Gatewayを使用します。詳細は{0}",
+ "privateOnesenderDesc": "電話番号が有効であることを確認してください。プライベート電話番号にメッセージを送信するには次のように入力してください。例:628123456789",
+ "groupOnesenderDesc": "グループIDが有効であることを確認してください。グループIDにメッセージを送信するには次のように入力してください。例:628123456789-342345",
+ "Lost connection to the socket server.": "ソケットサーバーへのコネクションが切れました。",
+ "signl4Docs": "SIGNL4の設定方法やSIGNL4のWebhook URLを取得する方法の詳細は{0}で確認できます。",
+ "equals": "一致",
+ "contains": "含む",
+ "less than or equal to": "以下",
+ "Doorbell": "Doorbell",
+ "Custom sound to override default notification sound": "デフォルトの通知音を上書きするカスタムサウンド",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "即時通知はデバイスが「おやすみモード」の場合でも通知されます。",
+ "RabbitMQ Nodes": "RabbitMQ管理ノード",
+ "rabbitmqNodesDescription": "RabbitMQ管理ノードのURLを、プロトコルとポートを含めて入力してください。例: {0}",
+ "rabbitmqHelpText": "モニターを使用するには、RabbitMQの設定で管理プラグインを有効にする必要があります。詳細はこちら: {rabitmq_documentation}",
+ "pushoversounds bike": "Bike",
+ "pushoversounds bugle": "Bugle",
+ "pushoversounds cashregister": "Cash Register",
+ "pushoversounds classical": "Classical",
+ "pushoversounds cosmic": "Cosmic",
+ "pushoversounds falling": "Falling",
+ "pushoversounds incoming": "Incoming",
+ "pushoversounds magic": "Magic",
+ "pushoversounds mechanical": "Mechanical",
+ "pushoversounds pianobar": "Piano Bar",
+ "pushoversounds siren": "Siren",
+ "pushoversounds spacealarm": "Space Alarm",
+ "pushoversounds tugboat": "Tug Boat",
+ "pushoversounds alien": "Alien Alarm (long)",
+ "pushoversounds climb": "Climb (long)",
+ "pushoversounds echo": "Pushover Echo (long)",
+ "pushoversounds updown": "Up Down (long)",
+ "pushoversounds vibrate": "Vibrate Only",
+ "pushoversounds none": "None (silent)",
+ "wayToGetKookGuildID": "Kookの設定で「開発者モード」を有効にし、ギルドを右クリックしてIDを取得してください。",
+ "Guild ID": "ギルドID",
+ "pushoverDesc2": "別デバイスに通知を送信したい場合、「デバイス」フィールドに入力してください。",
+ "octopushTypePremium": "Premium (高速 - アラート用に推奨)",
+ "checkPrice": "{0}の料金:",
+ "Check octopush prices": "octopushの料金を確認してください: {0}",
+ "LunaSea Device ID": "LunaSeaデバイスID",
+ "Strategy": "戦略",
+ "Free Mobile User Identifier": "Free MobileユーザID",
+ "Free Mobile API Key": "Free Mobile APIキー",
+ "Proto Service Name": "Protoサービス名",
+ "Proto Method": "Protoメソッド",
+ "Proto Content": "Protoコンテンツ",
+ "high": "高",
+ "SendKey": "SendKey",
+ "SMSManager API Docs": "SMSManager APIドキュメント ",
+ "Base URL": "ベースURL",
+ "goAlertIntegrationKeyInfo": "サービスの汎用APIインテグレーションキーを「aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee」の形式で取得してください。通常、URLのトークンパラメータの値です。",
+ "TemplateCode": "テンプレートコード",
+ "SignName": "署名",
+ "Sms template must contain parameters: ": "SMSテンプレートは次のパラメータを含む必要があります: ",
+ "Bark API Version": "Bark APIバージョン",
+ "Bark Endpoint": "Barkエンドポイント",
+ "Bark Group": "Barkグループ",
+ "For safety, must use secret key": "安全のためにシークレットキーを使用する必要があります。",
+ "Mentioning": "メンション",
+ "Don't mention people": "メンションしない",
+ "Platform": "プラットフォーム",
+ "High": "高",
+ "promosmsTypeEco": "SMS ECO - 安価ですが低速で混雑 する場合があります。使用はポーランド在住の受信者に限られます。",
+ "promosmsTypeFlash": "SMS FLASH - メッセージは受信者のデバイスに自動的に表示されます。使用はポーランド在住の受信者に限られます。",
+ "promosmsTypeFull": "SMS FULL - SMSのプレミアム版です。送信者名を使用できます(名前を先に登録する必要があります)。アラート用途として信頼性があります。",
+ "promosmsTypeSpeed": "SMS SPEED - システム内の最も高い優先度を持ちます。非常に迅速で信頼性がありますが、コストは高くなります(SMS FULLの約2倍の料金)。",
+ "promosmsPhoneNumber": "電話番号 (Polishの受信者であればエリアコードを省略できます)",
+ "promosmsSMSSender": "SMS送信者名: 事前登録済みの名前、または次の既定値のいずれか(InfoSMS, SMS Info, MaxSMS, INFO, SMS)",
+ "Feishu WebHookUrl": "Feishu Webhook URL",
+ "matrixHomeserverURL": "ホームサーバーURL (http(s)://で始まり、オプションでポート番号を含む)",
+ "Internal Room Id": "内部ルームID",
+ "matrixDesc1": "内部ルームIDはルーム設定の詳細セクションでを確認でき、「!QMdRCpUIfLwsfjxye6:home.server」のような形式になっています。",
+ "aboutNotifyChannel": "チャンネル通知はメンバーの状態に関わらず、チャンネルの全てのメンバーに通知を送信します。",
+ "setup a new monitor group": "新しいモニターグループをセットアップ",
+ "openModalTo": "{0}へのモーダルを開く",
+ "Add a domain": "ドメインを追加",
+ "Remove domain": "ドメインの削除 '{0}'",
+ "signalImportant": "重要: 受信者にグループと番号を混在させることはできません!",
+ "aboutWebhooks": "Webhookに関する追加の情報はこちら: {0}",
+ "WeCom Bot Key": "WeCom Botキー",
+ "promosmsAllowLongSMS": "長いSMSメッセージを許可",
+ "alertaApiKey": "APIキー",
+ "Group": "グループ",
+ "smtpDkimDesc": "使用方法はNodemailer DKIMの{0}を参照してください。",
+ "documentation": "ドキュメント",
+ "smtpDkimKeySelector": "キーセレクター",
+ "smtpDkimPrivateKey": "プライベートキー",
+ "smtpDkimheaderFieldNames": "署名するヘッダーキー(オプション)",
+ "Integration Key": "Integrationキー",
+ "Integration URL": "Integration URL",
+ "Auto resolve or acknowledged": "Auto resolve または acknowledged",
+ "do nothing": "何もしない",
+ "auto acknowledged": "自動確認済み",
+ "auto resolve": "自動解決済み",
+ "alertaApiEndpoint": "APIエンドポイント",
+ "alertaEnvironment": "環境",
+ "alertaAlertState": "アラート状態",
+ "alertaRecoverState": "リカバリー状態",
+ "serwersmsAPIUser": "APIユーザ名 (webapi_ プレフィックスを含む)",
+ "serwersmsAPIPassword": "APIパスワード",
+ "serwersmsPhoneNumber": "電話番号",
+ "serwersmsSenderName": "SMS送信者名(カスタマーポータル経由で登録された)",
+ "smseagleTo": "電話番号",
+ "smseagleGroup": "電話帳グループ名",
+ "smseagleContact": "電話帳連絡先名",
+ "smseagleRecipientType": "受信者タイプ",
+ "smseagleToken": "APIアクセストークン",
+ "smseagleUrl": "SMSEagleデバイスURL",
+ "smseagleEncoding": "Unicodeで送信",
+ "smseaglePriority": "メッセージ優先度 (0-9, default = 0)",
+ "smspartnerApiurl": "APIキーはダッシュボードから確認できます: {0}",
+ "smspartnerPhoneNumber": "電話番号",
+ "smspartnerSenderName": "SMS送信者名",
+ "smspartnerSenderNameInfo": "3文字以上11文字以下の通常文字",
+ "Recipient Number": "受信者番号",
+ "From Name/Number": "送信者名/送信元番号",
+ "Leave blank to use a shared sender number.": "共有送信番号を使用する場合は空白のままにしてください。",
+ "Octopush API Version": "Octopush APIバージョン",
+ "Legacy Octopush-DM": "旧Octopush-DM",
+ "ntfy Topic": "ntfyトピック",
+ "onebotHttpAddress": "OneBot HTTPアドレス",
+ "onebotMessageType": "OneBotメッセージタイプ",
+ "onebotGroupMessage": "グループ",
+ "onebotPrivateMessage": "プライベート",
+ "onebotUserOrGroupId": "グループ/ユーザーID",
+ "PushDeer Key": "PushDeerキー",
+ "wayToGetClickSendSMSToken": "APIユーザー名とAPIキーは{0}から取得できます。",
+ "Custom Monitor Type": "カスタムモニタータイプ",
+ "Don't expire": "期限をつけない",
+ "Continue": "続ける",
+ "Add Another": "追加",
+ "apiKey-active": "アクティブ",
+ "apiKey-expired": "期限切れ",
+ "apiKey-inactive": "インアクティブ",
+ "pagertreeIntegrationUrl": "インテグレーションURL",
+ "pagertreeUrgency": "緊急度",
+ "pagertreeSilent": "サイレント",
+ "pagertreeLow": "低",
+ "pagertreeMedium": "中",
+ "pagertreeHigh": "高",
+ "pagertreeCritical": "クリティカル",
+ "pagertreeResolve": "自動解決",
+ "pagertreeDoNothing": "何もしない",
+ "lunaseaTarget": "ターゲット",
+ "lunaseaDeviceID": "デバイスID",
+ "lunaseaUserID": "ユーザーID",
+ "ntfyAuthenticationMethod": "認証方法",
+ "ntfyPriorityHelptextAllEvents": "全てのイベントは最大の優先度で送信されます。",
+ "ntfyPriorityHelptextAllExceptDown": "優先度が{1}に設定された{0}イベントを除く、全てのイベントは設定された優先度で送信されます。",
+ "ntfyUsernameAndPassword": "ユーザー名とパスワード",
+ "twilioAccountSID": "アカウントSID",
+ "twilioApiKey": "APIキー(オプション)",
+ "twilioFromNumber": "送信元番号",
+ "twilioToNumber": "送信先番号",
+ "Monitor Setting": "{0}のモニター設定",
+ "Show Clickable Link": "クリックできるリンクを表示",
+ "Badge Type": "バッジタイプ",
+ "Badge Duration (in hours)": "バッジ間隔(時間単位)",
+ "Badge Label": "バッジラベル",
+ "Badge Prefix": "バッジのプレフィックス",
+ "Badge Suffix": "バッジのサフィックス",
+ "Badge Color": "バッジの色",
+ "Badge Label Prefix": "バッジラベルのプリフィックス",
+ "Badge Preview": "バッジのプレビュー",
+ "Badge Label Suffix": "バッジラベルのサフィックス",
+ "Badge Pending Color": "Pendingを示すバッジの色",
+ "Badge Down Color": "Downを示すバッジの色",
+ "Badge Warn Color": "Warnを示すバッジの色",
+ "Badge Warn Days": "バッジをWarn表示にするまでの日数",
+ "Badge Down Days": "バッジをDown表示にするまでの日数",
+ "Badge Style": "バッジスタイル",
+ "Badge value (For Testing only.)": "バッジの値(テスト用)",
+ "Monitor Group": "モニターグループ",
+ "toastErrorTimeout": "エラー通知のタイムアウト",
+ "toastSuccessTimeout": "成功通知のタイムアウト",
+ "Kafka Brokers": "Kafkaブローカー",
+ "Enter the list of brokers": "ブローカーのリストを入力してください",
+ "Press Enter to add broker": "エンターを押してブローカーを追加してください",
+ "Kafka Topic Name": "Kafkaトピック名",
+ "Kafka Producer Message": "Kafka Producerのメッセージ",
+ "Enable Kafka SSL": "Kafka SSLを有効にする",
+ "Enable Kafka Producer Auto Topic Creation": "Kafka Producerのトピック自動生成を有効にする",
+ "Kafka SASL Options": "Kafka SASLオプション",
+ "Mechanism": "メカニズム",
+ "Authorization Identity": "認証ID",
+ "AccessKey Id": "アクセスキーID",
+ "Secret AccessKey": "シークレットアクセスキー",
+ "Session Token": "セッショントークン",
+ "Close": "閉じる",
+ "Request Body": "リクエストボディ",
+ "FlashDuty Severity": "重要度",
+ "nostrRelays": "Nostrリレー",
+ "nostrRelaysHelp": "1行につき1つのリレーURL",
+ "nostrSender": "送信者プライベートキー(nsec)",
+ "nostrRecipients": "受信者パブリックキー(npub)",
+ "nostrRecipientsHelp": "npubフォーマット、1行ごと",
+ "showCertificateExpiry": "証明書の有効期限を表示",
+ "noOrBadCertificate": "無効/不正証明書",
+ "cacheBusterParam": "{0}パラメータを追加する",
+ "gamedigGuessPort": "Gamedig: ポートを推測",
+ "Message format": "メッセージフォーマット",
+ "Send rich messages": "リッチメッセージを送信",
+ "Bitrix24 Webhook URL": "Bitrix24 Webhook URL",
+ "wayToGetBitrix24Webhook": "Webhookは次の手順で作成できます {0}",
+ "bitrix24SupportUserID": "Bitrix24のユーザIDを入力してください。ユーザIDはユーザプロファイルのリンクから取得できます。",
+ "authUserInactiveOrDeleted": "そのユーザーは非アクティブまたは削除されています。",
+ "apiKeySevenIO": "SevenIO APIキー",
+ "wayToGetWhapiUrlAndToken": "{0}から目的のチャンネルに入ることでAPI URLとトークンを取得できます。",
+ "whapiRecipient": "電話番号/連絡先ID/グループID",
+ "API URL": "API URL",
+ "wayToGetHeiiOnCallDetails": "Trigger IDとAPIキーの取得方法はこちら: {documentation}",
+ "documentationOf": "{0}のドキュメント",
+ "gtxMessagingApiKeyHint": "APIキーは次のページで確認できます: My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "送信元番号/Transmission Path Originating Address (TPOA)",
+ "To Phone Number": "送信先電話番号",
+ "gtxMessagingToHint": "先頭に「+」を付けた国際フォーマット({e164}、{e212}、または{e214})",
+ "Originator type": "発信者タイプ",
+ "cellsyntOriginatortypeAlphanumeric": "英数字の文字列(最大11文字の英数字)。受信者はメッセージに返信できません。",
+ "Originator": "発信者",
+ "cellsyntOriginator": "受信者の携帯電話にメッセージの発信者として表示されます。許可される値と機能はoriginatortypeパラメータに依存します。",
+ "Destination": "送信先",
+ "Community String": "コミュニティー文字列",
+ "OID (Object Identifier)": "OID (Object ID)",
+ "max 11 alphanumeric characters": "最大11文字の英数字",
+ "SNMP Version": "SNMPバージョン",
+ "Please enter a valid OID.": "有効なOIDを入力してください。",
+ "wayToGetThreemaGateway": "Threema Gateway用に登録可能です: {0}",
+ "threemaRecipient": "受信者",
+ "threemaRecipientType": "受信タイプ",
+ "threemaRecipientTypeIdentity": "Threema-ID",
+ "threemaRecipientTypeIdentityFormat": "8文字",
+ "threemaRecipientTypePhone": "電話番号",
+ "threemaRecipientTypeEmail": "メールアドレス",
+ "threemaSenderIdentity": "Gateway-ID",
+ "threemaSenderIdentityFormat": "8文字、通常 * で始まります",
+ "threemaApiAuthenticationSecret": "Gateway-IDシークレット",
+ "apiKeysDisabledMsg": "認証が無効になっているため、APIキーは無効です。",
+ "Host Onesender": "Onesenderホスト",
+ "Token Onesender": "Onesenderトークン",
+ "Recipient Type": "受信タイプ",
+ "Private Number": "プライベート電話番号",
+ "Group ID": "グループID",
+ "wayToGetOnesenderUrlandToken": "OnesenderのWebサイトからURLとトークンを取得できます。詳細は{0}",
+ "Add Remote Browser": "リモートブラウザを追加",
+ "New Group": "新規グループ",
+ "Group Name": "グループ名",
+ "OAuth2: Client Credentials": "OAuth2: クライアントクレデンシャル",
+ "Authentication Method": "認証方法",
+ "Authorization Header": "認証ヘッダー",
+ "Form Data Body": "フォームデータボディ",
+ "OAuth Token URL": "OAuthトークンURL",
+ "Client ID": "クライントID",
+ "Client Secret": "クライアントシークレット",
+ "OAuth Scope": "OAuthスコープ",
+ "Optional: Space separated list of scopes": "オプション:スペースで区切られたスコープのリスト",
+ "Go back to home page.": "ホームページに戻る",
+ "No tags found.": "タグが見つかりません。",
+ "Cannot connect to the socket server.": "ソケットサーバに接続できません。",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "SIGNL4 Webhook URL",
+ "conditionAddGroup": "グループを追加",
+ "conditionDeleteGroup": "グループを削除",
+ "conditionValuePlaceholder": "値",
+ "Condition": "条件",
+ "Conditions": "条件",
+ "conditionAdd": "条件を追加",
+ "conditionDelete": "条件を削除",
+ "not equals": "不一致",
+ "not contains": "含まない",
+ "starts with": "から始まる",
+ "not starts with": "から始まらない",
+ "ends with": "で終わる",
+ "not ends with": "で終わらない",
+ "less than": "未満",
+ "greater than": "より大きい",
+ "greater than or equal to": "以上",
+ "record": "レコード",
+ "Notification Channel": "通知チャンネル",
+ "Sound": "サウンド",
+ "Alphanumerical string and hyphens only": "英数字とハイフンのみ",
+ "Arcade": "Arcade",
+ "Correct": "Correct",
+ "Fail": "Fail",
+ "Harp": "Harp",
+ "Reveal": "Reveal",
+ "Bubble": "Bubble",
+ "Flute": "Flute",
+ "Money": "Money",
+ "Scifi": "Scifi",
+ "Clear": "Clear",
+ "Elevator": "Elevator",
+ "Guitar": "Guitar",
+ "Pop": "Pop",
+ "Time Sensitive (iOS Only)": "即時通知(iOSのみ)",
+ "From": "送信元",
+ "Can be found on:": "次の場所にあります: {0}",
+ "The phone number of the recipient in E.164 format.": "受信者の電話番号はE.164形式で入力してください。",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "返信を受け取るためには、テキスト送信者IDまたはE.164形式の電話番号のいずれかが必要です。",
+ "Separate multiple email addresses with commas": "メールアドレスが複数の場合はカンマで区切ってください。",
+ "aboutKumaURL": "Uptime KumaのURLフィールドを空白のままにすると、URLフィールドにはデフォルトでプロジェクトのGitHubページが設定されます。",
+ "smtpDkimHashAlgo": "ハッシュアルゴリズム(オプション )",
+ "smtpDkimskipFields": "署名しないヘッダーキー(オプション)",
+ "Key Added": "追加キー",
+ "Bark Sound": "Bark通知音",
+ "Badge URL": "バッジURL",
+ "pushoversounds intermission": "Intermission",
+ "telegramServerUrl": "(任意)サーバーUrl",
+ "telegramServerUrlDescription": "Telegramのボットapiの制限を解除したり、ブロックされた地域(中国、イランなど)でアクセスする。詳しくは {0} をクリックしてください。デフォルト: {1}",
+ "wayToWriteWahaChatId": "電話番号の先頭にプラス記号を付けない国際電話番号({0})、コンタクトID ({1})、またはグループID ({2}) 。WAHAセッションからこのチャットIDに通知が送信されます。",
+ "wahaSession": "セッション",
+ "wahaChatId": "チャットID(電話番号/連絡先ID/グループID)",
+ "wayToGetWahaApiUrl": "WAHAインスタンスのURL。",
+ "wayToGetWahaApiKey": "APIキーはWAHAを実行するために使用したWHATSAPP_API_KEY環境変数の値です。",
+ "wayToGetWahaSession": "このセッションから WAHA はチャット ID に通知を送信します。WAHAダッシュボードで確認できます。",
+ "YZJ Webhook URL": "YZJ ウェブフック URL",
+ "YZJ Robot Token": "YZJ ロボットトークン",
+ "Plain Text": "平文",
+ "Message Template": "メッセージテンプレート",
+ "Template Format": "テンプレート形式",
+ "templateServiceName": "サービス名",
+ "templateHostnameOrURL": "ホスト名またはURL",
+ "templateStatus": "ステータス",
+ "telegramUseTemplate": "カスタムメッセージテンプレートを使用",
+ "telegramUseTemplateDescription": "有効にすると、メッセージはカスタムテンプレートを使って送信されます。",
+ "telegramTemplateFormatDescription": "Telegramではメッセージに異なるマークアップ言語を使用することができます。詳細はTelegram {0} を参照してください。",
+ "Font Twemoji by Twitter licensed under": "TwemojiフォントはTwitterライセンス下でライセンスされています"
}
diff --git a/src/lang/ka.json b/src/lang/ka.json
index 2617e17c7..db4d89cf0 100644
--- a/src/lang/ka.json
+++ b/src/lang/ka.json
@@ -17,5 +17,6 @@
"List": "სია",
"Add": "დამატება",
"Add New Monitor": "ახალი მონიტორის დამატება",
- "Down": "დაბლა"
+ "Down": "დაბლა",
+ "setupDatabaseChooseDatabase": "რომელი მონაცემთა ბაზის გამოყენება გსურთ?"
}
diff --git a/src/lang/ko-KR.json b/src/lang/ko-KR.json
index b3671c80f..be43aad89 100644
--- a/src/lang/ko-KR.json
+++ b/src/lang/ko-KR.json
@@ -76,7 +76,7 @@
"Accepted Status Codes": "응답 성공 상태 코드",
"Save": "저장",
"Notifications": "알림",
- "Not available, please setup.": "존재하지 않아요, 새로운 거 하나 만드는 건 어때요?",
+ "Not available, please setup.": "존재하지 않아요. 새로운 거 하나 만드는 건 어때요?",
"Setup Notification": "알림 설정",
"Light": "화이트",
"Dark": "다크",
@@ -349,7 +349,6 @@
"Discard": "취소",
"Cancel": "취소",
"Powered by": "Powered by",
- "shrinkDatabaseDescription": "SQLite 데이터베이스 VACUUM을 트리거해요. 만약 데이터베이스가 1.10.0 버전 이후에 생성되었다면 AUTO_VACUUM이 설정되어 있어 이 작업은 필요 없을 거에요.",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "API Usename (webapi_ 접두사 포함)",
"serwersmsAPIPassword": "API 비밀번호",
@@ -779,5 +778,61 @@
"Add a domain": "도메인 추가",
"Remove domain": "도메인 '{0}' 제거",
"Monitor Group": "모니터링 그룹",
- "Monitor Setting": "{0}의 모니터 설정"
+ "Monitor Setting": "{0}의 모니터 설정",
+ "now": "지금",
+ "time ago": "{0} 전",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "연결하려는 서버의 호스트 이름을 입력하거나 {local_mta}를 사용하려는 경우 {localhost}를 입력합니다",
+ "-year": "-연도",
+ "Json Query Expression": "Json 쿼리 표현식",
+ "Host URL": "호스트 URL",
+ "locally configured mail transfer agent": "로컬로 구성된 메일 전송 에이전트",
+ "ignoreTLSErrorGeneral": "연결에 TLS/SSL 오류 무시하기",
+ "ignoredTLSError": "TLS/SSL 오류가 무시되었습니다",
+ "liquidIntroduction": "템플릿 생성은 Liquid 템플릿 언어를 통해 이루어집니다. 사용 지침은 {0}을 참조하세요. 사용 가능한 변수는 다음과 같습니다:",
+ "templateMsg": "알림 메시지",
+ "templateLimitedToUpDownCertNotifications": "업/다운/인증서 만료 알림에만 사용 가능",
+ "templateLimitedToUpDownNotifications": "UP/DOWN 알림에만 사용 가능",
+ "webhookBodyPresetOption": "프리셋 - {0}",
+ "successKeyword": "성공 키워드",
+ "successKeywordExplanation": "성공으로 간주되는 MQTT 키워드",
+ "Reset Token": "토큰 초기화",
+ "Check/Uncheck": "체크/체크 해제",
+ "pushViewCode": "푸시 모니터링는 어떻게 사용하나요? (코드 보기)",
+ "Search monitored sites": "모니터링중인 사이트 검색",
+ "templateHeartbeatJSON": "heartbeat를 설명하는 오브젝트",
+ "shrinkDatabaseDescriptionSqlite": "SQLite 데이터베이스에서 {vacuum} 명령을 실행해요. {auto_vacuum}이 이미 활성화되어 있지만, {auto_vacuum}은 {vacuum}이 하는 것처럼 데이터베이스를 조각 모음 하거나 페이지를 다시 압축하지는 않아요.",
+ "statusPageSpecialSlugDesc": "특별한 주소 {0}: 아무런 주소도 입력되지 않으면 이 페이지가 보여요",
+ "Add a new expiry notification day": "새 만료 알림 날짜 추가",
+ "Refresh Interval Description": "이 상태 페이지는 {0}초마다 완전 새로고침(F5) 돼요",
+ "telegramServerUrlDescription": "텔레그램 봇 API의 제한을 해제하거나, 차단된 지역(중국, 이란 등)에서 액세스하려면 {0}을 클릭하세요. 기본값: {1}",
+ "chromeExecutableDescription": "Docker 사용자의 경우, Chromium이 아직 설치되지 않았다면 이를 설치하고 테스트 결과를 표시하는 데 몇 분이 걸릴 수 있어요. 1GB의 디스크 공간을 사용해요.",
+ "templateMonitorJSON": "monitor를 설명하는 오브젝트",
+ "webhookBodyCustomOption": "커스텀 Body",
+ "telegramServerUrl": "(선택) 서버 URL",
+ "and": "그리고",
+ "emailCustomisableContent": "사용자 지정 가능한 콘텐츠",
+ "smtpLiquidIntroduction": "다음 두 개 필드는 Liquid 템플릿 언어를 통해 템플릿화할 수 있습니다. 사용 지침은 {0}을 참조하세요. 사용 가능한 변수는 다음과 같습니다:",
+ "leave blank for default subject": "기본값을 사용하려면 비워두세요",
+ "emailCustomBody": "커스텀 Body",
+ "leave blank for default body": "기본값을 사용하려면 비워두세요",
+ "templateServiceName": "서비스 이름",
+ "templateHostnameOrURL": "호스트명 또는 URL",
+ "templateStatus": "상태",
+ "selectedMonitorCount": "선택됨: {0}",
+ "Remove the expiry notification": "만료 알림 날짜 제거",
+ "Refresh Interval": "새로고침 주기",
+ "noDockerHostMsg": "사용할 수 없습니다. 먼저 도커 호스트를 설정하세요.",
+ "DockerHostRequired": "이 모니터링을 위한 도커 호스트를 설정해 주세요.",
+ "tailscalePingWarning": "Tailscale Ping 모니터링을 사용하려면 Docker 없이 Uptime Kuma를 설치하고 서버에 Tailscale 클라이언트도 설치해야 합니다.",
+ "telegramUseTemplate": "커스텀 메시지 템플릿 사용",
+ "telegramUseTemplateDescription": "활성화하면 메시지를 보낼 때 커스텀 템플릿을 사용해요.",
+ "telegramTemplateFormatDescription": "텔레그램은 메시지에 다양한 마크업 언어를 사용할 수 있어요. 자세한 내용은 텔레그램 {0}을 참조하세요.",
+ "RabbitMQ Username": "RabbitMQ 사용자명",
+ "RabbitMQ Password": "RabbitMQ 비밀번호",
+ "wahaSession": "세션",
+ "emailTemplateMsg": "알림 메시지",
+ "Select message type": "메시지 유형 선택",
+ "Send to channel": "채널로 전송",
+ "Create new forum post": "새 포럼 게시물 만들기",
+ "Your User ID": "사용자 ID"
}
diff --git a/src/lang/lt.json b/src/lang/lt.json
new file mode 100644
index 000000000..874927911
--- /dev/null
+++ b/src/lang/lt.json
@@ -0,0 +1,1072 @@
+{
+ "languageName": "Lietuvių",
+ "settingUpDatabaseMSG": "Vyksta duomenų bazės sąranka. Tai gali užtrukti, būkite kantrūs.",
+ "Settings": "Parametrai",
+ "Dashboard": "Skydelis",
+ "Help": "Pagalba",
+ "New Update": "Naujas atnaujinimas",
+ "Language": "Kalba",
+ "Appearance": "Išvaizda",
+ "General": "Bendra",
+ "Version": "Versija",
+ "List": "Sąrašas",
+ "Home": "Pradžia",
+ "Add": "Pridėti",
+ "Add New Monitor": "Pridėti naują stebėjimą",
+ "Quick Stats": "Greita statistika",
+ "Up": "Veikia",
+ "statusMaintenance": "Profilaktikos darbai",
+ "Unknown": "Nežinomas",
+ "Cannot connect to the socket server": "Nepavyksta prisijungti prie lizdo serverio",
+ "Reconnecting...": "Atkuriamas ryšys...",
+ "General Monitor Type": "Bendras stebėjimo tipas",
+ "Passive Monitor Type": "Pasyvus stebėjimo tipas",
+ "markdownSupported": "Palaikoma Markdown sintaksė",
+ "Pause": "Pristabdyti",
+ "Name": "Pavadinimas",
+ "Status": "Būsena",
+ "DateTime": "Data ir laikas",
+ "Message": "Žinutė",
+ "Resume": "Tęsti",
+ "Edit": "Redaguoti",
+ "Delete": "Ištrinti",
+ "Current": "Dabartinis",
+ "Uptime": "Veikimo trukmė",
+ "Cert Exp.": "Sertifikato baig.",
+ "day": "diena | dienos(-ų)",
+ "-day": "-dienų",
+ "hour": "valanda",
+ "-hour": "-valandos",
+ "Ping": "Ping",
+ "Monitor Type": "Stebėjimo tipas",
+ "Keyword": "Raktažodis",
+ "Invert Keyword": "Invertuoti raktažodį",
+ "Json Query": "Json užklausa",
+ "Friendly Name": "Draugiškas pavadinimas",
+ "URL": "URL adresas",
+ "locally configured mail transfer agent": "lokaliai sukonfigūruotas pašto perdavimo agentas",
+ "Request Timeout": "Užklausos trukmės limitas",
+ "timeoutAfter": "Trukmės limitas po {0} sekundžių",
+ "Retries": "Pakartotiniai bandymai",
+ "Heartbeat Retry Interval": "Patikros signalo kartojimo intervalas",
+ "Advanced": "Išplėstinis",
+ "checkEverySecond": "Tikrinti kas {0} sekundžių",
+ "retryCheckEverySecond": "Pakartotinai bandyti kas {0} sekundžių",
+ "resendEveryXTimes": "Pakartotinai siųsti kas {0} kartų",
+ "resendDisabled": "Pakartotinis siuntimas išjungtas",
+ "ignoreTLSError": "TLS/SSL klaidų ignoravimas HTTPS svetainėse",
+ "ignoreTLSErrorGeneral": "Ignoruoti TLS/SSL ryšio klaidą",
+ "upsideDownModeDescription": "Apversti būseną aukštyn kojomis. Jei paslauga yra pasiekiama, ji NEVEIKIA.",
+ "Upside Down Mode": "Apverstas režimas",
+ "Max. Redirects": "Maksimalūs peradresavimai",
+ "pushOptionalParams": "Neprivalomi parametrai: {0}",
+ "pushViewCode": "Kaip naudoti Push stebėjimą? (Žiūrėti kodą)",
+ "pushOthers": "Kiti",
+ "programmingLanguages": "Programavimo kalbos",
+ "Save": "Išsaugoti",
+ "Notifications": "Pranešimai",
+ "Not available, please setup.": "Nepasiekiama, prašome nustatyti.",
+ "Setup Notification": "Nustatyti pranešimą",
+ "Light": "Šviesus",
+ "Theme - Heartbeat Bar": "Tema - Heartbeat Bar",
+ "styleElapsedTime": "Praėjęs laikas po patikros signalo juosta",
+ "styleElapsedTimeShowNoLine": "Rodyti (be linijos)",
+ "styleElapsedTimeShowWithLine": "Rodyti (su linija)",
+ "Normal": "Normalus",
+ "Bottom": "Apačia",
+ "None": "Nėra",
+ "Search Engine Visibility": "Matomumas paieškos sistemose",
+ "Allow indexing": "Leisti indeksuoti",
+ "Change Password": "Keisti slaptažodį",
+ "Current Password": "Dabartinis slaptažodis",
+ "New Password": "Naujas slaptažodis",
+ "Repeat New Password": "Naujas slaptažodis",
+ "Disable Auth": "Išjungti autentifikavimą",
+ "Enable Auth": "Įjungti autentifikavimą",
+ "disableauth.message1": "Ar tikrai norite {disableAuth}?",
+ "setupDatabaseChooseDatabase": "Kurią duomenų bazę norėtumėte naudoti?",
+ "setupDatabaseMariaDB": "Prisijunkite prie išorinės MariaDB duomenų bazės. Reikia nustatyti duomenų bazės prisijungimo informaciją.",
+ "setupDatabaseSQLite": "Paprastas duomenų bazės failas, rekomenduojamas nedidelės apimties diegimui. Iki versijos 2.0.0, Uptime Kuma, kaip numatytąją duomenų bazę, naudojo SQLite.",
+ "setupDatabaseEmbeddedMariaDB": "Nereikia nieko nustatyti. Šiame Docker atvaizde MariaDB įdiegta ir sukonfigūruota automatiškai. Uptime Kuma prie šios duomenų bazės prisijungs per Unix lizdą.",
+ "dbName": "Duomenų bazės pavadinimas",
+ "Theme": "Tema",
+ "Game": "Žaidimas",
+ "Primary Base URL": "Pradinis bazės URL adresas",
+ "Check Update On GitHub": "Patikrinkite atnaujinimą GitHub",
+ "Down": "Neveikia",
+ "Pending": "Laukiama",
+ "Maintenance": "Profilaktikos darbai",
+ "Specific Monitor Type": "Konkretus stebėjimo tipas",
+ "pauseDashboardHome": "Pristabdyta",
+ "No important events": "Jokių svarbių įvykių",
+ "Monitor": "Stebėjimas | Stebėjimai",
+ "Response": "Atsakymas",
+ "Expected Value": "Tikėtina vertė",
+ "Hostname": "Pagrindinio kompiuterio vardas",
+ "Host URL": "Priimančiojo URL adresas",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Įveskite serverio, prie kurio norite prisijungti, pagrindinį kompiuterio vardą arba {localhost}, jei ketinate naudoti {local_mta}",
+ "Port": "Prievadas",
+ "Heartbeat Interval": "Patikros signalo intervalas",
+ "Resend Notification if Down X times consecutively": "Pakartotinis pranešimo siuntimas, jei neveikia X kartų iš eilės",
+ "retriesDescription": "Didžiausias pakartotinių bandymų skaičius, kol paslauga pažymėta, kaip neveikianti, ir išsiųstas pranešimas",
+ "maxRedirectDescription": "Didžiausias galimų nukreipimų skaičius. Nustatykite 0, jei norite išjungti nukreipimus.",
+ "Accepted Status Codes": "Priimtini būsenos kodai",
+ "Push URL": "Push URL adresas",
+ "needPushEvery": "Šį URL adresą turėtumėte iškviesti kas {0} sekundžių.",
+ "Dark": "Tamsus",
+ "Auto": "Automatinis",
+ "Timezone": "Laiko juosta",
+ "Discourage search engines from indexing site": "Neskatinti paieškos sistemų indeksuoti svetainę",
+ "Update Password": "Atnaujinti slaptažodį",
+ "disable authentication": "išjungti autentifikavimą",
+ "where you intend to implement third-party authentication": "kur ketinate įdiegti trečiosios šalies autentifikavimą",
+ "Please use this option carefully!": "Atsargiai naudokite šią parinktį!",
+ "Logout": "Atsijungti",
+ "Leave": "Palikti",
+ "Confirm": "Patvirtinti",
+ "Yes": "Taip",
+ "No": "Ne",
+ "Password": "Slaptažodis",
+ "Remember me": "Prisiminti mane",
+ "Login": "Prisijungti",
+ "add one": "pridėti vieną",
+ "Notification Type": "Pranešimo tipas",
+ "Email": "El. paštas",
+ "Test": "Testas",
+ "Resolver Server": "Resolverio serveris",
+ "Last Result": "Paskutinis rezultatas",
+ "Create your admin account": "Susikurkite administratoriaus paskyrą",
+ "Repeat Password": "Pakartoti slaptažodį",
+ "Export Backup": "Eksportuoti atsarginę kopiją",
+ "Export": "Eksportuoti",
+ "Import": "Importuoti",
+ "respTime": "Reakcijos laikas (ms)",
+ "notAvailableShort": "N/A",
+ "Create": "Sukurti",
+ "Clear Data": "Išvalyti duomenis",
+ "Events": "Įvykiai",
+ "Heartbeats": "Patikros signalai",
+ "Affected Monitors": "Paveikti stebėjimai",
+ "Pick Affected Monitors...": "Pasirinkite paveiktus stebėjimus…",
+ "All Status Pages": "Visi būsenų puslapiai",
+ "alertWrongFileType": "Pasirinkite JSON failą.",
+ "Clear all statistics": "Pravalyti visą statistiką",
+ "Overwrite": "Perrašyti",
+ "Options": "Parinktys",
+ "Keep both": "Palikti abu",
+ "Verify Token": "Paikrinti žetoną",
+ "Enable 2FA": "Įjungti 2FA",
+ "Disable 2FA": "Išjungti 2FA",
+ "2FA Settings": "2FA nustatymai",
+ "filterActive": "Aktyvus",
+ "filterActivePaused": "Sustabdytas",
+ "Active": "Aktyvus",
+ "Inactive": "Neaktyvus",
+ "Token": "Prieigos raktas",
+ "Show URI": "Rodyti URL",
+ "Tags": "Žymės",
+ "Add New Tag": "Pridėti naują žymą",
+ "Add New below or Select...": "Pridėti naują žemiau arba pasirinkti…",
+ "color": "Spalva",
+ "value (optional)": "reikšmė (pasirinktinai)",
+ "Gray": "Pilka",
+ "Red": "Raudona",
+ "Green": "Žalia",
+ "Blue": "Mėlyna",
+ "Indigo": "Indigo",
+ "Purple": "Violetinė",
+ "Custom": "Pasirinktina",
+ "Search monitored sites": "Stebimų svetainių paieška",
+ "Avg. Ping": "Vidutinis Ping",
+ "Entry Page": "Puslapis įėjus",
+ "statusPageRefreshIn": "Perkrauti per: {0}",
+ "No Services": "Paslaugų nėra",
+ "All Systems Operational": "Visos sistemos veikia",
+ "Partially Degraded Service": "Dalinai pablogėjusi paslauga",
+ "Degraded Service": "Pablogėjusi paslauga",
+ "Add Group": "Pridėti grupę",
+ "Add a monitor": "Pridėti monitorių",
+ "Edit Status Page": "Redaguoti būsenos puslapį",
+ "Status Page": "Būsenos puslapis",
+ "here": "čia",
+ "Required": "Privaloma",
+ "Post URL": "Įrašo URL",
+ "Content Type": "Turinio tipas",
+ "disableauth.message2": "Jis skirtas scenarijams {intendThirdPartyAuth} priešais Uptime Kuma, pavyzdžiui, Cloudflare Access, Authelia ar kitus autentifikavimo mechanizmus.",
+ "I understand, please disable": "Aš suprantu, prašau išjungti",
+ "Username": "Vartotojo vardas",
+ "No Monitors, please": "Prašome jokių stebėjimų",
+ "Certificate Info": "Sertifikato informacija",
+ "Resource Record Type": "Išteklių įrašo tipas",
+ "Import Backup": "Importuoti atsarginę kopiją",
+ "Default enabled": "Pagal nutylėjimą įjungta",
+ "Apply on all existing monitors": "Taikyti visiems esamiems stebėjimams",
+ "Auto Get": "Automatinis gavimas",
+ "Schedule maintenance": "Planuoti profilaktikos priežiūrą",
+ "Start of maintenance": "Profilaktikos pradžia",
+ "Select status pages...": "Pasirinkite būsenos puslapius…",
+ "alertNoFile": "Pasirinkite importuojamą failą.",
+ "Skip existing": "Praleisti esamus",
+ "Setup 2FA": "Nustatyti 2FA",
+ "Two Factor Authentication": "Dviejų veiksnių autentifikavimas",
+ "Tag with this name already exist.": "Žyma tokiu pavadinimu jau egzistuoja.",
+ "Tag with this value already exist.": "Žyma tokia reikšme jau egzistuoja.",
+ "Orange": "Oranžinė",
+ "Pink": "Rožinė",
+ "Search...": "Ieškoti…",
+ "Avg. Response": "Vidutinė reakcija",
+ "statusPageNothing": "Čia nieko nėra, pridėkite grupę arba stebėjimą.",
+ "Go to Dashboard": "Eiti į skydelį",
+ "Status Pages": "Būsenos puslapiai",
+ "defaultNotificationName": "Mano {notification} pranešimas ({number})",
+ "Server URL": "Serverio URL",
+ "Method": "Metodas",
+ "appriseInstalled": "Apprise yra įdiegtas.",
+ "Current User": "Dabartinis vartotojas",
+ "Style": "Stilius",
+ "Switch to Light Theme": "Pereiti į šviesią temą",
+ "Cancel": "Atšaukti",
+ "Learn More": "Sužinoti Daugiau",
+ "Expiry": "Galiojimas",
+ "apiKeyAddedMsg": "Jūsų API raktas buvo pridėtas. Įsidėmėkite jį, nes jis daugiau nebus rodomas.",
+ "or": "arba",
+ "No Maintenance": "Nėra planuojamų darbų",
+ "Priority": "Prioritetas",
+ "appriseNotInstalled": "Apprise yra neįdiegtas. {0}",
+ "Body": "Turinys",
+ "PasswordsDoNotMatch": "Slaptažodžiai nesutampa.",
+ "records": "įrašai",
+ "One record": "Vienas įrašas",
+ "topic": "Tema",
+ "Info": "Info",
+ "Security": "Sauga",
+ "Steam API Key": "Steam API raktas",
+ "Shrink Database": "Sumažinti duomenų bazę",
+ "Default": "Numatytas",
+ "HTTP Options": "HTTP Nustatymai",
+ "Create Incident": "Sukurti Incidentą",
+ "Title": "Pavadinimas",
+ "Content": "Turinys",
+ "warning": "įspėjimas",
+ "info": "info",
+ "error": "klaida",
+ "primary": "pagrindinė",
+ "light": "šviesi",
+ "dark": "tamsi",
+ "Created": "Sukurta",
+ "Last Updated": "Atnaujinta",
+ "Switch to Dark Theme": "Pereiti į tamsią temą",
+ "Discard": "Atmesti",
+ "Select": "Pasirinkti",
+ "selectedMonitorCount": "Pasirinkta: {0}",
+ "recurringInterval": "Intervalas",
+ "Recurring": "Pasikartojantis",
+ "statusPageMaintenanceEndDate": "Pabaiga",
+ "pauseMaintenanceMsg": "Ar tikrai norite sustabdyti?",
+ "maintenanceStatus-under-maintenance": "Vykdomi profilaktikos darbai",
+ "maintenanceStatus-inactive": "Neaktyvus",
+ "maintenanceStatus-scheduled": "Suplanuotas",
+ "maintenanceStatus-ended": "Pabaigtas",
+ "maintenanceStatus-unknown": "Nežinoma",
+ "Body Encoding": "Turinio kodavimas",
+ "API Keys": "API Raktai",
+ "Expiry date": "Galiojimo data",
+ "Don't expire": "Nesibaigia galiojimo laikas",
+ "Continue": "Tęsti",
+ "Add Another": "Pridėti Kitą",
+ "Key Added": "Raktas Pridėtas",
+ "Add API Key": "Pridėti API Raktą",
+ "No API Keys": "Nėra API Raktų",
+ "apiKey-active": "Aktyvus",
+ "apiKey-expired": "Pasibaigęs",
+ "apiKey-inactive": "Neaktyvus",
+ "Expires": "Galioja",
+ "disableAPIKeyMsg": "Ar tikrai norite išjungti šį API raktą?",
+ "deleteAPIKeyMsg": "Ar tikrai norite ištrinti šį API raktą?",
+ "Generate": "Generuoti",
+ "now": "dabar",
+ "time ago": "prieš {0}",
+ "-year": "-metai",
+ "ignoredTLSError": "TLS/SSL klaidos buvo ignoruotos",
+ "Headers": "Antraštės",
+ "HeadersInvalidFormat": "Užklausos antraštės neteisingai pateiktos JSON formatu: ",
+ "shrinkDatabaseDescriptionSqlite": "Įvykdykite SQLite duomenų bazės {vacuum} komandą. {auto_vacuum} jau įjungtas, tačiau jis neperorganizuoja duomenų bazės ir nesupakuoja atskirų puslapių taip, kaip tai daro {vacuum} komanda.",
+ "Please read": "Prašome perskaityti",
+ "RabbitMQ Username": "RabbitMQ vartotojo vardas",
+ "RabbitMQ Password": "RabbitMQ slaptažodis",
+ "Telephone number": "Telefono numeris",
+ "chromeExecutableAutoDetect": "Aptikti automatiškai",
+ "Proxy Server": "Tarpinis serveris",
+ "Check/Uncheck": "Žymėti/atžymėti",
+ "PushDeer Server": "PushDeer serveris",
+ "Money": "Pinigai",
+ "confirmUninstallPlugin": "Ar tikrai norite pašalinti šį įskiepį?",
+ "Enable DNS Cache": "(Nebenaudojama) Įjungti DNS talpyklavimą HTTP(s) stebėjimams",
+ "Not running": "Nepaleistas",
+ "Reverse Proxy": "Atvirkštinis tarpinis serveris",
+ "Date Created": "Sukūrimo data",
+ "Refresh Interval Description": "Būsenos puslapis padarys pilną puslapio perkrovimą kas {0} sekundes(-ių)",
+ "API Key": "API raktas",
+ "emailTemplateMsg": "pranešimo žinutė",
+ "wayToGetDiscordURL": "Tai galite rasti nuėję į „Server Settings -> Integrations -> View Webhooks -> New Webhook“",
+ "dnsPortDescription": "DNS serverio prievadas. Numatytoji reikšmė – 53. Prievadą galite bet kada pakeisti.",
+ "pushoversounds cashregister": "Kasos aparatas",
+ "pushoversounds gamelan": "Gamelanas",
+ "apiCredentials": "API kredencialai",
+ "promosmsAllowLongSMS": "Leisti ilgas SMS žinutes",
+ "Uptime Kuma URL": "Uptime Kuma URL",
+ "Add a domain": "Pridėti naują domeną",
+ "serwersmsAPIPassword": "API slaptažodis",
+ "Browser Screenshot": "Naršyklės ekrano nuotrauka",
+ "gtxMessagingToHint": "Nacionalinis formatas, prasideda su „+“ ({e164}, {e212} arba {e214})",
+ "Private Number": "Privatus numeris",
+ "signedInDisp": "Prisijungta kaip {0}",
+ "wayToGetTelegramToken": "Jūs galite gauti prieigos raktą iš {0}.",
+ "Send to channel": "Siųsti į kanalą",
+ "e.g. {discordThreadID}": "pvz. {discordThreadID}",
+ "Notification Sound": "Pranešimo garsas",
+ "For safety, must use secret key": "Saugumo sumetimais būtina naudoti slaptąjį raktą",
+ "Group": "Grupė",
+ "Mechanism": "Mechanizmas",
+ "Group Name": "Grupės pavadinimas",
+ "clearDataOlderThan": "Saugote stebėjimo istorijos duomenis {0} dienų.",
+ "infiniteRetention": "Nustatykite 0, kad būtų begalinis saugojimas.",
+ "backupDescription3": "Jautrūs duomenys kaip pranešimams naudojami prieigos raktai yra įtraukti eksporto faile; prašome saugiai talpinti eksportą.",
+ "chromeExecutable": "Chrome/Chromium vykdomoji programa",
+ "certificationExpiryDescription": "HTTPS stebėjimai sukelia pranešimą, kai baigiasi TLS sertifikato galiojimo laikas:",
+ "trustProxyDescription": "Pasitikėkite „X-Forwarded-*“ antraštėmis. Jei norite gauti teisingą kliento IP adresą, o jūsų Uptime Kuma yra už tarpinio serverio, pavyzdžiui, Nginx arba Apache, turėtumėte įjungti šią funkciją.",
+ "Valid": "Galiojantis",
+ "No consecutive dashes": "Be iš eilės einančių brūkšnelių",
+ "statusPageSpecialSlugDesc": "Speciali nuorodos dalis {0}: šis puslapis bus rodomas, jei nuorodos dalis nenurodyta",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Esamas ryšys gali būti prarastas, jei šiuo metu jungiatės per Cloudflare tunelį. Ar tikrai norite jį sustabdyti? Įveskite savo dabartinį slaptažodį, kad patvirtintumėte.",
+ "RadiusCallingStationIdDescription": "Skambinančio įrenginio identifikatorius",
+ "There might be a typing error in the address.": "Adrese gali būti įvedimo klaida.",
+ "DockerHostRequired": "Prašome nustatyti Docker serverį šiam stebėjimui.",
+ "tailscalePingWarning": "Norėdami naudoti Tailscale Ping stebėjimą, turite įdiegti Uptime Kuma be Docker, taip pat įdiegti Tailscale klientą savo serveryje.",
+ "telegramServerUrlDescription": "Norėdami pašalinti Telegram bot API apribojimus arba gauti prieigą į blokuotas sritis (Kinija, Iranas ir kt.), spustelėkite {0} dėl daugiau informacijos. Pagal nutylėjimą: {1}",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Ilgalaikį prieigos raktą galite sukurti paspaudę savo profilio pavadinimą (apačioje kairėje), slinkę į apačią ir paspaudę „Sukurti raktą“. ",
+ "backupOutdatedWarning": "Pasenęs: Kadangi buvo pridėta daug naujų funkcijų ir šis atsarginių kopijų funkcionalumas nėra pilnai palaikomas, jis negali sukurti ar atkurti pilnos atsarginės kopijos.",
+ "chromeExecutableDescription": "Docker naudotojams, jei Chromium dar nėra įdiegtas, įdiegimas ir testo rezultatų rodymas gali užtrukti kelias minutes. Tai užima 1GB disko vietos.",
+ "smtpLiquidIntroduction": "Žemiau pateikti du laukai gali būti šablonizuojami naudojant Liquid šablonų kalbą. Prašome peržiūrėti {0} naudojimo instrukcijas. Štai prieinami kintamieji:",
+ "whatHappensAtForumPost": "Sukurti naują forumo įrašą. Tai NE skelbia žinučių esamame įraše. Norėdami skelbti esamame įraše, naudokite „{option}“",
+ "wayToCheckSignalURL": "Galite patikrinti šią nuorodą, kad pamatytumėte, kaip ją nustatyti:",
+ "wayToGetLineChannelToken": "Pirmiausia pasiekite {0}, sukurkite tiekėją ir kanalą (Žinučių API), tada iš aukščiau nurodytų meniu punktų galite gauti kanalo prieigos raktą ir vartotojo ID.",
+ "aboutMattermostChannelName": "Galite pakeisti numatytąjį kanalą, į kurį siunčiami pranešimai per Webhook, įvesdami kanalo pavadinimą lauke „Kanalo pavadinimas“. Tai turi būti įjungta Mattermost Webhook nustatymuose. Pvz.: #kitas-kanalas",
+ "resolverserverDescription": "Cloudflare yra numatytasis rezoliucijos serveris. Galite bet kada jį pakeisti.",
+ "enableDefaultNotificationDescription": "Šis pranešimas bus įjungtas numatytai naujiems stebėjimams. Vis dėlto galite jį atjungti kiekvienam stebėjimui atskirai.",
+ "confirmImportMsg": "Ar tikrai norite importuoti atsarginę kopiją? Prašome patvirtinti, kad pasirinkote teisingą importo parinktį.",
+ "keywordDescription": "Ieškoti raktažodžio paprastame HTML arba JSON atsakyme. Paieška yra jautri didžiosioms ir mažosioms raidėms.",
+ "jsonQueryDescription": "Išanalizuokite ir ištraukite konkrečius duomenis iš serverio JSON atsakymo, naudodami JSON užklausą arba naudokite \"$\" neapdorotam atsakymui, jei nesitikite JSON formato. Rezultatas vėliau lyginamas su tikėtina verte, kaip eilutėmis. Žr. {0} dokumentacijai ir naudokite {1} eksperimentavimui su užklausomis.",
+ "pushoversounds alien": "Svetimo signalo (ilgas)",
+ "apprise": "Apprise (palaiko daugiau nei 50 pranešimų paslaugų)",
+ "wayToGetKookGuildID": "Įjunkite „Kūrėjo režimą“ Kook nustatymuose ir dešiniuoju pelės mygtuku spustelėkite gildiją, kad gautumėte jos ID",
+ "octopushTypePremium": "Premium (greitas – rekomenduojamas įspėjimams)",
+ "octopushPhoneNumber": "Telefono numeris (tarptautiniu formatu, pvz.: +33612345678) ",
+ "SendGrid API Key": "SendGrid API raktas",
+ "conditionValuePlaceholder": "Reikšmė",
+ "Proto Service Name": "Proto paslaugos pavadinimas",
+ "goAlertInfo": "GoAlert yra atviro kodo programa, skirta nuolatinio budėjimo tvarkaraščio sudarymui, automatizuotam eskalavimui ir pranešimams (pvz., SMS arba balso skambučiams). Automatiškai susiekite tinkamą asmenį, tinkamu būdu ir tinkamu laiku! {0}",
+ "SecretKey": "SlaptasRaktas",
+ "promosmsTypeEco": "SMS ECO - pigus, bet lėtas ir dažnai perkrautas. Ribota tik Lenkijos gavėjams.",
+ "promosmsTypeFull": "SMS FULL - Aukštesnės klasės SMS paslauga. Galite naudoti savo siuntėjo vardą (pirmiausia reikia registruoti vardą). Patikima pranešimams.",
+ "promosmsSMSSender": "SMS siuntėjo vardas: iš anksto užregistruotas vardas arba vienas iš numatytųjų: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
+ "matrixDesc2": "Labai rekomenduojama sukurti naują vartotoją ir nenaudoti savo esamo Matrix vartotojo prieigos rakto, nes jis suteiks pilną prieigą prie jūsų paskyros ir visų kambarių, į kuriuos esate įstoję. Vietoj to, sukurkite naują vartotoją ir pakvieskite jį tik į tą kambarį, kuriame norite gauti pranešimus. Prieigos raktą galite gauti vykdydami {0}",
+ "Notify Channel": "Pranešimų kanalas",
+ "aboutNotifyChannel": "Pranešimų kanalas iššauks stacionaraus kompiuterio ir mobiliojo pranešimus visiems kanalo nariams, nepriklausomai nuo to, ar jie pažymėti kaip aktyvūs, ar ne.",
+ "wayToGetPagerDutyKey": "Gali gauti eidamas į Paslaugos → Paslaugų katalogas → (Pasirink paslaugą) → Integracijos → Pridėti integraciją. Čia gali ieškoti „Events API V2“. Daugiau informacijos {0}",
+ "smseagleContact": "Telefonų knygos kontakto vardas (-ai)",
+ "smseaglePriority": "Žinutės prioritetas (0-9, numatytasis = 0)",
+ "smspartnerPhoneNumberHelptext": "Numeris turi būti tarptautiniu formatu {0}, {1}. Daugelius numerius atskirk {2}",
+ "Server URL should not contain the nfty topic": "Serverio URL neturėtų turėti ntfy temos",
+ "wayToGetPagerTreeIntegrationURL": "Sukūrus Uptime Kuma integraciją PagerTree, nukopijuok Endpoint adresą. Išsamiau {0}",
+ "ntfyPriorityHelptextAllExceptDown": "Visi įvykiai siunčiami su šiuo prioritetu, išskyrus {0} įvykius, kurių prioritetas yra {1}",
+ "Badge Prefix": "Ženklo reikšmės prefiksas",
+ "Badge Label Suffix": "Ženklo etiketės sufiksas",
+ "Badge Maintenance Color": "Profilaktikos būsenos ženklo spalva",
+ "monitorToastMessagesDescription": "Iššokančios žinutės stebėjimams išnyksta po nurodyto laiko sekundėmis. Nustatykite -1, kad išjungtumėte laiko limitą, arba 0, kad išjungtumėte iššokančias žinutes.",
+ "Enable Kafka Producer Auto Topic Creation": "Įjungti automatinį Kafka gamintojo temų kūrimą",
+ "noGroupMonitorMsg": "Neprieinama. Pirmiausia sukurkite grupės stebėjimą.",
+ "wayToGetFlashDutyKey": "Galite eiti į „Kanalas -> (Pasirinkite kanalą) -> Integracijos -> Pridėti naują integraciją“ puslapį, pridėti „Uptime Kuma“, kad gautumėte push adresą, ir nukopijuoti integracijos raktą iš adreso. Daugiau informacijos rasite apsilankę",
+ "Plain Text": "Paprastas tekstas",
+ "Message Template": "Žinutės šablonas",
+ "Template Format": "Šablono formatas",
+ "webhookJsonDesc": "{0} tinka visiems šiuolaikiniams HTTP serveriams, tokiems kaip Express.js",
+ "webhookFormDataDesc": "{multipart} tinka PHP. JSON reikės analizuoti naudojant {decodeFunction}",
+ "webhookBodyPresetOption": "Išankstinis nustatymas - {0}",
+ "Application Token": "Programos prieigos raktas",
+ "templateMsg": "pranešimo žinutė",
+ "PushUrl": "Siuntimo URL",
+ "BodyInvalidFormat": "Užklausos turinys neteisingai pateiktas JSON formatu: ",
+ "Reset Token": "Atstatyti prieigos raktą",
+ "Done": "Baigta",
+ "recent": "Naujausi",
+ "critical": "kritinė",
+ "Pick Accepted Status Codes...": "Pasirinkite priimtinus būsenos kodus…",
+ "Pick a RR-Type...": "Pasirinkite RR tipą…",
+ "successKeywordExplanation": "MQTT raktažodis, kuris bus laikomas sėkmingu",
+ "successKeyword": "Sėkmės raktažodis",
+ "topicExplanation": "Stebimas MQTT kanalas",
+ "steamApiKeyDescription": "Steam žaidimų serverio stebėjimui reikalingas Steam Web-API raktas. Užregistruoti savo API raktą galite čia: ",
+ "Monitor History": "Stebėjimo istorija",
+ "Post": "Paskelbti",
+ "danger": "pavojus",
+ "and": "ir",
+ "Proxy Protocol": "Tarpinio serverio protokolas",
+ "YZJ Webhook URL": "YZJ Webhook URL adresas",
+ "YZJ Robot Token": "YZJ Robot prieigos raktas",
+ "telegramServerUrl": "(Pasirinktinai) Serverio URL",
+ "dayOfWeek": "Savaitės diena",
+ "dayOfMonth": "Mėnesio diena",
+ "cronSchedule": "Tvarkaraštis: ",
+ "cronExpression": "Cron išraiška",
+ "weekdayShortMon": "Pir",
+ "weekdayShortTue": "Ant",
+ "weekdayShortWed": "Tre",
+ "weekdayShortThu": "Ket",
+ "weekdayShortFri": "Pen",
+ "weekdayShortSat": "Šeš",
+ "weekdayShortSun": "Sek",
+ "invalidCronExpression": "Neteisinga Cron išraiška: {0}",
+ "lastDay": "Paskutinė diena",
+ "lastDay1": "Paskutinė mėnesio diena",
+ "YOUR BOT TOKEN HERE": "JŪSŲ BOTO PRIEIGOS RAKTAS ČIA",
+ "default: notify all devices": "numatyta: pranešti visiems įrenginiams",
+ "wayToGetLineNotifyToken": "Jūs galite gauti prieigos raktą iš {0}",
+ "startDateTime": "Pradžios data/laikas",
+ "endDateTime": "Pabaigos data/laikas",
+ "chatIDNotFound": "Nepavyko rasti pokalbio ID; pirmiausia išsiųskite žinutę šiam bot'ui",
+ "disableCloudflaredNoAuthMsg": "Jūs esate režime be autentifikacijos, slaptažodis nereikalingas.",
+ "Long-Lived Access Token": "Ilgalaikis prieigos raktas",
+ "Notification Service": "Pranešimų paslauga",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Pranešimų paslaugų sąrašą rasite Home Assistant skiltyje „Kūrėjo įrankiai > Paslaugos“, ieškodami žodžio „notification“, kad rastumėte savo įrenginio/telefono pavadinimą.",
+ "Home Assistant URL": "Home Assistant URL",
+ "Automations can optionally be triggered in Home Assistant:": "Automatizacijas galima pasirinktinai paleisti Home Assistant sistemoje:",
+ "Trigger type:": "Paleidimo tipas:",
+ "Event type:": "Įvykio tipas:",
+ "Event data:": "Įvykio duomenys:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Tada pasirinkite veiksmą, pavyzdžiui, pakeiskite sceną į tą, kur RGB šviesa yra raudona.",
+ "Frontend Version": "Priekinės dalies versija",
+ "Frontend Version do not match backend version!": "Priekinės dalies versija nesutampa su galinės dalies versija!",
+ "backupRecommend": "Prašome atsarginę kopiją daryti tiesiogiai iš skaidinio arba duomenų aplanko (./data/).",
+ "Optional": "Pasirinktinai",
+ "sameAsServerTimezone": "Tokia pati kaip serverio laiko juosta",
+ "strategyManual": "Rankiniu būdu aktyvuojamas/neaktyvuojamas",
+ "warningTimezone": "Naudojama serverio laiko juosta",
+ "install": "Įdiegti",
+ "installing": "diegiama",
+ "uninstall": "Pašalinti",
+ "uninstalling": "Šalinama",
+ "lastDay2": "Antra paskutinė mėnesio diena",
+ "lastDay3": "Trečia paskutinė mėnesio diena",
+ "lastDay4": "Ketvirta paskutinė mėnesio diena",
+ "Display Timezone": "Rodoma laiko zona",
+ "Server Timezone": "Serverio laiko zona",
+ "IconUrl": "Piktogramos URL",
+ "Enable": "Įjungti",
+ "Disable": "Išjungti",
+ "plugin": "Įskiepis | Įskiepiai",
+ "Clone": "Klonuoti",
+ "cloneOf": "{0} klonas",
+ "smtp": "El. paštas (SMTP)",
+ "Schedule Maintenance": "Suplanuoti profilaktikos darbus",
+ "Edit Maintenance": "Redaguoti profilaktiką",
+ "Date and Time": "Data ir laikas",
+ "Clone Monitor": "Klonuoti stebėjimą",
+ "notificationRegional": "Regioninis",
+ "enableNSCD": "Įjungti NSCD (Name Service Cache Daemon) visų DNS užklausų talpyklavimui",
+ "dnsCacheDescription": "Gali neveikti kai kuriose IPv6 aplinkose, išjunkite, jei susiduriate su problemomis.",
+ "Single Maintenance Window": "Vienas profilaktikos langas",
+ "Maintenance Time Window of a Day": "Profilaktikos laiko langas per dieną",
+ "Effective Date Range": "Galiojimo datos intervalas (pasirinktinai)",
+ "DateTime Range": "Datos ir laiko intervalas",
+ "loadingError": "Nepavyko gauti duomenų, prašome bandyti vėliau.",
+ "secureOptionNone": "Nėra / STARTTLS (25, 587)",
+ "secureOptionTLS": "TLS (465)",
+ "From Email": "Siuntėjo el. paštas",
+ "Ignore TLS Error": "Ignoruoti TLS klaidą",
+ "leave blank for default subject": "palikite tuščią numatytai temai",
+ "emailCustomisableContent": "Pritaikomas turinys",
+ "emailCustomSubject": "Pasirinktina tema",
+ "emailCustomBody": "Pasirinktinas turinys",
+ "leave blank for default body": "Palikite tuščią, jei norite naudoti numatytąjį turinį",
+ "emailTemplateMonitorJSON": "objektas, apibūdinantis stebėjimą",
+ "To Email": "Gavėjo el. paštas",
+ "Bot Display Name": "Bot'o rodomas vardas",
+ "emailTemplateHeartbeatJSON": "objektas, apibūdinantis patikros signalą",
+ "emailTemplateLimitedToUpDownNotification": "Prieinamas tik VEIKIA/NEVEIKIA patikros signalams, kitu atveju – null",
+ "smtpCC": "CC",
+ "Discord Webhook URL": "Discord Webhook URL adresas",
+ "Prefix Custom Message": "Priešdėlis pasirinktinam pranešimui",
+ "Hello @everyone is...": "Sveiki, {'@'}everyone yra…",
+ "Select message type": "Pasirinkite pranešimo tipą",
+ "postToExistingThread": "Skelbti esamoje temoje / forumo įraše",
+ "Create new forum post": "Sukurti naują forumo įrašą",
+ "forumPostName": "Forumo įrašo pavadinimas",
+ "threadForumPostID": "Temos / forumo įrašo ID",
+ "wayToGetDiscordThreadId": "Gauti temos / forumo įrašo ID yra panašu į kanalo ID gavimą. Plačiau apie ID gavimą rasite {0}",
+ "wayToGetTeamsURL": "Galite sužinoti, kaip sukurti webhook URL {0}.",
+ "Access Token": "Prieigos raktas",
+ "Channel access token": "Kanalo prieigos raktas",
+ "Icon URL": "Piktogramos URL",
+ "Basic Settings": "Baziniai nustatymai",
+ "User ID": "Vartotojo ID",
+ "Your User ID": "Jūsų vartotojo ID",
+ "deleteMonitorMsg": "Ar tikrai norite ištrinti šį stebėjimą?",
+ "wayToGetZohoCliqURL": "Galite sužinoti, kaip sukurti webhook URL {0}.",
+ "needSignalAPI": "Turite turėti Signal klientą su REST API.",
+ "Number": "Numeris",
+ "Recipients": "Gavėjai",
+ "Channel access token (Long-lived)": "Kanalo prieigos raktas (ilgalaikis)",
+ "Line Developers Console": "Line kūrėjų konsolė",
+ "lineDevConsoleTo": "Line kūrėjų konsolė - {0}",
+ "Messaging API": "Žinučių API",
+ "aboutIconURL": "Galite nurodyti nuorodą į paveikslėlį lauke „Piktogramos URL“, kad pakeistumėte numatytąjį profilio paveikslėlį. Jei nustatytas piktogramos jaustukas, jis nebus naudojamas.",
+ "dataRetentionTimeError": "Laikymo periodas turi būti 0 arba didesnis",
+ "confirmDeleteTagMsg": "Ar tikrai norite ištrinti šią žymą? Stebėjimai, susieti su šia žyma, nebus ištrinti.",
+ "enableGRPCTls": "Leisti siųsti gRPC užklausas per TLS ryšį",
+ "grpcMethodDescription": "Metodo pavadinimas konvertuojamas į camelCase formatą, pvz., sakytiLabas, tikrinti ir pan.",
+ "acceptedStatusCodesDescription": "Pasirinkite būsenos kodus, kurie laikomi sėkmingu atsaku.",
+ "twoFAVerifyLabel": "Įveskite savo prieigos kodą 2FA patvirtinti:",
+ "confirmEnableTwoFAMsg": "Ar Jūs norite įjungti 2FA?",
+ "confirmDisableTwoFAMsg": "Ar Jūs norite išjungti 2FA?",
+ "promosmsPassword": "API slaptažodis",
+ "promosmsLogin": "API prisijungimo vardas",
+ "pushoversounds bike": "Dviratis",
+ "pushoversounds classical": "Klasika",
+ "backupDescription": "Jūs galite pasidaryti visų stebėjimų ir pranešimų kopijas JSON formatu.",
+ "notificationDescription": "Kad pranešimai veiktų, jie turi būti priskirti stebėjimui.",
+ "deleteMaintenanceMsg": "Ar tikrai norite ištrinti šią profilaktiką?",
+ "deleteNotificationMsg": "Ar tikrai norite ištrinti šį pranešimą visiems stebėjimams?",
+ "rrtypeDescription": "Pasirinkite RR tipą, kurį norite stebėti",
+ "pauseMonitorMsg": "Ar tikrai norite pristabdyti?",
+ "clearEventsMsg": "Ar tikrai norite ištrinti visus įvykius šiam stebėjimui?",
+ "clearHeartbeatsMsg": "Ar tikrai norite ištrinti visus patikros signalus šiam stebėjimui?",
+ "confirmClearStatisticsMsg": "Ar tikrai norite ištrinti VISAS statistikas?",
+ "importHandleDescription": "Pasirinkite „Praleisti esamus“, jei norite praleisti kiekvieną stebėjimą ar pranešimą su tuo pačiu pavadinimu. „Perrašyti“ ištrins visus esamus stebėjimus ir pranešimus.",
+ "tokenValidSettingsMsg": "Prieigos kodas yra galiojantis! Dabar galite išsaugoti 2FA nustatymus.",
+ "recurringIntervalMessage": "Vykdyti kartą per dieną | Vykdyti kartą kas {0} dienas",
+ "affectedMonitorsDescription": "Pasirinkite stebėjimus, kuriuos paveikė dabartinė profilaktika",
+ "affectedStatusPages": "Rodyti šį profilaktikos pranešimą pasirinktuose būsenos puslapiuose",
+ "atLeastOneMonitor": "Pasirinkite bent vieną paveiktą stebėjimą",
+ "passwordNotMatchMsg": "Pakartotas slaptažodis nesutampa.",
+ "backupDescription2": "Pastaba: istorija ir įvykių duomenys neįtraukti.",
+ "endpoint": "galinis taškas",
+ "octopushAPIKey": "„API key“ iš HTTP API prisijungimo duomenų valdymo skydelyje",
+ "octopushLogin": "„Login“ iš HTTP API prisijungimo duomenų valdymo skydelyje",
+ "pushoversounds pushover": "Pushover (numatyta)",
+ "pushoversounds bugle": "Bugle",
+ "pushoversounds cosmic": "Kosminis",
+ "pushoversounds falling": "Kritantis",
+ "pushoversounds siren": "Sirena",
+ "Device": "Įrenginys",
+ "SMS Type": "SMS tipas",
+ "Strategy": "Strategija",
+ "Status:": "Būsena: {0}",
+ "Enable TLS": "Įjungti TLS",
+ "pushyToken": "Įrenginio prieigos raktas",
+ "User Key": "Vartotojo raktas",
+ "Message Title": "Žinutės tema",
+ "Apprise URL": "Apprise URL adresas",
+ "pushoversounds incoming": "Gaunamas",
+ "pushoversounds intermission": "Pertrauka",
+ "pushoversounds magic": "Magija",
+ "pushoversounds mechanical": "Mechaninis",
+ "pushoversounds pianobar": "Pianino klavišas",
+ "pushoversounds spacealarm": "Erdvinis signalas",
+ "pushoversounds tugboat": "Traukimo laivas",
+ "pushoversounds persistent": "Pastovus (ilgas)",
+ "pushoversounds echo": "Pushover Echo (ilgas)",
+ "pushoversounds updown": "Up Down (ilgas)",
+ "pushoversounds vibrate": "Tik vibracija",
+ "pushoversounds none": "Nėra (tylus)",
+ "pushyAPIKey": "Slaptas API raktas",
+ "GoogleChat": "Google Chat (tik Google Workspace)",
+ "wayToGetKookBotToken": "Sukurkite programą ir gaukite savo bot'o raktą adresu {0}",
+ "Guild ID": "Gildijos ID",
+ "More info on:": "Daugiau informacijos: {0}",
+ "pushoverDesc1": "Avarinis prioritetas (2) turi numatytą 30 sekundžių tarp bandymų laiko limitą ir pasibaigs po 1 valandos.",
+ "pushoverDesc2": "Jei norite siųsti pranešimus skirtingiems įrenginiams, užpildykite lauką „Įrenginys“.",
+ "pushoverMessageTtl": "Žinutės TTL (sekundės)",
+ "octopushTypeLowCost": "Low Cost (lėtas – kartais blokuoja operatorius)",
+ "checkPrice": "Patikrinkite {0} kainas:",
+ "octopushLegacyHint": "Ar naudojate senąją Octopush versiją (2011-2020) ar naująją?",
+ "Check octopush prices": "Patikrinkite Octopush kainas {0}.",
+ "octopushSMSSender": "SMS siuntėjo vardas: 3-11 simbolių (raidės, skaičiai ir tarpas) (a-zA-Z0-9)",
+ "LunaSea Device ID": "LunaSea įrenginio ID",
+ "Example:": "Pavyzdys: {0}",
+ "Read more:": "Plačiau: {0}",
+ "Free Mobile User Identifier": "Free Mobile vartotojo identifikatorius",
+ "Free Mobile API Key": "Free Mobile API raktas",
+ "Proto Method": "Proto metodas",
+ "Proto Content": "Proto turinys",
+ "Lowcost": "Mažai kainuojantis",
+ "Economy": "Ekonomiškas",
+ "Retry": "Pakartojimų skaičius",
+ "Topic": "Tema",
+ "Platform": "Platforma",
+ "Channel Name": "Kanalo pavadinimas",
+ "WebHookUrl": "WebHookUrl",
+ "Don't mention people": "Neminėti žmonių",
+ "Mention group": "Paminėti {group}",
+ "Device Token": "Įrenginio prieigos raktas",
+ "Huawei": "Huawei",
+ "Proxy server has authentication": "Tarpinis serveris reikalauja autentifikacijos",
+ "Setup Proxy": "Nustatyti tarpinį serverį",
+ "Base URL": "Bazinis URL",
+ "high": "aukštas",
+ "SMSManager API Docs": "SMSManager API dokumentacija ",
+ "SendKey": "SendKey",
+ "Gateway Type": "Šliuzo tipas",
+ "You can divide numbers with": "Galite atskirti skaičius su",
+ "goAlertIntegrationKeyInfo": "Gaukite bendrą API integravimo raktą paslaugai šiuo formatu „aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee”, dažniausiai tai bus prieigos rakto parametro reikšmė nukopijuotame URL.",
+ "AccessKeyId": "Prieigos rakto ID",
+ "PhoneNumbers": "PhoneNumbers",
+ "TemplateCode": "TemplateCode",
+ "SecretAccessKey": "Prieigos rakto slaptasis raktas",
+ "SignName": "SignName",
+ "Sms template must contain parameters: ": "SMS šablone turi būti nurodyti parametrai: ",
+ "Bark API Version": "Bark API versija",
+ "Bark Endpoint": "Bark endpointas",
+ "Bark Group": "Bark grupė",
+ "Bark Sound": "Bark garsas",
+ "Mentioning": "Paminėjimas",
+ "High": "Aukštas",
+ "WeCom Bot Key": "WeCom bot'o raktas",
+ "promosmsTypeFlash": "SMS FLASH - Žinutė automatiškai bus rodoma gavėjo įrenginyje. Ribota tik Lenkijos gavėjams.",
+ "promosmsTypeSpeed": "SMS SPEED - Aukščiausias sistemos prioritetas. Labai greitas ir patikimas, tačiau brangesnis (apie du kartus kainuoja nei SMS FULL).",
+ "promosmsPhoneNumber": "Telefono numeris (Lenkijos gavėjui galite praleisti vietinį kodą)",
+ "Feishu WebHookUrl": "Feishu WebHook URL",
+ "matrixHomeserverURL": "Namų serverio URL (su http(s):// ir, jei reikia, prievadu)",
+ "Internal Room Id": "Vidinio kambario ID",
+ "matrixDesc1": "Vidinį kambario ID rasite pažangiojoje kambario nustatymų skiltyje savo Matrix kliente. Jis turėtų atrodyti panašiai: !QMdRCpUIfLwsfjxye6:home.server.",
+ "Remove domain": "Ištrinti domeną '{0}'",
+ "Icon Emoji": "Piktogramos jaustukas",
+ "smtpDkimDomain": "Domeno vardas",
+ "smtpDkimPrivateKey": "Privatus raktas",
+ "do nothing": "nieko nedaryti",
+ "alertaApiKey": "API raktas",
+ "serwersmsPhoneNumber": "Telefono numeris",
+ "smseagleTo": "Telefono numeris(-iai)",
+ "smspartnerSenderName": "SMS siuntėjo vardas",
+ "Recipient Number": "Gavėjo numeris",
+ "From Name/Number": "Siuntėjo vardas/numeris",
+ "smseagleRecipientType": "Gavėjo tipas",
+ "setup a new monitor group": "sukurti naują stebėjimo grupę",
+ "openModalTo": "Atidaryti modalą {0}",
+ "signalImportant": "SVARBU: Negalite maišyti grupių ir numerių gavėjų!",
+ "aboutWebhooks": "Išsamiau apie Webhooks: {0}",
+ "smtpDkimKeySelector": "Raktų parinkiklis",
+ "smtpDkimHashAlgo": "Maišos algoritmas (pasirinktinai)",
+ "smtpDkimskipFields": "Nepasirašyti antraščių raktai (pasirinktinai)",
+ "smtpDkimheaderFieldNames": "Pasirašyti antraščių raktai (pasirinktinai)",
+ "Integration Key": "Integracijos raktas",
+ "Integration URL": "Integracijos URL",
+ "Auto resolve or acknowledged": "Automatiškai išspręsta arba patvirtinta",
+ "auto acknowledged": "automatiškai patvirtinta",
+ "auto resolve": "automatiškai išspręsta",
+ "alertaApiEndpoint": "API galinis taškas",
+ "alertaEnvironment": "Aplinka",
+ "alertaAlertState": "Pranešimo būsena",
+ "alertaRecoverState": "Atkūrimo būsena",
+ "serwersmsAPIUser": "API vartotojo vardas (įskaitant webapi_ prefiksą)",
+ "serwersmsSenderName": "SMS siuntėjo vardas (užregistruotas per klientų portalą)",
+ "smseagleGroup": "Telefonų knygos grupės pavadinimas (-ai)",
+ "smseagleRecipient": "Gavėjas (-ai) (daugelius atskirk kableliais)",
+ "smseagleToken": "API prieigos raktas",
+ "smseagleUrl": "Jūsų SMSEagle įrenginio URL",
+ "smseagleEncoding": "Siųsti kaip Unicode",
+ "smspartnerApiurl": "Savo API raktą rasite savo skydelyje adresu {0}",
+ "smspartnerPhoneNumber": "Telefono numeris (-ai)",
+ "smspartnerSenderNameInfo": "Turi būti tarp 3..=11 įprastų simbolių",
+ "Leave blank to use a shared sender number.": "Palikite tuščią, kad naudotumėte bendrinamą siuntėjo numerį.",
+ "Octopush API Version": "Octopush API versija",
+ "Legacy Octopush-DM": "Senasis Octopush-DM",
+ "ntfyUsernameAndPassword": "Vartotojo vardas ir slaptažodis",
+ "twilioFromNumber": "Siuntėjo numeris",
+ "twilioToNumber": "Gavėjo numeris",
+ "ntfy Topic": "ntfy Tema",
+ "onebotHttpAddress": "OneBot HTTP adresas",
+ "onebotMessageType": "OneBot žinutės tipas",
+ "onebotGroupMessage": "Grupė",
+ "onebotPrivateMessage": "Privati",
+ "onebotUserOrGroupId": "Grupės/Vartotojo ID",
+ "onebotSafetyTips": "Saugumo tikslais būtina nustatyti prieigos raktą",
+ "pushDeerServerDescription": "Palikite tuščią, kad naudotumėte oficialų serverį",
+ "lunaseaDeviceID": "Įrenginio ID",
+ "lunaseaUserID": "Vartotojo ID",
+ "ntfyAuthenticationMethod": "Autentifikacijos metodas",
+ "ntfyPriorityHelptextAllEvents": "Visi įvykiai siunčiami su aukščiausiu prioritetu",
+ "twilioAccountSID": "Paskyros SID",
+ "twilioApiKey": "API raktas (nebūtina)",
+ "twilioAuthToken": "Autorizacijos raktas / API slaptas raktas",
+ "Monitor Setting": "{0} stebėjimo nustatymai",
+ "Show Clickable Link": "Rodyti paspaudžiamą nuorodą",
+ "Show Clickable Link Description": "Jei pažymėta, visi, turintys prieigą prie šio būsenos puslapio, gali pasiekti stebėjimo URL.",
+ "Open Badge Generator": "Atidaryti ženklo generatorių",
+ "Badge Generator": "{0} ženklo generatorius",
+ "Badge Type": "Ženklo tipas",
+ "Badge Duration (in hours)": "Ženklo trukmė (valandomis)",
+ "Badge Label": "Ženklo etiketė",
+ "Badge Suffix": "Ženklo sufiksas",
+ "Badge Label Color": "Ženklo etiketės spalva",
+ "Badge Color": "Ženklo spalva",
+ "Close": "Uždaryti",
+ "Message format": "Žinutės formatas",
+ "Monitor Group": "Stebėjimo grupė",
+ "Badge Label Prefix": "Ženklo etiketės prefiksas",
+ "Badge Preview": "Ženklo peržiūra",
+ "Badge Up Color": "Veikiančio ženklo spalva",
+ "Badge Down Color": "Neveikiančio ženklo spalva",
+ "Badge Pending Color": "Laukiamos būsenos ženklo spalva",
+ "Badge Warn Color": "Įspėjimo ženklo spalva",
+ "Badge Warn Days": "Įspėjimo dienų skaičius",
+ "Badge Down Days": "Neveikiančių dienų skaičius",
+ "Badge Style": "Ženklo stilius",
+ "Badge value (For Testing only.)": "Ženklo reikšmė (tik testavimui)",
+ "Badge URL": "Ženklo URL",
+ "monitorToastMessagesLabel": "Stebėjimo iššokančios žinutės",
+ "toastErrorTimeout": "Klaidų pranešimų laiko limitas",
+ "toastSuccessTimeout": "Sėkmingų pranešimų laiko limitas",
+ "Kafka Brokers": "Kafka brokeriai",
+ "Enter the list of brokers": "Įveskite brokerių sąrašą",
+ "Press Enter to add broker": "Paspauskite Enter, kad pridėtumėte brokerį",
+ "Kafka Topic Name": "Kafka temos pavadinimas",
+ "Kafka Producer Message": "Kafka gamintojo žinutė",
+ "Enable Kafka SSL": "Įjungti Kafka SSL",
+ "Kafka SASL Options": "Kafka SASL parinktys",
+ "Pick a SASL Mechanism...": "Pasirinkite SASL mechanizmą…",
+ "AccessKey Id": "Prieigos rakto ID",
+ "Secret AccessKey": "Prieigos rakto slaptasis raktas",
+ "Session Token": "Sesijos prieigos raktas",
+ "Request Body": "Užklausos turinys",
+ "FlashDuty Severity": "Svarba",
+ "nostrRelays": "Nostr tarpininkai",
+ "Saved.": "Išsaugota.",
+ "authInvalidToken": "Neteisingas prieigos raktas.",
+ "2faAlreadyEnabled": "2FA jau yra įjungtas.",
+ "2faEnabled": "2FA įjungtas.",
+ "2faDisabled": "2FA išjungtas.",
+ "successEdited": "Sėkmingai redaguota.",
+ "successDeleted": "Sėkmingai ištrinta.",
+ "successResumed": "Sėkmingai pratęsta.",
+ "successAdded": "Sėkmingai pridėta.",
+ "successAuthChangePassword": "Slaptažodis sėkmingai atnaujintas.",
+ "successBackupRestored": "Sėkmingai atstatytos atsarginės kopijos.",
+ "successDisabled": "Sėkmingai įšjungta.",
+ "successEnabled": "Sėkmingai įjungta.",
+ "tagNotFound": "Žymė nerasta.",
+ "Remote Browsers": "Nuotolinės naršyklės",
+ "Remote Browser": "Nuotolinė naršyklė",
+ "Add a Remote Browser": "Pridėti nuotolinę naršyklę",
+ "Remote Browser not found!": "Nuotolinė naršyklė nerasta!",
+ "useRemoteBrowser": "Naudoti nuotolinę naršyklę",
+ "Command": "Komanda",
+ "API URL": "API URL",
+ "What is a Remote Browser?": "Kas yra nuotolinė naršyklė?",
+ "successPaused": "Sėkmingai pristabdyta.",
+ "foundChromiumVersion": "Rasta Chromium/Chrome. Versija: {0}",
+ "documentationOf": "{0} dokumentacija",
+ "threemaRecipientTypeIdentityFormat": "8 simboliai",
+ "threemaRecipientTypePhone": "Telefono numeris",
+ "To Phone Number": "Gavėjo telefono numeris",
+ "threemaRecipientTypeEmail": "El. pašto adresas",
+ "threemaRecipient": "Gavėjas",
+ "threemaRecipientType": "Gavėjo tipas",
+ "Allow Long SMS": "Leisti ilgas SMS žinutes",
+ "max 15 digits": "maks. 15 skaitmenų",
+ "threemaRecipientTypeIdentity": "Threema-ID",
+ "No tags found.": "Žymių nerasta.",
+ "Go back to home page.": "Grįžkite į pagrindinį puslapį.",
+ "Recipient Type": "Gavėjo tipas",
+ "New Group": "Nauja grupė",
+ "Add Remote Browser": "Pridėti nuotolinę naršyklę",
+ "Group ID": "Grupės ID",
+ "OAuth2: Client Credentials": "OAuth2: kliento kredencialai",
+ "Authentication Method": "Autentifikavimo metodas",
+ "Authorization Header": "Autorizacijos antraštė",
+ "Sound": "Garsas",
+ "Client ID": "Kliento ID",
+ "Guitar": "Gitara",
+ "From": "Nuo",
+ "smtpDkimDesc": "Prašome kreiptis į Nodemailer DKIM {0} naudojimo instrukcijoms.",
+ "smtpDkimSettings": "DKIM nustatymai",
+ "documentation": "dokumentacija",
+ "aboutSlackUsername": "Keičia pranešimo siuntėjo rodomą vardą. Jei norite paminėti kažką, įtraukite tai į draugišką vardą.",
+ "aboutChannelName": "Įveskite kanalo pavadinimą {0} lauke „Kanalo pavadinimas“, jei norite apeiti Webhook kanalą. Pvz.: #kitas-kanalas",
+ "aboutKumaURL": "Jei paliksite Uptime Kuma URL lauką tuščią, jis bus automatiškai nustatytas kaip Projekto GitHub puslapis.",
+ "PushDeer Key": "PushDeer raktas",
+ "wayToGetClickSendSMSToken": "API vartotojo vardą ir API raktą galite gauti adresu {0}.",
+ "Custom Monitor Type": "Pasirinktinis stebėjimo tipas",
+ "lunaseaTarget": "Tikslas",
+ "Edit Tag": "Redaguoti žymę",
+ "Server Address": "Serverio adresas",
+ "Google Analytics ID": "Google Analytics ID",
+ "pagertreeUrgency": "Svarba",
+ "pagertreeCritical": "Kritinė",
+ "pagertreeHigh": "Aukšta",
+ "pagertreeMedium": "Vidutinė",
+ "pagertreeLow": "Maža",
+ "pagertreeIntegrationUrl": "Integracijos URL",
+ "pagertreeSilent": "Tyli",
+ "pagertreeDoNothing": "Nieko nedaryti",
+ "pagertreeResolve": "Automatiškai išspręsti",
+ "templateHostnameOrURL": "pagrindinio kompiuterio vardas arba nuoroda",
+ "templateStatus": "būsena",
+ "emojiCheatSheet": "Jaustukų kodų lentelė: {0}",
+ "Read more": "Skaityti daugiau",
+ "default": "Numatytas",
+ "No Monitors": "Nėra stebėjimų",
+ "Please input title and content": "Prašome įvesti pavadinimą ir turinį",
+ "Show Tags": "Rodyti žymes",
+ "Hide Tags": "Paslėpti žymes",
+ "No monitors available.": "Nėra galimų stebėjimų.",
+ "setAsDefault": "Nustatyti kaip numatytą",
+ "Customize": "Tinkinti",
+ "proxyDescription": "Kad tarpiniai serveriai veiktų, jie turi būti priskirti stebėjimui.",
+ "enableProxyDescription": "Šis tarpinis serveris neturės poveikio stebėjimo užklausoms, kol nebus aktyvuotas. Galite laikinai išjungti tarpinį serverį nuo visų stebėjimų pagal aktyvavimo būseną.",
+ "setAsDefaultProxyDescription": "Šis tarpinis serveris bus įjungtas pagal numatytuosius nustatymus naujiems stebėjimams. Vis dar galite išjungti tarpinį serverį kiekvienam stebėjimui atskirai.",
+ "templateServiceName": "paslaugos pavadinimas",
+ "Description": "Aprašymas",
+ "Add one": "Pridėti vieną",
+ "Untitled Group": "Grupė be pavadinimo",
+ "Services": "Paslaugos",
+ "Powered by": "Sukūrė",
+ "Custom Footer": "Pasirinktinė apačia",
+ "Custom CSS": "Pasirinktinis CSS",
+ "deleteStatusPageMsg": "Ar tikrai norite ištrinti šį būsenos puslapį?",
+ "Proxies": "Tarpiniai serveriai",
+ "enabled": "Įjungta",
+ "deleteProxyMsg": "Ar tikrai norite ištrinti šį tarpinį serverį visiems stebėjimams?",
+ "Installed": "Įdiegta",
+ "Not installed": "Neįdiegta",
+ "Running": "Paleistas",
+ "Remove Token": "Pašalinti prieigos raktą",
+ "Start": "Paleisti",
+ "Stop": "Sustabdyti",
+ "Next": "Toliau",
+ "Authentication": "Autentifikacija",
+ "Page Not Found": "Puslapis nerastas",
+ "About": "Apie",
+ "Message:": "Žinutė:",
+ "HTTP Headers": "HTTP antraštės",
+ "For example: nginx, Apache and Traefik.": "Pavyzdžiui: ngix, Apache ir Traefik.",
+ "Subject:": "Tema:",
+ "Refresh Interval": "Atnaujinimo intervalas",
+ "Add New Status Page": "Pridėti naują būsenos puslapį",
+ "Backup": "Padaryti atsargines kopijas",
+ "Domain Names": "Domenų vardai",
+ "Footer Text": "Apačios tekstas",
+ "wayToGetCloudflaredURL": "(Atsisiųskite cloudflared iš {0})",
+ "cloudflareWebsite": "Cloudflare svetainės",
+ "User": "Vartotojas",
+ "No Proxy": "Nėra tarpinio serverio",
+ "Trust Proxy": "Pasitikėti šiuo tarpiniu serveriu",
+ "Proxy": "Tarpinis serveris",
+ "Certificate Chain": "Sertifikato grandinė",
+ "Invalid": "Negaliojantis",
+ "Slug": "Nuorodos dalis",
+ "Accept characters:": "Priimami simboliai:",
+ "startOrEndWithOnly": "Pradėti arba baigti tik su {0}",
+ "The slug is already taken. Please choose another slug.": "Ši nuorodos dalis jau užimta. Prašome pasirinkti kitą.",
+ "HTTP Basic Auth": "HTTP bazinis autentifikavimas",
+ "New Status Page": "Naujas būsenos puslapis",
+ "Don't know how to get the token? Please read the guide:": "Nežinote, kaip gauti prieigos raktą? Perskaitykite vadovą:",
+ "Other Software": "Kitos programinės įrangos",
+ "Show Powered By": "Rodyti kas sukūrė",
+ "Valid To:": "Galioja iki:",
+ "Days Remaining:": "Liko dienų:",
+ "Issuer:": "Išdavėjas:",
+ "Fingerprint:": "Pirštų antspaudas:",
+ "No status pages": "Nėra būsenos puslapių",
+ "Domain Name Expiry Notification": "Domeno vardo galiojimo pabaigos pranešimas",
+ "Add a new expiry notification day": "Pridėti naują galiojimo pabaigos pranešimo dieną",
+ "Remove the expiry notification": "Pašalinti galiojimo pabaigos pranešimą",
+ "Steam Game Server": "Steam žaidimų serveris",
+ "Coming Soon": "Jau greitai",
+ "Query": "Užklausa",
+ "tcp": "TCP / HTTP",
+ "Packet Size": "Paketo dydis",
+ "Chat ID": "Pokalbio ID",
+ "API Username": "API vartotojo vardas",
+ "socket": "Lizdas",
+ "Go back to the previous page.": "Grįžkite į ankstesnį puslapį.",
+ "Domain": "Domenas",
+ "Bot Token": "Bot'o prieigos raktas",
+ "Show update if available": "Rodyti galimus atnaujinimus",
+ "Also check beta release": "Taip pat patikrinti beta išleidimus",
+ "settingsCertificateExpiry": "TLS sertifikato galiojimas",
+ "Using a Reverse Proxy?": "Naudojate atvirkštinį tarpinį serverį?",
+ "signedInDispDisabled": "Autentifikavimas išjungtas.",
+ "RadiusSecret": "RADIUS slaptažodis",
+ "RadiusSecretDescription": "Bendras slaptažodis tarp kliento ir serverio",
+ "RadiusCalledStationId": "RADIUS iškviesto stoties ID",
+ "RadiusCalledStationIdDescription": "Iškviesto įrenginio identifikatorius",
+ "RadiusCallingStationId": "RADIUS skambinančios stoties ID",
+ "Certificate Expiry Notification": "Sertifikato galiojimo pabaigos pranešimas",
+ "Check how to config it for WebSocket": "Patikrinkite, kaip sukonfigūruoti per WebSocket",
+ "Most likely causes:": "Greičiausios priežastys:",
+ "The resource is no longer available.": "Resursas nebeprieinamas.",
+ "What you can try:": "Ką galite pabandyti:",
+ "Retype the address.": "Įveskite adresą iš naujo.",
+ "Connection String": "Ryšio eilutė",
+ "Setup Docker Host": "Nustatyti Docker serverį",
+ "Connection Type": "Ryšio tipas",
+ "Docker Daemon": "Docker tarnyba",
+ "noDockerHostMsg": "Nepasiekiama. Pirmiausia nustatykite Docker serverį.",
+ "deleteDockerHostMsg": "Ar tikrai norite ištrinti šį Docker serverį iš visų stebėjimų?",
+ "Docker Container": "Docker konterineris",
+ "Container Name / ID": "Konteinerio vardas / ID",
+ "Docker Host": "Docker serveris",
+ "Docker Hosts": "Docker serveriai",
+ "Workstation": "Darbinė stotis",
+ "telegramMessageThreadID": "(Pasirinktinai) Žinučių temos ID",
+ "telegramMessageThreadIDDescription": "Pasirinktinai unikalus identifikatorius tikslinei žinučių temai (forumo temai), skirtas tik forumo supergrupėms",
+ "telegramSendSilently": "Siųsti tyliai",
+ "telegramSendSilentlyDescription": "Siunčia žinutę tyliai. Vartotojai gaus pranešimą be garso.",
+ "Examples": "Pavyzdžiai",
+ "telegramProtectContent": "Apsaugoti nuo persiuntimo/išsaugojimo",
+ "telegramProtectContentDescription": "Jei įjungta, Telegram bot'o žinutės bus apsaugotos nuo persiuntimo ir išsaugojimo.",
+ "telegramUseTemplate": "Naudoti pasirinktą žinutės šabloną",
+ "telegramUseTemplateDescription": "Jei įjungta, žinutė bus išsiųsta naudojant pasirinktą šabloną.",
+ "telegramTemplateFormatDescription": "Telegram leidžia naudoti skirtingas žymėjimo kalbas žinutėms, žr. Telegram {0} dėl išsamesnės informacijos.",
+ "supportTelegramChatID": "Palaikymas tiesioginiam pokalbiui / grupei / kanalui pokalbio ID",
+ "wayToGetTelegramChatID": "Galite gauti savo pokalbio ID, išsiųsdami žinutę bot'ui ir apsilankę šioje nuorodoje, kur pamatysite chat_id:",
+ "smtpBCC": "BCC",
+ "pushoversounds climb": "Klimbas (ilgas)",
+ "Authorization Identity": "Autorizacijos identifikatorius",
+ "liquidIntroduction": "Šablonavimo galimybės pasiekiamos naudojant Liquid šablonavimo kalbą. Naudojimo instrukcijas rasite {0}. Galimi šie kintamieji:",
+ "webhookAdditionalHeadersDesc": "Nustato papildomas antraštes, siunčiamas su webhook. Kiekviena antraštė turi būti apibrėžta kaip JSON raktas/reikšmė.",
+ "templateMonitorJSON": "objektas, apibūdinantis stebėjimą",
+ "templateLimitedToUpDownNotifications": "prieinama tik VEIKIA/NEVEIKIA pranešimams",
+ "Json Query Expression": "Json užklausos išraiška",
+ "webhookAdditionalHeadersTitle": "Papildomos antraštės",
+ "webhookBodyCustomOption": "Tinkintas turinys",
+ "Webhook URL": "Webhook URL adresas",
+ "templateHeartbeatJSON": "objektas, apibūdinantis patikros signalą",
+ "templateLimitedToUpDownCertNotifications": "prieinama tik VEIKIA/NEVEIKIA/Sertifikato galiojimo pranešimams",
+ "authIncorrectCreds": "Neteisingas vartotojo vardas arba slaptažodis.",
+ "nostrRelaysHelp": "Vienas tarpininko URL po vieną eilutėje",
+ "nostrSender": "Siuntėjo privatus raktas (nsec)",
+ "nostrRecipients": "Gavėjų viešieji raktai (npub)",
+ "nostrRecipientsHelp": "npub formatu, po vieną eilutėje",
+ "showCertificateExpiry": "Rodyti sertifikato galiojimo pabaigą",
+ "noOrBadCertificate": "Nėra / netinkamas sertifikatas",
+ "cacheBusterParam": "Pridėti {0} parametrą",
+ "cacheBusterParamDescription": "Atsitiktinai sugeneruotas parametras, skirtas apeiti talpyklas.",
+ "gamedigGuessPortDescription": "Valve Server Query Protocol naudojamas prievadas gali skirtis nuo kliento prievado. Pabandykite šį variantą, jei monitorius negali prisijungti prie jūsų serverio.",
+ "Send rich messages": "Siųsti išsamius pranešimus",
+ "Bitrix24 Webhook URL": "Bitrix24 Webhook URL adresas",
+ "authUserInactiveOrDeleted": "Vartotojas neaktyvus arba ištrintas.",
+ "rabbitmqNodesRequired": "Prašome nustatyti mazgus šiam stebėjimui.",
+ "RabbitMQ Nodes": "RabbitMQ valdymo mazgai",
+ "rabbitmqNodesDescription": "Įveskite URL adresą RabbitMQ valdymo mazgams, įskaitant protokolą ir prievadą. Pavyzdys: {0}",
+ "rabbitmqNodesInvalid": "Prašome naudoti pilnai kvalifikuotą (prasidedantį „http“) URL adresą RabbitMQ mazgams.",
+ "cellsyntDestination": "Gavėjo telefono numeris, naudojant tarptautinį formatą su pradine 00 ir šalies kodu, pvz., 00447920110000 JK numeriui 07920 110 000 (iš viso iki 17 skaitmenų). Viena HTTP užklausa gali turėti iki 25000 gavėjų, atskirtų kableliais.",
+ "threemaBasicModeInfo": "Pastaba: Ši integracija naudoja Threema Gateway baziniame režime (serverio pagrindu šifravimas). Išsamesnę informaciją rasite {0}.",
+ "Custom sound to override default notification sound": "Individualus garsas, pakeičiantis numatytąjį pranešimų garsą",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "Naudokite teksto siuntėjo ID arba telefono numerį E.164 formatu, jei norite gauti atsakymus.",
+ "wahaSession": "Sesija",
+ "wahaChatId": "Pokalbio ID (telefono numeris / adresato ID / grupės ID)",
+ "wayToGetWahaApiUrl": "Jūsų WAHA instancijos URL.",
+ "wayToGetWahaApiKey": "API raktas yra WHATSAPP_API_KEY aplinkos kintamojo reikšmė, kurią naudojote paleidžiant WAHA.",
+ "wayToGetWahaSession": "Iš šios sesijos WAHA siunčia pranešimus į pokalbio ID. Jį rasite WAHA skydelyje.",
+ "wayToWriteWahaChatId": "Telefono numeris su tarptautiniu prefiksu, bet be pliuso ženklo pradžioje ({0}), adresato ID ({1}) arba grupės ID ({2}). Pranešimai siunčiami į šį pokalbio ID iš WAHA sesijos.",
+ "OAuth Token URL": "OAuth prieigos rakto URL",
+ "invertKeywordDescription": "Ieškokite raktažodžio, kuris yra ankščiau panaudotas, o ne esantis.",
+ "gamedigGuessPort": "Gamedig: atspėk prievadą",
+ "wayToGetBitrix24Webhook": "Sukurkite webhook, sekdami nurodymus adresu {0}",
+ "bitrix24SupportUserID": "Įveskite savo vartotojo ID Bitrix24. ID galite rasti nuorodoje, eidami į vartotojo profilį.",
+ "remoteBrowsersDescription": "Nuotolinės naršyklės yra alternatyva Chromium paleidimui vietoje. Nustatykite su tokia paslauga kaip browserless.io arba prisijunkite prie savo",
+ "self-hosted container": "savarankiškai talpinamas konteineris",
+ "remoteBrowserToggle": "Numatytuoju atveju Chromium veikia Uptime Kuma konteineryje. Galite naudoti nuotolinę naršyklę, persijungę šį jungiklį.",
+ "deleteRemoteBrowserMessage": "Ar tikrai norite ištrinti šią nuotolinę naršyklę visiems stebėjimams?",
+ "GrafanaOncallUrl": "Grafana Oncall URL",
+ "mongodbCommandDescription": "Paleiskite MongoDB komandą prieš duomenų bazę. Daugiau informacijos apie galimas komandas rasite {documentation}",
+ "wayToGetSevenIOApiKey": "Aplankykite valdymo skydelį adresu app.seven.io > developer > api key > žalias pridėjimo mygtukas",
+ "senderSevenIO": "Siuntimo numeris arba pavadinimas",
+ "receiverSevenIO": "Priėmimo numeris",
+ "receiverInfoSevenIO": "Jei priėmimo numeris nėra Vokietijoje, turite pridėti šalies kodą numerio pradžioje (pvz., JAV šalies kodui 1 naudokite 117612121212 vietoje 017612121212)",
+ "apiKeySevenIO": "SevenIO API raktas",
+ "wayToWriteWhapiRecipient": "Telefono numeris su tarptautiniu prefiksu, bet be pliuso ženklas pradžioje ({0}), adresato ID ({1}) arba grupės ID ({2}).",
+ "wayToGetWhapiUrlAndToken": "API URL ir prieigos raktą galite gauti eidami į norimą kanalą iš {0}",
+ "whapiRecipient": "Telefono numeris / Adresato ID / Grupės ID",
+ "wayToGetHeiiOnCallDetails": "Kaip gauti Trigger ID ir API raktus, paaiškinta {documentation}",
+ "callMeBotGet": "Čia galite sugeneruoti pabaigos tašką {0}, {1} ir {2}. Atkreipkite dėmesį, kad galite susidurti su apribojimais. Apribojimai atrodo tokie: {3}",
+ "gtxMessagingApiKeyHint": "Savo API raktą rasite: My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "Iš telefono numerio / Perdavimo kelio kilmės adresas (TPOA)",
+ "gtxMessagingFromHint": "Mobiliaisiais telefonais jūsų gavėjai mato TPOA kaip pranešimo siuntėją. Leidžiama iki 11 simbolių su raidėmis/skaičiais, trumpasis kodas, vietinis ilgas numeris arba tarptautiniai numeriai ({e164}, {e212} arba {e214})",
+ "Originator type": "Siuntėjo tipas",
+ "cellsyntOriginatortypeAlphanumeric": "Raidinė skaitmeninė eilutė (maks. 11 simbolių). Gavėjai negali atsakyti į pranešimą.",
+ "Alphanumeric (recommended)": "Raidinis skaitmeninis (rekomenduojama)",
+ "cellsyntOriginatortypeNumeric": "Skaitinė reikšmė (maks. 15 skaitmenų) su tarptautiniu telefono numerio formatu be pradinio 00 (pvz., JK numeris 07920 110 000 turi būti įrašytas kaip 447920110000). Gavėjai gali atsakyti į pranešimą.",
+ "Originator": "Siuntėjas",
+ "cellsyntOriginator": "Rodoma gavėjo mobiliajame telefone kaip pranešimo siuntėjas. Leidžiamos reikšmės ir funkcija priklauso nuo parametro originatortype.",
+ "Destination": "Gavėjas",
+ "cellsyntSplitLongMessages": "Ilgi pranešimai suskaidomi į iki 6 dalių. 153 x 6 = 918 simbolių.",
+ "max 11 alphanumeric characters": "maks. 11 simbolių (raidės, skaičiai)",
+ "Community String": "Bendruomenės eilutė",
+ "snmpCommunityStringHelptext": "Ši eilutė veikia kaip slaptažodis, skirtas autentifikuoti ir valdyti prieigą prie SNMP palaikomų įrenginių. Suderinkite ją su savo SNMP įrenginio konfigūracija.",
+ "OID (Object Identifier)": "OID (objekto identifikatorius)",
+ "snmpOIDHelptext": "Įveskite OID sensoriui ar būsenai, kuriuos norite stebėti. Jei nesate tikri dėl OID, naudokite tinklo valdymo įrankius, tokius kaip MIB naršyklės ar SNMP programinė įranga.",
+ "Condition": "Sąlyga",
+ "SNMP Version": "SNMP versija",
+ "Please enter a valid OID.": "Prašome įvesti galiojantį OID.",
+ "wayToGetThreemaGateway": "Galite užsiregistruoti Threema Gateway {0}.",
+ "threemaRecipientTypePhoneFormat": "E.164, be pradinio +",
+ "threemaSenderIdentity": "Gateway-ID",
+ "threemaSenderIdentityFormat": "8 simboliai, paprastai prasideda ženklu *",
+ "threemaApiAuthenticationSecret": "Gateway-ID slaptažodis",
+ "apiKeysDisabledMsg": "API raktai išjungti, nes autentifikacija išjungta.",
+ "Host Onesender": "Onesender serveris",
+ "Token Onesender": "Onesender prieigos raktas",
+ "privateOnesenderDesc": "Įsitikinkite, kad telefono numeris yra tinkamas. Norėdami išsiųsti žinutę į privatų telefono numerį, pvz.: 628123456789",
+ "groupOnesenderDesc": "Įsitikinkite, kad GroupID yra tinkamas. Norėdami išsiųsti žinutę į grupę, pvz.: 628123456789-342345",
+ "wayToGetOnesenderUrlandToken": "URL ir prieigos raktą galite gauti apsilankę Onesender svetainėje. Daugiau informacijos {0}",
+ "Flute": "Fleita",
+ "Harp": "Arfa",
+ "Doorbell": "Durų skambutis",
+ "Elevator": "Liftas",
+ "Form Data Body": "Formos duomenų turinys",
+ "Client Secret": "Kliento slaptažodis",
+ "OAuth Scope": "OAuth apimtis",
+ "Optional: Space separated list of scopes": "Pasirenkama: tarpu atskirtų apimčių sąrašas",
+ "Lost connection to the socket server.": "Prarastas ryšys su lizdo serveriu.",
+ "Cannot connect to the socket server.": "Nepavyksta prisijungti prie lizdo serverio.",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "SIGNL4 Webhook URL adresas",
+ "signl4Docs": "Daugiau informacijos apie SIGNL4 konfigūravimą ir kaip gauti SIGNL4 webhook URL rasite {0}.",
+ "Conditions": "Sąlygos",
+ "conditionAdd": "Pridėti sąlygą",
+ "conditionDelete": "Ištrinti sąlygą",
+ "conditionAddGroup": "Pridėti grupę",
+ "conditionDeleteGroup": "Ištrinti grupę",
+ "not contains": "neturi",
+ "starts with": "prasideda su",
+ "not starts with": "neprasideda su",
+ "ends with": "baigiasi su",
+ "not ends with": "nebaigiasi su",
+ "less than": "mažiau nei",
+ "greater than": "daugiau nei",
+ "less than or equal to": "mažiau arba lygu",
+ "greater than or equal to": "daugiau arba lygu",
+ "record": "įrašas",
+ "Notification Channel": "Pranešimų kanalas",
+ "Alphanumerical string and hyphens only": "Tik raidinė skaitinė eilutė ir brūkšneliai",
+ "Arcade": "Arkada",
+ "Fail": "Nepavyko",
+ "Correct": "Teisingai",
+ "Reveal": "Atskleisti",
+ "Bubble": "Burbulas",
+ "Scifi": "Mokslinis fantastinis",
+ "Clear": "Išvalyti",
+ "Pop": "Pop",
+ "Time Sensitive (iOS Only)": "Laiko jautrūs (tik iOS)",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "Laiko jautrūs pranešimai bus pristatyti iš karto, net jei įrenginys yra „Netrukdyti“ režime.",
+ "Can be found on:": "Galima rasti: {0}",
+ "The phone number of the recipient in E.164 format.": "Gavėjo telefono numeris E.164 formatu.",
+ "rabbitmqHelpText": "Norėdami naudoti stebėjimą, turėsite įjungti valdymo įskiepį savo RabbitMQ sąrankoje. Išsamesnės informacijos rasite {rabitmq_documentation}.",
+ "Separate multiple email addresses with commas": "Atskirkite kelis el. pašto adresus kableliais",
+ "equals": "lygu",
+ "not equals": "nelygu",
+ "contains": "turi"
+}
diff --git a/src/lang/lv.json b/src/lang/lv.json
new file mode 100644
index 000000000..c069c7303
--- /dev/null
+++ b/src/lang/lv.json
@@ -0,0 +1,7 @@
+{
+ "languageName": "Latviešu",
+ "setupDatabaseChooseDatabase": "Kuru datubāzi izmantosiet?",
+ "setupDatabaseEmbeddedMariaDB": "Jums nav nekas jādara. Docker imidžā ir iebūvēta un automātiski konfigurēta MariaDB datubāze. Uptime Kuma pieslēgsies šai datubāzei izmantojot unix soketu.",
+ "setupDatabaseSQLite": "Vienkāršs datu bāzes fails, iesakāms maza izmēra risinājumiem. Pirms versijas v2.0.0 SQLite bija noklusējuma datubāze.",
+ "setupDatabaseMariaDB": "Pieslēgties ārējai MariaDB datubāzei. Jums būs jākonfigurē datubāzes pieslēgšanās informācija."
+}
diff --git a/src/lang/lzh.json b/src/lang/lzh.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/src/lang/lzh.json
@@ -0,0 +1 @@
+{}
diff --git a/src/lang/mk.json b/src/lang/mk.json
new file mode 100644
index 000000000..251463f5c
--- /dev/null
+++ b/src/lang/mk.json
@@ -0,0 +1,92 @@
+{
+ "setupDatabaseMariaDB": "Поврзи надворешна MariaDB датабаза. Мораш да ги внесеш податоците за најава од датабазата.",
+ "dbName": "Име од Датабаза",
+ "Settings": "Поставки",
+ "Dashboard": "Контролна табла",
+ "Help": "Помош",
+ "Language": "Јазик",
+ "Theme": "Тема",
+ "General": "Генерално",
+ "Game": "Игра",
+ "Version": "Верзија",
+ "Check Update On GitHub": "Проверете го ажурирањето на GitHub",
+ "List": "Листа",
+ "Home": "Дома",
+ "Add": "Додај",
+ "Add New Monitor": "Додај нов монитор",
+ "Quick Stats": "Брзи статистика",
+ "Up": "Горе",
+ "Down": "Доле",
+ "Pending": "Во очекување",
+ "Maintenance": "Одржување",
+ "Unknown": "Непознато",
+ "Reconnecting...": "Повторно поврзување...",
+ "Specific Monitor Type": "Специфичен тип на монитор",
+ "pauseDashboardHome": "Пауза",
+ "Name": "Име",
+ "Status": "Статус",
+ "Message": "Порака",
+ "No important events": "Нема важни настани",
+ "Resume": "Продолжи",
+ "Edit": "Измени",
+ "Current": "Сегашен",
+ "Cert Exp.": "Истек Серт.",
+ "Monitor": "Монитор | Монитори",
+ "day": "ден | денови",
+ "-day": "-ден",
+ "hour": "час",
+ "-hour": "-час",
+ "Ping": "Пинг",
+ "Monitor Type": "Мониторски тип",
+ "Invert Keyword": "Инвертирајте клучни зборови",
+ "Expected Value": "Очекувана Вредност",
+ "Json Query": "Json Query",
+ "URL": "УРЛ",
+ "Hostname": "Hostname",
+ "Port": "Порт",
+ "Heartbeat Interval": "Интервал на отчукување на срцето",
+ "Request Timeout": "Истекување на барањето",
+ "Retries": "Обиди",
+ "Advanced": "Напредно",
+ "checkEverySecond": "Провери секоја {0} секунда",
+ "retryCheckEverySecond": "Повтори секои {0} секунди",
+ "resendEveryXTimes": "Препрати на секои {0} пати",
+ "resendDisabled": "Повторно испраќање е оневозможено",
+ "ignoreTLSError": "Игнорирај TLS/SSL errors за HTTPS websites",
+ "ignoreTLSErrorGeneral": "Игнорирај TLS/SSL грешки при конекција",
+ "upsideDownModeDescription": "Превртете го статусот наопаку. Ако услугата е достапна, таа е ДОЛУ.",
+ "Upside Down Mode": "Режим наопаку",
+ "Max. Redirects": "Макс. Пренасочувања",
+ "Accepted Status Codes": "Прифатливи Статус Кодови",
+ "Push URL": "Push URL",
+ "pushOptionalParams": "Опционални параметри: {0}",
+ "languageName": "Македонски",
+ "setupDatabaseChooseDatabase": "Која датабаза би сакал да ја користиш?",
+ "setupDatabaseEmbeddedMariaDB": "Не треба ништо да поставувате. Оваа докер-слика автоматски ја вгради и конфигурираше MariaDB за вас. Uptime Kuma ќе се поврзе со оваа база на податоци преку уникс приклучок.",
+ "setupDatabaseSQLite": "Едноставна датотека со база на податоци, препорачана за распоредувања во мали размери. Пред верзијата 2.0.0, Uptime Kuma користеше SQLite како стандардна база на податоци.",
+ "settingUpDatabaseMSG": "Ја сетираме Датабазата за вас, ве молам почекајте.",
+ "New Update": "Ново ажурирање",
+ "Appearance": "Изглед",
+ "Primary Base URL": "Примарна основна URL",
+ "statusMaintenance": "Одржување",
+ "Cannot connect to the socket server": "Не може да се поврзе со сокет-серверот",
+ "General Monitor Type": "Општ тип на монитор",
+ "Passive Monitor Type": "Пасивен тип на монитор",
+ "markdownSupported": "Поддржана е синтакса Markdown",
+ "Pause": "Пауза",
+ "DateTime": "ДатаВреме",
+ "Delete": "Избриши",
+ "Uptime": "Време на работа",
+ "Response": "Одговор",
+ "Keyword": "Клучен збор",
+ "Friendly Name": "Пријателско Име",
+ "Host URL": "УРЛ адреса од сервер",
+ "locally configured mail transfer agent": "локално конфигуриран агент за пренос на пошта",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Или внесете го името на домаќинот на серверот на кој сакате да се поврзете или {localhost} ако имате намера да користите {local_mta}",
+ "timeoutAfter": "Истекување на времето по {0} секунди",
+ "Heartbeat Retry Interval": "Интервал на повторно обиди за отчукување на срцето",
+ "Resend Notification if Down X times consecutively": "Повторно испратете известување ако е долу X пати последователно",
+ "retriesDescription": "Максимално повторување пред услугата да биде означена како неискористена и да се испрати известување",
+ "maxRedirectDescription": "Максимален број пренасочувања што треба да се следат. Поставете на 0 за да ги оневозможите пренасочувањата.",
+ "needPushEvery": "Треба да ја повикувате оваа URL на секои {0} секунди."
+}
diff --git a/src/lang/ml.json b/src/lang/ml.json
index 8cbfd148f..82fba9e10 100644
--- a/src/lang/ml.json
+++ b/src/lang/ml.json
@@ -23,5 +23,30 @@
"Game": "കളികൾ",
"Check Update On GitHub": "പുതിയ മാറ്റങ്ങൾക്കായി GitHub നോക്കുക",
"Pending": "തീരുമാനം പ്രതീക്ഷിച്ചിരിക്കുന്ന",
- "General Monitor Type": "പൊതുവരായ തിര നോട്ടം"
+ "General Monitor Type": "പൊതുവരായ തിര നോട്ടം",
+ "settingUpDatabaseMSG": "ഡാറ്റാബേസ് സജ്ജീകരിച്ചുകൊണ്ടിരിക്കുന്നു . ദയവായി കുറച്ച് സമയം കാത്തിരിക്കുക.",
+ "setupDatabaseChooseDatabase": "ഏത് ഡാറ്റാബേസാണ് നിങ്ങൾ ഉപയോഗിക്കാൻ ആഗ്രഹിക്കുന്നത്?",
+ "dbName": "ഡാറ്റാബേസിന്റെ പേര്",
+ "Reconnecting...": "വീണ്ടും ബന്ധപ്പെടാൻ ശ്രമിക്കുന്നു...",
+ "Cannot connect to the socket server": "സോക്കറ്റ് സെർവറുമായി ബന്ധപ്പെടാൻ സാധിക്കുന്നില്ല",
+ "Name": "നാമം",
+ "hour": "മണിക്കൂർ",
+ "-hour": "-മണിക്കൂർ",
+ "Response": "ഉത്തരം",
+ "Request Timeout": "പ്രതികരണം ലഭിക്കാനുള്ള സമയപരിധി അവസാനിച്ചിരിക്കുന്നു",
+ "timeoutAfter": "സമയപരിധി {0} നിമിഷങ്ങൾക്കകം അവസാനിക്കും",
+ "Retries": "വീണ്ടും ശ്രമിക്കൽ",
+ "Heartbeat Retry Interval": "ഹൃദയമിടിപ്പ് പുനരവലോകന ഇടവേള",
+ "Resend Notification if Down X times consecutively": "തുടർച്ചയായി X തവണ പ്രവർത്തനം തടസ്സപ്പെട്ടാൽ അറിയിപ്പ് വീണ്ടും അയയ്ക്കുക",
+ "Advanced": "പുരോഗമിച്ച",
+ "checkEverySecond": "ഓരോ {0} നിമിഷങ്ങൾക്ക് ശേഷവും പരിശോധിക്കുക",
+ "retryCheckEverySecond": "ഓരോ {0} നിമിഷങ്ങൾക്ക് ശേഷവും വീണ്ടും ശ്രമിക്കുക",
+ "resendEveryXTimes": "ഓരോ {0} പ്രാവശ്യവും വീണ്ടും അയയ്ക്കുക",
+ "resendDisabled": "വീണ്ടും അയയ്ക്കൽ നിരോധിച്ചിരിക്കുന്നു",
+ "Notifications": "അറിയിപ്പുകൾ",
+ "Not available, please setup.": "ലഭ്യമല്ല, ദയവായി സജ്ജീകരിക്കുക.",
+ "Setup Notification": "വിജ്ഞാപനം സജ്ജമാക്കുക",
+ "Light": "വെളിച്ചം",
+ "Dark": "ഇരുട്ട്",
+ "Auto": "സ്വയം"
}
diff --git a/src/lang/ms.json b/src/lang/ms.json
index 14ddd7d3a..ec7520832 100644
--- a/src/lang/ms.json
+++ b/src/lang/ms.json
@@ -7,24 +7,24 @@
"Game": "Permainan",
"Primary Base URL": "URL Pangkalan Utama",
"Version": "Versi",
- "Add": "Menambah",
- "Quick Stats": "Statistik ringkas",
- "Up": "Dalam talian",
- "Down": "Luar talian",
- "Pending": "Belum selesai",
- "statusMaintenance": "Membaiki",
- "Maintenance": "Membaiki",
- "Unknown": "Tidak ketahui",
- "General Monitor Type": "Jenis monitor umum",
- "Check Update On GitHub": "Semak kemas kini dalam GitHub",
+ "Add": "Tambah",
+ "Quick Stats": "Statistik Pantas",
+ "Up": "Atas",
+ "Down": "Bawah",
+ "Pending": "Dalam Proses",
+ "statusMaintenance": "Penyelenggaraan",
+ "Maintenance": "Penyelenggaraan",
+ "Unknown": "Tidak Diketahui",
+ "General Monitor Type": "Jenis Monitor Umum",
+ "Check Update On GitHub": "Semak kemas kini di GitHub",
"List": "Senarai",
- "Specific Monitor Type": "Jenis monitor spesifik",
+ "Specific Monitor Type": "Jenis Monitor Spesifik",
"markdownSupported": "Sintaks markdown disokong",
"languageName": "Bahasa inggeris",
"Dashboard": "Papan pemuka",
"Language": "Bahasa",
- "Add New Monitor": "Tambah monitor baharu",
- "Passive Monitor Type": "Jenis monitor pasif",
+ "Add New Monitor": "Tambah Monitor Baharu",
+ "Passive Monitor Type": "Jenis Monitor Pasif",
"No Services": "Tiada Servis",
"Add a monitor": "Tambah Monitor",
"High": "Tinggi",
@@ -49,5 +49,41 @@
"Content Type": "Jenis Content",
"Home": "Laman Utama",
"Settings": "Tetapan",
- "Save": "Simpan"
+ "Save": "Simpan",
+ "Cannot connect to the socket server": "Tidak dapat disambungkan kepada pelayan soket",
+ "Resume": "Sambung",
+ "Current": "Terkini",
+ "Uptime": "Uptime",
+ "Cert Exp.": "Tamat Sijil",
+ "now": "sekarang",
+ "setupDatabaseMariaDB": "Sambungan kepada pangkalan data MariaDB secara luaran. Anda perlu tetapkan maklumat sambungan pangkalan data.",
+ "hour": "jam",
+ "Ping": "Ping",
+ "settingUpDatabaseMSG": "Pangkalan data sedang ditetapkan. Sila tunggu sebentar.",
+ "Reconnecting...": "Penyambungan...",
+ "Message": "Mesej",
+ "No important events": "Tiada info penting",
+ "Edit": "Sunting",
+ "Delete": "Padam",
+ "Monitor": "Monitor | Monitors",
+ "time ago": "{0} yang lepas",
+ "day": "hari | hari",
+ "-day": "-hari",
+ "-year": "-tahun",
+ "Pause": "Rehat",
+ "Status": "Status",
+ "DateTime": "TarikhMasa",
+ "dbName": "Nama Pangkalan Data",
+ "-hour": "-jam",
+ "Response": "Tindakbalas",
+ "Monitor Type": "Jenis Monitor",
+ "Keyword": "Katakunci",
+ "pauseDashboardHome": "Rehat",
+ "Name": "Nama",
+ "setupDatabaseChooseDatabase": "Pangkalan Data yang mana hendak digunakan ?",
+ "Host URL": "URL Host",
+ "URL": "URL",
+ "Expected Value": "Nilai Sepatutnya",
+ "Friendly Name": "Nama Mudah",
+ "Hostname": "Nama Host"
}
diff --git a/src/lang/my.json b/src/lang/my.json
index d7b80be92..d893a0492 100644
--- a/src/lang/my.json
+++ b/src/lang/my.json
@@ -33,7 +33,7 @@
"Down": "ကွန်ရက်ပြတ်တောက်နေသည်",
"Pending": "ဆိုင်းငံ့ဆဲ",
"statusMaintenance": "ပြုပြင်ထိန်းသိမ်းခြင်း",
- "Cannot connect to the socket server": "Socket Server အားချိတ်ဆက်မှုမအောင်မြင်ပါ",
+ "Cannot connect to the socket server": "Why Socket Server အားချိတ်ဆက်မှုမအောင်မြင်ပါ",
"Passive Monitor Type": "Passive စောင့်ကြည့်မှုပုံစံ",
"Specific Monitor Type": "သီးခြားစောင့်ကြည့်မှုပုံစံ",
"Resume": "ဆက်သွားမည်",
@@ -89,5 +89,7 @@
"Heartbeat Retry Interval": "ကွန်ယက်ချိတ်ဆက်နိုင်မှုတိုင်းတာခြင်း ထပ်မံကြိုးစားခြင်း အချိန်ကွာဟချက်",
"Resend Notification if Down X times consecutively": "ကွန်ယက်ချိတ်ဆက်မှု X အကြိမ်ထိ ဆက်တိုက်ကျနေပါက သတိပေးချက်ထပ်မံပေးပို့ရန်",
"retriesDescription": "ဝန်ဆောင်မှုကွန်ယက်ပြတ်တောက်နေ၍ သတိပေးချက်ပေးပို့ပြီး အများဆုံးထပ်မံကြိုးစားနိုင်မှု",
- "Search Engine Visibility": "ရှာဖွေမှုအင်ဂျင်များ၏မြင်နိုင်စွမ်း"
+ "Search Engine Visibility": "ရှာဖွေမှုအင်ဂျင်များ၏မြင်နိုင်စွမ်း",
+ "setupDatabaseEmbeddedMariaDB": "You don't need to set anything. This docker image has embedded and configured MariaDB for you automatically. Uptime Kuma will connect to this database via unix socket.",
+ "setupDatabaseChooseDatabase": "English"
}
diff --git a/src/lang/nb-NO.json b/src/lang/nb-NO.json
index b26d3a005..19cc29508 100644
--- a/src/lang/nb-NO.json
+++ b/src/lang/nb-NO.json
@@ -28,7 +28,7 @@
"confirmDisableTwoFAMsg": "Er du sikker på at du vil deaktivere 2FA?",
"Settings": "Innstillinger",
"Dashboard": "Dashbord",
- "New Update": "Ny Oppdatering",
+ "New Update": "Ny oppdatering",
"Language": "Språk",
"Appearance": "Utseende",
"Theme": "Tema",
@@ -46,10 +46,10 @@
"Pause": "Pause",
"Name": "Navn",
"Status": "Status",
- "DateTime": "Dato tid",
+ "DateTime": "Dato/tid",
"Message": "Melding",
"No important events": "Ingen viktige hendelser",
- "Resume": "Fortsett",
+ "Resume": "Gjenoppta",
"Edit": "Rediger",
"Delete": "Slett",
"Current": "Nåværende",
@@ -63,7 +63,7 @@
"Ping": "Ping",
"Monitor Type": "Overvåkningstype",
"Keyword": "Stikkord",
- "Friendly Name": "Vennlig navn",
+ "Friendly Name": "Lett gjenkjennelig navn",
"URL": "URL",
"Hostname": "Vertsnavn",
"Port": "Port",
@@ -81,7 +81,7 @@
"Light": "Lys",
"Dark": "Mørk",
"Auto": "Auto",
- "Theme - Heartbeat Bar": "Theme - Heartbeat Bar",
+ "Theme - Heartbeat Bar": "Tema - Hjerteslagslinje",
"Normal": "Normal",
"Bottom": "Bunn",
"None": "Ingen",
@@ -98,9 +98,9 @@
"Enable Auth": "Aktiver autentisering",
"disableauth.message1": "Er du sikker på at du vil {disableAuth}?",
"disable authentication": "deaktiver autentisering",
- "disableauth.message2": "Dette er for {intendThirdPartyAuth} foran Uptime Kuma, for eksempel Cloudflare Access.",
- "where you intend to implement third-party authentication": "hvor du planlegger å implementere tredjeparts autentifikasjon",
- "Please use this option carefully!": "Vennligst vær forsiktig når du bruker denne!",
+ "disableauth.message2": "Dette er tiltenkt scenarier {intendThirdPartyAuth} foran Uptime Kuma, for eksempel Cloudflare Access, Authelia eller andre autentiseringsmekanismer.",
+ "where you intend to implement third-party authentication": "hvor du planlegger å implementere tredjeparts-autentifikasjon",
+ "Please use this option carefully!": "Bruk dette valget med forsiktighet!",
"Logout": "Logg ut",
"Leave": "Forlat",
"I understand, please disable": "Jeg forstår, vennligst deaktiver",
@@ -111,7 +111,7 @@
"Password": "Passord",
"Remember me": "Husk meg",
"Login": "Logg inn",
- "No Monitors, please": "Ingen overvåkning, vær så snill",
+ "No Monitors, please": "Ingen overvåkning, takk",
"add one": "legg til en",
"Notification Type": "Meldingstype",
"Email": "E-post",
@@ -129,12 +129,12 @@
"respTime": "Svartid (ms)",
"notAvailableShort": "N/A",
"Default enabled": "Standard aktivert",
- "Apply on all existing monitors": "Anvend for alle eksisterende overvåkninger",
+ "Apply on all existing monitors": "Bruk for alle eksisterende overvåkninger",
"Create": "Opprett",
"Clear Data": "Slett data",
"Events": "Hendelser",
"Heartbeats": "Hjerteslag",
- "Auto Get": "Auto Hent",
+ "Auto Get": "Auto-hent",
"backupDescription": "Du kan sikkerhetskopiere alle overvåkninger og alle varsler til en JSON-fil.",
"backupDescription2": "PS: Historikk og hendelsesdata er ikke inkludert.",
"backupDescription3": "Følsomme data som varslingstokener er inkludert i eksportfilen. Vennligst oppbevar dem sikkert.",
@@ -146,17 +146,17 @@
"Options": "Alternativer",
"Keep both": "Behold begge",
"Verify Token": "Bekreft token",
- "Setup 2FA": "Konfigurer 2FA",
+ "Setup 2FA": "Sett opp 2FA",
"Enable 2FA": "Aktiver 2FA",
"Disable 2FA": "Deaktiver 2FA",
- "2FA Settings": "2FA Innstillinger",
- "Two Factor Authentication": "To-faktor autentisering",
+ "2FA Settings": "2FA-innstillinger",
+ "Two Factor Authentication": "To-faktor-autentisering",
"Active": "Aktiv",
"Inactive": "Inaktiv",
"Token": "Token",
"Show URI": "Vis URI",
"Tags": "Etiketter",
- "Add New below or Select...": "Legg til nytt nedenfor eller Velg…",
+ "Add New below or Select...": "Legg til nytt nedenfor, eller Velg…",
"Tag with this name already exist.": "Etikett med dette navnet eksisterer allerede.",
"Tag with this value already exist.": "Etikett med denne verdien eksisterer allerede.",
"color": "farge",
@@ -170,8 +170,8 @@
"Purple": "Lilla",
"Pink": "Rosa",
"Search...": "Søk…",
- "Avg. Ping": "Gj.sn. Ping",
- "Avg. Response": "Gj.sn. Respons",
+ "Avg. Ping": "Gj.sn. ping",
+ "Avg. Response": "Gj.sn. respons",
"Entry Page": "Oppføringsside",
"statusPageNothing": "Ingenting her, vennligst legg til en gruppe eller en overvåkning.",
"No Services": "Ingen tjenester",
@@ -196,7 +196,7 @@
"YOUR BOT TOKEN HERE": "DITT BOT TOKEN HER",
"chatIDNotFound": "Chat-ID ble ikke funnet. Send en melding til denne boten først",
"webhook": "Webhook",
- "Post URL": "Post URL",
+ "Post URL": "Post-URL",
"Content Type": "Innholdstype",
"webhookJsonDesc": "{0} er bra for alle moderne HTTP-servere som express.js",
"webhookFormDataDesc": "{multipart} er bra for PHP. JSON trenger å bli analysert med {decodeFunction}",
@@ -215,7 +215,7 @@
"Prefix Custom Message": "Prefiks tilpasset melding",
"Hello @everyone is...": "Hei {'@'}everyone det er…",
"teams": "Microsoft Teams",
- "Webhook URL": "Webhook URL",
+ "Webhook URL": "Webhook-URL",
"wayToGetTeamsURL": "Du kan lære hvordan du oppretter en webhook-URL {0}.",
"signal": "Signal",
"Number": "Nummer",
@@ -224,8 +224,8 @@
"wayToCheckSignalURL": "Du kan sjekke denne nettadressen for å se hvordan du konfigurerer en:",
"signalImportant": "VIKTIG: Du kan ikke blande grupper og nummere i mottakere!",
"gotify": "Gotify",
- "Application Token": "Application Token",
- "Server URL": "Server URL",
+ "Application Token": "Applikasjonstoken",
+ "Server URL": "Server-URL",
"Priority": "Prioritet",
"slack": "Slack",
"Icon Emoji": "Icon Emoji",
@@ -234,7 +234,7 @@
"aboutWebhooks": "Mer informasjon om webhooks på: {0}",
"aboutChannelName": "Skriv inn kanalnavnet på {0} Kanalnavn-feltet hvis du vil omgå webhook-kanalen. Eks: #other-channel",
"aboutKumaURL": "Hvis du lar Uptime Kuma URL feltet være blank, den blir som standard til Github-siden for dette prosjektet.",
- "emojiCheatSheet": "Emoji cheat sheet: {0}",
+ "emojiCheatSheet": "Emoji-jukselapp: {0}",
"rocket.chat": "Rocket.chat",
"pushover": "Pushover",
"pushy": "Pushy",
@@ -265,7 +265,7 @@
"Status:": "Status: {0}",
"Read more": "Les mer",
"appriseInstalled": "Apprise er installert.",
- "appriseNotInstalled": "Apprise ikke installert. {0}",
+ "appriseNotInstalled": "Apprise er ikke installert. {0}",
"Access Token": "Tilgangs-Token",
"Channel access token": "Kanal tilgangs-token",
"Line Developers Console": "Line Utviklserskonsoll",
@@ -288,11 +288,11 @@
"Game": "Spill",
"statusMaintenance": "Vedlikehold",
"Maintenance": "Vedlikehold",
- "Passive Monitor Type": "Passiv Monitor Type",
- "Specific Monitor Type": "Spesifikk Monitor Type",
- "General Monitor Type": "Generell Monitor Type",
- "markdownSupported": "Markdown syntax støttet",
- "Resend Notification if Down X times consecutively": "Send notifikasjon på nytt dersom nede X antall ganger på rad",
+ "Passive Monitor Type": "Passiv monitortype",
+ "Specific Monitor Type": "Spesifikk monitortype",
+ "General Monitor Type": "Generell monitortype",
+ "markdownSupported": "Markdown-formattering støttet",
+ "Resend Notification if Down X times consecutively": "Send varsel på nytt dersom nede X antall ganger på rad",
"Saved.": "Lagret.",
"programmingLanguages": "Programmeringsspråk",
"steamApiKeyDescription": "For å overvåke en Steam-spillserver trenger du en Steam Web-API-nøkkel. Du kan registrere API-nøkkelen din her: ",
@@ -304,20 +304,20 @@
"authUserInactiveOrDeleted": "Denne brukeren er inaktiv eller slettet.",
"High": "Høy",
"smtpDkimSettings": "DKIM Innstillinger",
- "settingUpDatabaseMSG": "Setter opp databasen. Dette kan ta en stund, vennligst vent.",
+ "settingUpDatabaseMSG": "Setter opp databasen. Dette kan ta sin tid, vær tålmodig.",
"Schedule maintenance": "Planlegg vedlikehold",
- "Affected Monitors": "Affekterte monitorer",
- "Start of maintenance": "Vedlikeholds start",
- "All Status Pages": "Alle status sider",
- "Select status pages...": "Velg status sider…",
+ "Affected Monitors": "Berørte monitorer",
+ "Start of maintenance": "Vedlikeholdsstart",
+ "All Status Pages": "Alle statussider",
+ "Select status pages...": "Velg statussider…",
"filterActive": "Aktiv",
"Custom": "Egendefinert",
- "statusPageRefreshIn": "Last inn på nytt : {0}",
- "templateMsg": "notifikasjons melding",
- "templateLimitedToUpDownCertNotifications": "kun tilgjengelig for OPP/NED/Sertifikatutløpsvarsler",
+ "statusPageRefreshIn": "Oppfrisk om: {0}",
+ "templateMsg": "meldingen i varselet",
+ "templateLimitedToUpDownCertNotifications": "kun tilgjengelig for OPP/NED/sertifikatutløpsvarsler",
"templateLimitedToUpDownNotifications": "kun tilgjengelig for OPP/NED varsler",
"Method": "Metode",
- "PasswordsDoNotMatch": "Passordene matcher ikke hverandre.",
+ "PasswordsDoNotMatch": "Passordene stemmer ikke overens.",
"Default": "Standard",
"HTTP Options": "HTTP valg",
"primary": "primær",
@@ -367,20 +367,20 @@
"recurringIntervalMessage": "Kjør en gang daglig | Kjør en gang hver {0} dag",
"tcp": "TCP / HTTP",
"setupDatabaseChooseDatabase": "Hvilken database vil du bruke?",
- "resendDisabled": "Resending deaktivert",
- "setupDatabaseMariaDB": "Koble til en ekstern MariaDB database. Du må angi database tilkoblings informasjon.",
- "setupDatabaseSQLite": "En simpel database fil, anbefalt for små skala installasjoner. I versjoner tidligere enn v2.0.0 brukte Uptime Kuma SQLite som standard.",
+ "resendDisabled": "Sende på nytt deaktivert",
+ "setupDatabaseMariaDB": "Koble til en ekstern MariaDB-database. Du må angi tilkoblingsinformasjon for databasen.",
+ "setupDatabaseSQLite": "En enkel databasefil, anbefalt for småskala-installasjoner. I versjoner tidligere enn v2.0.0 brukte Uptime Kuma SQLite som standarddatabase.",
"needPushEvery": "Du skal forsøke å nå denne URLen hvert {0] sekund(er).",
- "dbName": "Database Navn",
- "resendEveryXTimes": "Resend hver {0} gang(er)",
- "Push URL": "Push URL",
+ "dbName": "Databasenavn",
+ "resendEveryXTimes": "Send på nytt hver {0} gang(er)",
+ "Push URL": "Push-URL",
"pushOptionalParams": "Valgfrie parametere: {0}",
"pushOthers": "Andre",
"styleElapsedTimeShowNoLine": "Vis (Ingen linje)",
"styleElapsedTimeShowWithLine": "Vis (Med linje)",
"endDateTime": "Slutt dag/tid",
"Current User": "Nåværende bruker",
- "Reset Token": "Resett nøkkel",
+ "Reset Token": "Nullstill token",
"Done": "Ferdig",
"Info": "Info",
"Security": "Sikkerhet",
@@ -441,7 +441,7 @@
"timeoutAfter": "Timeout etter {0} sekunder",
"or": "eller",
"filterActivePaused": "Pauset",
- "Add New Tag": "Legg til ny tagg",
+ "Add New Tag": "Legg til ny etikett",
"Certificate Chain": "Sertifikatkjede",
"Valid": "Gyldig",
"Invalid": "Ugyldig",
@@ -502,8 +502,8 @@
"Subject:": "Emne:",
"Home": "Hjem",
"Invert Keyword": "Inverter nøkkelord",
- "Cannot connect to the socket server": "Koble til socket server",
- "Reconnecting...": "kobler til på nytt...",
+ "Cannot connect to the socket server": "Kan ikke koble til socket-server",
+ "Reconnecting...": "Kobler til på nytt...",
"ntfyAuthenticationMethod": "Autentiserings metode",
"No API Keys": "Ingen API nøkler",
"apiKey-active": "Aktiv",
@@ -559,5 +559,39 @@
"emailTemplateStatus": "Status",
"uninstall": "Avinstaller",
"uninstalling": "Avinstallerer",
- "There might be a typing error in the address.": "Det kan være en skrivefeil i adressen."
+ "There might be a typing error in the address.": "Det kan være en skrivefeil i adressen.",
+ "setupDatabaseEmbeddedMariaDB": "Du trenger ikke angi noe. Dette Docker-imaget har integrert og pre-konfigurert MariaDB for deg. Uptime Kuma vil koble seg til denne databasen via en Unix-socket.",
+ "liquidIntroduction": "Maler kan opprettes via Liquid sitt malspråk. Vennligst referer til {0} for informasjon om hvordan dette brukes. Følgende variabler er tilgjengelig:",
+ "webhookAdditionalHeadersDesc": "Angir ekstra headere sendt sammen med webhooken. Hver header bør defineres som et JSON nøkkel/verdi-par.",
+ "HeadersInvalidFormat": "Forespørselsheaderne er ikke gyldig JSON: ",
+ "successKeywordExplanation": "MQTT-nøkkelord som vil anses som gyldig",
+ "Pick Affected Monitors...": "Velg berørte monitorer…",
+ "Search monitored sites": "Søk gjennom overvåkede sider",
+ "templateHeartbeatJSON": "objekt som beskriver hjerteslaget",
+ "templateMonitorJSON": "objekt som beskriver monitoren",
+ "webhookAdditionalHeadersTitle": "Ekstra headere",
+ "webhookBodyPresetOption": "Forhåndsvalg - {0}",
+ "webhookBodyCustomOption": "Egendefinert brødtekst",
+ "Body": "Brødtekst",
+ "Headers": "Headere",
+ "PushUrl": "Push-URL",
+ "BodyInvalidFormat": "Teksten i forespørselen er ikke gyldig JSON: ",
+ "Monitor History": "Overvåkningshistorikk",
+ "clearDataOlderThan": "Behold overvåkningsdata i {0} dager.",
+ "records": "oppføringer",
+ "One record": "En oppføring",
+ "topicExplanation": "MQTT-emne å overvåke",
+ "successKeyword": "Nøkkelord for gyldig respons",
+ "now": "nå",
+ "time ago": "{0} siden",
+ "Json Query Expression": "Json-spørring",
+ "locally configured mail transfer agent": "lokalt konfigurert mailoverføringsagent",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Enten skriv inn vertsnavnet på serveren du ønsker å koble til, eller {localhost} hvis du skal bruke en {local_mta}",
+ "ignoreTLSErrorGeneral": "Ignorer TLS/SSL-feil for tilkobling",
+ "ignoredTLSError": "TLS/SSL-feil har blitt ignorert",
+ "styleElapsedTime": "Medgått tid udner hjerteslagslinjen",
+ "Host URL": "VertsURL",
+ "Monitor": "Monitor | Monitorer",
+ "-year": "-år",
+ "pushViewCode": "Hvordan bruke Push-overvåkning? (Se kode)"
}
diff --git a/src/lang/ne.json b/src/lang/ne.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/src/lang/ne.json
@@ -0,0 +1 @@
+{}
diff --git a/src/lang/nl-NL.json b/src/lang/nl-NL.json
index 9ec09515f..806c921ad 100644
--- a/src/lang/nl-NL.json
+++ b/src/lang/nl-NL.json
@@ -31,7 +31,7 @@
"Theme": "Thema",
"General": "Algemeen",
"Version": "Versie",
- "Check Update On GitHub": "Controleer voor updates op GitHub",
+ "Check Update On GitHub": "Zoek naar updates op GitHub",
"List": "Lijst",
"Add": "Toevoegen",
"Add New Monitor": "Nieuwe monitor toevoegen",
@@ -46,7 +46,7 @@
"DateTime": "Datum Tijd",
"Message": "Bericht",
"No important events": "Geen belangrijke gebeurtenissen",
- "Resume": "Hervat",
+ "Resume": "Hervatten",
"Edit": "Wijzigen",
"Delete": "Verwijderen",
"Current": "Huidig",
@@ -127,7 +127,7 @@
"Create": "Aanmaken",
"Clear Data": "Data wissen",
"Events": "Gebeurtenissen",
- "Heartbeats": "Heartbeats",
+ "Heartbeats": "Hartslagen",
"Auto Get": "Auto Get",
"backupDescription": "U kunt een back-up maken van alle monitoren en alle meldingen in een JSON-bestand.",
"backupDescription2": "PS: Geschiedenis- en gebeurtenisgegevens zijn niet inbegrepen.",
@@ -135,11 +135,11 @@
"alertNoFile": "Selecteer een bestand om te importeren.",
"alertWrongFileType": "Selecteer een JSON-bestand.",
"Verify Token": "Controleer token",
- "Setup 2FA": "2FA instellingen",
+ "Setup 2FA": "Stel 2FA in",
"Enable 2FA": "Schakel 2FA in",
"Disable 2FA": "Schakel 2FA uit",
"2FA Settings": "2FA-instellingen",
- "Two Factor Authentication": "Two Factor Authenticatie",
+ "Two Factor Authentication": "Twee Factor Authenticatie",
"Active": "Actief",
"Inactive": "Inactief",
"Also apply to existing monitors": "Voeg ook toe aan bestaande monitors",
@@ -254,7 +254,7 @@
"Channel Name": "Kanaal Naam",
"Uptime Kuma URL": "Uptime Kuma URL",
"aboutWebhooks": "Meer info over Webhooks op: {0}",
- "aboutChannelName": "Voer de kanaal naam in op {0} Kannaal Naam veld als je het Webhook kanaal wilt omzeilen. Bv: #other-channel",
+ "aboutChannelName": "Voer de kanaal naam in op {0} Kanaal naam veld als je het Webhook kanaal wilt omzeilen. Bijv: #other-channel",
"aboutKumaURL": "Als je de Uptime Kuma URL veld leeg laat, wordt standaard het GitHub project pagina weergegeven.",
"emojiCheatSheet": "Emoji cheat sheet: {0}",
"PushByTechulus": "Push door Techulus",
@@ -356,7 +356,6 @@
"Discard": "Weggooien",
"Cancel": "Annuleren",
"Powered by": "Mogelijk gemaakt door",
- "shrinkDatabaseDescription": "Activeer database VACUUM voor SQLite. Als de database na 1.10.0 aangemaakt is, dan staat AUTO_VACUUM al aan en is deze actie niet nodig.",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "API Gebruikersnaam (incl. webapi_ prefix)",
"serwersmsAPIPassword": "API Wachtwoord",
@@ -411,7 +410,7 @@
"Retry": "Opnieuw",
"Topic": "Onderwerp",
"WeCom Bot Key": "WeCom Bot Key",
- "Setup Proxy": "Proxy instellen",
+ "Setup Proxy": "Stel Proxy in",
"Proxy Protocol": "Proxy Protocol",
"Proxy Server": "Proxy Server",
"Proxy server has authentication": "Proxy server heeft authenticatie",
@@ -432,7 +431,7 @@
"Next": "Volgende",
"The slug is already taken. Please choose another slug.": "De slug is al in gebruik. Kies een andere slug.",
"No Proxy": "Geen Proxy",
- "HTTP Basic Auth": "HTTP Basic Auth",
+ "HTTP Basic Auth": "HTTP Basis Authenticatie",
"New Status Page": "Nieuwe Status Pagina",
"Page Not Found": "Pagina Niet gevonden",
"Reverse Proxy": "Reverse Proxy",
@@ -465,24 +464,24 @@
"Show Powered By": "Laat \"Mogeljik gemaakt door\" zien",
"Domain Names": "Domein Namen",
"pushoversounds pushover": "Pushover (standaard)",
- "pushoversounds bike": "Bike",
- "pushoversounds bugle": "Bugle",
- "pushoversounds cashregister": "Cash Register",
+ "pushoversounds bike": "Fiets",
+ "pushoversounds bugle": "Trompet",
+ "pushoversounds cashregister": "Kassa",
"pushoversounds classical": "Classical",
- "pushoversounds cosmic": "Cosmic",
- "pushoversounds falling": "Falling",
+ "pushoversounds cosmic": "Buitenaards",
+ "pushoversounds falling": "Vallend",
"pushoversounds gamelan": "Gamelan",
- "pushoversounds incoming": "Incoming",
- "pushoversounds intermission": "Intermission",
- "pushoversounds magic": "Magic",
- "pushoversounds mechanical": "Mechanical",
+ "pushoversounds incoming": "Inkomend",
+ "pushoversounds intermission": "Pauze",
+ "pushoversounds magic": "Magie",
+ "pushoversounds mechanical": "Mechanisch",
"pushoversounds pianobar": "Piano Bar",
- "pushoversounds siren": "Siren",
- "pushoversounds spacealarm": "Space Alarm",
+ "pushoversounds siren": "Sirene",
+ "pushoversounds spacealarm": "Ruimte Alarm",
"pushoversounds tugboat": "Tug Boat",
"pushoversounds alien": "Alien Alarm (long)",
"pushoversounds climb": "Climb (long)",
- "pushoversounds persistent": "Persistent (long)",
+ "pushoversounds persistent": "Aanhoudend (lang)",
"pushoversounds echo": "Pushover Echo (long)",
"pushoversounds updown": "Up Down (long)",
"pushoversounds vibrate": "Alleen trillen",
@@ -497,7 +496,7 @@
"do nothing": "niets doen",
"auto acknowledged": "automatisch bevestigen",
"auto resolve": "automatisch oplossen",
- "Authentication": "authenticatie",
+ "Authentication": "Authenticatie",
"signedInDisp": "Aangemeld als {0}",
"signedInDispDisabled": "Authenticatie uitgeschakeld.",
"Certificate Expiry Notification": "Melding over verlopen certificaat",
@@ -529,13 +528,13 @@
"Workstation": "Werkstation",
"disableCloudflaredNoAuthMsg": "De \"Geen authenticatie\" modus staat aan, wachtwoord is niet vereist.",
"backupOutdatedWarning": "Deprecated: Er zijn een hoop nieuwe functies toegevoegd en daarom is de backup functie niet onderhouden, het is op dit moment niet mogelijk om een volledige backup te maken en te herstellen.",
- "RadiusSecret": "Radius Secret",
+ "RadiusSecret": "Radius Geheim",
"RadiusSecretDescription": "Shared Secret tussen client en server",
- "API Key": "API Key",
+ "API Key": "API Sleutel",
"Connection Type": "Verbindingstype",
"Docker Daemon": "Docker Daemon",
"Trust Proxy": "Trust Proxy",
- "Setup Docker Host": "Docker Host instellen",
+ "Setup Docker Host": "Stel Docker Host in",
"tcp": "TCP / HTTP",
"Optional": "Optioneel",
"socket": "Socket",
@@ -608,7 +607,7 @@
"Custom": "Aangepast",
"Affected Monitors": "Aangetaste monitors",
"Resend Notification if Down X times consequently": "Verzend offline melding X keer opnieuw bij blijvend offline",
- "Monitor": "Monitor | Monitors",
+ "Monitor": "Monitor | Monitoren",
"Start of maintenance": "Start van onderhoud",
"All Status Pages": "Alle status pagina's",
"Select status pages...": "Selecteer status pagina's…",
@@ -625,9 +624,9 @@
"Game": "Spel",
"statusMaintenance": "Onderhoud",
"Maintenance": "Onderhoud",
- "Passive Monitor Type": "Passieve Monitor Type",
+ "Passive Monitor Type": "Passief Monitor Type",
"Pick Affected Monitors...": "Kies aangetaste monitors…",
- "Specific Monitor Type": "Specifieke Monitor Type",
+ "Specific Monitor Type": "Specifiek Monitor Type",
"promosmsLogin": "API Login naam",
"Schedule maintenance": "Onderhoud inplannen",
"resendEveryXTimes": "Verstuur elke {0} keer opnieuw",
@@ -650,8 +649,8 @@
"smseagleTo": "Telefoonnummer(s)",
"Custom Monitor Type": "Custom Monitor Type",
"trustProxyDescription": "'X-Forwarded-*' headers vertrouwen. Als je de correcte client IP wilt krijgen en de Uptime Kuma installatie is achter een proxy zoals Nginx of Apache, schakel dan dit in.",
- "RadiusCalledStationId": "Called Station Id",
- "RadiusCalledStationIdDescription": "Identifier of the called device",
+ "RadiusCalledStationId": "Genoemde stations ID",
+ "RadiusCalledStationIdDescription": "Identificatie van het genoemde apparaat",
"RadiusCallingStationId": "Calling Station Id",
"ZohoCliq": "ZohoCliq",
"Long-Lived Access Token": "Long-Lived Access Token",
@@ -790,7 +789,7 @@
"Badge Warn Days": "Badge Waarschuwing dagen",
"Badge Down Days": "Badge Offline dagen",
"Badge Style": "Badge stijl",
- "chromeExecutable": "Chrome/Chromium Executable",
+ "chromeExecutable": "Chrome/Chromium Uitvoerbaar bestand",
"chromeExecutableAutoDetect": "Automatisch detecteren",
"Edit Maintenance": "Onderhoud bewerken",
"Badge Label": "Badge Label",
@@ -804,12 +803,11 @@
"Reconnecting...": "Opnieuw verbinden...",
"Expected Value": "Verwachte waarde",
"Json Query": "Json zoekopdracht",
- "jsonQueryDescription": "Voer een JSON-query uit op de respons en controleer de verwachte waarde (De retourwaarde wordt omgezet naar een string voor vergelijking). Bekijk {0} voor de documentatie over de querytaal. Een speelplaats is beschikbaar {1}.",
"pushViewCode": "Hoe gebruik je Push monitor?(View Code)",
"setupDatabaseChooseDatabase": "Welke database wil je gebruiken?",
- "setupDatabaseEmbeddedMariaDB": "Je hoeft niks in te stellen. Deze docker image heeft een ingebouwde en geconfigureerde MariaDB instantie. Uptime Kuma verbindt met deze database via een unix socket.",
- "setupDatabaseMariaDB": "Verbindt met een externe MariaDB database. Je moet de database connectie informatie instellen.",
- "setupDatabaseSQLite": "Een simpel database bestand, aanbevolen voor kleinschalige deployments. Voor v2.0.0, maakte Uptime Kuma standaard gebruik van een SQLite database.",
+ "setupDatabaseEmbeddedMariaDB": "Je hoeft niks in te stellen. Dit docker image heeft een ingebouwde en geconfigureerde MariaDB instantie. Uptime Kuma verbindt met deze database via een unix socket.",
+ "setupDatabaseMariaDB": "Verbind met een externe MariaDB database. Je moet de database-connectie informatie instellen.",
+ "setupDatabaseSQLite": "Een simpel database bestand, aanbevolen voor kleinschalige implementaties. Voor v2.0.0, maakte Uptime Kuma standaard gebruik van een SQLite database.",
"dbName": "Database naam",
"Request Timeout": "Verzoek Timeout",
"pushOthers": "Anderen",
@@ -855,7 +853,7 @@
"Check/Uncheck": "Vink/Ontvink",
"tailscalePingWarning": "Om de Tailscale Ping-monitor te kunnen gebruiken, moet u Uptime Kuma zonder Docker installeren en ook de Tailscale-client op uw server installeren.",
"selectedMonitorCount": "Geselecteerd: {0}",
- "wayToGetFlashDutyKey": "Ga naar Kanaal -> (Kies een kanaal) -> Integraties -> Voeg een nieuwe integratie toe, voeg een 'Custom Event' toe om een push-adres te verkrijgen, kopieer de integratiesleutel in het adres-veld. Voor meer informatie, zie",
+ "wayToGetFlashDutyKey": "Ga naar Kanaal -> (Kies een kanaal) -> Integraties -> Voeg een nieuwe integratie toe, voeg een nieuwe 'Uptime Kuma' toe om een push-adres te verkrijgen, kopieer de integratiesleutel in het adres-veld. Voor meer informatie, zie",
"gamedigGuessPortDescription": "De poort die wordt gebruikt door het Valve Server Query Protocol kan verschillen van de clientpoort. Probeer dit als de monitor geen verbinding kan maken met je server.",
"authUserInactiveOrDeleted": "De gebruiker is inactief of verwijderd.",
"authInvalidToken": "Ongeldig token.",
@@ -914,9 +912,201 @@
"Add a domain": "Voeg een domein toe",
"Remove domain": "Verwijder domein '{0}'",
"openModalTo": "Modal openen naar {0}",
- "settingUpDatabaseMSG": "Database wordt ingesteld. Dit kan even duren dus wees geduldig.",
+ "settingUpDatabaseMSG": "Database wordt ingesteld. Dit kan even duren, dus wees geduldig.",
"Search monitored sites": "Zoek naar gemonitorde sites",
"statusPageSpecialSlugDesc": "Speciale padnaam {0}: deze pagina wordt getoond als er geen padnaam wordt opgegeven",
- "ntfyPriorityHelptextAllEvents": "Alle meldingen worden verzonden met de maximale prioriteit",
- "ntfyPriorityHelptextAllExceptDown": "Alle meldingen worden verzonden met deze prioriteit, behalve {0}-meldingen, die hebben een prioriteit van {1}"
+ "ntfyPriorityHelptextAllEvents": "Alle meldingen worden verzonden met de hoogste prioriteit",
+ "ntfyPriorityHelptextAllExceptDown": "Alle meldingen worden verzonden met deze prioriteit, behalve {0}-meldingen, die hebben een prioriteit van {1}",
+ "What is a Remote Browser?": "Wat is een remote webbrowser?",
+ "Your User ID": "Jouw gebruikers ID",
+ "Channel access token (Long-lived)": "Kanaal access token (blijvend)",
+ "documentationOf": "{0} Documentatie",
+ "wayToGetHeiiOnCallDetails": "Hoe de Trigger ID en de API Keys verkregen kunnen worden is terug te lezen in de {documentation}",
+ "To Phone Number": "Naar telefoonnummer",
+ "Telephone number": "Telefoonnummer",
+ "max 15 digits": "max 15 cijfers",
+ "max 11 alphanumeric characters": "max 11 alfanumerieke tekens",
+ "Allow Long SMS": "Lange SMS toestaan",
+ "Destination": "Bestemming",
+ "whapiRecipient": "Telefoonnummer / Contact-ID / Groeps-ID",
+ "API URL": "API URL",
+ "wayToGetWhapiUrlAndToken": "Je kunt de API-URL en de token verkrijgen door naar het gewenste kanaal te gaan vanaf {0}",
+ "gtxMessagingFromHint": "Op mobiele telefoons, de ontvangers zien het TPOA als de afzender van het bericht. Toegestaan zijn maximaal 11 alfanumerieke karakters, een shortcode, het lokale longcode of internationale nummers ({e164}, {e212} of {e214})",
+ "gtxMessagingToHint": "Internationaal formaat, met \"+\" aan het begin ({e164}, {e212} of {e214})",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "Van telefoonnummer / Transmission Path Originating Address (TPOA)",
+ "gtxMessagingApiKeyHint": "Je kan je API key vinden bij: My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)",
+ "Alphanumeric (recommended)": "Alfanumeriek (aanbevolen)",
+ "cellsyntOriginatortypeAlphanumeric": "Alfanumerieke reeks (max. 11 alfanumerieke karakters). Ontvangers kunnen niet op het bericht reageren.",
+ "cellsyntOriginatortypeNumeric": "Numerieke waarde (max. 15 cijfers) met telefoonnummer met landcode zonder + aan het begin (een Nederlands nummer 06 12 34 56 78 moet bijvoorbeeld worden ingesteld als 31612345678). Ontvangers kunnen op het bericht reageren.",
+ "Originator type": "Originator type",
+ "cellsyntSplitLongMessages": "Scheid lange berichten op in 6 delen. 153 x 6 = 918 karakters.",
+ "callMeBotGet": "Hier kan je een eindpunt genereren voor {0}, {1} en {2}. Houd er wel rekening mee dat er een maximaal aantal aanvragen zijn. Het maximum lijkt te zijn: {3}",
+ "cellsyntOriginator": "Zichtbaar op de mobiele telefoon van de ontvanger als afzender van het bericht. Toegestane waarden en functie zijn afhankelijk van het parameter-originatortype.",
+ "Originator": "Originator",
+ "cellsyntDestination": "Ontvanger's telefoonnummer met landcode zonder + aan het begin (een Nederlands nummer 06 12 34 56 78 moet bijvoorbeeld worden ingesteld als 31612345678). Maximaal 25.000 door komma's gescheiden ontvangers per HTTP-verzoek.",
+ "wayToWriteWhapiRecipient": "Het telefoonnummer met landcode, maar zonder + aan het begin ({0}), het contact ID ({1}) of groep ID ({2}).",
+ "locally configured mail transfer agent": "lokaal geconfigureerde mail agent",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Geef de hostnaam van de server waar je naar wilt verbinden op of {localhost} als je een {local-mta} wilt gebruiken",
+ "Don't mention people": "Vermeld geen mensen",
+ "wayToGetSevenIOApiKey": "Bezoek het dashboard onder app.seven.io > developer > api key > de groene knop",
+ "senderSevenIO": "Verzenden van nummer of naam",
+ "Host URL": "Host URL",
+ "Mention group": "Vermeld {group}",
+ "Mentioning": "Vermelden",
+ "receiverSevenIO": "Nummer ontvangen",
+ "receiverInfoSevenIO": "Als het ontvangende nummer zich niet in Duitsland bevindt, moet u de landcode vóór het nummer zetten (bijvoorbeeld voor de landcode 1 uit de VS gebruikt u 117612121212 in plaats van 017612121212)",
+ "apiKeySevenIO": "SevenIO API Sleutel",
+ "wayToGetThreemaGateway": "Je kunt je registreren voor Threema Gateway {0}.",
+ "threemaRecipient": "Ontvanger",
+ "threemaRecipientType": "Type ontvanger",
+ "threemaRecipientTypeIdentity": "Threema-ID",
+ "threemaRecipientTypeIdentityFormat": "8 Karakters",
+ "threemaRecipientTypePhone": "Telefoonnummer",
+ "threemaRecipientTypePhoneFormat": "E.164, zonder voorgaande +",
+ "threemaSenderIdentityFormat": "8 karakters, begint normaal met een *",
+ "smspartnerPhoneNumber": "Telefoonnummer(s)",
+ "smspartnerSenderNameInfo": "Moet tussen 3..=11 reguliere karakters zijn",
+ "Bitrix24 Webhook URL": "Bitrix24 Webhook URL",
+ "wayToGetBitrix24Webhook": "Je kunt een webhook maken door de stappen bij {0} te volgen",
+ "bitrix24SupportUserID": "Voer je gebruikers ID van Bitrix25 in. Je kunt dit achterhalen uit de link naar je gebruikersprofiel.",
+ "apiKeysDisabledMsg": "API-Sleutels zijn uitgeschakeld omdat authenticatie niet is ingeschakeld.",
+ "smspartnerApiurl": "Je kunt je API-sleutel vinden in je dashboard bij {0}",
+ "smspartnerPhoneNumberHelptext": "Het nummer moet in het internationale format {0}, {1} zijn. Meerdere nummers moeten gescheiden zijn door {2}",
+ "Command": "Commando",
+ "mongodbCommandDescription": "Draai een MongoDB commando tegen de database. Voor meer informatie over beschikbare commando's, raadpleeg de {documentation}",
+ "threemaBasicModeInfo": "Notitie: Deze integratie gebruikt Threema Gateway in de basis modus (server gebaseerde versleuteling). Meer details vind je hier {0}.",
+ "Select message type": "Selecteer bericht type",
+ "Send to channel": "Stuur naar kanaal",
+ "Create new forum post": "Maak nieuw forum bericht",
+ "Refresh Interval": "Ververs interval",
+ "Refresh Interval Description": "De status pagina zal elke {0} seconden een volledige website verversing doen",
+ "ignoreTLSErrorGeneral": "Negeer TLS/SSL-fout voor verbinding",
+ "forumPostName": "Forum bericht naam",
+ "threadForumPostID": "Thread / Forum bericht ID",
+ "e.g. {discordThreadID}": "bijv. {discordThreadID}",
+ "whatHappensAtForumPost": "Maak een nieuw forum bericht. Dit stuurt GEEN berichten in bestaande forum berichten. Om naar een bestaand forum een nieuw bericht te sturen, gebruik \"{option}\"",
+ "postToExistingThread": "Plaats op bestaande thread / forum bericht",
+ "wayToGetDiscordThreadId": "Verkrijgen van een thread / forum bericht id is vergelijkbaar met het verkrijgen van een kanaal id. Lees meer over het verkrijgen van ids {0}",
+ "threemaRecipientTypeEmail": "E-mailadres",
+ "threemaSenderIdentity": "Gateway ID",
+ "threemaApiAuthenticationSecret": "Gateway ID Geheim",
+ "smspartnerSenderName": "SMS afzender naam",
+ "and": "en",
+ "snmpCommunityStringHelptext": "Deze string fungeert als een wachtwoord om toegang tot SNMP-apparaten te verifiëren en te beheren. Match het met de configuratie van uw SNMP-apparaat.",
+ "groupOnesenderDesc": "Zorg ervoor dat de GroupID juist is. Om een bericht naar een groep te sturen, bijvoorbeeld: 628123456789-342345",
+ "privateOnesenderDesc": "Zorg ervoor dat het telefoonnummer juist is. Om een bericht te sturen naar een privé telefoonnummer, bijvoorbeeld: 628123456789",
+ "now": "nu",
+ "time ago": "{0} geleden",
+ "-year": "-jaar",
+ "cacheBusterParamDescription": "Willekeurig gegenereerde parameter om caches over te slaan.",
+ "OID (Object Identifier)": "OID (Object indentificatie)",
+ "snmpOIDHelptext": "Voer de OID in voor de sensor of status die u wilt monitoren. Gebruik netwerkbeheertools zoals MIB-browsers of SNMP-software als u niet zeker bent over de OID.",
+ "Condition": "Conditie",
+ "SNMP Version": "SNMP Versie",
+ "Please enter a valid OID.": "Voer a.u.b. een geldige OID in.",
+ "Host Onesender": "Host Onesender",
+ "Token Onesender": "Token Onesender",
+ "Recipient Type": "Ontvanger Type",
+ "Private Number": "Privé Nummer",
+ "Group ID": "Groep ID",
+ "wayToGetOnesenderUrlandToken": "U kunt de URL en Token krijgen door naar de Onesender website te gaan. Meer informatie {0}",
+ "Add Remote Browser": "Externe browser toevoegen",
+ "New Group": "Nieuwe Groep",
+ "Group Name": "Groeps naam",
+ "OAuth2: Client Credentials": "OAuth2: Client referenties",
+ "Authentication Method": "Authenticatie methode",
+ "Authorization Header": "Autorisatie Header",
+ "OAuth Token URL": "OAuth Token URL",
+ "Client ID": "Client ID",
+ "Client Secret": "Client geheim",
+ "Go back to home page.": "Ga terug naar de home pagina.",
+ "No tags found.": "Geen tags gevonden.",
+ "Lost connection to the socket server.": "Verbinding met de socketserver verloren.",
+ "Cannot connect to the socket server.": "Kan geen verbinding maken met de socketserver.",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "SIGNL4 Webhook URL",
+ "signl4Docs": "Meer informatie over het configureren van SIGNL4 en het verkrijgen van de SIGNL4-webhook-URL kunt u hier vinden {0}.",
+ "Conditions": "Voorwaarden",
+ "conditionAdd": "Voorwaarde toevoegen",
+ "conditionDelete": "Voorwaarde verweideren",
+ "conditionAddGroup": "Groep toevoegen",
+ "conditionDeleteGroup": "Groep verweideren",
+ "conditionValuePlaceholder": "Waarde",
+ "contains": "bevat",
+ "not contains": "bevat niet",
+ "starts with": "start met",
+ "not starts with": "start niet met",
+ "ends with": "eindigt met",
+ "not ends with": "eindigt niet met",
+ "less than": "minder dan",
+ "greater than": "groter dan",
+ "record": "dossier",
+ "jsonQueryDescription": "Parseer en haal specifieke gegevens uit de JSON-respons van de server met behulp van JSON-query of gebruik \"$\" voor de onbewerkte respons, als u geen JSON verwacht. Het resultaat wordt vervolgens vergeleken met de verwachte waarde, als strings. Zie {0} voor documentatie en gebruik {1} om te experimenteren met query's.",
+ "rabbitmqNodesDescription": "Voer het URL voor de RabbitMQ beheer nodes inclusief protocol en poort in. Bijvoorbeeld: {0}",
+ "rabbitmqNodesRequired": "Aub stel de knooppunten voor deze monitor in.",
+ "rabbitmqNodesInvalid": "Gebruik een volledig gekwalificeerde (beginnend met 'http') URL voor de RabbitMQ nodes.",
+ "RabbitMQ Username": "RabbitMQ gebruikersnaam",
+ "RabbitMQ Password": "RabbitMQ wachtwoord",
+ "rabbitmqHelpText": "Om gebruik te maken van de monitor moet je de Management Plugin in de RabbitMQ setup aanzetten. Voor meer informatie zie de {rabitmq_documentatie}.",
+ "SendGrid API Key": "SendGrid API sleutel",
+ "Separate multiple email addresses with commas": "Splits meerdere emailadressen met kommas",
+ "RabbitMQ Nodes": "RabbitMQ beheer Nodes",
+ "shrinkDatabaseDescriptionSqlite": "Trigger database {vacuum} voor SQLite. {auto_vacuum} is al ingeschakeld, maar hiermee wordt de database niet gedefragmenteerd en worden ook databasepagina's niet afzonderlijke opnieuw ingepakt zoals de opdracht {vacuum} dat doet.",
+ "aboutSlackUsername": "Verandert de weergavenaam van de afzender. Als je iemand wil vermelden, voeg dit dan aan de vriendelijke naam toe.",
+ "cacheBusterParam": "Voeg de {0} parameter",
+ "Form Data Body": "Formulier Gegevens Body",
+ "Optional: Space separated list of scopes": "Optioneel: door spaties gescheiden lijst met scopes",
+ "Alphanumerical string and hyphens only": "Alleen alfanumerieke tekens en streepjes",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "Tijdsgevoelige meldingen worden meteen afgeleverd, zelfs als het apparaat in niet storen modus staat.",
+ "Message format": "Bericht opmaak",
+ "Send rich messages": "Verstuur berichten met opmaak",
+ "OAuth Scope": "OAuth bereik",
+ "equals": "hetzelfde als",
+ "not equals": "niet gelijk aan",
+ "less than or equal to": "minder dan of gelijk aan",
+ "greater than or equal to": "meer dan of gelijk aan",
+ "Notification Channel": "Notificatie kanaal",
+ "Sound": "Geluid",
+ "Arcade": "Speelhal",
+ "Correct": "Goed",
+ "Fail": "Mislukt",
+ "Harp": "Harp",
+ "Reveal": "Laat zien",
+ "Bubble": "Bubbel",
+ "Doorbell": "Deurbel",
+ "Flute": "Fluit",
+ "Money": "Geld",
+ "Scifi": "Science fiction",
+ "Guitar": "Gitaar",
+ "Custom sound to override default notification sound": "Aangepast geluid om het standaard geluid te vervangen",
+ "Time Sensitive (iOS Only)": "Tijdsgevoelig (alleen voor iOs)",
+ "From": "Van",
+ "Can be found on:": "Kan gevonden worden op: {0}",
+ "The phone number of the recipient in E.164 format.": "Het telefoonnummer van de ontvanger in E.164 formaat.",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "Ofwel een sms zender ID of een telefoonnummer in E.164 formaat als je reacties wil ontvangen.",
+ "Clear": "Helder",
+ "Elevator": "Lift",
+ "Pop": "Pop",
+ "Community String": "Gemeenschapsreeks",
+ "Json Query Expression": "JSON Query Expressie",
+ "ignoredTLSError": "TLS/SSL-fouten zijn genegeerd",
+ "telegramServerUrl": "(Optioneel) Server Url",
+ "telegramServerUrlDescription": "Om de beperkingen van Telegram's bot api op te heffen of toegang te krijgen in geblokkeerde gebieden (China, Iran, enz.). Klik voor meer informatie op {0}. Standaard: {1}",
+ "wahaSession": "Sessie",
+ "wahaChatId": "Chat-ID (telefoonnummer / contact-ID / groeps-ID)",
+ "wayToGetWahaApiUrl": "Je WAHA Instance URL.",
+ "wayToGetWahaApiKey": "API Key is de WHATSAPP_API_KEY omgevingsvariabele die je hebt gebruikt om WAHA uit te voeren.",
+ "wayToGetWahaSession": "Vanaf deze sessie stuurt WAHA meldingen naar Chat ID. Je kunt deze vinden in WAHA Dashboard.",
+ "wayToWriteWahaChatId": "Het telefoonnummer met het internationale voorvoegsel, maar zonder het plusteken aan het begin ({0}), de contact-ID ({1}) of de groeps-ID ({2}). Vanuit WAHA Sessie worden meldingen naar deze Chat-ID verzonden.",
+ "YZJ Robot Token": "YZJ Robot token",
+ "Plain Text": "Platte tekst",
+ "Message Template": "Bericht Sjabloon",
+ "YZJ Webhook URL": "YZJ Webhook URL",
+ "Template Format": "Sjabloonformaat",
+ "templateServiceName": "service naam",
+ "templateHostnameOrURL": "hostnaam of url",
+ "templateStatus": "status",
+ "telegramUseTemplate": "Gebruik aangepaste bericht sjabloon",
+ "telegramTemplateFormatDescription": "Telegram staat het gebruik van verschillende opmaaktalen voor berichten toe, zie Telegram {0} voor specifieke details.",
+ "telegramUseTemplateDescription": "Indien ingeschakeld, wordt het bericht verzonden met een aangepaste sjabloon."
}
diff --git a/src/lang/pl.json b/src/lang/pl.json
index c38ad8ddc..fd96faef6 100644
--- a/src/lang/pl.json
+++ b/src/lang/pl.json
@@ -54,7 +54,7 @@
"Delete": "Usuń",
"Current": "Aktualny",
"Uptime": "Czas pracy",
- "Cert Exp.": "Certyfikat wygasa",
+ "Cert Exp.": "Data ważności certyfikatu.",
"day": "dzień | dni",
"-day": "dni",
"hour": "godzina",
@@ -294,7 +294,7 @@
"emailCustomSubject": "Niestandardowy temat",
"checkPrice": "Sprawdź ceny {0}:",
"octopushLegacyHint": "Czy używasz starszej wersji Octopush (2011-2020) czy nowej wersji?",
- "Feishu WebHookUrl": "Feishu WebHookURL",
+ "Feishu WebHookUrl": "Adres webhooka Feishu",
"matrixHomeserverURL": "Adres URL serwera domowego (z http(s):// i opcjonalnie port)",
"Internal Room Id": "Wewnętrzne ID pokoju",
"matrixDesc1": "Możesz znaleźć wewnętrzne ID pokoju, patrząc w zaawansowanej sekcji ustawień pokoju w twoim kliencie Matrix. Powinien on wyglądać jak !QMdRCpUIfLwsfjxye6:home.server.",
@@ -354,7 +354,6 @@
"Discard": "Odrzuć",
"Cancel": "Anuluj",
"Powered by": "Napędzane przez",
- "shrinkDatabaseDescription": "Uruchom VACUUM na bazie SQLite. Jeżeli twoja baza została stworzona po wersji 1.10.0, to ma już włączoną opcję AUTO_VACUUM i stosowanie ręcznego oczyszczania nie jest potrzebne.",
"clicksendsms": "ClickSend SMS",
"apiCredentials": "Poświadczenia API",
"serwersms": "SerwerSMS.pl",
@@ -411,7 +410,7 @@
"SignName": "Podpis",
"Sms template must contain parameters: ": "Szablon sms musi posiadać parametry: ",
"Bark Endpoint": "Punkt końcowy Bark",
- "WebHookUrl": "WebHookUrl",
+ "WebHookUrl": "Adres webhooka",
"SecretKey": "Tajny klucz",
"For safety, must use secret key": "Ze względów bezpieczeństwa musisz użyć tajnego klucza",
"Device Token": "Token urządzenia",
@@ -793,7 +792,6 @@
"styleElapsedTime": "Czas, który upłynął pod paskiem bicia serca",
"tailscalePingWarning": "Aby korzystać z monitora Tailscale Ping, należy zainstalować Uptime Kuma bez Dockera, a także zainstalować klienta Tailscale na serwerze.",
"invertKeywordDescription": "Słowo kluczowe powinno być raczej nieobecne niż obecne.",
- "jsonQueryDescription": "Wykonaj zapytanie json względem odpowiedzi i sprawdź oczekiwaną wartość (wartość zwracana zostanie przekonwertowana na ciąg znaków do porównania). Sprawdź {0}, aby uzyskać dokumentację dotyczącą języka zapytań. Plac zabaw można znaleźć {1}.",
"Server URL should not contain the nfty topic": "Adres URL serwera nie powinien zawierać tematu nfty",
"Badge Duration (in hours)": "Czas trwania odznaki (w godzinach)",
"Enter the list of brokers": "Wprowadź listę brokerów",
@@ -801,7 +799,7 @@
"showCertificateExpiry": "Pokaż wygaśnięcie certyfikatu",
"gamedigGuessPortDescription": "Port używany przez Valve Server Query Protocol może różnić się od portu klienta. Spróbuj tego, jeśli monitor nie może połączyć się z serwerem.",
"Secret AccessKey": "Tajny klucz AccessKey",
- "wayToGetFlashDutyKey": "Możesz przejść do Channel -> (Select a Channel) -> Integrations -> Add a new integration' page, dodać \"Custom Event\", aby uzyskać adres push, skopiować klucz integracji w adresie. Więcej informacji można znaleźć na stronie",
+ "wayToGetFlashDutyKey": "Możesz przejść do Channel -> (Select a Channel) -> Integrations -> Add a new integration' page, dodać \"Uptime Kuma\", aby uzyskać adres push, skopiować klucz integracji w adresie. Więcej informacji można znaleźć na stronie",
"Badge Down Color": "Kolor odznaki Offline",
"Notify Channel": "Powiadom kanał",
"Request Timeout": "Limit czasu żądania",
@@ -823,7 +821,7 @@
"Enable Kafka SSL": "Włącz Kafka SSL",
"Kafka SASL Options": "Opcje SASL Kafki",
"Mechanism": "Mechanizm",
- "Pick a SASL Mechanism...": "Wybierz mechanizm SASL...",
+ "Pick a SASL Mechanism...": "Wybierz mechanizm SASL…",
"nostrRelaysHelp": "Jeden adres URL przekaźnika w wierszu",
"nostrRecipients": "Klucze publiczne odbiorców (npub)",
"nostrRecipientsHelp": "format npub, po jednym w wierszu",
@@ -843,7 +841,7 @@
"Json Query": "Zapytanie Json",
"enableNSCD": "Włącz NSCD (Name Service Cache Daemon) do buforowania wszystkich żądań DNS",
"Saved.": "Zapisano.",
- "setupDatabaseChooseDatabase": "Której bazy danych chcesz użyć?",
+ "setupDatabaseChooseDatabase": "Której bazy danych chcesz używać?",
"setupDatabaseEmbeddedMariaDB": "Nie musisz niczego ustawiać. Ten obraz docker automatycznie osadził i skonfigurował MariaDB. Uptime Kuma połączy się z tą bazą danych za pośrednictwem gniazda Unix.",
"setupDatabaseMariaDB": "Połącz z zewnętrzną bazą danych MariaDB. Należy ustawić informacje o połączeniu z bazą danych.",
"setupDatabaseSQLite": "Prosty plik bazy danych, zalecany do wdrożeń na małą skalę. Przed wersją 2.0.0 Uptime Kuma używała SQLite jako domyślnej bazy danych.",
@@ -903,7 +901,7 @@
"GrafanaOncallUrl": "Adres URL Grafana Oncall",
"Remote Browsers": "Zdalne przeglądarki",
"self-hosted container": "kontener hostowany samodzielnie",
- "settingUpDatabaseMSG": "Konfigurowanie bazy danych. Może to trochę potrwać, prosimy o cierpliwość.",
+ "settingUpDatabaseMSG": "Konfigurowanie bazy danych. Może to zająć chwilę, bądź cierpliwy.",
"statusPageSpecialSlugDesc": "Specjalny slug {0}: ta strona zostanie wyświetlona, jeśli nie podano żadnego slugu",
"Search monitored sites": "Wyszukiwanie monitorowanych witryn",
"setup a new monitor group": "konfiguracja nowej grupy monitorów",
@@ -917,5 +915,207 @@
"remoteBrowserToggle": "Domyślnie Chromium działa wewnątrz kontenera Uptime Kuma. Możesz użyć zdalnej przeglądarki, przełączając ten przełącznik.",
"useRemoteBrowser": "Używaj zdalnej przeglądarki",
"Add a new expiry notification day": "Dodaj nowy dzień wygaśnięcia powiadomienia",
- "Remove the expiry notification": "Usunąć dzień powiadomienia o wygaśnięciu"
+ "Remove the expiry notification": "Usunąć dzień powiadomienia o wygaśnięciu",
+ "What is a Remote Browser?": "Co to jest zdalna przeglądarka?",
+ "Mentioning": "Oznaczenia",
+ "Don't mention people": "Nie oznaczaj nikogo",
+ "Mention group": "Oznacz {group}",
+ "Channel access token (Long-lived)": "Token dostępu do kanału (długotrwały)",
+ "Your User ID": "Twój identyfikator użytkownika",
+ "locally configured mail transfer agent": "lokalnie skonfigurowany serwer poczty",
+ "documentationOf": "{0} Dokumentacja",
+ "wayToGetHeiiOnCallDetails": "Jak uzyskać identyfikator wyzwalacza i klucze API wyjaśniono w {dokumentacji}",
+ "Select message type": "Wybierz typ wiadomości",
+ "Create new forum post": "Utwórz nowy post na forum",
+ "whatHappensAtForumPost": "Utwórz nowy post na forum. NIE powoduje to opublikowania wiadomości w istniejącym poście. Aby opublikować wiadomość w istniejącym poście, użyj \"{option}\"",
+ "callMeBotGet": "Tutaj możesz wygenerować punkt końcowy dla {0}, {1} i {2}. Należy pamiętać, że mogą wystąpić ograniczenia szybkości. Limity szybkości wydają się być następujące: {3}",
+ "Command": "Polecenie",
+ "mongodbCommandDescription": "Uruchom polecenie MongoDB względem bazy danych. Aby uzyskać informacje na temat dostępnych poleceń, sprawdź {documentation}",
+ "max 11 alphanumeric characters": "maksymalnie 11 znaków alfanumerycznych",
+ "Originator type": "Typ nadawcy",
+ "Alphanumeric (recommended)": "Alfanumeryczne (zalecane)",
+ "smspartnerApiurl": "Klucz API można znaleźć na pulpicie nawigacyjnym pod adresem {0}",
+ "smspartnerPhoneNumber": "Numer(y) telefonu(ów)",
+ "smspartnerPhoneNumberHelptext": "Numer musi być w międzynarodowym formacie {0}, {1}. Kilka numerów musi być oddzielonych znakiem {2}",
+ "smspartnerSenderName": "Nazwa nadawcy wiadomości SMS",
+ "smspartnerSenderNameInfo": "Musi zawierać między 3..=11 zwykłych znaków",
+ "Telephone number": "Nr telefonu",
+ "To Phone Number": "Na numer telefonu",
+ "Destination": "Miejsce docelowe",
+ "Bitrix24 Webhook URL": "Adres URL usługi Bitrix24 Webhook",
+ "wayToGetBitrix24Webhook": "Webhook można utworzyć, wykonując czynności opisane na stronie {0}",
+ "gtxMessagingToHint": "Format międzynarodowy, z początkowym \"+\" ({e164}, {e212} lub {e214})",
+ "wayToGetSevenIOApiKey": "Odwiedź pulpit nawigacyjny pod adresem app.seven.io > deweloper > klucz api > zielony przycisk dodawania",
+ "cellsyntOriginator": "Widoczny na telefonie komórkowym odbiorcy jako inicjator wiadomości. Dozwolone wartości i funkcja zależą od parametru originatortype.",
+ "cellsyntSplitLongMessages": "Dzielenie długich wiadomości na maksymalnie 6 części. 153 x 6 = 918 znaków.",
+ "max 15 digits": "maksymalnie 15 cyfr",
+ "bitrix24SupportUserID": "Wprowadź swój identyfikator użytkownika w Bitrix24. Identyfikator można znaleźć w linku, przechodząc do profilu użytkownika.",
+ "gtxMessagingApiKeyHint": "Klucz API można znaleźć na stronie: My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)",
+ "cellsyntOriginatortypeAlphanumeric": "Ciąg alfanumeryczny (maksymalnie 11 znaków alfanumerycznych). Odbiorcy nie mogą odpowiedzieć na wiadomość.",
+ "Send to channel": "Wyślij do kanału",
+ "postToExistingThread": "Opublikuj w istniejącym wątku / poście na forum",
+ "forumPostName": "Nazwa posta na forum",
+ "threadForumPostID": "Identyfikator wątku/postu na forum",
+ "e.g. {discordThreadID}": "np. {discordThreadID}",
+ "wayToGetDiscordThreadId": "Uzyskiwanie identyfikatora wątku / postu na forum jest podobne do uzyskiwania identyfikatora kanału. Przeczytaj więcej o tym, jak uzyskać identyfikatory {0}",
+ "cellsyntDestination": "Numer telefonu odbiorcy w formacie międzynarodowym z początkowym 00, po którym następuje numer kierunkowy kraju, np. 00447920110000 dla numeru w Wielkiej Brytanii 07920 110 000 (łącznie maksymalnie 17 cyfr). Maksymalnie 25000 odbiorców oddzielonych przecinkami na żądanie HTTP.",
+ "Allow Long SMS": "Zezwalaj na długie wiadomości SMS",
+ "Host URL": "Adres URL hosta",
+ "Refresh Interval": "Częstotliwość odświeżania",
+ "Refresh Interval Description": "Strona stanu będzie odświeżać całą witrynę co {0} sekund",
+ "ignoreTLSErrorGeneral": "Ignorowanie błędu TLS/SSL dla połączenia",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Wprowadź nazwę hosta serwera, z którym chcesz się połączyć lub {localhost}, jeśli zamierzasz użyć {local_mta}",
+ "senderSevenIO": "Wysyłany numer lub nazwa",
+ "receiverSevenIO": "Numer odbiorcy",
+ "receiverInfoSevenIO": "Jeśli numer odbiorczy nie znajduje się w Niemczech, należy dodać kod kraju przed numerem (np. dla kodu kraju 1 z USA należy użyć 117612121212 zamiast 017612121212)",
+ "apiKeySevenIO": "Klucz API SevenIO",
+ "wayToWriteWhapiRecipient": "Numer telefonu z prefiksem międzynarodowym, ale bez znaku plus na początku ({0}), identyfikator kontaktu ({1}) lub identyfikator grupy ({2}).",
+ "wayToGetWhapiUrlAndToken": "Adres URL API i token można uzyskać, przechodząc do żądanego kanału z {0}",
+ "Originator": "Nadawca",
+ "whapiRecipient": "Nr telefonu / ID kontaktu / ID grupy",
+ "API URL": "URL dla API",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "Od numeru telefonu / adresu początkowego ścieżki transmisji (TPOA)",
+ "gtxMessagingFromHint": "W telefonach komórkowych odbiorcy widzą TPOA jako nadawcę wiadomości. Dozwolone jest do 11 znaków alfanumerycznych, krótki kod, lokalny długi kod lub numery międzynarodowe ({e164}, {e212} lub {e214})",
+ "cellsyntOriginatortypeNumeric": "Wartość numeryczna (maks. 15 cyfr) z numerem telefonu w formacie międzynarodowym bez początkowego 00 (np. brytyjski numer 07920 110 000 powinien być ustawiony jako 447920110000). Odbiorcy mogą odpowiedzieć na wiadomość.",
+ "threemaRecipient": "Odbiorca",
+ "threemaRecipientType": "Typ odbiorcy",
+ "threemaRecipientTypeIdentity": "Threema ID",
+ "threemaRecipientTypeIdentityFormat": "8 znaków",
+ "threemaRecipientTypePhone": "Numer telefonu",
+ "threemaRecipientTypePhoneFormat": "E.164, bez znaku + na początku",
+ "threemaRecipientTypeEmail": "Adres e-mail",
+ "threemaSenderIdentity": "Gateway ID",
+ "threemaApiAuthenticationSecret": "Hasło Gateway ID",
+ "wayToGetThreemaGateway": "Możesz zarejestrować się w Threema Gateway {0}.",
+ "threemaSenderIdentityFormat": "8 znaków, zwykle zaczyna się od *",
+ "threemaBasicModeInfo": "Uwaga: Ta integracja korzysta z Threema Gateway w trybie podstawowym (szyfrowanie po stronie serwera). Więcej szczegółów można znaleźć {0}.",
+ "apiKeysDisabledMsg": "Klucze API są wyłączone, ponieważ wyłączone jest uwierzytelnianie.",
+ "-year": "-rok",
+ "and": "i",
+ "now": "teraz",
+ "cacheBusterParam": "Dodaj parametr {0}",
+ "CopyToClipboardError": "Błąd podczas kopiowania do schowka: {error}",
+ "CurlDebugInfo": "Aby zdebugować monitor, możesz wkleić ten ciąg do terminala na swojej maszynie lub na maszynie gdzie uptime kuma jest uruchomina aby zobaczyć co żądasz.{newiline} Miej na uwadzę różnice sieciowe takich jak {firewalls}, {dns_resolvers} lub {docker_networks}.",
+ "shrinkDatabaseDescriptionSqlite": "Zażądaj {vacuum} bazy dla SQLite. {auto_vacuum} jest już włączone jednak nie defragmentuje to bazy ani nie przepakowuje indywidualnych stron bazy w taki sam sposób jak robi to polecenie {vacuum}.",
+ "cacheBusterParamDescription": "Losowo wygenerowany parametr w celu pominięcia pamięci podręcznej.",
+ "Group Name": "Nazwa grupy",
+ "OAuth2: Client Credentials": "OAuth2: Poświadczenia klienta",
+ "signl4Docs": "Aby zdobyć więcej informacji jak skonfigurować SIGNL4 i jak zdobyć odnośnik webhooka SIGNL4 udaj się do {0}.",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "Czasowo wrażliwe powiadomienia zostaną dostarczone natychmiastowo, nawet jeśli urzadzenie jest w trybie nie przeszkadzać.",
+ "time ago": "{0} temu",
+ "Json Query Expression": "Wyrażenie zapytania JSON",
+ "Condition": "Warunek",
+ "snmpCommunityStringHelptext": "Ten ciąg funkcjonuje jako hasło do uwierzytelnienia i kontroli dostęp do urządzeń SNMP. Dopasuj go do konfiguracji urządzenia SNMP.",
+ "SNMP Version": "Wersja SNMP",
+ "OID (Object Identifier)": "OID (Identyfikator obiektu)",
+ "snmpOIDHelptext": "Wprowadź OID sensora lub statusu który chcesz monitorować. Użyj narzędzia do zarządzania siecią jak przeglądarki MIB lub oprogramowanie SNMP jeśli nie masz pewności co do OID.",
+ "Please enter a valid OID.": "Wprowadź poprawny OID.",
+ "Host Onesender": "Serwer Onesender",
+ "Token Onesender": "Token Onesender",
+ "Recipient Type": "Typ odbiorcy",
+ "Go back to home page.": "Powróć do strony domowej.",
+ "No tags found.": "Nie znaleziono etykiet.",
+ "Authorization Header": "Nagłówek autoryzacji",
+ "Form Data Body": "Treść danych formularza",
+ "OAuth Token URL": "Odnośnik tokena OAuth",
+ "Client ID": "Identyfikator klienta",
+ "Client Secret": "Sekret klienta",
+ "OAuth Scope": "Zakres OAuth",
+ "Optional: Space separated list of scopes": "Opcjonalne: Oddzielona spacją lista zakresów",
+ "SIGNL4 Webhook URL": "Odnośnik webhooka SIGNL4",
+ "Lost connection to the socket server.": "Utracono połączenie z serwerem gniazd.",
+ "Cannot connect to the socket server.": "Nie można połączyć się z serwerem gniazd.",
+ "SIGNL4": "SIGNL4",
+ "less than": "mniej niż",
+ "Conditions": "Warunek",
+ "conditionAdd": "Dodaj warunek",
+ "conditionDelete": "Usuń warunek",
+ "conditionAddGroup": "Dodaj grupę",
+ "conditionDeleteGroup": "Usuń grupę",
+ "conditionValuePlaceholder": "Wartość",
+ "equals": "równa się",
+ "not equals": "nie jest równe",
+ "contains": "zawiera",
+ "not contains": "nie zawiera",
+ "starts with": "zaczyna się od",
+ "not starts with": "nie zaczyna się od",
+ "ends with": "kończy się",
+ "ignoredTLSError": "Błędy TLS/SSL zostały zignorowane",
+ "Debug": "Debuguj",
+ "Copy": "Kopiuj",
+ "CopyToClipboardSuccess": "Skopiowano!",
+ "firewalls": "zapory sieciowe",
+ "dns resolvers": "serwery rozwiązywania nazw domenowych",
+ "docker networks": "sieci docker",
+ "CurlDebugInfoOAuth2CCUnsupported": "Pełen ciąg poświadczeń klienta oauth nie jest obsługiwany w {curl}.{newline}Zdobądź bearer token i przekaż go przez opcję {oauth2_bearer}.",
+ "CurlDebugInfoProxiesUnsupported": "Obsługa proxy w powyższym poleceniu {curl} nie jest aktualnie zaimplementowana.",
+ "Message format": "Format wiadomości",
+ "Send rich messages": "Wysyłaj rozbudowane wiadomości",
+ "Community String": "Ciąg community",
+ "Private Number": "Numer prywatny",
+ "groupOnesenderDesc": "Upewnij się, że GroupID jest poprawne. Aby wysłać wiadomość do grupy, np.: 628123456789-342345",
+ "privateOnesenderDesc": "Upewnij się, że numer telefonu jest poprawny. Aby wysłać wiadomość do prywatnego numeru, np.: 628123456789",
+ "Group ID": "ID grupy",
+ "wayToGetOnesenderUrlandToken": "Aby zdobyć odnośnik i token udaj się na stronę Onesender. Więcej informacji {0}",
+ "Add Remote Browser": "Dodaj zdalną przeglądarkę",
+ "New Group": "Nowa grupa",
+ "Authentication Method": "Metoda uwierzytelnienia",
+ "not ends with": "nie kończy się",
+ "greater than": "więcej niż",
+ "less than or equal to": "mniej lub równe",
+ "greater than or equal to": "więcej lub równe",
+ "record": "rekord",
+ "Notification Channel": "Kanał powiadomień",
+ "Sound": "Dźwięk",
+ "Alphanumerical string and hyphens only": "Tylko ciąg alfanumeryczny i dywiz (kreska)",
+ "Time Sensitive (iOS Only)": "Czasowo wrażliwe (tylko iOS)",
+ "From": "Od",
+ "Can be found on:": "Może być znalezione w: {0}",
+ "The phone number of the recipient in E.164 format.": "Numer telefonu odbiorcy w formacie E.164.",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "Identyfikator wysyłającego wiadomość lub numer telefonu w formacie E.164 jeśli chcesz otrzymywać odpowiedzi.",
+ "jsonQueryDescription": "Przetwórz i wyciągnij specyficzne dane z odpowiedzi JSON serwera używając zapytania JSON lub użyj \"$\" dla nieprzetworzonej odpowiedzi, jeśli nie spodziewasz się formatu JSON. Wynik jest następnie porównywany, jako ciągi, do spodziewanej wartości. Po dokumetnację zobacz {0} lub użyj {1} aby poeksperymentować z zapytaniami.",
+ "Custom sound to override default notification sound": "Własny dzwięk nadpisujący domyślny dzwięk powiadomień",
+ "Arcade": "Arcade",
+ "Correct": "Correct",
+ "Fail": "Fail",
+ "Harp": "Harp",
+ "Reveal": "Reveal",
+ "Bubble": "Bubble",
+ "Doorbell": "Doorbell",
+ "Flute": "Flute",
+ "Money": "Money",
+ "Scifi": "Scifi",
+ "Clear": "Clear",
+ "Elevator": "Elevator",
+ "Guitar": "Guitar",
+ "Pop": "Pop",
+ "RabbitMQ Nodes": "Węzły zarządzania RabbitMQ",
+ "rabbitmqNodesDescription": "Wprowadź adres URL węzłów zarządzania RabbitMQ, w tym protokół i port. Przykład: {0}",
+ "aboutSlackUsername": "Zmienia wyświetlaną nazwę nadawcy wiadomości. Jeśli chcesz o kimś wspomnieć, umieść go w przyjaznej nazwie.",
+ "rabbitmqNodesRequired": "Proszę ustawić węzły dla tego monitora.",
+ "rabbitmqNodesInvalid": "W przypadku węzłów RabbitMQ należy używać w pełni kwalifikowanych (zaczynających się od „http”) adresów URL.",
+ "rabbitmqHelpText": "Aby korzystać z monitora, należy włączyć wtyczkę Management Plugin w konfiguracji RabbitMQ. Więcej informacji można znaleźć w {rabitmq_documentation}.",
+ "RabbitMQ Username": "Nazwa użytkownika RabbitMQ",
+ "RabbitMQ Password": "Hasło RabbitMQ",
+ "SendGrid API Key": "Klucz API SendGrid",
+ "Separate multiple email addresses with commas": "Oddziel wiele adresów e-mail przecinkami",
+ "templateServiceName": "service name",
+ "telegramServerUrlDescription": "Aby znieść ograniczenia api bota Telegrama lub uzyskać dostęp w zablokowanych obszarach (Chiny, Iran itp.). Aby uzyskać więcej informacji, kliknij {0}. Domyślnie: {1}",
+ "wayToGetWahaSession": "Z tej sesji WAHA wysyła powiadomienia do Chat ID. Można go znaleźć w WAHA Dashboard.",
+ "wayToWriteWahaChatId": "Numer telefonu z prefiksem międzynarodowym, ale bez znaku plus na początku ({0}), identyfikator kontaktu ({1}) lub identyfikator grupy ({2}). Powiadomienia są wysyłane do tego identyfikatora czatu z sesji WAHA.",
+ "wahaSession": "Sesja",
+ "wahaChatId": "Identyfikator czatu (numer telefonu / identyfikator kontaktu / identyfikator grupy)",
+ "wayToGetWahaApiUrl": "Adres URL instancji WAHA.",
+ "wayToGetWahaApiKey": "Klucz API to wartość zmiennej środowiskowej WHATSAPP_API_KEY użytej do uruchomienia WAHA.",
+ "YZJ Robot Token": "Token robota YZJ",
+ "YZJ Webhook URL": "Adres URL usługi YZJ Webhook",
+ "telegramServerUrl": "(Opcjonalnie) Adres URL serwera",
+ "Plain Text": "Zwykły tekst",
+ "Message Template": "Szablon wiadomości",
+ "Template Format": "Format szablonu",
+ "templateHostnameOrURL": "nazwa hosta lub adres URL",
+ "templateStatus": "status",
+ "telegramUseTemplate": "Użyj niestandardowego szablonu wiadomości",
+ "telegramUseTemplateDescription": "Jeśli opcja ta jest włączona, wiadomość zostanie wysłana przy użyciu niestandardowego szablonu.",
+ "telegramTemplateFormatDescription": "Telegram pozwala na używanie różnych języków znaczników dla wiadomości, zobacz Telegram {0}, aby uzyskać szczegółowe informacje."
}
diff --git a/src/lang/pt-BR.json b/src/lang/pt-BR.json
index 0d5911233..0764d1173 100644
--- a/src/lang/pt-BR.json
+++ b/src/lang/pt-BR.json
@@ -198,7 +198,7 @@
"Required": "Requerido",
"webhookJsonDesc": "{0} é bom para qualquer servidor HTTP moderno, como Express.js",
"webhookAdditionalHeadersTitle": "Cabeçalhos Adicionais",
- "webhookAdditionalHeadersDesc": "Define cabeçalhos adicionais enviados com o webhook. Cada cabeçalho pode ser definido como uma chave/valor JSON.",
+ "webhookAdditionalHeadersDesc": "Define cabeçalhos adicionais enviados com o webhook. Cada cabeçalho pode ser definido como um JSON chave/valor.",
"Webhook URL": "URL Do Webhook",
"Priority": "Prioridade",
"Read more": "Ver mais",
@@ -287,7 +287,6 @@
"Don't know how to get the token? Please read the guide:": "Não sabe com pegar o token? Por favor, leia o guia:",
"smtpDkimheaderFieldNames": "Chaves Do Cabeçalho para assinar (Opcional)",
"The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "A conexão atual pode ser perdida se você estiver se conectando pelo túnel da Cloudflare. Você tem certeza que deseja pará-lo? Digite a sua senha para confirmar.",
- "shrinkDatabaseDescription": "Acionar a limpeza do banco de dados para o SQLite. Se o seu banco de dados foi criado depois de 1.10.0, a limpeza automática(AUTO_VACUUM) já é habilitada por padrão e essa ação não é necessária.",
"Powered by": "Fornecido por",
"deleteProxyMsg": "Você tem certeza que deseja deletar este proxy para todos os monitores?",
"proxyDescription": "Os proxies devem ser atribuídos a um monitor para funcionar.",
@@ -308,7 +307,7 @@
"Notification Service": "Serviço De Notificação",
"default: notify all devices": "padrão: notificar todos os dispositivos",
"Trigger type:": "Tipo Do Acionamento:",
- "Then choose an action, for example switch the scene to where an RGB light is red.": "Escolha uma ação, por exemplo, mudar o cenário onde uma luz RGB está vermelha.",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Em seguida, escolha uma ação, por exemplo, mudar a cena para onde uma luz RGB fica vermelha.",
"Enable": "Habilitado",
"Disable": "Desabilitado",
"IconUrl": "URL Do Ícone",
@@ -405,7 +404,7 @@
"Device Token": "Token Do Dispositivo",
"Retry": "Tentar Novamente",
"Topic": "Tópico",
- "Setup Proxy": "Configuração Do Proxy",
+ "Setup Proxy": "Configuração do Proxy",
"Proxy Protocol": "Protocolo Do Proxy",
"Proxy Server": "Servidor Proxy",
"Proxy server has authentication": "O servidor proxy tem autenticação",
@@ -547,7 +546,7 @@
"What you can try:": "O que você pode tentar:",
"apiKey-active": "Ativa",
"Expiry": "Expiração",
- "endpoint": "endpoint",
+ "endpoint": "endpoint (URL Serviço)",
"pagertreeIntegrationUrl": "URL de Integração",
"pagertreeUrgency": "Urgência",
"telegramMessageThreadID": "(Opcional) ID da thread",
@@ -580,7 +579,7 @@
"Post": "Post",
"Slug": "Apelido",
"The slug is already taken. Please choose another slug.": "Este apelido já está em uso. Por favor escolha outro apelido.",
- "Setup Docker Host": "Configurar um Host Docker",
+ "Setup Docker Host": "Configurar um host Docker",
"trustProxyDescription": "Confiar nos cabeçalhos 'X-Forwarded-*'. Se você quer obter o endereço IP correto do cliente mas seu Uptime Kuma está atrás de um proxy como Nginx ou Apache, você deve habilitar isso.",
"Automations can optionally be triggered in Home Assistant:": "Automações podem ser acionadas opcionalmente no Home Assistant:",
"secureOptionNone": "Nenhum / STARTTLS (25, 587)",
@@ -605,7 +604,6 @@
"wayToGetLineChannelToken": "Primeiro acesse o {0}, crie um provedor e um canal (API de Mensagens), então você pode obter o token de acesso do canal e o ID do usuário nos itens de menu mencionados acima.",
"aboutMattermostChannelName": "Você pode substituir o canal padrão para o qual o Webhook envia postagens, inserindo o nome do canal no campo \"Nome do Canal\". Isso precisa ser habilitado nas configurações do Webhook do Mattermost. Por exemplo: #outro-canal",
"invertKeywordDescription": "Procure pela palavra-chave estar ausente em vez de presente.",
- "jsonQueryDescription": "Faça uma consulta JSON na resposta e verifique o valor esperado (o valor de retorno será convertido em uma string para comparação). Confira {0} para a documentação sobre a linguagem de consulta. Você pode encontrar um playground {1}.",
"octopushTypePremium": "Premium (Rápido - recomendado para alertas)",
"octopushTypeLowCost": "Baixo Custo (Lento - às vezes bloqueado pelo operador)",
"octopushSMSSender": "Nome do Remetente de SMS: 3-11 caracteres alfanuméricos e espaço (a-zA-Z0-9)",
@@ -635,7 +633,7 @@
"chromeExecutable": "Executável do Chrome/Chromium",
"Edit Maintenance": "Editar Manutenção",
"aboutIconURL": "Você pode fornecer um link para uma imagem em \"URL do Ícone\" para substituir a imagem de perfil padrão. Não será usado se o \"Ícone Emoji\" estiver configurado.",
- "octopushAPIKey": "\"API Key\" da credencial HTTP API do painel de controle",
+ "octopushAPIKey": "\"Chave de API\" das credenciais da API HTTP no painel de controle",
"octopushLogin": "\"Login\" das credenciais da API HTTP no painel de controle",
"pushoversounds pushover": "Pushover (padrão)",
"pushoversounds bike": "Bicicleta",
@@ -822,7 +820,7 @@
"emailTemplateHeartbeatJSON": "objeto que descreve o batimento cardíaco",
"emailTemplateMsg": "mensagem da notificação",
"emailTemplateLimitedToUpDownNotification": "disponível apenas para pulsações UP/DOWN, caso contrário, nulo",
- "wayToGetFlashDutyKey": "Você pode ir para Canal -> (Selecionar um Canal) -> Integrações -> Adicionar uma nova integração', adicionar um 'Evento Personalizado' para obter um endereço de push, copiar a Chave de Integração no endereço. Para mais informações por favor visite",
+ "wayToGetFlashDutyKey": "Você pode ir em Canal -> (Selecionar um Canal) -> Integrações -> Adicionar uma nova integração, adicione um 'Uptime Kuma' para obter um endereço de push, copie a Chave de Integração no endereço. Para mais informações, visite",
"FlashDuty Severity": "Gravidade",
"templateMsg": "mensagem da notificação",
"templateHeartbeatJSON": "objeto que descreve o batimento cardíaco",
@@ -846,7 +844,7 @@
"nostrSender": "Chave privada do remetente (nsec)",
"nostrRecipients": "Chaves Públicas dos Destinatários (npub)",
"GrafanaOncallUrl": "URL do Grafana Oncall",
- "noDockerHostMsg": "Não disponível. Configure primeiro um Docker Host.",
+ "noDockerHostMsg": "Não disponível. Configure primeiro um Host Docker.",
"DockerHostRequired": "Defina o Docker Host para este monitor.",
"nostrRelaysHelp": "Um URL de retransmissão por linha",
"showCertificateExpiry": "Mostrar expiração do certificado",
@@ -866,7 +864,7 @@
"successKeywordExplanation": "Palavra-chave MQTT que será considerada bem-sucedida",
"Add a new expiry notification day": "Adicione um novo dia de notificação de expiração",
"Remove the expiry notification": "Remova o dia de notificação de expiração",
- "setup a new monitor group": "Configure um novo grupo de monitores",
+ "setup a new monitor group": "Configure um novo grupo de monitoramento",
"successKeyword": "Palavra-chave de Sucesso",
"Browser Screenshot": "Captura de tela do navegador",
"Remote Browsers": "Navegadores Remotos",
@@ -885,5 +883,204 @@
"statusPageSpecialSlugDesc": "Slug especial {0}: esta página será mostrada quando nenhum slug for fornecido",
"settingUpDatabaseMSG": "Configurando o banco de dados. Pode demorar um pouco, por favor, seja paciente.",
"Search monitored sites": "Pesquisar sites monitorados",
- "ntfyPriorityHelptextAllEvents": "Todos os eventos são enviados com prioridade máxima"
+ "ntfyPriorityHelptextAllEvents": "Todos os eventos são enviados com prioridade máxima",
+ "What is a Remote Browser?": "O que é um Navegador Remoto ?",
+ "wayToGetHeiiOnCallDetails": "Como obter o ID do Trigger e as chaves de API é explicado na {documentação}",
+ "gtxMessagingApiKeyHint": "Você pode encontrar sua chave de API em: Minhas contas de roteamento > Mostrar informações da conta > Credenciais de API > API REST (v2.x)",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "Do número de telefone/endereço de origem do caminho de transmissão (TPOA)",
+ "To Phone Number": "Para número de telefone",
+ "gtxMessagingToHint": "Formato internacional, com \"+\" inicial ({e164}, {e212} ou {e214})",
+ "Originator type": "Tipo de originador",
+ "Alphanumeric (recommended)": "Alfanumérico (recomendado)",
+ "Telephone number": "Número de telefone",
+ "cellsyntOriginatortypeAlphanumeric": "String alfanumérica (máximo de 11 caracteres alfanuméricos). Os destinatários não podem responder à mensagem.",
+ "cellsyntOriginatortypeNumeric": "Valor numérico (máximo de 15 dígitos) com número de telefone em formato internacional sem 00 inicial (por exemplo, o número do Reino Unido 07920 110 000 deve ser definido como 447920110000). Os destinatários podem responder à mensagem.",
+ "Originator": "Originador",
+ "Destination": "Destino",
+ "callMeBotGet": "Aqui você pode gerar um endpoint para {0}, {1} e {2}. Lembre-se de que você pode barrado por uma taxa limitadora. Os limites de taxa parecem ser: {3}",
+ "cellsyntOriginator": "Visível no celular do destinatário como originador da mensagem. Os valores permitidos e a função dependem do tipo de originador do parâmetro.",
+ "wayToGetWhapiUrlAndToken": "Você pode obter o URL da API e o token acessando o canal desejado em {0}",
+ "whapiRecipient": "Número de telefone/ID do contato/ID do grupo",
+ "API URL": "API URL",
+ "documentationOf": "{0} Documentação",
+ "Allow Long SMS": "Permitir SMS longos",
+ "cellsyntSplitLongMessages": "Divida mensagens longas em até 6 partes. 153 x 6 = 918 caracteres.",
+ "max 15 digits": "máximo de 15 dígitos",
+ "max 11 alphanumeric characters": "máximo de 11 caracteres alfanuméricos",
+ "wayToWriteWhapiRecipient": "O número de telefone com o prefixo internacional, mas sem o sinal de mais no início ({0}), o ID do contato ({1}) ou o ID do grupo ({2}).",
+ "cellsyntDestination": "Número de telefone do destinatário em formato internacional com 00 inicial seguido do código do país, por ex. 00447920110000 para o número do Reino Unido 07920 110 000 (máximo de 17 dígitos no total). Máximo de 25.000 destinatários separados por vírgula por solicitação HTTP.",
+ "Your User ID": "Sua ID de usuário",
+ "gtxMessagingFromHint": "Em telefones celulares, seus destinatários veem o TPOA exibido como remetente da mensagem. São permitidos até 11 caracteres alfanuméricos, um DDD, o DDI local ou números internacionais ({e164}, {e212} ou {e214})",
+ "Channel access token (Long-lived)": "Token de acesso ao canal (de longa duração)",
+ "apiKeySevenIO": "SevenIO chave de API",
+ "wayToGetThreemaGateway": "Você pode se registrar no Threema Gateway {0}.",
+ "threemaRecipient": "Destinatário",
+ "threemaRecipientType": "Tipo de destinatário",
+ "threemaRecipientTypeIdentity": "Threema-ID",
+ "threemaRecipientTypeIdentityFormat": "8 caracteres",
+ "threemaRecipientTypePhone": "Número de telefone",
+ "threemaRecipientTypeEmail": "Endereço de email",
+ "threemaSenderIdentity": "ID do Gateway",
+ "threemaSenderIdentityFormat": "8 caracteres, geralmente começa com *",
+ "Command": "Comando",
+ "mongodbCommandDescription": "Execute um comando MongoDB no banco de dados. Para informações sobre os comandos disponíveis confira a {documentação}",
+ "smspartnerApiurl": "Você pode encontrar sua chave de API em seu painel em {0}",
+ "smspartnerPhoneNumber": "Números de telefone)",
+ "smspartnerPhoneNumberHelptext": "O número deve estar no formato internacional {0}, {1}. Vários números devem ser separados por {2}",
+ "smspartnerSenderName": "Nome do remetente de SMS",
+ "smspartnerSenderNameInfo": "Deve ter entre 3..=11 caracteres regulares",
+ "wayToGetBitrix24Webhook": "Você pode criar um webhook seguindo as etapas em {0}",
+ "Mentioning": "Mencionando",
+ "Don't mention people": "Não mencione pessoas",
+ "Mention group": "Mencionar {grupo}",
+ "senderSevenIO": "Enviando número ou nome",
+ "receiverSevenIO": "Número de recebimento",
+ "wayToGetSevenIOApiKey": "Visite o painel em app.seven.io > desenvolvedor > chave de API > botão verde adicionar",
+ "Select message type": "Selecione o tipo de mensagem",
+ "Send to channel": "Enviar para o canal",
+ "Create new forum post": "Criar nova postagem no fórum",
+ "threadForumPostID": "ID da postagem do tópico/fórum",
+ "postToExistingThread": "Postar em tópico/postagem existente",
+ "forumPostName": "Nome da postagem no fórum",
+ "Host URL": "Host URL",
+ "Refresh Interval": "Intervalo de atualização",
+ "Refresh Interval Description": "A página de status fará uma atualização completa do site a cada {0} segundos",
+ "locally configured mail transfer agent": "configurado de agente de transferência de e-mail localmente",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Insira o nome do host do servidor ao qual deseja se conectar ou {localhost} se pretende usar um {local_mta}",
+ "ignoreTLSErrorGeneral": "Ignorar erro TLS/SSL para conexão",
+ "threemaRecipientTypePhoneFormat": "E.164, sem o sinal de \"+\" no início",
+ "threemaApiAuthenticationSecret": "ID secreto do Gateway",
+ "threemaBasicModeInfo": "Observação: Esta integração usa o Threema Gateway no modo básico (criptografia baseada em servidor). Mais detalhes podem ser encontrados em {0}.",
+ "bitrix24SupportUserID": "Insira seu ID de usuário no Bitrix24. Você pode encontrar o ID no link ao acessar o perfil do usuário.",
+ "Bitrix24 Webhook URL": "URL do Webhook do Bitrix24",
+ "wayToGetDiscordThreadId": "Obter o ID de uma thread/postagem em um fórum é similar a obter o ID de um canal. Saiba mais sobre como obter IDs {0}",
+ "whatHappensAtForumPost": "Criar um novo tópico no fórum. Isto NÃO publica mensagens em tópicos existentes. Para publicar em um tópico existente, use \"{option}\"",
+ "e.g. {discordThreadID}": "Por exemplo {discordThreadID}",
+ "receiverInfoSevenIO": "Se o número de destino não estiver localizado na Alemanha, você deve adicionar o código do país antes do número (por exemplo, para o código de país 1 dos EUA, use 117612121212 em vez de 017612121212)",
+ "apiKeysDisabledMsg": "As chaves de API estão desativadas porque a autenticação está desativada.",
+ "now": "agora",
+ "and": "e",
+ "jsonQueryDescription": "Analise e extraia dados específicos da resposta JSON do servidor usando uma query JSON ou use \"$\" para a resposta em raw, se não estiver esperando JSON. O resultado é então comparado ao valor esperado, como strings. Veja {0} para documentação e use {1} para experimentar com queries.",
+ "time ago": "atrás",
+ "-year": "-ano",
+ "Json Query Expression": "Expressão Json Query",
+ "cacheBusterParam": "Adicionar o parâmetro {0}",
+ "snmpCommunityStringHelptext": "Esta string funciona como uma senha para autenticar e controlar o acesso a dispositivos habilitados para SNMP. Combine-a com a configuração do seu dispositivo SNMP.",
+ "OID (Object Identifier)": "OID (Identificador do Objeto)",
+ "Condition": "Condição",
+ "Recipient Type": "Tipo de destinatário",
+ "wayToGetOnesenderUrlandToken": "Você pode obter a URL e o Token acessando o site da Onesender. Mais informações {0}",
+ "cacheBusterParamDescription": "Parâmetro gerado randomicamente para ignorar cache.",
+ "SNMP Version": "Versão SNMP",
+ "Please enter a valid OID.": "Por favor, insira um OID válido.",
+ "Private Number": "Número Privado",
+ "Group ID": "ID do Grupo",
+ "Add Remote Browser": "Adicionar Navegador Remoto",
+ "New Group": "Novo Grupo",
+ "Group Name": "Nome do Grupo",
+ "OAuth2: Client Credentials": "OAuth2: Client Credentials",
+ "Authentication Method": "Método de Autenticação",
+ "Authorization Header": "Header de Autorização",
+ "ignoredTLSError": "Erros TLS/SSL foram ignorados",
+ "Debug": "Depurar",
+ "Copy": "Copiar",
+ "CopyToClipboardError": "Não foi possível copiar para a área de transferência: {error}",
+ "CopyToClipboardSuccess": "Copiado!",
+ "firewalls": "firewalls",
+ "docker networks": "redes docker",
+ "Message format": "Formato da mensagem",
+ "snmpOIDHelptext": "Insira o OID do sensor ou do status que você deseja monitorar. Utilize ferramentas de gerenciamento de rede, como navegadores MIB ou softwares SNMP, se não tiver certeza sobre o OID.",
+ "privateOnesenderDesc": "Certifique-se de que o número de telefone é válido. Para enviar mensagem para o número de telefone privado, ex: 628123456789",
+ "aboutSlackUsername": "Altera o nome de exibição do remetente da mensagem. Se quiser mencionar alguém, inclua a menção no nome amigável.",
+ "Send rich messages": "Enviar mensagens ricas",
+ "Host Onesender": "Servidor Onesender",
+ "Token Onesender": "Token Onesender",
+ "shrinkDatabaseDescriptionSqlite": "Acionar banco de dados {vacuum} para SQLite. {auto_vacuum} já está habilitado, mas isso não desfragmenta o banco de dados nem reempacota páginas individuais do banco de dados da maneira que o comando {vacuum} faz.",
+ "groupOnesenderDesc": "Certifique-se de que o GroupID é válido. Para enviar mensagem para o Grupo, ex: 628123456789-342345",
+ "Community String": "Cadeia de caracteres da comunidade",
+ "Form Data Body": "Dados do formulário",
+ "OAuth Token URL": "URL do token OAuth",
+ "Client ID": "ID do cliente",
+ "Client Secret": "Segredo do cliente",
+ "OAuth Scope": "Escopo OAuth",
+ "Optional: Space separated list of scopes": "Opcional: Lista de escopos separados por espaços",
+ "Go back to home page.": "Voltar para a página inicial.",
+ "No tags found.": "Nenhuma tag encontrada.",
+ "Lost connection to the socket server.": "Conexão perdida com o servidor de socket.",
+ "Cannot connect to the socket server.": "Não é possível conectar ao servidor de socket.",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "URL do Webhook SIGNL4",
+ "rabbitmqNodesRequired": "Por favor, defina os nós para este monitor.",
+ "RabbitMQ Nodes": "Nós de gerenciamento do RabbitMQ",
+ "rabbitmqNodesDescription": "Insira a URL para os nós de gerenciamento do RabbitMQ, incluindo protocolo e porta. Exemplo: {0}",
+ "Bubble": "Bolha",
+ "Clear": "Limpar",
+ "Custom sound to override default notification sound": "Som personalizado para substituir o som de notificação padrão",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "Notificações urgentes serão entregues imediatamente, mesmo se o dispositivo estiver no modo Não perturbe.",
+ "rabbitmqHelpText": "Para usar o monitor, você precisará habilitar o Management Plugin na sua configuração RabbitMQ. Para mais informações, consulte a {rabitmq_documentation}.",
+ "Money": "Dinheiro",
+ "signl4Docs": "Você pode encontrar mais informações sobre como configurar o SIGNL4 e como obter o URL do webhook do SIGNL4 em {0}.",
+ "Conditions": "Condições",
+ "conditionAdd": "Adicionar Condição",
+ "conditionDelete": "Excluir condição",
+ "conditionAddGroup": "Adicionar grupo",
+ "conditionDeleteGroup": "Excluir grupo",
+ "conditionValuePlaceholder": "Valor",
+ "equals": "igual",
+ "not equals": "diferente",
+ "contains": "contém",
+ "not contains": "não contém",
+ "starts with": "começa com",
+ "not starts with": "não começa com",
+ "ends with": "termina com",
+ "not ends with": "não termina com",
+ "less than": "menor que",
+ "greater than": "maior que",
+ "less than or equal to": "menor ou igual a",
+ "greater than or equal to": "maior ou igual a",
+ "record": "registro",
+ "Notification Channel": "Canal de Notificação",
+ "Sound": "Som",
+ "Alphanumerical string and hyphens only": "Somente sequência alfanumérica e hifens",
+ "Arcade": "Arcada",
+ "Correct": "Correto",
+ "Fail": "Falhou",
+ "Harp": "Harpa",
+ "Reveal": "Revelar",
+ "Doorbell": "Campainha",
+ "Flute": "Flauta",
+ "Scifi": "Ficção científica",
+ "Elevator": "Elevador",
+ "Guitar": "Guitarra",
+ "Pop": "Pop",
+ "Time Sensitive (iOS Only)": "Sensível ao tempo (somente iOS)",
+ "From": "De",
+ "Can be found on:": "Pode ser encontrado em: {0}",
+ "The phone number of the recipient in E.164 format.": "O número de telefone do destinatário no formato E.164.",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "Um ID de remetente de texto ou um número de telefone no formato E.164, caso você queira receber respostas.",
+ "rabbitmqNodesInvalid": "Use uma URL totalmente qualificada (começando com 'http') para nós do RabbitMQ.",
+ "RabbitMQ Username": "Nome de usuário do RabbitMQ",
+ "RabbitMQ Password": "Senha do RabbitMQ",
+ "SendGrid API Key": "Chave API do SendGrid",
+ "Separate multiple email addresses with commas": "Separe vários endereços de e-mail com vírgulas",
+ "templateServiceName": "nome do serviço",
+ "telegramUseTemplate": "Use um template personalizado de mensagem",
+ "telegramTemplateFormatDescription": "O Telegram permite o uso de diferentes linguagens de marcação para mensagens. Veja o Telegram {0} para detalhes específicos.",
+ "templateHostnameOrURL": "hostname ou URL",
+ "templateStatus": "status",
+ "telegramUseTemplateDescription": "Se habilitado, a mensagem será enviada usando um template personalizado.",
+ "telegramServerUrlDescription": "Para suspender as limitações da API de bots do Telegram ou obter acesso em áreas bloqueadas (China, Irã, etc). Para mais informações, clique em {0}. Padrão: {1}",
+ "wahaSession": "Sessão",
+ "wayToGetWahaApiUrl": "URL da sua instância WAHA.",
+ "wayToGetWahaApiKey": "API Key é o valor da variável de ambiente WHATSAPP_API_KEY que você usou para executar o WAHA.",
+ "wayToGetWahaSession": "A partir desta sessão, o WAHA envia notificações para o Chat ID. Você pode encontrá-lo no WAHA Dashboard.",
+ "wayToWriteWahaChatId": "O número de telefone com o prefixo internacional, mas sem o sinal de mais no início ({0}), o Contact ID ({1}) ou o Group ID ({2}). As notificações são enviadas para este Chat ID da sessão WAHA.",
+ "Plain Text": "Texto Simples",
+ "wahaChatId": "Chat ID (Número de Telefone / Contact ID / Group ID)",
+ "YZJ Webhook URL": "YZJ Webhook URL",
+ "YZJ Robot Token": "YZJ Robot token",
+ "telegramServerUrl": "(Opcional) URL do Servidor",
+ "Message Template": "Modelo de Mensagem",
+ "Template Format": "Formato do Modelo",
+ "Font Twemoji by Twitter licensed under": "Fonte Twemoji do Twitter licenciada sob"
}
diff --git a/src/lang/pt-PT.json b/src/lang/pt-PT.json
index 6bcc9da90..8bd9913ca 100644
--- a/src/lang/pt-PT.json
+++ b/src/lang/pt-PT.json
@@ -29,7 +29,7 @@
"Settings": "Configurações",
"Dashboard": "Dashboard",
"New Update": "Nova Atualização",
- "Language": "Linguagem",
+ "Language": "Idioma",
"Appearance": "Aparência",
"Theme": "Tema",
"General": "Geral",
@@ -76,7 +76,7 @@
"Accepted Status Codes": "Status Code Aceitáveis",
"Save": "Guardar",
"Notifications": "Notificações",
- "Not available, please setup.": "Não disponível, por favor configura.",
+ "Not available, please setup.": "Não disponível, por favor configure.",
"Setup Notification": "Configurar Notificação",
"Light": "Claro",
"Dark": "Escuro",
@@ -101,7 +101,7 @@
"disableauth.message2": "Isso é para {intendThirdPartyAuth} em frente ao 'UpTime Kuma' como o Cloudflare Access.",
"where you intend to implement third-party authentication": "alguém que tem autenticação de terceiros",
"Please use this option carefully!": "Por favor, utiliza esta opção com cuidado.",
- "Logout": "Logout",
+ "Logout": "Terminar sessão",
"Leave": "Sair",
"I understand, please disable": "Eu entendo, por favor desativa.",
"Confirm": "Confirmar",
@@ -110,7 +110,7 @@
"Username": "Utilizador",
"Password": "Senha",
"Remember me": "Lembra-me",
- "Login": "Autenticar",
+ "Login": "Iniciar Sessão",
"No Monitors, please": "Nenhum monitor, por favor",
"add one": "adicionar um",
"Notification Type": "Tipo de Notificação",
@@ -128,7 +128,7 @@
"Import": "Importar",
"respTime": "Tempo de Resp. (ms)",
"notAvailableShort": "N/A",
- "Default enabled": "Padrão habilitado",
+ "Default enabled": "Padrão ativado",
"Apply on all existing monitors": "Aplicar em todos os monitores existentes",
"Create": "Criar",
"Clear Data": "Limpar Dados",
@@ -405,7 +405,6 @@
"Please input title and content": "Por favor insira o título e o conteúdo",
"Hide Tags": "Ocultar Tags",
"Description": "Descrição",
- "shrinkDatabaseDescription": "Acionar banco de dados VACUUM para SQLite. Se seu banco de dados for criado após 1.10.0, AUTO_VACUUM já está ativado e esta ação não é necessária.",
"proxyDescription": "Os proxies devem ser atribuídos a um monitor para funcionar.",
"enableProxyDescription": "Este proxy não afetará as solicitações do monitor até que seja ativado. Você pode controlar temporariamente a desativação do proxy de todos os monitores pelo status de ativação.",
"Don't know how to get the token? Please read the guide:": "Não sabe como obter o token? Por favor, leia o guia:",
@@ -441,5 +440,44 @@
"statusMaintenance": "Manutenção",
"Passive Monitor Type": "Tipo de Monitor Passivo",
"Custom": "Personalizar",
- "General Monitor Type": "Tipo de Monitor Geral"
+ "General Monitor Type": "Tipo de Monitor Geral",
+ "Invert Keyword": "Palavra-chave invertida",
+ "setupDatabaseChooseDatabase": "Qual é a base de dados que deseja usar?",
+ "setupDatabaseEmbeddedMariaDB": "Não é necessário configurar nada. Esta imagem Docker possui o MariaDB incorporado e configurado automaticamente para você. O Uptime Kuma se conectará a esta base de dados através de um socket Unix.",
+ "setupDatabaseMariaDB": "Conecte-se a uma base de dados MariaDB externa. Você precisa configurar as informações de conexão com a base de dados.",
+ "setupDatabaseSQLite": "Um arquivo de base de dados simples, recomendado para implementações em pequena escala. Antes da versão 2.0.0, o Uptime Kuma utilizava o SQLite como base de dados padrão.",
+ "dbName": "Nome da Base de Dados",
+ "settingUpDatabaseMSG": "Configurando a base de dados. Isso pode levar algum tempo, por favor, seja paciente.",
+ "pushOthers": "Outros",
+ "Request Timeout": "Tempo Limite da Requisição",
+ "timeoutAfter": "Tempo limite após {0} segundos",
+ "Resend Notification if Down X times consecutively": "Reenviar Notificação se estiver em baixo X vezes consecutivas",
+ "styleElapsedTime": "Tempo decorrido abaixo da barra de pulsação.",
+ "Home": "Início",
+ "Expected Value": "Valor Esperado",
+ "Json Query": "Consulta JSON",
+ "Cannot connect to the socket server": "Não é possível conectar ao servidor de sockets",
+ "Reconnecting...": "Reconectando...",
+ "liquidIntroduction": "A personalização das templates é conseguida através da linguagem de templates Liquid. Por favor consulte [0] para instruções de utilização. As variáveis disponíveis são :",
+ "pushViewCode": "Como usar o monitor Push? (Ver Código)",
+ "Host URL": "URL do Host",
+ "programmingLanguages": "Linguagens de Programação",
+ "locally configured mail transfer agent": "Agente de entrega de email local",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Entre o hostname do servidor ao qual se quer ligar ou a {localhost} se pretende usar {local_mta}",
+ "ignoreTLSErrorGeneral": "Ignorar erros TLS/SSL ao ligar",
+ "filterActive": "Ativo",
+ "filterActivePaused": "Em Pausa",
+ "Add New Tag": "Adicionar Nova Etiqueta",
+ "Search monitored sites": "Pesquisar sites monitorizados",
+ "templateMsg": "Mensagem da notificação",
+ "styleElapsedTimeShowNoLine": "Mostrar (Sem Linha)",
+ "styleElapsedTimeShowWithLine": "Mostrar (Com Linha)",
+ "statusPageRefreshIn": "Atualizar em: [0]",
+ "templateHeartbeatJSON": "objeto que descreve o batimento cardíaco",
+ "templateMonitorJSON": "objeto que descreve o monitor",
+ "templateLimitedToUpDownCertNotifications": "apenas disponível para notificações UP/DOWN/certificado expirado",
+ "templateLimitedToUpDownNotifications": "apenas disponível para notificações UP/DOWN",
+ "-year": "-ano",
+ "Json Query Expression": "Expressão Json Query",
+ "ignoredTLSError": "Erros TLS/SSL foram ignorados"
}
diff --git a/src/lang/pt.json b/src/lang/pt.json
index 4fb1ee2f0..6a842d276 100644
--- a/src/lang/pt.json
+++ b/src/lang/pt.json
@@ -36,17 +36,171 @@
"Add New Monitor": "Adicionar Novo Monitor",
"Home": "Home",
"Check Update On GitHub": "Verificar por Atualizações no GitHub",
- "setupDatabaseChooseDatabase": "Qual banco de dados você deseja usar?",
+ "setupDatabaseChooseDatabase": "Qual banco de dados você gostaria de usar?",
"setupDatabaseEmbeddedMariaDB": "Não é necessario definir. Esta imagem do docker incorporou e configurou automaticamente o MariaDB para você. O Uptime Kuma se conectará a este banco de dados via soquete unix.",
"setupDatabaseMariaDB": "Conecte-se a um banco de dados MariaDB externo. Você precisa definir as informações de conexão do banco de dados.",
"setupDatabaseSQLite": "Um arquivo de banco de dados simples, recomendado para implantações em pequena escala. Antes da v2.0.0, o Uptime Kuma usava SQLite como banco de dados padrão.",
"dbName": "Nome do banco de dados",
- "Monitor": "Monitorar",
+ "Monitor": "Monitoramento | Monitoramentos",
"hour": "hora",
"-hour": "-hora",
"Response": "Resposta",
"Ping": "Ping",
"-day": "-dia",
"Port": "Porta",
- "Cannot connect to the socket server": "Não é possível conectar-se ao socket server"
+ "Cannot connect to the socket server": "Não é possível conectar-se ao socket server",
+ "URL": "URL",
+ "upsideDownModeDescription": "Inverter o status. Se o serviço estiver acessível, ele será considerado INATIVO.",
+ "settingUpDatabaseMSG": "Configurando o banco de dados. Isso pode levar algum tempo, por favor, seja paciente.",
+ "Passive Monitor Type": "Tipo de Monitoramento Passivo",
+ "Specific Monitor Type": "Tipo Específico de Monitoramento",
+ "markdownSupported": "Sintaxe Markdown suportada",
+ "DateTime": "Data e Hora",
+ "Cert Exp.": "Expiração do Certificado",
+ "Monitor Type": "Tipo de Monitoramento",
+ "Keyword": "Palavra-chave",
+ "Invert Keyword": "Inverter Palavra-chave",
+ "Expected Value": "Valor Esperado",
+ "Json Query": "Json Query",
+ "Friendly Name": "Nome Amigável",
+ "Hostname": "Hostname",
+ "Heartbeat Interval": "Intervalo de verificação",
+ "checkEverySecond": "Verificar a cada {0} segundos",
+ "Host URL": "URL do Host",
+ "retryCheckEverySecond": "Tentar novamente a cada {0} segundos",
+ "Accepted Status Codes": "Códigos de Status Aceitos",
+ "retriesDescription": "Número máximo de tentativas antes de o serviço ser marcado como inativo e uma notificação ser enviada",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Insira o nome do host do servidor ao qual você deseja se conectar ou {localhost} se você pretende usar um {local_mta}",
+ "Request Timeout": "Tempo limite de requisição",
+ "timeoutAfter": "Tempo limite após {0} segundos",
+ "Retries": "Tentativas",
+ "Heartbeat Retry Interval": "Intervalo entre novas verificações",
+ "Resend Notification if Down X times consecutively": "Reenviar notificação se houver X falhas consecutivas",
+ "Advanced": "Avançado",
+ "resendEveryXTimes": "Reenviar a cada {0} vezes",
+ "resendDisabled": "Reenvio desativado",
+ "ignoreTLSError": "Ignorar erros de TLS/SSL para sites HTTPS",
+ "maxRedirectDescription": "Número máximo de redirecionamentos a seguir. Defina como 0 para desabilitar redirecionamentos.",
+ "Upside Down Mode": "Modo Invertido",
+ "locally configured mail transfer agent": "agente de transferência de correio configurado localmente",
+ "ignoreTLSErrorGeneral": "Ignorar erro de TLS/SSL para conexão",
+ "Max. Redirects": "Máx. Redirecionamentos",
+ "General Monitor Type": "Tipo Geral de Monitoramento",
+ "needPushEvery": "Você deve chamar essa URL a cada {0} segundos.",
+ "pushOptionalParams": "Parâmetros opcionais: {0}",
+ "Notifications": "Notificações",
+ "Setup Notification": "Configurar notificação",
+ "Light": "Luz",
+ "Theme - Heartbeat Bar": "Tema - Heartbeat Bar",
+ "now": "agora",
+ "-year": "-ano",
+ "Push URL": "Enviar URL",
+ "ignoredTLSError": "Erros TLS/SSL foram ignorados",
+ "Json Query Expression": "Expressão de consulta Json",
+ "programmingLanguages": "Linguagens de programação",
+ "Save": "Salvar",
+ "Not available, please setup.": "Não disponível, por favor configure.",
+ "pushViewCode": "Como usar o Push monitor? (Ver código)",
+ "Create your admin account": "Criar conta de administrador",
+ "Apply on all existing monitors": "Aplicar em todos os monitores existentes",
+ "Pick Affected Monitors...": "Escolha os monitores afetados…",
+ "alertWrongFileType": "Por favor, escolha um arquivo JSON.",
+ "Two Factor Authentication": "Autenticador de dois fatores",
+ "Tag with this name already exist.": "Já existe uma tag com esse nome.",
+ "Entry Page": "Página de entrada",
+ "All Systems Operational": "Todos os sistemas operacionais",
+ "Add Group": "Adicionar um grupo",
+ "Add a monitor": "Adicionar um monitoramento",
+ "None": "Nenhum",
+ "Change Password": "Mudar Senha",
+ "Current Password": "Senha Atual",
+ "New Password": "Nova Senha",
+ "Repeat New Password": "Repita a nova senha",
+ "Update Password": "Atualizar senha",
+ "Enable Auth": "Ativar Auth",
+ "Disable Auth": "Desativar Auth",
+ "disableauth.message1": "Você tem certeza que deseja {disableAuth}?",
+ "disable authentication": "Desativar Autenticação",
+ "where you intend to implement third-party authentication": "Onde você pretende implementar autenticador de terceiros",
+ "Please use this option carefully!": "Use essa opção com cuidado!",
+ "Leave": "Sair",
+ "Logout": "Deslogar",
+ "I understand, please disable": "Eu compreendo, por favor desative",
+ "Yes": "Sim",
+ "No": "Não",
+ "Username": "Nome de usuário",
+ "Password": "Senha",
+ "Remember me": "Lembrar-me",
+ "Login": "Entrar",
+ "add one": "Adicionar um",
+ "Notification Type": "Tipo de notificação",
+ "Email": "Email",
+ "Test": "Testar",
+ "Certificate Info": "Informação de certificado",
+ "Resolver Server": "Servidor de resolução",
+ "Resource Record Type": "Tipo de registro",
+ "Last Result": "Último resultado",
+ "Repeat Password": "Repita a senha",
+ "Import Backup": "Importar backup",
+ "Export Backup": "Exportar backup",
+ "Export": "Exportar",
+ "Import": "Importar",
+ "respTime": "Tempo de resposta (ms)",
+ "notAvailableShort": "Não aplicável",
+ "Create": "Criar",
+ "Clear Data": "Limpar dados",
+ "Schedule maintenance": "Agendar manutenção",
+ "Affected Monitors": "Monitores afetados",
+ "Start of maintenance": "Início da manutenção",
+ "All Status Pages": "Todas as páginas de status",
+ "Select status pages...": "Selecionar páginas de status…",
+ "alertNoFile": "Escolha um arquivo para importar.",
+ "Clear all statistics": "Limpar todas as estatísticas",
+ "Skip existing": "Pular existentes",
+ "Overwrite": "Sobrescrever",
+ "Options": "Opções",
+ "Keep both": "Manter ambas",
+ "Verify Token": "Verificar token",
+ "Setup 2FA": "Configurar 2FA",
+ "Enable 2FA": "Ativar 2FA",
+ "Disable 2FA": "Desativar 2FA",
+ "2FA Settings": "Configurações do autenticador",
+ "filterActive": "Ativo",
+ "filterActivePaused": "Pausado",
+ "Active": "Ativo",
+ "Inactive": "Desativado",
+ "Token": "Token",
+ "Show URI": "Mostrar URI",
+ "Tags": "Tags",
+ "Add New Tag": "Adicionar nova tag",
+ "Tag with this value already exist.": "Já existe uma tag com esse valor.",
+ "color": "Cor",
+ "value (optional)": "Valor (opcional)",
+ "Gray": "Cinza",
+ "Red": "Vermelho",
+ "Orange": "Laranja",
+ "Green": "Verde",
+ "Blue": "Azul",
+ "Indigo": "Índigo",
+ "Purple": "Roxo",
+ "Pink": "Rosa",
+ "Custom": "Customizado",
+ "Search...": "Procurar…",
+ "Search monitored sites": "Procurar sites monitorados",
+ "Avg. Ping": "Média de ping",
+ "Avg. Response": "Média do tempo de resposta",
+ "statusPageNothing": "Não tem nada aqui, adicione um grupo os monitor.",
+ "statusPageRefreshIn": "Atualize em: {0}",
+ "No Services": "Sem serviços",
+ "Partially Degraded Service": "Serviço parcialmente degradado",
+ "Degraded Service": "Serviços degradados",
+ "Edit Status Page": "Editar página de status",
+ "Go to Dashboard": "Ir para o painel de controle",
+ "Status Page": "Status Page",
+ "Status Pages": "Páginas de status",
+ "Events": "Eventos",
+ "Confirm": "Confirmar",
+ "pushOthers": "Outros",
+ "time ago": "{0} atrás",
+ "Dark": "Escuro"
}
diff --git a/src/lang/ro.json b/src/lang/ro.json
index d9f4987f5..5f2e14344 100644
--- a/src/lang/ro.json
+++ b/src/lang/ro.json
@@ -8,8 +8,8 @@
"Version": "Versiune",
"Check Update On GitHub": "Verifică actualizarea pe GitHub",
"Quick Stats": "Statistici Rapide",
- "Up": "Sus",
- "Down": "Jos",
+ "Up": "Funcțional",
+ "Down": "Nefuncțional",
"statusMaintenance": "Mentenanță",
"Maintenance": "Mentenanță",
"General Monitor Type": "Monitor de Tip General",
@@ -45,36 +45,36 @@
"resendEveryXTimes": "Retrimite de {0} ori",
"resendDisabled": "Retrimiterea dezactivată",
"ignoreTLSError": "Ignoră erorile TLS/SSL pentru site-urile web HTTPS",
- "upsideDownModeDescription": "Întoarce statusul cu susul în jos. Dacă serviciul este accesibil, este OFFLINE.",
+ "upsideDownModeDescription": "Întoarce statusul cu susul în jos. Dacă serviciul este accesibil, este Nefuncțional.",
"Upside Down Mode": "Modul cu Susul in Jos",
"Max. Redirects": "Nr. Max. de Redirecționări",
"Accepted Status Codes": "Coduri de Status Acceptate",
- "Push URL": "Împinge URL",
+ "Push URL": "URL Push",
"needPushEvery": "Acest URL trebuie să fie contactat la fiecare {0} secunde.",
"pushOptionalParams": "Parametrii opționali: {0}",
"Save": "Salvează",
"Notifications": "Notificări",
"Not available, please setup.": "Indisponibil, trebuie configurat.",
- "Setup Notification": "Configurare Notificări",
+ "Setup Notification": "Configurați notificarea",
"Light": "Luminos",
"Dark": "Întunecat",
"Auto": "Automat",
"Normal": "Normal",
- "Bottom": "Fund",
+ "Bottom": "Dedesubt",
"None": "Nimic",
"Timezone": "Fus Orar",
"Search Engine Visibility": "Vizibilitate în Motoarele de Căutare",
"Allow indexing": "Permite Indexarea",
- "Change Password": "Schimbă Parola",
+ "Change Password": "Schimbaţi parola",
"Current Password": "Parola Curentă",
"New Password": "Parolă Nouă",
- "Repeat New Password": "Repetă Parola Nouă",
- "Update Password": "Actualizează Parola",
- "Disable Auth": "Dezactivează Autentificarea",
- "Enable Auth": "Activează Autentificarea",
- "Please use this option carefully!": "Utilizează Această Opțiune cu Grijă!",
+ "Repeat New Password": "Repetați Parola Nouă",
+ "Update Password": "Actualizați parola",
+ "Disable Auth": "Dezactivați Autentificarea",
+ "Enable Auth": "Activați Autentificarea",
+ "Please use this option carefully!": "Vă rugăm să utilizați această opțiune cu atenție!",
"Logout": "Delogare",
- "Leave": "Părăsește",
+ "Leave": "Părăsiți",
"I understand, please disable": "Am luat la cunoștință, dezactivează",
"Confirm": "Confirmă",
"Yes": "Da",
@@ -82,17 +82,17 @@
"Username": "Nume de Utilizator",
"Password": "Parolă",
"Remember me": "Ține-mă Minte",
- "No Monitors, please": "Niciun monitor, te rog",
- "add one": "adaugă unul",
+ "No Monitors, please": "Fără monitoare, vă rog",
+ "add one": "adăugați unul",
"Resource Record Type": "Tipul de Înregistrare a Resurselor",
- "Create your admin account": "Crează un Cont de Administrator",
+ "Create your admin account": "Creați-vă contul de administrator",
"Repeat Password": "Repetă Parola",
- "Import Backup": "Importează Backup-ul",
- "Export Backup": "Exporta Backup-ul",
+ "Import Backup": "Importă Backup",
+ "Export Backup": "Exportă Backup",
"Export": "Exportă",
"Import": "Importă",
"respTime": "Timp de Răspuns (ms)",
- "Apply on all existing monitors": "Aplică pentru toate monitoarele existente",
+ "Apply on all existing monitors": "Aplicați pentru toate monitoarele existente",
"Clear Data": "Șterge Datele",
"Events": "Evenimente",
"Heartbeats": "Heartbeat-uri",
@@ -101,7 +101,7 @@
"Pick Affected Monitors...": "Alege Monitoarele Afectate…",
"Start of maintenance": "Începerea Mentenanței",
"All Status Pages": "Toate Paginile de Status",
- "Skip existing": "Sari Existente",
+ "Skip existing": "Omite Similare",
"Overwrite": "Suprascrie",
"Options": "Opțiuni",
"Keep both": "Păstrează Ambele",
@@ -113,8 +113,8 @@
"Token": "Token",
"Show URI": "Arată URI",
"Tags": "Etichete",
- "Tag with this name already exist.": "Deja Există o Etichetă cu Acest Nume.",
- "Tag with this value already exist.": "Deja Există o Etichetă cu Această Valoare.",
+ "Tag with this name already exist.": "Eticheta cu acest nume există deja.",
+ "Tag with this value already exist.": "Eticheta cu această valoare există deja.",
"color": "Culoare",
"value (optional)": "valoare (opțional)",
"Gray": "Gri",
@@ -125,17 +125,17 @@
"Indigo": "Indigo",
"Purple": "Violet",
"Custom": "Personalizat",
- "Entry Page": "Pagina de Implicită",
+ "Entry Page": "Pagină de intrare",
"No Services": "Niciun Serviciu",
"All Systems Operational": "Toate Sistemele Operaționale",
"Partially Degraded Service": "Servicii Parțial Degradate",
"Degraded Service": "Servicii Degradate",
- "Add Group": "Adaugă Grup",
- "Add a monitor": "Adaugă Monitor",
- "Edit Status Page": "Modifică Pagina de Status",
+ "Add Group": "Adăugare grup",
+ "Add a monitor": "Adăugați un monitor",
+ "Edit Status Page": "Modificați Pagina de Status",
"Status Page": "Pagina de Status",
"Status Pages": "Pagini de Status",
- "defaultNotificationName": "A mea {notification} Alertă ({number})",
+ "defaultNotificationName": "Alerta {notification} mea ({number})",
"here": "aici",
"Required": "Necesar",
"webhook": "Webhook",
@@ -148,16 +148,16 @@
"Server URL": "URL-ul Server-ului",
"Priority": "Prioritate",
"emojiCheatSheet": "Emoji-uri: {0}",
- "Read more": "Vezi Mai Mult",
- "appriseInstalled": "Apprise instalat.",
+ "Read more": "Citeşte mai mult",
+ "appriseInstalled": "Apprise este instalat.",
"appriseNotInstalled": "Apprise Neinstalat. {0}",
"Method": "Metodă",
"Body": "Corp",
"Headers": "Antete",
- "PushUrl": "Împinge URL",
+ "PushUrl": "URL Push",
"BodyInvalidFormat": "Formatul corpului de request nu este valid: ",
"Monitor History": "Istoricul Monitorului",
- "PasswordsDoNotMatch": "Parolele nu sunt la fel.",
+ "PasswordsDoNotMatch": "Parolele nu se potrivesc.",
"One record": "O înregistrare",
"Current User": "Utilizatorul Curent",
"topic": "Subiect",
@@ -167,7 +167,7 @@
"Done": "Terminat",
"Info": "Informații",
"Security": "Securitate",
- "Shrink Database": "Miceste Baza de Date",
+ "Shrink Database": "Micșorați baza de date",
"Default": "Implicit",
"HTTP Options": "Opțiuni HTTP",
"Title": "Titlu",
@@ -180,69 +180,69 @@
"critical": "critic",
"dark": "întunecat",
"Post": "Postează",
- "Last Updated": "Actualizat",
- "Unpin": "Desprinde",
- "Switch to Light Theme": "Schimbă la Tema Luminoasă",
- "Show Tags": "Arată Etichetele",
- "Hide Tags": "Ascunde Etichetele",
+ "Last Updated": "Ultima actualizare",
+ "Unpin": "Anulați fixarea",
+ "Switch to Light Theme": "Schimbați la Tema Luminoasă",
+ "Show Tags": "Afișați Etichetele",
+ "Hide Tags": "Ascundeți Etichetele",
"Description": "Descriere",
- "No monitors available.": "Niciun monitor disponibil.",
- "Discard": "Elimină",
- "Cancel": "Anulează",
+ "No monitors available.": "Nu există monitoare disponibile.",
+ "Discard": "Eliminați",
+ "Cancel": "Anulați",
"Powered by": "Cu ajutorul",
- "Customize": "Personalizează",
+ "Customize": "Personalizați",
"Custom Footer": "Subsol Personalizat",
"Custom CSS": "CSS Personalizat",
- "deleteStatusPageMsg": "Ești sigur că vrei să ștergi această pagină de status?",
+ "deleteStatusPageMsg": "Sigur doriți să ștergeți această pagină de status?",
"Proxies": "Proxy-uri",
"default": "Implicit",
"enabled": "Activat",
- "setAsDefault": "Setează ca Implicit",
- "deleteProxyMsg": "Ești sigur că vrei să ștergi acest proxy pentru toate monitoarele?",
- "Certificate Chain": "Lanț-ul Certificatului",
+ "setAsDefault": "Setați Ca Implicit",
+ "deleteProxyMsg": "Sigur doriți să ștergeți acest proxy pentru toate monitoarele?",
+ "Certificate Chain": "Lanț de certificate",
"Valid": "Valabil",
"Invalid": "Nevalabil",
"User": "Utilizator",
"Installed": "Instalat",
"Running": "Operează",
- "Not running": "Nu operează",
+ "Not running": "Nu rulează",
"Remove Token": "Elimină token-ul",
"Start": "Start",
"Stop": "Stop",
- "Add New Status Page": "Adaugă o Pagină de Status Nouă",
+ "Add New Status Page": "Adăugați o nouă pagină de status",
"Slug": "Slug",
- "startOrEndWithOnly": "Începe sau termină doar cu {0}",
+ "startOrEndWithOnly": "Începe sau se termină numai cu {0}",
"No consecutive dashes": "Fără cratime consecutive",
- "Next": "Înainte",
- "No Proxy": "Niciun Proxy",
- "Authentication": "Autentificate",
+ "Next": "Următorul",
+ "No Proxy": "Fără Proxy",
+ "Authentication": "Autentificare",
"HTTP Basic Auth": "Autentificare de bază HTTP",
"New Status Page": "Pagină de Status Nouă",
- "Page Not Found": "Pagină Negăsită",
+ "Page Not Found": "Pagina nu a fost gasită",
"Backup": "Backup",
"About": "Despre",
- "wayToGetCloudflaredURL": "(Cloudflared a fost descărcat de la {0})",
+ "wayToGetCloudflaredURL": "(Descarcă sub Cloudflare de la {0})",
"cloudflareWebsite": "Website-ul Cloudflare",
"Message:": "Mesaj:",
"HTTP Headers": "Antete HTTP",
- "Trust Proxy": "Ai încredere în Proxy",
+ "Trust Proxy": "Proxy de încredere",
"Other Software": "Alt Software",
"For example: nginx, Apache and Traefik.": "De exemplu: nginx, Apache și Traefik.",
"Please read": "Te rog citește",
"Subject:": "Subiect:",
- "Valid To:": "Valid Pâna la:",
+ "Valid To:": "Valabil Pâna la:",
"Days Remaining:": "Zile rămase:",
"Issuer:": "Emitent:",
"Fingerprint:": "Amprentă:",
"No status pages": "Nicio pagină de status",
- "Domain Name Expiry Notification": "Notificare cu Privire la Expirarea Numelui de Domeniu",
+ "Domain Name Expiry Notification": "Notificare de expirare a numelui de domeniu",
"Proxy": "Proxy",
"Date Created": "Data Creării",
- "Footer Text": "Text-ul pentru subsol",
+ "Footer Text": "Text de subsol",
"Show Powered By": "Arată ”Cu ajutorul”",
"Reverse Proxy": "Proxy invers",
"Domain Names": "Nume de domeniu",
- "signedInDisp": "Autentificat ca {0}",
+ "signedInDisp": "Conectat ca {0}",
"signedInDispDisabled": "Autentificare Dezactivată.",
"RadiusSecret": "Secret Radius",
"RadiusSecretDescription": "Secret împărtășit cu client-ul și server-ul",
@@ -253,22 +253,22 @@
"API Username": "Nume de utilizator al API-ului",
"API Key": "Cheie API",
"Also check beta release": "Verifică și actualizările beta",
- "Using a Reverse Proxy?": "Folosești un Proxy Invers?",
- "Check how to config it for WebSocket": "Află cum să îl configurezi pentru WebSocket",
+ "Using a Reverse Proxy?": "Utilizați un proxy invers?",
+ "Check how to config it for WebSocket": "Verificați cum să-l configurați pentru WebSocket",
"Steam Game Server": "Server de Joc Steam",
"Most likely causes:": "Cea mai probabilă cauză:",
"There might be a typing error in the address.": "Ar putea exista o eroare de scriere în adresă.",
"What you can try:": "Ce poți încerca:",
"Retype the address.": "Rescrie adresa.",
- "Go back to the previous page.": "Mergi la pagina precedentă.",
+ "Go back to the previous page.": "Reveniți la pagina anterioară.",
"Coming Soon": "În curând",
"Connection String": "Șirul de conexiune",
- "Query": "Query",
+ "Query": "Interogare",
"settingsCertificateExpiry": "Expirarea certificatului TLS",
- "Setup Docker Host": "Configurează Docker Host",
+ "Setup Docker Host": "Configurați Docker Host",
"Connection Type": "Tipul Conexiunii",
"Docker Daemon": "Docker Daemon",
- "deleteDockerHostMsg": "Ești sigur că vrei să ștergi acest docker host pentru toate montoarele?",
+ "deleteDockerHostMsg": "Sigur doriți să ștergeți acest docker host pentru toate monitoarele?",
"socket": "Socket",
"tcp": "TCP / HTTP",
"Docker Container": "Container Docker",
@@ -280,12 +280,12 @@
"telegram": "Telegram",
"ZohoCliq": "ZohoCliq",
"Bot Token": "Token Robot",
- "wayToGetTelegramToken": "Poți obține un token de la {0}.",
+ "wayToGetTelegramToken": "Puteți obține un token de la {0}.",
"Chat ID": "ID-ul Chat-ului",
- "YOUR BOT TOKEN HERE": "TOKEN-UL TĂU DE ROBOT",
- "chatIDNotFound": "ID-ul Chat-ului nu a fost găsit; te rog întâi trimite un mesaj către robot",
- "disableCloudflaredNoAuthMsg": "Ești în modul fără autentificare, nu ai nevoie de o parola.",
- "wayToGetLineNotifyToken": "Poți obține un token de acces de la {0}",
+ "YOUR BOT TOKEN HERE": "TOKEN-UL TĂU DE BOT AICI",
+ "chatIDNotFound": "ID-ul de chat nu a fost găsit; Vă rugăm să trimiteți mai întâi un mesaj acestui bot",
+ "disableCloudflaredNoAuthMsg": "Sunteți în modul No Auth, nu este necesară o parolă.",
+ "wayToGetLineNotifyToken": "Puteți obține un token de acces de la {0}",
"Examples": "Exemple",
"Home Assistant URL": "URL-ul de la Home Assistant",
"Long-Lived Access Token": "Token de acces cu durata de viață mare",
@@ -294,10 +294,10 @@
"Trigger type:": "Tipul Declanșatorului:",
"Event type:": "Tipul Evenimentului:",
"Event data:": "Datele Evenimentului:",
- "Then choose an action, for example switch the scene to where an RGB light is red.": "Apoi alege o acțiune, de exemplu, schimbă un LED RGB în roșu.",
- "Frontend Version": "Versiunea Frontend-ului",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Apoi alegeți o acțiune, de exemplu comutați scena în care o lumină RGB este roșie.",
+ "Frontend Version": "Versiune Frontend",
"Frontend Version do not match backend version!": "Versiunea Frontend-ului nu este aceeași cu cea a backend-ului!",
- "backupRecommend": "Te rog fă o copie a directorului (./data/) în loc.",
+ "backupRecommend": "Vă rugăm să faceți backup direct pentru volumul sau folderul de date (./data/).",
"Optional": "Opțional",
"squadcast": "Squadcast",
"or": "sau",
@@ -319,7 +319,7 @@
"lastDay2": "Penultima zi a Lunii",
"lastDay3": "Antepenultima zi a Lunii",
"No Maintenance": "Fără mentenanță",
- "pauseMaintenanceMsg": "Ești sigur că vrei sa pui pe pauză?",
+ "pauseMaintenanceMsg": "Sunteți sigur că vreți sa puneți pe pauză?",
"maintenanceStatus-under-maintenance": "În mentenanță",
"maintenanceStatus-inactive": "Inactiv",
"maintenanceStatus-scheduled": "Planificat",
@@ -331,16 +331,16 @@
"Enable DNS Cache": "(Depreciat) Activează DNS Cache pentru monitoarele HTTP(s)",
"Enable": "Activează",
"Disable": "Dezactivează",
- "Effective Date Range": "Interval în care se aplică (Optional)",
+ "Effective Date Range": "Interval în care se aplică (Opțional)",
"Schedule Maintenance": "Planifică Mentenanță",
"Date and Time": "Dată și Oră",
"DateTime Range": "Interval DatăOră",
- "loadingError": "Nu se pot obține datele, te rog încearcă mai târziu.",
+ "loadingError": "Nu se pot prelua datele, vă rugăm să încercați din nou mai târziu.",
"plugin": "Plugin | Plugin-uri",
"install": "Instalează",
"installing": "Instalare",
"uninstall": "Dezinstalează",
- "confirmUninstallPlugin": "Ești sigur că vrei să dezinstalezi acest plugin?",
+ "confirmUninstallPlugin": "Sigur doriți să dezinstalați acest plugin?",
"smtp": "Email (SMTP)",
"secureOptionNone": "Niciunul / STARTTLS (25, 587)",
"secureOptionTLS": "TLS (456)",
@@ -352,49 +352,49 @@
"Discord Webhook URL": "URL-ul Webhook-ului Discord",
"Bot Display Name": "Numele Robotului",
"Prefix Custom Message": "Prefix Personalizat",
- "Hello @everyone is...": "Salut {'@'}everyone sunt…",
- "wayToGetTeamsURL": "Poți învăța cum să creezi un URL webhook {0}.",
- "wayToGetZohoCliqURL": "Poți învăța cum să creezi un URL webhook {0}.",
- "needSignalAPI": "Trebuie să ai un client signal cu API-ul REST.",
+ "Hello @everyone is...": "Bună {'@'}toată lumea este…",
+ "wayToGetTeamsURL": "Puteți afla cum să creați o adresă URL webhook {0}.",
+ "wayToGetZohoCliqURL": "Puteți afla cum să creați o adresă URL webhook {0}.",
+ "needSignalAPI": "Trebuie să aveți un client signal cu API-ul REST.",
"Number": "Număr",
"Recipients": "Destinatari",
"Access Token": "Token de acces",
"Channel access token": "Token de acces al canalului",
- "Line Developers Console": "Consola Dezvoltatorilor Line",
- "lineDevConsoleTo": "Consola Dezvoltatorilor Line - {0}",
+ "Line Developers Console": "Consola pentru dezvoltatori de linie",
+ "lineDevConsoleTo": "Consola Dezvoltatorilor de linie - {0}",
"Basic Settings": "Setări de Bază",
"User ID": "ID-ul Utilizatorului",
"Messaging API": "API-ul pentru Mesagerie",
"Icon URL": "URL-ul Pictogramei",
- "dataRetentionTimeError": "Perioada de renenție trebuie să fie 0 sau mai mare",
- "infiniteRetention": "Setează la „0” pentru retenție pe perioadă nedeterminată.",
- "confirmDeleteTagMsg": "Ești sigur că vrei să ștergi această etichetă? Monitoarele asociate cu această etichetă nu vor fi șterse.",
- "enableGRPCTls": "Permite trimiterea cererilor gRPC cu conexiune TLS",
+ "dataRetentionTimeError": "Perioada de retenție trebuie să fie 0 sau mai mare",
+ "infiniteRetention": "Setați la „0” pentru retenție pe perioadă nedeterminată.",
+ "confirmDeleteTagMsg": "Sigur doriți să ștergeți această etichetă? Monitoarele asociate cu această etichetă nu vor fi șterse.",
+ "enableGRPCTls": "Permiteți trimiterea cererii gRPC cu conexiune TLS",
"grpcMethodDescription": "Numele metodei este convertit în format camelCase, cum ar fi sayHello, check etc.",
- "deleteMonitorMsg": "Ești sigur că vrei să ștergi acest monitor?",
- "deleteMaintenanceMsg": "Ești sigur că vrei să ștergi această mentenanță?",
- "dnsPortDescription": "Port-ul server-ului DNS. Este implicit 53. Poți schimba acest port oricând.",
- "resolverserverDescription": "Cloudflare este server-ul implicit. Poți schimba asta oricând.",
- "rrtypeDescription": "Selectează tipul RR pe care vrei să îl monitorizezi",
- "pauseMonitorMsg": "Ești sigur că vrei să pui pe pauză?",
- "clearEventsMsg": "Ești sigur că vrei să ștergi toate evenimentele asociate cu acest monitor?",
- "clearHeartbeatsMsg": "Ești sigur că vrei să ștergi toate heartbeat-urile asociate cu acest monitor?",
- "confirmClearStatisticsMsg": "Ești sigur că vrei să ștergi TOATE statisticile?",
- "confirmImportMsg": "Ești sigur că vrei să importezi backup-ul? Te rog verifică dacă ai selectat varianta corectă de importare.",
- "twoFAVerifyLabel": "Te rog introdu token-ul pentru a verifica Autentificarea în Doi Pași:",
- "tokenValidSettingsMsg": "Token-ul este valid! Acum poți salva setările legate de Autentificarea în Doi Pași.",
- "confirmEnableTwoFAMsg": "Ești sigur că vrei să activezi Autentificarea în Doi Pași?",
+ "deleteMonitorMsg": "Sigur doriți să ștergeți acest monitor?",
+ "deleteMaintenanceMsg": "Sigur doriți să ștergeți această mentenanță?",
+ "dnsPortDescription": "Port-ul server-ului DNS. Este implicit 53. Puteți schimba acest port oricând.",
+ "resolverserverDescription": "Cloudflare este server-ul implicit. Puteți schimba asta oricând.",
+ "rrtypeDescription": "Selectați tipul RR pe care doriți să îl monitorizați",
+ "pauseMonitorMsg": "Sigur vrei să pui pe pauză?",
+ "clearEventsMsg": "Sigur doriți să ștergeți toate evenimentele pentru acest monitor?",
+ "clearHeartbeatsMsg": "Sigur doriți să ștergeți toate heartbeat-urile pentru acest monitor?",
+ "confirmClearStatisticsMsg": "Sigur doriți să ștergeți TOATE statisticile?",
+ "confirmImportMsg": "Sigur doriți să importați copia de rezervă? Vă rugăm să verificați că ați selectat opțiunea corectă de import.",
+ "twoFAVerifyLabel": "Va rugăm să introduceți token-ul pentru a verifica Autentificarea în Doi Pași:",
+ "tokenValidSettingsMsg": "Token-ul este valid! Acum puteți salva setările legate de Autentificarea în Doi Pași.",
+ "confirmEnableTwoFAMsg": "Sigur doriți să activați Autentificarea în Doi Pași?",
"recurringIntervalMessage": "Rulează o dată pe zi | Rulează o dată la {0} zile",
- "affectedMonitorsDescription": "Selectează monitoarele afectate de această mentenanță",
- "atLeastOneMonitor": "Selectează cel puțin un monitor afectat",
- "passwordNotMatchMsg": "Parolele nu se potrivesc.",
- "notificationDescription": "Notificările trebuie atribuite unui monitor pentru a funcționa.",
- "backupDescription": "Acum poți face backup la toate monitoarele și notificările într-un fișier JSON.",
+ "affectedMonitorsDescription": "Selectați monitoarele care sunt afectate mentenanța curentă",
+ "atLeastOneMonitor": "Selectați cel puțin un monitor afectat",
+ "passwordNotMatchMsg": "Parola repetată nu se potrivește.",
+ "notificationDescription": "Notificările trebuie alocate unui monitor pentru a funcționa.",
+ "backupDescription": "Puteți face backup pentru toate monitoarele și notificările într-un fișier JSON.",
"backupDescription2": "Notă: istoricul și datele evenimentelor nu sunt incluse.",
"endpoint": "Punct final",
"octopushAPIKey": "„Cheia API” din credențialele HTTP API în panoul de control",
"octopushLogin": "„Logare” din credențialele HTTP API în panoul de control",
- "promosmsLogin": "Numele de Login API",
+ "promosmsLogin": "Nume de conectare API",
"promosmsPassword": "Parola API",
"pushoversounds pushover": "Pushover (implicit)",
"pushoversounds bike": "Bicicletă",
@@ -459,13 +459,13 @@
"Heartbeat Interval": "Interval Heartbeat",
"Resend Notification if Down X times consequently": "Retrimite Notificarea dacă se Întâmpină Eroarea de X ori consecutiv",
"retriesDescription": "Numărul maxim de reîncercări înainte ca serviciul să fie marcat offline și să se trimită o notificare",
- "maxRedirectDescription": "Numărul maxim de redirecționări permise. Setează la „0” pentru a dezactiva redirecționările.",
- "Theme - Heartbeat Bar": "Temă - Bara de Heartbeat",
- "Discourage search engines from indexing site": "Descurajează Motoarele de Căutare din a Indexa Acest Site",
- "disableauth.message1": "Ești sigur că vrei să {disableAuth}?",
- "disable authentication": "{disableAuth}",
- "disableauth.message2": "Este proiectat pentru scenarii {intendThirdPartyAuth} în fața Uptime Kuma, cum ar fi Cloudflare Access, Authelia, sau alt mecanism de autentificare.",
- "where you intend to implement third-party authentication": "în care intenționezi să implementezi soluții terțe de autentificare",
+ "maxRedirectDescription": "Numărul maxim de redirecționări permise. Setați la 0 pentru a dezactiva redirecționările.",
+ "Theme - Heartbeat Bar": "Temă - Bara Heartbeat",
+ "Discourage search engines from indexing site": "Descurajează motoarele de căutare să indexeze acest site",
+ "disableauth.message1": "Sigur doriți să {disableAuth}?",
+ "disable authentication": "dezactivați autentificarea",
+ "disableauth.message2": "Este conceput pentru scenarii {intendThirdPartyAuth} în fața Uptime Kuma, cum ar fi Cloudflare Access, Authelia sau alte mecanisme de autentificare.",
+ "where you intend to implement third-party authentication": "unde intenționați să implementați autentificarea terță parte",
"Login": "Logare",
"Notification Type": "Tipul Notificării",
"Email": "Email",
@@ -477,100 +477,99 @@
"Default enabled": "Implicit activat",
"Create": "Creează",
"Schedule maintenance": "Programează Mentenanță",
- "Select status pages...": "Selectează pagina de status…",
- "alertNoFile": "Te rog selectează un fișier de importat.",
- "alertWrongFileType": "Te rog selectează un fișier de tip JSON.",
+ "Select status pages...": "Selectați paginile de status…",
+ "alertNoFile": "Vă rugăm să selectați un fișier de importat.",
+ "alertWrongFileType": "Vă rugăm să selectați un fișier JSON.",
"Clear all statistics": "Șterge toate Statisticile",
- "Setup 2FA": "Configurează Autentificarea în Doi Pași",
+ "Setup 2FA": "Configurați Autentificarea în Doi Pași",
"Two Factor Authentication": "Autentificare în Doi Pași",
"Inactive": "Inactiv",
- "Add New below or Select...": "Adaugă Nou Mai Jos sau Selectează…",
+ "Add New below or Select...": "Adăugați Nou mai jos sau selectați…",
"Pink": "Roz",
- "Search...": "Caută…",
+ "Search...": "Căutare…",
"Avg. Ping": "Ping Mediu",
"Avg. Response": "Timp de Răspuns Mediu",
- "statusPageNothing": "Nimic aici, te rog adaugă un grup sau un monitor.",
- "Go to Dashboard": "Mergi la Panoul de Control",
+ "statusPageNothing": "Nimic aici, vă rugăm să adăugați un grup sau un monitor.",
+ "Go to Dashboard": "Accesați Tabloul de Control",
"webhookJsonDesc": "{0} este bun pentru orice server HTTP modern cum ar fi Express.js",
"webhookAdditionalHeadersDesc": "Setează antete adiționale trimise împreună cu webhook-ul. Fiecare antet ar trebui definit ca și cheie/valoare JSON.",
"HeadersInvalidFormat": "Formatul header-urilor de request nu este valid: ",
"clearDataOlderThan": "Păstrează istoricul monitorului pentru {0} zile.",
"records": "înregistrări",
- "steamApiKeyDescription": "Pentru a monitoriza un server de joc Steam, ai nevoie de un o cheie pentru „Web-API„-ul Steam. Poți înregistra o astfel de cheie aici: ",
+ "steamApiKeyDescription": "Pentru monitorizarea unui server de joc Steam aveți nevoie de o cheie Steam Web-API. Vă puteți înregistra cheia API aici: ",
"recent": "Recent",
"Steam API Key": "Cheia API Steam",
- "Pick a RR-Type...": "Alege un Tip-RR…",
- "Pick Accepted Status Codes...": "Alege Codurile de Status Acceptate…",
+ "Pick a RR-Type...": "Alegeți un Tip-RR…",
+ "Pick Accepted Status Codes...": "Alegeți Codurile de Status Acceptate…",
"Create Incident": "Creează un Incident",
- "primary": "implicit",
+ "primary": "principal",
"light": "luminos",
- "Please input title and content": "Te rog adaugă un titlu și conținut",
+ "Please input title and content": "Vă rugăm să introduceți titlul și conținutul",
"Created": "Creat",
- "Switch to Dark Theme": "Schimbă la Tema Întunecată",
- "Add one": "Adaugă unul",
+ "Switch to Dark Theme": "Schimbați la Tema Întunecată",
+ "Add one": "Adăugați unul",
"No Monitors": "Niciun monitor",
"Untitled Group": "Grup fără nume",
"Services": "Servicii",
- "shrinkDatabaseDescription": "Declanșează database VACUUM pentru SQLite. Dacă baza ta de date a fost creată după 1.10.0, AUTO_VACUUM este deja activat și această acțiune nu este necesară.",
"proxyDescription": "Proxy-urile trebuie să fie atribuite unui monitor pentru a funcționa.",
- "enableProxyDescription": "Acest proxy nu va afecta cererile monitoarelor până este activat. Poți dezactiva temporar proxy-ul pentru toate monitoarele.",
- "setAsDefaultProxyDescription": "Acest proxy va fi activat implicit pentru toate monitoarele noi. Poți totuși să îl dezactivezi separat pentru fiecare monitor.",
+ "enableProxyDescription": "Acest proxy nu va avea efect asupra solicitărilor monitoarelor până când nu este activat. Puteți controla dezactivarea temporară a proxy-ului de pe toate monitoarele prin starea de activare.",
+ "setAsDefaultProxyDescription": "Acest proxy va fi activat în mod implicit pentru monitoare noi. Puteți dezactiva în continuare proxy-ul separat pentru fiecare monitor.",
"Not installed": "Neinstalat",
"Accept characters:": "Acceptă caractere:",
- "The slug is already taken. Please choose another slug.": "Acest slug este deja luat. Te rog alege alt slug.",
+ "The slug is already taken. Please choose another slug.": "Slugul este deja luat. Vă rugăm să alegeți un alt slug.",
"Don't know how to get the token? Please read the guide:": "Nu știi cum să obții token-ul? Te rog citește acest ghid:",
"The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Conexiunea curentă s-ar putea pierde dacă ești în proces de conectare printr-un tunel Cloudflare. Ești sigur că vrei să îl oprești? Tastează-ți parola curentă pentru a confirma.",
- "Certificate Expiry Notification": "Notificare cu privire la expirarea certificatului",
+ "Certificate Expiry Notification": "Notificare de expirare a certificatului",
"Show update if available": "Arată actualizarea dacă e disponibilă",
"The resource is no longer available.": "Această resursă nu mai este disponibilă.",
"certificationExpiryDescription": "Monitoarele HTTPS declanșează notificarea când certificatul TLS expiră în:",
"Docker Hosts": "Gazde Docker",
"supportTelegramChatID": "Suport Mesaje Directe / Grup / ID-ul Canalului de Text",
- "wayToGetTelegramChatID": "Poți obține ID-ul chat-ului prin trimiterea unui mesaj către robot și mergând la acest URL pentru a vedea chat_id:",
- "trustProxyDescription": "Ai incredere in antetele 'X-Forwarded-*'. Dacă vrei să obții IP-ul corect al client-ului și Uptime Kuma este în spatele unui proxy, cum ar fi Nginx sau Apache, trebuie să activezi asta.",
- "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Token-ul de acces cu durată de viață mare poate fi creat dacă dai click pe numele tău de profil (stânga jos) și prin derularea până la capătul paginii și click pe „Creează Token”. ",
+ "wayToGetTelegramChatID": "Puteți obține ID-ul chat-ului prin trimiterea unui mesaj către robot și accesând acest URL pentru a vedea chat_id:",
+ "trustProxyDescription": "Aveți incredere in antetele 'X-Forwarded-*'. Dacă doriți să obțineți IP-ul corect al client-ului și Uptime Kuma este în spatele unui proxy, cum ar fi Nginx sau Apache, ar trebui să activați acest lucru.",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Token-ul de acces cu durată de viață mare poate fi creat dând click pe numele profilului dvs. (stânga jos) și derulând în jos, apoi faceți clic pe Creare Token. ",
"Notification Service": "Serviciu de Notificări",
- "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "O listă cu serviciile de notificare poate fi găsită în Home Assistant sub „Opțiuni Dezvoltator > Servicii” caută „notificare” pentru a găsi numele dispozitivului/telefonului.",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "O listă de servicii de notificare poate fi găsită în Home Assistant, sub „Instrumente pentru dezvoltatori > Servicii”, căutați „notificare” pentru a găsi numele dispozitivului/telefonului dvs.",
"backupOutdatedWarning": "Depășit: Pentru că au fost adăugate multe funcționalități, iar această funcție de backup este neîntreținută, nu poate genera sau restaura un backup complet.",
"lastDay4": "Răsantepenultima zi a Lunii",
"Display Timezone": "Afișează Fusul Orar",
- "dnsCacheDescription": "Nu funcționează in anumite medii IPv6, dezactivează dacă întâmpini probleme.",
+ "dnsCacheDescription": "Este posibil să nu funcționeze în unele medii IPv6, dezactivați-l dacă întâmpinați probleme.",
"Single Maintenance Window": "Fereastră unică de timp pentru mentennanță",
"Maintenance Time Window of a Day": "Fereastra de timp alocată pentru mentenanță dintr-o zi",
"uninstalling": "Dezinstalare",
"Ignore TLS Error": "Ignoră erorile TLS",
- "wayToGetDiscordURL": "Poți obține asta mergând în Setări Server -> Integrări -> Vezi Webhook-urile -> Webhook Nou",
- "wayToCheckSignalURL": "Poți verifica acest URL pentru a vizualiza cum să configurezi unul:",
- "wayToGetLineChannelToken": "Pentru început, accesează {0}, creează un furnizor și canal (API-ul Mesageriei), apoi poți obține token-ul de acces al canalului si ID-ul utilizatorului din itemii de meniu mentionati mai sus.",
- "aboutIconURL": "Poți furniza un link către o pictogramă la secțiunea „URL-ul Pictogramei” pentru a suprascrie imaginea de profil implicită. Nu va fi folosită dacă există un emoticon configurat deja.",
+ "wayToGetDiscordURL": "Puteți obține acest lucru mergând la Setări server -> Integrări -> Vizualizați Webhooks -> Webhook nou",
+ "wayToCheckSignalURL": "Puteți verifica această adresă URL pentru a vedea cum să configurați una:",
+ "wayToGetLineChannelToken": "Mai întâi accesați {0}, creați un furnizor și un canal (API-ul de mesagerie), apoi puteți obține simbolul de acces la canal și ID-ul utilizatorului din elementele de meniu menționate mai sus.",
+ "aboutIconURL": "Puteți furniza un link către o imagine în „Adresa URL a pictogramei” pentru a înlocui fotografia de profil implicită. Nu va fi folosit dacă este setat Icon Emoji.",
"Channel Name": "Nume Canal",
- "aboutMattermostChannelName": "Poți suprascrie canalul implicit pe care Webhook-ul îl folosește prin introducerea numelui canalului în câmpul „Nume Canal”. Acesta trebuie să fie activat în setările Webhook-ului Mattermost. Ex: #alt-canal",
- "acceptedStatusCodesDescription": "Selectează codurile de status care sunt considerate un răspuns de succes.",
- "deleteNotificationMsg": "Ești sigur că vrei să ștergi această notificare pentru toate monitoarele?",
- "enableDefaultNotificationDescription": "Această notificare va fi activată implicit pentru toate monitoarele noi. Poți totuși să o dezactivezi individual pentru fiecare monitor.",
- "importHandleDescription": "Alege „Sari Existente” dacă vrei să sari peste fiecare monitor sau notificare cu același nume. „Suprascrie” va șterge toate monitoarele și notificările existente.",
- "confirmDisableTwoFAMsg": "Ești sigur că vrei să dezactivezi Autentificarea în Doi Pași?",
- "affectedStatusPages": "Afișează acest mesaj de mentenanță pe paginile de status selectate",
- "keywordDescription": "Caută cuvântul cheie în HTML simplu sau JSON. Această căutare ține cont de majuscule.",
- "backupDescription3": "Datele importante, cum ar fi token-urile notificărilor sunt incluse în fișierul exportat; te rog stochează-l în siguranță.",
- "pushoversounds pianobar": "Pian",
+ "aboutMattermostChannelName": "Puteți înlocui canalul implicit pe care postează Webhook-ul introducând numele canalului în câmpul „Nume canal”. Acest lucru trebuie să fie activat în setările Mattermost Webhook. Ex: #alt-canal",
+ "acceptedStatusCodesDescription": "Selectați codurile de status care sunt considerate un răspuns de succes.",
+ "deleteNotificationMsg": "Sigur doriți să ștergeți această notificare pentru toate monitoarele?",
+ "enableDefaultNotificationDescription": "Această notificare va fi activată în mod implicit pentru monitoare noi. Puteți dezactiva în continuare notificarea separat pentru fiecare monitor.",
+ "importHandleDescription": "Alegeți „Omite Similare” dacă doriți să omiteți fiecare monitor sau notificare cu același nume. „Suprascrie” va șterge fiecare monitor și notificare existente.",
+ "confirmDisableTwoFAMsg": "Sigur doriți să dezactivați Autentificarea în Doi Pași?",
+ "affectedStatusPages": "Afișați acest mesaj de mentenanță pe paginile de status selectate",
+ "keywordDescription": "Căutați cuvântul cheie în HTML simplu sau răspuns JSON. Căutarea face distincție între majuscule și minuscule.",
+ "backupDescription3": "Datele importante, cum ar fi tokenele de notificare, sunt incluse în fișierul exportat; vă rugăm să păstrați exportul în siguranță.",
+ "pushoversounds pianobar": "Bar cu pian",
"pushoversounds siren": "Sirenă",
"pushoversounds spacealarm": "Alarmă Spațială",
"pushoversounds persistent": "Persistent (lung)",
"gotify": "Gotify",
"clicksendsms": "ClickSend SMS",
- "wayToGetKookBotToken": "Creează o aplicație și obține token-ul robot la {0}",
- "wayToGetKookGuildID": "Activează „Modul Dezvoltator” în setările Kook și dă click pe breaslă (guild) pentru a-i obține ID-ul",
+ "wayToGetKookBotToken": "Creați o aplicație și obțineți tokenul dvs. robot la {0}",
+ "wayToGetKookGuildID": "Activați „Modul dezvoltator” în setarea Kook și faceți clic dreapta pe breaslă pentru a obține ID-ul acesteia",
"pushoverDesc1": "Prioritate de urgență (2) are o pauză implicită de 30 de secunde între reîncercări și expiră după o oră.",
- "Setup Proxy": "Configurare Proxy",
+ "Setup Proxy": "Configurați proxy",
"Proxy Protocol": "Protocol Proxy",
- "For safety, must use secret key": "Pentru securitate, trebuie să folosești cheia secretă",
+ "For safety, must use secret key": "Pentru siguranță, trebuie să utilizați cheia secretă",
"promosmsTypeFlash": "SMS FLASH - Mesajul va fi afișat automat pe dispozitivul destinatarului. Valabil doar către destinatarii din Polonia.",
"promosmsTypeEco": "SMS ECO - ieftin dar încet și deseori supraîncărcat. Valabil doar către destinatarii din Polonia.",
"SMS Type": "Tip SMS",
"checkPrice": "Verifică {0} prețurile:",
"apiCredentials": "Credențiale API",
- "octopushLegacyHint": "Folosești versiunea veche de Octopush (2011-2020) sau noua versiune?",
+ "octopushLegacyHint": "Folosiți versiunea veche a Octopush (2011-2020) sau versiunea nouă?",
"Check octopush prices": "Verifică prețurile octopush {0}.",
"octopushPhoneNumber": "Număr de telefon (format internațional, ex : +33612345678 ",
"LunaSea Device ID": "ID Dispozitiv LunaSea",
@@ -593,7 +592,7 @@
"Free Mobile User Identifier": "Identificator utilizator Free Mobile",
"Free Mobile API Key": "Cheie API Free Mobile",
"Proto Service Name": "Nume serviciu Proto",
- "Enable TLS": "Activează TLS",
+ "Enable TLS": "Activați TLS",
"Economy": "Economie",
"SMSManager API Docs": "Documente API SMSManager ",
"Gateway Type": "Tip gateway",
@@ -605,13 +604,13 @@
"Proto Method": "Metodă Proto",
"Proto Content": "Conținut Proto",
"Lowcost": "Cost scăzut",
- "You can divide numbers with": "Poți împărți numerele cu",
+ "You can divide numbers with": "Puteți împărți numerele cu",
"Huawei": "Huawei",
"Proxy Server": "Server Proxy",
"Proxy server has authentication": "Serverul Proxy are autentificare",
"WebHookUrl": "WebHookURL",
"aboutWebhooks": "Mai multe detalii despre Webhooks pe: {0}",
- "signalImportant": "IMPORTANT: Nu poți amesteca grupurile și numerele în recipiente!",
+ "signalImportant": "IMPORTANT: Nu puteți amesteca grupuri și numere în destinatari!",
"Bark Group": "Grup Bark",
"Bark Sound": "Sunet Bark",
"SecretKey": "CheieSecretă",
@@ -621,12 +620,12 @@
"successKeywordExplanation": "Cuvântul cheie MQTT care va fi considerat succes",
"successKeyword": "Cuvânt Cheie Succes",
"pushViewCode": "Cum se utilizează monitorul Push? (Vizualizare cod)",
- "setupDatabaseChooseDatabase": "Ce bază de date dorești să utilizezi?",
- "setupDatabaseMariaDB": "Conectează-te la o bază de date externă MariaDB. Trebuie să setezi informațiile de conectare la baza de date.",
+ "setupDatabaseChooseDatabase": "Ce bază de date ați dori să utilizați?",
+ "setupDatabaseMariaDB": "Conectați-vă la o bază de date externă MariaDB. Trebuie să setați informațiile de conectare la baza de date.",
"setupDatabaseSQLite": "Un fișier de bază de date simplu, recomandat pentru implementări la scară mică. Înainte de v2.0.0, Uptime Kuma folosea SQLite ca bază de date implicită.",
"dbName": "Numele bazei de date",
"pagertreeCritical": "Critic",
- "setupDatabaseEmbeddedMariaDB": "Nu trebuie să setezi nimic. Această imagine Docker a încorporat și configurat automat MariaDB pentru tine. Uptime Kuma se va conecta la această bază de date prin socket Unix.",
+ "setupDatabaseEmbeddedMariaDB": "Nu trebuie să setați nimic. Această imagine Docker a încorporat și configurat automat MariaDB pentru dvs. Uptime Kuma se va conecta la această bază de date prin socket Unix.",
"statusPageSpecialSlugDesc": "Slug special {0}: această pagină va fi afișată atunci când nu este furnizat niciun slug",
"chromeExecutableDescription": "Pentru utilizatorii Docker, dacă Chromium nu este încă instalat, instalarea și afișarea rezultatului testului poate dura câteva minute. Este nevoie de 1 GB de spațiu pe disc.",
"apiKeyAddedMsg": "Cheia dvs. API a fost adăugată. Vă rugăm să rețineți că nu va fi afișată din nou.",
@@ -638,7 +637,7 @@
"settingUpDatabaseMSG": "Configurarea bazei de date. Poate dura ceva timp, vă rugăm să aveți răbdare.",
"Search monitored sites": "Căutați site-uri monitorizate",
"pushoverMessageTtl": "Mesaj TTL (secunde)",
- "matrixDesc1": "Poți găsi ID-ul camerei interne uitându-te în rubrica avansată a setărilor camerei în clientul tau Matrix. Ar trebui să arate așa QMdRCpUlfLwsfjxye6:home.server.",
+ "matrixDesc1": "Puteți găsi ID-ul intern al camerei uitându-vă în secțiunea avansată a setărilor camerei din clientul dvs. Matrix. Ar trebui să arate ca !QMdRCpUIfLwsfjxye6:home.server.",
"matrixDesc2": "Este foarte recomandat să creați un utilizator nou și să nu utilizați propriul simbol de acces al utilizatorului Matrix, deoarece acesta va permite accesul deplin la contul dvs. și la toate camerele la care v-ați alăturat. În schimb, creați un utilizator nou și invitați-l doar în sala în care doriți să primiți notificarea. Puteți obține tokenul de acces rulând {0}",
"Notify Channel": "Canal de Notificare",
"aboutNotifyChannel": "Canalul de notificare va declanșa o notificare pe desktop sau pe mobil pentru toți membrii canalului, indiferent dacă disponibilitatea acestora este setată activ sau absent.",
@@ -671,7 +670,7 @@
"templateMonitorJSON": "object care descrie monitorul",
"noDockerHostMsg": "Nu este disponibil. Configurați mai întâi un host Docker.",
"DockerHostRequired": "Vă rugăm să setați Host Docker pentru acest monitor.",
- "tailscalePingWarning": "Pentru a utiliza monitorul Tailscale Ping, trebuie să instalezi Uptime Kuma fără Docker și, de asemenea, să instalezi clientul Tailscale pe server.",
+ "tailscalePingWarning": "Pentru a utiliza monitorul Tailscale Ping, trebuie să instalați Uptime Kuma fără Docker și, de asemenea, să instalați clientul Tailscale pe server.",
"endDateTime": "Dată/Oră de final",
"cronSchedule": "Program: ",
"enableNSCD": "Activare NSCD (Name Service Cache Daemon) pentru memorarea în cache a tuturor solicitărilor DNS",
@@ -689,9 +688,8 @@
"emailTemplateLimitedToUpDownNotification": "disponibil numai pentru heartbeat-uri UP/DOWN, altfel nul",
"emailTemplateStatus": "Stare",
"invertKeywordDescription": "Căutați după cuvântul cheie să fie absent și nu prezent.",
- "jsonQueryDescription": "Efectuați o interogare json după răspuns și verificați valoarea așteptată (valoarea returnată va fi convertită în șir pentru comparație). Consultați {0} pentru documentația despre limbajul de interogare. Un playground poate fi găsit {1}.",
"goAlertInfo": "GoAlert este o aplicație open source pentru programarea apelurilor, escalări automate și notificări (cum ar fi SMS-uri sau apeluri vocale). Angajați automat persoana potrivită, în modul potrivit și la momentul potrivit! {0}",
- "goAlertIntegrationKeyInfo": "Obține cheia generică de integrare API pentru serviciu în formatul \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" de obicei valoarea parametrului token al URL-ului copiat.",
+ "goAlertIntegrationKeyInfo": "Obțineți cheia generică de integrare API pentru serviciu în formatul \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" de obicei valoarea parametrului token al URL-ului copiat.",
"SecretAccessKey": "Secret AccessKey",
"SignName": "NumeSemn",
"Bark API Version": "Versiunea API Bark",
@@ -724,7 +722,7 @@
"smseagleRecipient": "Destinatar(i) (mai mulți trebuie despărțiți prin virgulă)",
"smseagleToken": "Token Acces API",
"smseagleUrl": "URL-ul dispozitivului tău SMSEagle",
- "smseagleEncoding": "Trimite ca Unicode",
+ "smseagleEncoding": "Trimiteți ca Unicode",
"smseaglePriority": "Prioritate mesaj (0-9, implicit = 0)",
"Recipient Number": "Număr de telefon Destinatar",
"From Name/Number": "Nume Expeditor/Număr",
@@ -749,7 +747,7 @@
"Continue": "Continuă",
"Add Another": "Adaugă Altul",
"Key Added": "Cheie Adăugată",
- "Add API Key": "Adaugă Cheie API",
+ "Add API Key": "Adăugați cheia API",
"No API Keys": "Fără Chei APi",
"apiKey-active": "Activ",
"apiKey-expired": "Expirat",
@@ -765,11 +763,11 @@
"pagertreeHigh": "Crescut",
"pagertreeResolve": "Rezolvare automată",
"pagertreeDoNothing": "Nu face nimic",
- "Add a new expiry notification day": "Adaugă o nouă zi de notificare de expirare",
- "Remove the expiry notification": "Elimină ziua de notificare a expirării",
+ "Add a new expiry notification day": "Adăugați o nouă zi de notificare de expirare",
+ "Remove the expiry notification": "Eliminați ziua de notificare a expirării",
"startDateTime": "Dată/Oră de început",
"cloneOf": "Clona lui {0}",
- "Check/Uncheck": "Bifează/Debifează",
+ "Check/Uncheck": "Bifați/Debifați",
"telegramSendSilently": "Trimite Silențios",
"telegramProtectContent": "Protejați redirecționarea/salvarea",
"Add New Tag": "Adaugă Etichetă Nouă",
@@ -780,7 +778,7 @@
"filterActive": "Activ",
"filterActivePaused": "Întrerupt",
"webhookBodyCustomOption": "Corp Personalizat",
- "Select": "Selectează",
+ "Select": "Selectați",
"selectedMonitorCount": "Selectat: {0}",
"cronExpression": "Expresie Cron",
"invalidCronExpression": "Expresie Cron invalidă: {0}",
@@ -807,7 +805,7 @@
"Badge Warn Days": "Badge zile de avertizare",
"monitorToastMessagesDescription": "Notificările toast pentru monitoare dispar după un anumit timp în secunde. Setat la -1, dezactivează timpul de expirare. Setat la 0, dezactivează notificările toast.",
"noGroupMonitorMsg": "Nu este disponibil. Creați mai întâi un grup de monitoare.",
- "wayToGetFlashDutyKey": "Puteți merge la Canal -> (Selectați un canal) -> Integrari -> Adăugați o nouă pagină de integrare, adăugați un \"Eveniment personalizat\" pentru a obține o adresă push, copiați cheia de integrare în adresă. Pentru mai multe informatii va rugam vizitati",
+ "wayToGetFlashDutyKey": "Puteți merge la Canal -> (Selectați un canal) -> Integrari -> Adăugați o nouă pagină de integrare, adăugați \"Uptime Kuma\" pentru a obține o adresă push, copiați cheia de integrare în adresă. Pentru mai multe informatii va rugam vizitati",
"remoteBrowsersDescription": "Browserele Remote sunt o alternativă la rularea locală a Chromium. Configurați cu un serviciu precum browserless.io sau conectați-vă la cel personal",
"Remote Browsers": "Browsere Remote",
"Remote Browser": "Browser Remote",
@@ -863,7 +861,7 @@
"Badge Up Color": "Culoarea Badge Up",
"Badge Down Color": "Culoarea Badge Down",
"Badge Pending Color": "Culoarea în așteptare Badge",
- "Badge Maintenance Color": "Culoarea in mentenanță Badge",
+ "Badge Maintenance Color": "Culoarea mentenanță Badge",
"Badge Warn Color": "Culoare atenționare Badge",
"Badge Down Days": "Badge Zile Down",
"Badge Style": "Stilul Badge",
@@ -907,5 +905,177 @@
"telegramMessageThreadIDDescription": "Opțional Identificator unic pentru threadul de mesaje țintă (subiect) al forumului; numai pentru supergrupuri de forum",
"Request Timeout": "Timeout Solicitare",
"webhookBodyPresetOption": "Presetul - {0}",
- "Resend Notification if Down X times consecutively": "Retrimiteți notificarea dacă e Down de X ori consecutiv"
+ "Resend Notification if Down X times consecutively": "Retrimiteți notificarea dacă e Down de X ori consecutiv",
+ "Channel access token (Long-lived)": "Token de acces la canal (de lungă durată)",
+ "Your User ID": "ID-ul dvs. de utilizator",
+ "documentationOf": "{0} Documentaţie",
+ "wayToGetHeiiOnCallDetails": "Cum să obțineți ID-ul declanșatorului și cheile API este explicat în {documentație}",
+ "To Phone Number": "La numărul de telefon",
+ "gtxMessagingToHint": "Format internațional, cu semnul „+” ({e164}, {e212} sau {e214})",
+ "gtxMessagingApiKeyHint": "Puteți găsi cheia dvs. API la: Conturile mele de rutare > Afișați informații despre cont > Acreditări API > API REST (v2.x)",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "De la numărul de telefon/Adresa de origine a căii de transmisie (TPOA)",
+ "gtxMessagingFromHint": "Pe telefoanele mobile, destinatarii văd TPOA afișat ca expeditor al mesajului. Sunt permise până la 11 caractere alfanumerice, un cod scurt, un cod lung local sau numere internaționale ({e164}, {e212} sau {e214})",
+ "Alphanumeric (recommended)": "Alfanumeric (recomandat)",
+ "Telephone number": "Număr de telefon",
+ "Originator": "Inițiator",
+ "cellsyntOriginator": "Vizibil pe telefonul mobil al destinatarului ca emitent al mesajului. Valorile și funcția permise depind de tipul originator al parametrului.",
+ "Destination": "Destinaţie",
+ "Allow Long SMS": "Permite SMS-uri lungi",
+ "cellsyntSplitLongMessages": "Împărțiți mesajele lungi în până la 6 părți. 153 x 6 = 918 caractere.",
+ "max 15 digits": "max 15 cifre",
+ "max 11 alphanumeric characters": "max 11 caractere alfanumerice",
+ "Originator type": "Tip de inițiator",
+ "cellsyntOriginatortypeAlphanumeric": "Șir alfanumeric (maximum 11 caractere alfanumerice). Destinatarii nu pot răspunde la mesaj.",
+ "cellsyntOriginatortypeNumeric": "Valoare numerică (maxim 15 cifre) cu număr de telefon în format internațional fără 00 înainte (de exemplu, numărul britanic 07920 110 000 ar trebui setat ca 447920110000). Destinatarii pot răspunde la mesaj.",
+ "cellsyntDestination": "Numărul de telefon al destinatarului utilizând formatul internațional cu 00 inițial urmat de codul țării, de ex. 00447920110000 pentru numărul britanic 07920 110 000 (maximum 17 cifre în total). Maximum 25000 de destinatari separați prin virgulă pentru fiecare solicitare HTTP.",
+ "callMeBotGet": "Aici puteți genera un punct final pentru {0}, {1} și {2}. Rețineți că este posibil să obțineți o rată limitată. Limitele ratelor par să fie: {3}",
+ "wayToGetWhapiUrlAndToken": "Puteți obține adresa URL API și indicativul accesând canalul dorit de la {0}",
+ "whapiRecipient": "Număr de telefon / ID de contact / ID de grup",
+ "API URL": "URL API",
+ "wayToWriteWhapiRecipient": "Numărul de telefon cu prefixul internațional, dar fără semnul plus la început ({0}), ID-ul de contact ({1}) sau ID-ul grupului ({2}).",
+ "locally configured mail transfer agent": "agent de transfer e-mail configurat local",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Fie introduceți numele de gazdă al serverului la care doriți să vă conectați, fie {localhost} dacă intenționați să utilizați un {local_mta}",
+ "Host URL": "Adresa URL a gazdei",
+ "Mentioning": "Menționând",
+ "Don't mention people": "Nu menționați oameni",
+ "Mention group": "Menționați {grup}",
+ "wayToGetSevenIOApiKey": "Accesați tabloul de bord sub app.seven.io > dezvoltator > cheie API > butonul verde de adăugare",
+ "senderSevenIO": "Numărul sau numele expeditorului",
+ "receiverSevenIO": "Număr de primire",
+ "receiverInfoSevenIO": "Dacă numărul de destinație nu se află în Germania, trebuie să adăugați codul de țară în fața numărului (de exemplu, pentru codul de țară 1 din SUA utilizați 117612121212 în loc de 017612121212)",
+ "apiKeySevenIO": "Cheia API SevenIO",
+ "Command": "Comanda",
+ "smspartnerSenderName": "Numele expeditorului SMS",
+ "smspartnerSenderNameInfo": "Trebuie să aibă între 3..=11 caractere obișnuite",
+ "mongodbCommandDescription": "Rulați o comandă MongoDB în baza de date. Pentru informații despre comenzile disponibile, consultați {documentația}",
+ "Bitrix24 Webhook URL": "URL Bitrix24 Webhook",
+ "bitrix24SupportUserID": "Introduceți ID-ul dvs. de utilizator în Bitrix24. Puteți afla ID-ul din link accesând profilul utilizatorului.",
+ "smspartnerApiurl": "Puteți găsi cheia dvs. API în tabloul de bord la {0}",
+ "smspartnerPhoneNumber": "Număr(numere) de telefon",
+ "smspartnerPhoneNumberHelptext": "Numărul trebuie să fie în format internațional {0}, {1}. Numerele multiple trebuie separate prin {2}",
+ "wayToGetBitrix24Webhook": "Puteți crea un webhook urmând pașii de la {0}",
+ "Select message type": "Selectați tipul mesajului",
+ "Send to channel": "Trimite pe canal",
+ "Create new forum post": "Creați o nouă postare pe forum",
+ "postToExistingThread": "Postați în firul de discuție/postul de forum existent",
+ "forumPostName": "Numele postării pe forum",
+ "wayToGetDiscordThreadId": "Obținerea unui subiect / ID postare forum este similară cu obținerea unui ID de canal. Citiți mai multe despre cum să obțineți ID-uri {0}",
+ "threadForumPostID": "Subiect / ID postare forum",
+ "e.g. {discordThreadID}": "ex. {discordThreadID}",
+ "whatHappensAtForumPost": "Creați o nouă postare pe forum. Acest lucru NU postează mesaje în postarea existentă. Pentru a posta în postarea existentă, utilizați „{option}”",
+ "Refresh Interval": "Interval de reîmprospătare",
+ "Refresh Interval Description": "Pagina de status va efectua o reîmprospătare completă a site-ului la fiecare {0} secunde",
+ "ignoreTLSErrorGeneral": "Ignorați eroarea TLS/SSL pentru conexiune",
+ "threemaRecipient": "Destinatar",
+ "threemaRecipientType": "Tip de destinatar",
+ "threemaRecipientTypeIdentity": "ID Threema",
+ "threemaRecipientTypeIdentityFormat": "8 caractere",
+ "threemaRecipientTypePhone": "Număr de telefon",
+ "threemaRecipientTypePhoneFormat": "E.164, fără prefixul +",
+ "threemaRecipientTypeEmail": "Adresa de e-mail",
+ "threemaSenderIdentity": "ID Gateway",
+ "threemaApiAuthenticationSecret": "Secret ID Gateway",
+ "wayToGetThreemaGateway": "Vă puteți înregistra pentru Threema Gateway {0}.",
+ "threemaSenderIdentityFormat": "8 caractere, de obicei începe cu *",
+ "threemaBasicModeInfo": "Notă: Această integrare utilizează Threema Gateway în modul de bază (criptare bazată pe server). Mai multe detalii pot fi găsite {0}.",
+ "apiKeysDisabledMsg": "Cheile API sunt dezactivate deoarece autentificarea este dezactivată.",
+ "and": "și",
+ "jsonQueryDescription": "Analizați și extrageți date specifice din răspunsul JSON al serverului folosind interogarea JSON sau folosiți „$” pentru răspunsul brut, dacă nu vă așteptați JSON. Rezultatul este apoi comparat cu valoarea așteptată, sub formă de șiruri. Consultați {0} pentru documentație și utilizați {1} pentru a experimenta interogări.",
+ "snmpCommunityStringHelptext": "Acest șir funcționează ca o parolă pentru autentificarea și controlul accesului la dispozitivele SNMP activate. Potriviți-l cu configurația dispozitivului dvs. SNMP.",
+ "Please enter a valid OID.": "Vă rugăm să introduceți un OID valid.",
+ "now": "acum",
+ "time ago": "acum {0}",
+ "-year": "-an",
+ "Json Query Expression": "Expresie de interogare Json",
+ "cacheBusterParam": "Adăugați parametrul {0}",
+ "cacheBusterParamDescription": "Parametru generat aleatoriu pentru a ignora memoria cache.",
+ "Community String": "Șir de comunitate",
+ "OID (Object Identifier)": "OID (identificator de obiect)",
+ "snmpOIDHelptext": "Introduceți OID-ul pentru senzorul sau starea pe care doriți să-l monitorizați. Utilizați instrumente de gestionare a rețelei, cum ar fi browserele MIB sau software-ul SNMP, dacă nu sunteți sigur de OID.",
+ "Condition": "Stare",
+ "SNMP Version": "Versiunea SNMP",
+ "Host Onesender": "Gazdă Onesender",
+ "privateOnesenderDesc": "Asigurați-vă că numărul de telefon este valid. Pentru a trimite mesaj la numărul de telefon privat, ex: 628123456789",
+ "wayToGetOnesenderUrlandToken": "Puteți obține adresa URL și Token accesând site-ul web Onesender. Mai multe informații {0}",
+ "OAuth Token URL": "Adresa URL a tokenului OAuth",
+ "No tags found.": "Nu au fost găsite etichete.",
+ "signl4Docs": "Puteți găsi mai multe informații despre cum să configurați SIGNL4 și despre cum să obțineți adresa URL a webhook-ului SIGNL4 în {0}.",
+ "greater than": "mai mare decât",
+ "Token Onesender": "Onesender Token",
+ "Recipient Type": "Tip Destinatar",
+ "Private Number": "Număr privat",
+ "groupOnesenderDesc": "Asigurați-vă că GroupID este valid. Pentru a trimite un mesaj în grup, de exemplu: 628123456789-342345",
+ "Group ID": "ID grup",
+ "Add Remote Browser": "Adăugați browser la distanță",
+ "New Group": "Grup nou",
+ "Group Name": "Numele grupului",
+ "OAuth2: Client Credentials": "OAuth2: credențialele clientului",
+ "Authentication Method": "Metoda de autentificare",
+ "Authorization Header": "Antet de autorizare",
+ "Form Data Body": "Corpul datelor formularului",
+ "Client ID": "ID client",
+ "Client Secret": "Secret client",
+ "OAuth Scope": "Domeniul OAuth",
+ "Optional: Space separated list of scopes": "Opțional: listă de domenii separate prin spații",
+ "Go back to home page.": "Reveniți la pagina de start.",
+ "Lost connection to the socket server.": "S-a pierdut conexiunea la serverul socket.",
+ "Cannot connect to the socket server.": "Nu se poate conecta la serverul socket.",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "URL SIGNL4 Webhook",
+ "Conditions": "Condiții",
+ "conditionAdd": "Adăugați o condiție",
+ "conditionDelete": "Ștergeți condiția",
+ "conditionAddGroup": "Adăugați grup",
+ "conditionDeleteGroup": "Ștergeți grupul",
+ "conditionValuePlaceholder": "Valoare",
+ "equals": "egală",
+ "not equals": "nu este egală",
+ "contains": "conţine",
+ "not contains": "nu conține",
+ "starts with": "începe cu",
+ "not starts with": "nu începe cu",
+ "ends with": "se termină cu",
+ "not ends with": "nu se termină cu",
+ "less than": "mai puțin decât",
+ "less than or equal to": "mai mic sau egal cu",
+ "greater than or equal to": "mai mare sau egal cu",
+ "record": "înregistrare",
+ "aboutSlackUsername": "Modifică numele afișat al expeditorului mesajului. Dacă doriți să menționați pe cineva, includeți-l în numele prietenos.",
+ "Custom sound to override default notification sound": "Sunet personalizat pentru a înlocui sunetul de notificare implicit",
+ "ignoredTLSError": "Erorile TLS/SSL au fost ignorate",
+ "Message format": "Formatul mesajului",
+ "Send rich messages": "Trimiteți mesaje complexe",
+ "Notification Channel": "Canal de notificare",
+ "Sound": "Sunet",
+ "Alphanumerical string and hyphens only": "Doar șir de caractere alfanumerice și liniuțe",
+ "Arcade": "Galerie",
+ "RabbitMQ Username": "Utilizator RabbitMQ",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "Notificările \"time sensitive\" vor fi livrate imediat, chiar dacă dispozitivul este în modul „nu deranjați”.",
+ "rabbitmqNodesDescription": "Introduceți adresa URL pentru nodurile de gestionare RabbitMQ, inclusiv protocolul și portul. Exemplu: {0}",
+ "rabbitmqHelpText": "Pentru a utiliza monitorul, va trebui să activați plugin-ul de gestionare în configurația RabbitMQ. Pentru mai multe informații, vă rugăm să consultați {rabitmq_documentation}.",
+ "Time Sensitive (iOS Only)": "Time Sensitive (numai iOS)",
+ "From": "De la",
+ "Can be found on:": "Poate fi găsit la: {0}",
+ "The phone number of the recipient in E.164 format.": "Numărul de telefon al destinatarului în format E.164.",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "Fie un ID expeditor text, fie un număr de telefon în format E.164, dacă doriți să puteți primi răspunsuri.",
+ "RabbitMQ Nodes": "Noduri de gestionare RabbitMQ",
+ "Money": "Bani",
+ "Scifi": "SF",
+ "Elevator": "Lift",
+ "Guitar": "Chitară",
+ "Pop": "Pop",
+ "Harp": "Harpă",
+ "Reveal": "Dezvăluire",
+ "Bubble": "Bule",
+ "Doorbell": "Sonerie",
+ "Flute": "Flaut",
+ "Clear": "Clar",
+ "rabbitmqNodesRequired": "Vă rugăm să setați nodurile pentru acest monitor.",
+ "rabbitmqNodesInvalid": "Vă rugăm să utilizați o adresă URL complet calificată (începând cu „http”) pentru nodurile RabbitMQ.",
+ "RabbitMQ Password": "Parolă RabbitMQ",
+ "SendGrid API Key": "Cheia API SendGrid",
+ "Separate multiple email addresses with commas": "Separați adresele de e-mail multiple cu virgule",
+ "Correct": "Corect",
+ "Fail": "Eșec",
+ "shrinkDatabaseDescriptionSqlite": "Declanșează comanda {vacuum} pentru baza de date SQLite. {auto_vacuum} este deja activat, dar acest lucru nu defragmentează baza de date și nici nu reîmpachetează paginile individuale ale bazei de date așa cum o face comanda {vacuum}."
}
diff --git a/src/lang/ru-RU.json b/src/lang/ru-RU.json
index 76a16c8ee..e055af110 100644
--- a/src/lang/ru-RU.json
+++ b/src/lang/ru-RU.json
@@ -1,13 +1,13 @@
{
"languageName": "Русский",
"checkEverySecond": "Проверка каждые {0} секунд",
- "retriesDescription": "Максимальное количество попыток перед пометкой сервиса как недоступного и отправкой уведомления",
+ "retriesDescription": "Максимальное количество попыток перед пометкой сервиса, как недоступного, и отправкой уведомления",
"ignoreTLSError": "Игнорировать ошибки TLS/SSL для HTTPS сайтов",
- "upsideDownModeDescription": "Обратить статус сервиса. Если сервис доступен, то он помечается как НЕДОСТУПНЫЙ.",
+ "upsideDownModeDescription": "Инверсия статуса. Если сервис доступен, он будет отмечен как недоступный.",
"maxRedirectDescription": "Максимальное количество перенаправлений. Поставьте 0, чтобы отключить перенаправления.",
"acceptedStatusCodesDescription": "Выберите коды статусов для определения доступности сервиса.",
"passwordNotMatchMsg": "Введённые пароли не совпадают.",
- "notificationDescription": "Привяжите уведомления к мониторам.",
+ "notificationDescription": "Необходимо привязать уведомления к монитору чтобы они функционировали.",
"keywordDescription": "Поиск слова в чистом HTML или в JSON-ответе (чувствительно к регистру).",
"pauseDashboardHome": "Пауза",
"deleteMonitorMsg": "Вы действительно хотите удалить данный монитор?",
@@ -17,32 +17,32 @@
"pauseMonitorMsg": "Вы действительно хотите приостановить?",
"Settings": "Настройки",
"Dashboard": "Панель управления",
- "New Update": "Обновление",
+ "New Update": "Новое обновление",
"Language": "Язык",
"Appearance": "Внешний вид",
"Theme": "Тема",
"General": "Общее",
"Version": "Версия",
- "Check Update On GitHub": "Проверить обновления на GitHub",
+ "Check Update On GitHub": "Проверить наличие обновления в GitHub",
"List": "Список",
"Add": "Добавить",
- "Add New Monitor": "Новый монитор",
+ "Add New Monitor": "Добавить Новый Сенсор",
"Quick Stats": "Статистика",
"Up": "Доступен",
- "Down": "Недоступен",
- "Pending": "Ожидание",
+ "Down": "Не доступен",
+ "Pending": "В ожидании",
"Unknown": "Неизвестно",
"Pause": "Пауза",
"Name": "Имя",
"Status": "Статус",
"DateTime": "Дата и время",
"Message": "Сообщение",
- "No important events": "Важных событий нет",
+ "No important events": "Нет важных событий",
"Resume": "Возобновить",
"Edit": "Изменить",
"Delete": "Удалить",
"Current": "Текущий",
- "Uptime": "Аптайм",
+ "Uptime": "Время безотказной работы",
"Cert Exp.": "Сертификат ист.",
"day": "день | дней",
"-day": "-дней",
@@ -50,34 +50,34 @@
"-hour": "-часа",
"Response": "Ответ",
"Ping": "Пинг",
- "Monitor Type": "Тип монитора",
- "Keyword": "Слово",
+ "Monitor Type": "Тип Монитора",
+ "Keyword": "Ключевое слово",
"Friendly Name": "Имя",
- "URL": "URL",
+ "URL": "URL-ссылка",
"Hostname": "Имя хоста",
"Port": "Порт",
"Heartbeat Interval": "Частота опроса",
"Retries": "Попыток",
"Advanced": "Дополнительно",
- "Upside Down Mode": "Реверс статуса",
+ "Upside Down Mode": "Режим инверсии статуса",
"Max. Redirects": "Макс. количество перенаправлений",
"Accepted Status Codes": "Допустимые коды статуса",
"Save": "Сохранить",
"Notifications": "Уведомления",
- "Not available, please setup.": "Доступных уведомлений нет, необходимо создать.",
- "Setup Notification": "Создать уведомление",
+ "Not available, please setup.": "Уведомления не доступны, требуется настройка.",
+ "Setup Notification": "Настройка уведомления",
"Light": "Светлая",
"Dark": "Тёмная",
- "Auto": "Авто",
+ "Auto": "Как в системе",
"Theme - Heartbeat Bar": "Полоса частоты опроса",
"Normal": "Обычный",
- "Bottom": "Снизу",
+ "Bottom": "Внизу",
"None": "Отсутствует",
- "Timezone": "Часовой пояс",
+ "Timezone": "Часовой пояс TZ",
"Search Engine Visibility": "Индексация поисковыми системами",
"Allow indexing": "Разрешить индексирование",
"Discourage search engines from indexing site": "Запретить индексирование",
- "Change Password": "Сменить пароль",
+ "Change Password": "Изменить пароль",
"Current Password": "Текущий пароль",
"New Password": "Новый пароль",
"Repeat New Password": "Повтор нового пароля",
@@ -86,11 +86,11 @@
"Enable Auth": "Включить авторизацию",
"disableauth.message1": "Вы уверены, что хотите {disableAuth}?",
"disable authentication": "отключить авторизацию",
- "disableauth.message2": "Это подходит для {intendThirdPartyAuth} перед открытием Uptime Kuma, например Cloudflare Access и т.п.",
- "where you intend to implement third-party authentication": "тех, у кого стоит другая авторизация",
+ "disableauth.message2": "Это подходит для сценариев {intendThirdPartyAuth} с аутентифицирующими механизмами перед Uptime Kuma (например Cloudflare Access, Authelia и др.).",
+ "where you intend to implement third-party authentication": "где вы собираетесь реализовать стороннюю аутентификацию",
"Please use this option carefully!": "Пожалуйста, используйте с осторожностью!",
"Logout": "Выйти",
- "Leave": "Отмена",
+ "Leave": "Оставить",
"I understand, please disable": "Я понимаю, всё равно отключить",
"Confirm": "Подтвердить",
"Yes": "Да",
@@ -99,12 +99,12 @@
"Password": "Пароль",
"Remember me": "Запомнить меня",
"Login": "Вход в систему",
- "No Monitors, please": "Мониторов нет, пожалуйста",
+ "No Monitors, please": "Без Мониторов, пожалуйста",
"No Monitors": "Мониторы отсутствуют",
- "add one": "создайте новый",
+ "add one": "добавить",
"Notification Type": "Тип уведомления",
- "Email": "Почта",
- "Test": "Проверка",
+ "Email": "Электронная почта",
+ "Test": "Тест",
"Certificate Info": "Информация о сертификате",
"Resolver Server": "DNS сервер",
"Resource Record Type": "Тип ресурсной записи",
@@ -117,12 +117,12 @@
"clearEventsMsg": "Вы действительно хотите удалить всю статистику событий данного монитора?",
"clearHeartbeatsMsg": "Вы действительно хотите удалить всю статистику опросов данного монитора?",
"confirmClearStatisticsMsg": "Вы действительно хотите удалить ВСЮ статистику?",
- "Clear Data": "Удалить статистику",
+ "Clear Data": "Стереть данные",
"Events": "События",
"Heartbeats": "Опросы",
"Auto Get": "Авто-получение",
- "enableDefaultNotificationDescription": "Для каждого нового монитора это уведомление будет включено по умолчанию. Вы всё ещё можете отключить уведомления в каждом мониторе отдельно.",
- "Default enabled": "Использовать по умолчанию",
+ "enableDefaultNotificationDescription": "Это уведомление будет включено по умолчанию для каждого нового монитора. Вы можете отключить уведомления в каждом мониторе отдельно.",
+ "Default enabled": "По умолчанию включён",
"Also apply to existing monitors": "Применить к существующим мониторам",
"Export": "Экспорт",
"Import": "Импорт",
@@ -147,21 +147,21 @@
"Token": "Токен",
"Show URI": "Показать URI",
"Clear all statistics": "Очистить статистику",
- "retryCheckEverySecond": "Повтор каждые {0} секунд",
+ "retryCheckEverySecond": "Повторять каждые {0} секунд",
"importHandleDescription": "Выберите \"Пропустить существующие\", если вы хотите пропустить каждый монитор или уведомление с таким же именем. \"Перезаписать\" удалит каждый существующий монитор или уведомление и добавит заново. Вариант \"Не проверять\" принудительно восстанавливает все мониторы и уведомления, даже если они уже существуют.",
"confirmImportMsg": "Вы действительно хотите восстановить резервную копию? Убедитесь, что вы выбрали подходящий вариант импорта.",
- "Heartbeat Retry Interval": "Интервал повтора опроса",
- "Import Backup": "Импорт",
- "Export Backup": "Скачать",
+ "Heartbeat Retry Interval": "Интервал повтора запроса",
+ "Import Backup": "Импорт резервной копии",
+ "Export Backup": "Скачать резервную копию",
"Skip existing": "Пропустить существующие",
"Overwrite": "Перезаписать",
"Options": "Опции",
- "Keep both": "Не проверять",
+ "Keep both": "Оставить оба",
"Tags": "Теги",
"Add New below or Select...": "Добавить новый или выбрать…",
- "Tag with this name already exist.": "Такой тег уже существует.",
+ "Tag with this name already exist.": "Тег с таким именем уже существует.",
"Tag with this value already exist.": "Тег с таким значением уже существует.",
- "color": "цвет",
+ "color": "Цвет",
"value (optional)": "значение (необязательно)",
"Gray": "Серый",
"Red": "Красный",
@@ -172,18 +172,18 @@
"Purple": "Пурпурный",
"Pink": "Розовый",
"Search...": "Поиск…",
- "Avg. Ping": "Среднее значение пинга",
- "Avg. Response": "Среднее время ответа",
- "Entry Page": "Главная страница",
- "statusPageNothing": "Здесь пусто. Добавьте группу или монитор.",
- "No Services": "Нет сервисов",
+ "Avg. Ping": "Сред. Пинг",
+ "Avg. Response": "Сред. Отклик",
+ "Entry Page": "Главная",
+ "statusPageNothing": "Ничего нет, добавьте группу или монитор.",
+ "No Services": "Нет Сервисов",
"All Systems Operational": "Все системы работают",
"Partially Degraded Service": "Частичная работа сервисов",
"Degraded Service": "Отказ всех сервисов",
- "Add Group": "Добавить группу",
+ "Add Group": "Добавить Группу",
"Add a monitor": "Добавить монитор",
- "Edit Status Page": "Редактировать",
- "Go to Dashboard": "Панель управления",
+ "Edit Status Page": "Редактировать Страницу Статусов",
+ "Go to Dashboard": "В Панель Управления",
"Status Page": "Страница статуса",
"Status Pages": "Страницы статуса",
"Discard": "Отмена",
@@ -209,10 +209,10 @@
"line": "Line Messenger",
"mattermost": "Mattermost",
"Primary Base URL": "Основной URL",
- "Push URL": "URL пуша",
+ "Push URL": "URL-ссылка push уведомлений",
"needPushEvery": "К этому URL необходимо обращаться каждые {0} секунд.",
"pushOptionalParams": "Опциональные параметры: {0}",
- "defaultNotificationName": "Моё уведомление {notification} ({number})",
+ "defaultNotificationName": "Уведомления {notification} ({number})",
"here": "здесь",
"Required": "Обязательно",
"Bot Token": "Токен бота",
@@ -297,7 +297,7 @@
"promosmsTypeSpeed": "SMS SPEED - наивысший приоритет в системе. Очень быстро и надёжно, но очень дорого (в два раза дороже, чем SMS FULL).",
"promosmsPhoneNumber": "Номер телефона (для получателей из Польши можно пропустить код региона)",
"promosmsSMSSender": "Имя отправителя SMS: Зарегистрированное или одно из имён по умолчанию: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
- "Feishu WebHookUrl": "Feishu WebHookURL",
+ "Feishu WebHookUrl": "URL-адрес Feishu WebHook",
"matrixHomeserverURL": "URL сервера (вместе с http(s):// и по желанию порт)",
"Internal Room Id": "Внутренний ID комнаты",
"matrixDesc1": "Внутренний ID комнаты можно найти в Подробностях в параметрах канала вашего Matrix клиента. Он должен выглядеть примерно как !QMdRCpUIfLwsfjxye6:home.server.",
@@ -338,7 +338,6 @@
"About": "О программе",
"Description": "Описание",
"Powered by": "Работает на",
- "shrinkDatabaseDescription": "Включает VACUUM для базы данных SQLite. Если ваша база данных была создана на версии 1.10.0 и более, AUTO_VACUUM уже включен и это действие не требуется.",
"deleteStatusPageMsg": "Вы действительно хотите удалить эту страницу статуса?",
"Style": "Стиль",
"info": "ИНФО",
@@ -409,25 +408,25 @@
"enableProxyDescription": "Этот прокси не будет влиять на запросы монитора, пока не будет активирован. Вы можете контролировать временное отключение прокси для всех мониторов через статус активации.",
"setAsDefaultProxyDescription": "Этот прокси будет по умолчанию включен для новых мониторов. Вы всё ещё можете отдельно отключать прокси в каждом мониторе.",
"Invalid": "Недействительный",
- "AccessKeyId": "AccessKey ID",
- "SecretAccessKey": "AccessKey Secret",
- "PhoneNumbers": "PhoneNumbers",
- "TemplateCode": "TemplateCode",
- "SignName": "SignName",
+ "AccessKeyId": "ID ключа доступа",
+ "SecretAccessKey": "Секретный ключ доступа",
+ "PhoneNumbers": "Номера телефонов",
+ "TemplateCode": "ШаблонКод",
+ "SignName": "Подпись",
"Sms template must contain parameters: ": "Шаблон СМС должен содержать параметры: ",
- "Bark Endpoint": "Bark Endpoint",
- "Bark Group": "Bark Group",
- "Bark Sound": "Bark Sound",
- "WebHookUrl": "WebHookUrl",
+ "Bark Endpoint": "Конечная точка Bark",
+ "Bark Group": "Группа Bark",
+ "Bark Sound": "Звук уведомления Bark",
+ "WebHookUrl": "Url- адрес WebHook",
"SecretKey": "Секретный Ключ",
"For safety, must use secret key": "В целях безопасности необходимо использовать секретный ключ",
"Device Token": "Токен устройства",
"Platform": "Платформа",
- "Huawei": "Huawei",
+ "Huawei": "Huawei(Хуавей)",
"High": "High",
"Retry": "Повторить",
"Topic": "Тема",
- "WeCom Bot Key": "WeCom Bot Key",
+ "WeCom Bot Key": "Ключ бота WeCom",
"User": "Пользователь",
"Installed": "Установлено",
"Not installed": "Не установлено",
@@ -532,9 +531,9 @@
"wayToGetClickSendSMSToken": "Вы можете получить имя пользователя API и ключ API из {0} .",
"Connection String": "Строка подключения",
"Query": "Запрос",
- "settingsCertificateExpiry": "Истекание TLS сертификата",
+ "settingsCertificateExpiry": "Окончание TLS сертификата",
"certificationExpiryDescription": "HTTPS Мониторы инициируют уведомление, когда срок действия сертификата TLS истечет:",
- "Setup Docker Host": "Настроить Docker Host",
+ "Setup Docker Host": "Настройка хоста Docker",
"Connection Type": "Тип соединения",
"Docker Daemon": "Демон Docker",
"deleteDockerHostMsg": "Вы уверены, что хотите удалить этот узел docker для всех мониторов?",
@@ -572,7 +571,7 @@
"backupRecommend": "Сделайте резервную копию тома или папки с данными (./data/) напрямую.",
"Optional": "Необязательно",
"squadcast": "Squadcast",
- "SendKey": "SendKey",
+ "SendKey": "Ключ отправки",
"SMSManager API Docs": "Документация к API SMSManager ",
"Gateway Type": "Тип шлюза",
"SMSManager": "SMSManager",
@@ -582,8 +581,8 @@
"Schedule maintenance": "Запланировать техобслуживание",
"affectedMonitorsDescription": "Выберите мониторы, которые будут затронуты во время техобслуживания",
"affectedStatusPages": "Показывать уведомление о техобслуживании на выбранных страницах статуса",
- "atLeastOneMonitor": "Выберите больше одного затрагиваемого монитора",
- "dnsPortDescription": "По умолчанию порт DNS сервера - 53. Мы можете изменить его в любое время.",
+ "atLeastOneMonitor": "Выберите хотя бы один затрагиваемый монитор",
+ "dnsPortDescription": "По умолчанию порт DNS сервера - 53. Вы можете изменить его в любое время.",
"Monitor": "Монитор | Мониторы",
"webhookAdditionalHeadersTitle": "Дополнительные Заголовки",
"recurringIntervalMessage": "Запускать 1 раз каждый день | Запускать 1 раз каждые {0} дней",
@@ -599,12 +598,12 @@
"critical": "критично",
"Custom Monitor Type": "Собственный тип монитора",
"markdownSupported": "Поддерживает синтаксис Markdown",
- "Passive Monitor Type": "Пассивный тип монитора",
- "Specific Monitor Type": "Специфичный тип монитора",
+ "Passive Monitor Type": "Пассивный Тип Монитора",
+ "Specific Monitor Type": "Специфический Тип Монитора",
"Help": "Помощь",
"Game": "Игра",
"Resend Notification if Down X times consequently": "Повторно отправить уведомление, если не работает X раз подряд",
- "General Monitor Type": "Основной тип монитора",
+ "General Monitor Type": "Основной Тип Монитора",
"weekdayShortWed": "Ср",
"weekdayShortThu": "Чт",
"weekdayShortFri": "Пт",
@@ -612,7 +611,7 @@
"weekdayShortSun": "Вс",
"dayOfMonth": "День месяца",
"Pick Affected Monitors...": "Выберите затронутые мониторы…",
- "Custom": "Пользовательский",
+ "Custom": "Свой цвет",
"successMessage": "Сообщение об успехе",
"successMessageExplanation": "Сообщение MQTT, которое может рассматриваться как успешное",
"Custom CSS": "Пользовательские CSS",
@@ -664,7 +663,7 @@
"install": "Установить",
"installing": "Устанавливается",
"uninstall": "Удалить",
- "Recurring": "Текущий",
+ "Recurring": "Повторяющийся",
"recurringInterval": "Интервал",
"smseagle": "SMSEagle",
"Google Analytics ID": "ID Google Аналитики",
@@ -690,7 +689,7 @@
"Guild ID": "Идентификатор гильдии",
"Kook": "Kook",
"wayToGetKookBotToken": "Создайте приложение и получите токен бота по адресу {0}",
- "Resend Notification if Down X times consecutively": "Повторная отправка уведомления при падении несколько раз",
+ "Resend Notification if Down X times consecutively": "Повторная отправка уведомления при неудачном запросе X раз",
"telegramProtectContent": "Запретить пересылку/сохранение",
"telegramProtectContentDescription": "Если включено, сообщения бота в Telegram будут запрещены для пересылки и сохранения.",
"telegramSendSilently": "Отправить без звука",
@@ -801,18 +800,17 @@
"Badge Duration (in hours)": "Срок действия значка (в часах)",
"twilioApiKey": "API ключ (необязательно)",
"Expected Value": "Ожидаемое значение",
- "Json Query": "JSON запрос",
- "Kafka Brokers": "Kafka Brokers",
+ "Json Query": "JSON Запрос",
+ "Kafka Brokers": "Брокеры Kafka",
"Press Enter to add broker": "Нажмите Enter чтобы добавить брокера",
"Kafka Topic Name": "Название темы Kafka",
"Kafka Producer Message": "Сообщение продюсера Kafka",
"Kafka SASL Options": "Параметры SASL в Kafka",
"Mechanism": "Механизм",
"Pick a SASL Mechanism...": "Выберите механизм SASL…",
- "AccessKey Id": "AccessKey Id",
+ "AccessKey Id": "Id-значение AccessKey",
"Secret AccessKey": "Секретный ключ доступа",
"Session Token": "Токен сессии",
- "jsonQueryDescription": "Выполните json-запрос к ответу и проверьте наличие ожидаемого значения (возвращаемое значение будет преобразовано в строку для сравнения). Посмотрите {0} для получения документации по языку запросов. A Потренироваться вы можете {1}.",
"Notify Channel": "Канал оповещений",
"aboutNotifyChannel": "Уведомление о канале вызовет настольное или мобильное уведомление для всех участников канала, независимо от того, установлена ли их доступность как активная или отсутствующая.",
"Enter the list of brokers": "Введите список брокеров",
@@ -841,7 +839,7 @@
"noOrBadCertificate": "Отсутствие сертификата",
"gamedigGuessPortDescription": "Порт, используемый протоколом Valve Server Query Protocol, может отличаться от порта клиента. Попробуйте это сделать, если монитор не может подключиться к серверу.",
"nostrSender": "Закрытый ключ отправителя (nsec)",
- "wayToGetFlashDutyKey": "Вы можете перейти на страницу \"Канал\" -> (Выберите канал) -> \"Интеграции\" -> \"Добавить новую страницу интеграции\", добавить \"Пользовательское событие\", чтобы получить push-адрес, скопировать ключ интеграции в адрес. Для получения дополнительной информации, пожалуйста, посетите",
+ "wayToGetFlashDutyKey": "Вы можете перейти на страницу \"Канал\" -> (Выберите канал) -> \"Интеграции\" -> \"Добавить новую страницу интеграции\", добавить \"Uptime Kuma\", чтобы получить push-адрес, скопировать ключ интеграции в адрес. Для получения дополнительной информации, пожалуйста, посетите",
"styleElapsedTimeShowNoLine": "Показать (Без линии)",
"styleElapsedTimeShowWithLine": "Показать (С линией)",
"Server URL should not contain the nfty topic": "URL сервера не должен содержать тему nfty",
@@ -851,8 +849,8 @@
"nostrRelays": "Реле Nostr",
"nostrRelaysHelp": "Один URL-адрес ретрансляции в каждой строке",
"enableNSCD": "Включить NSCD (Name Service Cache Daemon) для кэширования всех DNS-запросов",
- "Saved.": "Сохранено",
- "setupDatabaseChooseDatabase": "Какую базу данных Вы хотите использовать?",
+ "Saved.": "Сохранено.",
+ "setupDatabaseChooseDatabase": "Какую базу данных Вы бы хотели использовать?",
"setupDatabaseEmbeddedMariaDB": "Вам не нужно ничего настраивать. В этот докер-образ автоматически встроена и настроена MariaDB. Uptime Kuma будет подключаться к этой базе данных через unix-сокет.",
"setupDatabaseSQLite": "Простой файл базы данных, рекомендуемый для небольших развертываний. До версии 2.0.0 Uptime Kuma использовал SQLite в качестве базы данных по умолчанию.",
"setupDatabaseMariaDB": "Подключитесь к внешней базе данных MariaDB. Необходимо задать информацию о подключении к базе данных.",
@@ -927,5 +925,205 @@
"deleteRemoteBrowserMessage": "Вы уверены, что хотите удалить этот удаленный браузер для всех мониторов?",
"Remove the expiry notification": "Удалить дату истечения срока действия уведомления",
"Add a new expiry notification day": "Добавить новый день уведомления об истечении срока действия",
- "What is a Remote Browser?": "Что такое удаленный браузер?"
+ "What is a Remote Browser?": "Что такое удаленный браузер?",
+ "Mention group": "Упомянуть {group}",
+ "Your User ID": "Ваш идентификатор пользователя",
+ "Host URL": "URL Хоста",
+ "locally configured mail transfer agent": "Настроенный локально агент передачи почты",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Введите {Hostname} сервера, к которому вы хотите подключиться, либо {localhost}, если вы собираетесь использовать {local_mta}",
+ "wayToGetHeiiOnCallDetails": "Как получить ID триггера и ключи API , рассказывается в {documentation}",
+ "gtxMessagingApiKeyHint": "Вы можете найти свой ключ API на странице: Мои учетные записи маршрутизации > Показать информацию об учетной записи > Учетные данные API > REST API (v2.x)",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "Номер телефона / Адрес источника пути передачи (АИПП)",
+ "Alphanumeric (recommended)": "Буквенно-цифровой (рекомендуется)",
+ "Originator type": "Тип источника",
+ "cellsyntOriginatortypeAlphanumeric": "Буквенно-цифровая строка (не более 11 символов). Получатели не могут ответить на это сообщение.",
+ "cellsyntOriginatortypeNumeric": "Числовое значение (не более 15 цифр) с номером телефона в международном формате, без 00 в начале (например, номер Великобритании 07920 110 000 должен быть задан, как 447920110000). Получатели могут ответить на сообщение.",
+ "cellsyntDestination": "Номер телефона получателя в международном формате с 00 в начале, за которым следует код страны, например, 00447920110000 для номера Великобритании 07920 110 000 (не более 17 цифр). Не более 25000 получателей, разделенных запятыми, на один HTTP-запрос.",
+ "callMeBotGet": "Здесь вы можете сгенерировать {endpoint} для {0}, {1} и {2}. Имейте в виду, что вы можете получить ограничение по скорости. Ограничения по скорости выглядят следующим образом: {3}",
+ "gtxMessagingFromHint": "На мобильных телефонах получатели видят АИПП как отправителя сообщения. Допускается использование до 11 буквенно-цифровых символов, шорткода, местного длинного кода или международных номеров ({e164}, {e212} или {e214})",
+ "wayToWriteWhapiRecipient": "Номер телефона с международным префиксом, но без знака плюс в начале ({0}), идентификатора контакта ({1}) или идентификатора группы ({2}).",
+ "cellsyntSplitLongMessages": "Разделять длинные сообщения на 6 частей. 153 x 6 = 918 символов.",
+ "Mentioning": "Упоминание",
+ "Don't mention people": "Не упоминайте людей",
+ "gtxMessagingToHint": "Международный формат, с «+» ({e164}, {e212} или {e214})",
+ "whapiRecipient": "Номер телефона / ID контакта / ID группы",
+ "API URL": "API URL-адрес",
+ "documentationOf": "{0} Документация",
+ "senderSevenIO": "Отправляет номер или имя",
+ "receiverSevenIO": "Номер получения",
+ "wayToGetSevenIOApiKey": "Зайдите на панель управления по адресу app.seven.io > разработчик > api key > зеленая кнопка добавить",
+ "receiverInfoSevenIO": "Если номер получателя не находится в Германии, то перед номером необходимо добавить код страны (например, для США код страны 1, тогда используйте 117612121212, вместо 017612121212)",
+ "apiKeySevenIO": "SevenIO API-ключ",
+ "Telephone number": "Номер телефона",
+ "Channel access token (Long-lived)": "Токен доступа к каналу (долговечный)",
+ "wayToGetWhapiUrlAndToken": "Вы можете получить API URL и токен, зайдя в нужный вам канал с {0}",
+ "To Phone Number": "На номер телефона",
+ "Originator": "Источник",
+ "cellsyntOriginator": "Виден на мобильном телефоне получателя как отправитель сообщения. Допустимые значения и функция зависят от параметра {originatortype}.",
+ "Destination": "Пункт назначения",
+ "Allow Long SMS": "Разрешить длинные SMS",
+ "max 15 digits": "максимум 15 цифр",
+ "max 11 alphanumeric characters": "максимум 11 буквенно-цифровых символов",
+ "Command": "Команда",
+ "Create new forum post": "Создать новый пост",
+ "forumPostName": "Название поста",
+ "postToExistingThread": "Создать пост в этой ветке",
+ "Select message type": "Выберите тип сообщения",
+ "Send to channel": "Отправить в канал",
+ "Refresh Interval": "Интервал обновления",
+ "ignoreTLSErrorGeneral": "Игнорировать ошибки TLS/SSL для подключения",
+ "CurlDebugInfoOAuth2CCUnsupported": "Полная поддержка потока клиентских учетных данных OAuth отсутствует в {curl}.{newline}Пожалуйста, получите токен доступа и передайте его через параметр {oauth2_bearer}.",
+ "now": "сейчас",
+ "time ago": "{0} назад",
+ "Refresh Interval Description": "Страница статуса будет полностью обновлена каждые {0} секунд",
+ "and": "и",
+ "e.g. {discordThreadID}": "например {discordThreadID}",
+ "ignoredTLSError": "Ошибки TLS/SSL проигнорированы",
+ "Debug": "Отладка",
+ "Copy": "Скопировать",
+ "CopyToClipboardError": "Не удалось скопировать: {error}",
+ "CopyToClipboardSuccess": "Скопировано!",
+ "firewalls": "файрволы",
+ "dns resolvers": "dns резолверы",
+ "docker networks": "докер-сети",
+ "CurlDebugInfoProxiesUnsupported": "Поддержка прокси в верхней {curl} команде в настоящее время не реализована.",
+ "RabbitMQ Nodes": "Узлы управления RabbitMQ",
+ "RabbitMQ Username": "Имя пользователя RabbitMQ",
+ "shrinkDatabaseDescriptionSqlite": "Триггерная база данных {vacuum} для SQLite. {auto_vacuum} уже включен, но он не дефрагментирует базу данных и не переупаковывает отдельные страницы базы данных, как это делает команда {vacuum}.",
+ "threadForumPostID": "ID поста Форума / Ветки",
+ "whatHappensAtForumPost": "Создать новый пост на форуме. Это НЕ отправит сообщение на текущий пост. Чтобы написать сообщение в текущем посте используйте \"{option}\"",
+ "wayToGetDiscordThreadId": "Получение идентификатора темы/сообщения на форуме аналогично получению идентификатора канала. Подробнее о том, как получить идентификаторы {0}",
+ "jsonQueryDescription": "Проанализируйте и извлеките определенные данные из ответа JSON сервера с помощью запроса JSON или используйте «$» для необработанного ответа, если не ожидается JSON. Затем результат сравнивается с ожидаемым значением в виде строк. См. документацию в {0} и используйте {1} для экспериментов с запросами.",
+ "aboutSlackUsername": "Изменяет отображаемое имя отправителя сообщения. Если вы хотите упомянуть кого-то, вместо этого включите его в понятное имя.",
+ "smspartnerApiurl": "Вы можете найти свой ключ API в панели управления по адресу {0}",
+ "smspartnerPhoneNumberHelptext": "Номер должен быть в международном формате {0}, {1}. Несколько чисел должны быть разделены {2}",
+ "cacheBusterParam": "Добавить параметр {0}",
+ "cacheBusterParamDescription": "Случайно генерируемый параметр для пропуска кэшей.",
+ "bitrix24SupportUserID": "Введите свой идентификатор пользователя в Bitrix24. Узнать ID можно по ссылке, зайдя в профиль пользователя.",
+ "mongodbCommandDescription": "Запустите команду MongoDB для базы данных. Информацию о доступных командах можно найти в {документации}",
+ "Community String": "Строка сообщества",
+ "snmpCommunityStringHelptext": "Эта строка действует как пароль для аутентификации и контроля доступа к устройствам с поддержкой SNMP. Сопоставьте его с конфигурацией вашего SNMP-устройства.",
+ "snmpOIDHelptext": "Введите OID для датчика или состояния, которое вы хотите отслеживать. Используйте инструменты управления сетью, такие как браузеры MIB или программное обеспечение SNMP, если вы не уверены в OID.",
+ "threemaSenderIdentity": "ID шлюза",
+ "threemaApiAuthenticationSecret": "Секрет ID-шлюза",
+ "threemaBasicModeInfo": "Примечание. Эта интеграция использует шлюз Threema в базовом режиме (шифрование на базе сервера). Более подробную информацию можно найти {0}.",
+ "privateOnesenderDesc": "Убедитесь, что номер телефона действителен. Чтобы отправить сообщение на личный номер телефона, например: 628123456789",
+ "Group Name": "Имя группы",
+ "Authorization Header": "Заголовок авторизации",
+ "Optional: Space separated list of scopes": "Необязательно: список областей действия, разделенный пробелам",
+ "Lost connection to the socket server.": "Потеряно соединение с сервером сокетов.",
+ "signl4Docs": "Дополнительную информацию о том, как настроить SIGNL4 и как получить URL-адрес вебхук SIGNL4, можно найти в {0}.",
+ "greater than": "больше чем",
+ "Alphanumerical string and hyphens only": "Только буквенно-цифровая строка и дефисы",
+ "Reveal": "Раскрытие",
+ "Elevator": "Лифт",
+ "Custom sound to override default notification sound": "Пользовательский звук для замены звука уведомления по умолчанию",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "Уведомления, чувствительные ко времени, будут доставлены немедленно, даже если устройство находится в режиме «Не беспокоить».",
+ "rabbitmqNodesDescription": "Введите URL-адрес узлов управления RabbitMQ, включая протокол и порт. Пример: {0}",
+ "rabbitmqHelpText": "Чтобы использовать монитор, вам необходимо включить плагин управления в настройках RabbitMQ. Для получения дополнительной информации обратитесь к {rabitmq_documentation}.",
+ "Sound": "Звук",
+ "smspartnerPhoneNumber": "Номер(а) телефона",
+ "smspartnerSenderName": "Имя отправителя СМС",
+ "smspartnerSenderNameInfo": "Должно быть от 3 до 11 обычных символов",
+ "Message format": "Формат сообщения",
+ "Send rich messages": "Отправить сообщение в формате RCS",
+ "Bitrix24 Webhook URL": "URL-адрес вебхука Bitrix24",
+ "wayToGetBitrix24Webhook": "Вы можете создать вебхук, выполнив действия, описанные в {0}",
+ "OID (Object Identifier)": "OID (идентификатор объекта)",
+ "Condition": "Условие",
+ "SNMP Version": "Версия SNMP",
+ "Please enter a valid OID.": "Пожалуйста, введите действительный OID.",
+ "wayToGetThreemaGateway": "Вы можете зарегистрироваться на Threema Gateway {0}.",
+ "threemaRecipient": "Получатель",
+ "threemaRecipientType": "Тип получателя",
+ "threemaRecipientTypeIdentity": "Значение Threema-ID",
+ "threemaRecipientTypeIdentityFormat": "8 знаков",
+ "threemaRecipientTypePhone": "Номер телефона",
+ "threemaRecipientTypePhoneFormat": "Е.164, без ведущего +",
+ "threemaRecipientTypeEmail": "Адрес электронной почты",
+ "threemaSenderIdentityFormat": "8 символов, обычно начинается с *",
+ "apiKeysDisabledMsg": "Ключи API отключены, поскольку отключена аутентификация.",
+ "Host Onesender": "Хост Onesender",
+ "Token Onesender": "Токен Onesender",
+ "Recipient Type": "Тип получателя",
+ "Private Number": "Частный номер",
+ "groupOnesenderDesc": "Убедитесь, что GroupID действителен. Чтобы отправить сообщение в группу, например: 628123456789-342345",
+ "Group ID": "ID группы",
+ "wayToGetOnesenderUrlandToken": "Вы можете получить URL-адрес и токен, перейдя на веб-сайт Onesender. Дополнительная информация {0}",
+ "Add Remote Browser": "Добавить удаленный браузер",
+ "New Group": "Новая группа",
+ "OAuth2: Client Credentials": "OAuth2: учетные данные клиента",
+ "Authentication Method": "Метод аутентификации",
+ "Form Data Body": "Тело данных формы",
+ "OAuth Token URL": "URL-адрес токена OAuth",
+ "Client ID": "ID клиента",
+ "Client Secret": "Секрет клиента",
+ "OAuth Scope": "Область действия OAuth",
+ "Go back to home page.": "Вернутся на домашнюю страницу.",
+ "No tags found.": "Теги не найдены.",
+ "Cannot connect to the socket server.": "Невозможно подключиться к серверу сокетов.",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "URL-адрес вебхук SIGNL4",
+ "Conditions": "Условия",
+ "conditionAdd": "Добавить условие",
+ "conditionDelete": "Удалить условие",
+ "conditionAddGroup": "Добавить группу",
+ "conditionDeleteGroup": "Удалить группу",
+ "conditionValuePlaceholder": "Значение",
+ "equals": "равно",
+ "not equals": "не равно",
+ "contains": "содержит",
+ "not contains": "не содержит",
+ "starts with": "начинается с",
+ "not starts with": "не начинается с",
+ "ends with": "заканчивается с",
+ "not ends with": "не заканчивается с",
+ "less than": "меньше чем",
+ "less than or equal to": "меньше или равно",
+ "greater than or equal to": "больше или равно",
+ "record": "запись",
+ "Notification Channel": "Канал уведомлений",
+ "Arcade": "Аркада",
+ "Correct": "Исправить",
+ "Fail": "Ошибка",
+ "Harp": "Арфа",
+ "Bubble": "Пузырь",
+ "Doorbell": "Дверной звонок",
+ "Flute": "Флейта",
+ "Money": "Деньги",
+ "Scifi": "Сай-фай",
+ "Clear": "Очистить",
+ "Guitar": "Гитара",
+ "Pop": "Поп",
+ "Time Sensitive (iOS Only)": "Чувствительность ко времени (только iOS)",
+ "From": "От",
+ "Can be found on:": "Можно найти: {0}",
+ "The phone number of the recipient in E.164 format.": "Номер телефона получателя в формате E.164.",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "Либо идентификатор отправителя текстового сообщения, либо номер телефона в формате E.164, если вы хотите иметь возможность получать ответы.",
+ "rabbitmqNodesRequired": "Пожалуйста, установите узлы для этого монитора.",
+ "rabbitmqNodesInvalid": "Пожалуйста, используйте полный URL-адрес (начинающийся с «http») для узлов RabbitMQ.",
+ "RabbitMQ Password": "Пароль RabbitMQ",
+ "SendGrid API Key": "API-ключ SendGrid",
+ "Separate multiple email addresses with commas": "Разделяйте несколько адресов электронной почты запятыми",
+ "-year": "-год",
+ "Json Query Expression": "Выражение запроса Json",
+ "templateServiceName": "имя сервиса",
+ "templateHostnameOrURL": "hostname или URL",
+ "templateStatus": "статус",
+ "telegramServerUrlDescription": "Чтобы поднять ограничения API API Telegram или получить доступ к заблокированным районам (Китай, Иран и т.д.). Для получения дополнительной информации нажмите {0}. По умолчанию: {1}",
+ "wayToGetWahaApiKey": "Ключ API - это значение переменной среды WHATSAPP_API_KEY, которое вы использовали для запуска WAHA.",
+ "wayToGetWahaSession": "Из этой сессии WAHA отправляет уведомления на удостоверение личности чата. Вы можете найти его на приборной панели Waha.",
+ "wayToWriteWahaChatId": "Номер телефона с международным префиксом, но без знака плюс в начале ({0}), идентификатор контакта ({1}) или идентификатора группы ({2}). Уведомления отправляются на этот идентификатор чата от сеанса Waha.",
+ "wahaSession": "Сессия",
+ "wahaChatId": "Идентификатор чата (номер телефона / идентификатор контакта / идентификатор группы)",
+ "wayToGetWahaApiUrl": "Ваш экземпляр WAHA URL.",
+ "YZJ Webhook URL": "YZJ Вебхук URL",
+ "YZJ Robot Token": "YZJ Токен Робота",
+ "telegramServerUrl": "(Необязательно) URL Сервера",
+ "telegramUseTemplate": "Используйте пользовательский шаблон сообщения",
+ "telegramUseTemplateDescription": "Если включено, сообщение будет отправлено с помощью пользовательского шаблона.",
+ "telegramTemplateFormatDescription": "Telegram позволяет использовать различные языки разметки для сообщений, см. Telegram {0} для конкретных деталей.",
+ "Plain Text": "Простой текст",
+ "Message Template": "Шаблон сообщения",
+ "Template Format": "Формат шаблона"
}
diff --git a/src/lang/sk.json b/src/lang/sk.json
index 584ab1680..55ab4a0a1 100644
--- a/src/lang/sk.json
+++ b/src/lang/sk.json
@@ -51,15 +51,15 @@
"Notifications": "Notifikácie",
"Not available, please setup.": "Nedostupné, prosím nastavte.",
"Setup Notification": "Nastavenie notifikácií",
- "Dark": "Tmavá",
- "Light": "Svetlá",
+ "Dark": "Tmavý",
+ "Light": "Svetlý",
"Auto": "Automaticky",
"Normal": "Normálna",
"Bottom": "Dole",
"None": "Žiadne",
"Timezone": "Časová zóna",
"languageName": "Slovenčina",
- "Dashboard": "Dashboard",
+ "Dashboard": "Panel",
"Check Update On GitHub": "Skontrolovať aktualizáciu na GitHub-e",
"Up": "Dostupné",
"Down": "Nedostupné",
@@ -74,14 +74,14 @@
"-hour": "-hodín",
"Monitor Type": "Typ Sledovania",
"URL": "URL",
- "Hostname": "Adresa",
+ "Hostname": "Adresa servera",
"Heartbeat Interval": "Heartbeat Interval",
"Heartbeat Retry Interval": "Interval opakovania pre Heartbeat",
"retriesDescription": "Maximálny počet opakovaní pred tým, ako je služba označená ako nedostupná a je zaslaná notifikácia",
"maxRedirectDescription": "Maximálny počet presmerovaní. Hodnota 0 vypne presmerovania.",
"needPushEvery": "Tuto adresu by ste mali volať každých {0} sekúnd.",
"pushOptionalParams": "Voliteľné parametre: {0}",
- "Theme - Heartbeat Bar": "Téma - Heartbeat riadok",
+ "Theme - Heartbeat Bar": "Téma - Heartbeat panel",
"Game": "Hra",
"Search Engine Visibility": "Viditeľnosť vyhľadávačmi",
"Allow indexing": "Povoliť indexovanie",
@@ -115,7 +115,7 @@
"Export": "Exportovať",
"Import": "Importovať",
"respTime": "Čas odozvy (ms)",
- "notAvailableShort": "Nie je číslo",
+ "notAvailableShort": "N/A",
"Default enabled": "Predvolene povolené",
"Create": "Vytvoriť",
"Clear Data": "Vyčistiť dáta",
@@ -195,13 +195,13 @@
"Search...": "Hľadať…",
"statusPageNothing": "Nič tu nie je, pridajte skupinu alebo sledovanie.",
"webhookAdditionalHeadersTitle": "Ďalšie položky",
- "webhookAdditionalHeadersDesc": "Nastaví ďalšie hlavičky odoslané s webovým hákom.",
- "Webhook URL": "Webhook URL",
+ "webhookAdditionalHeadersDesc": "Nastaví ďalšie hlavičky odoslané pomocou webhooku. Každá hlavička by mala byť definovaná ako JSON kľúč/hodnota.",
+ "Webhook URL": "URL adresa webhooku",
"Application Token": "Token aplikácie",
- "Server URL": "Server URL",
+ "Server URL": "URL adresa servera",
"Priority": "Priorita",
"statusPageRefreshIn": "Obnovenie za: {0}",
- "emojiCheatSheet": "Emotikony: {0}",
+ "emojiCheatSheet": "Ťahák emotikonov: {0}",
"Read more": "Prečítajte si viac",
"appriseInstalled": "Apprise je nainštalovaný.",
"Reconnecting...": "Prepájanie...",
@@ -217,6 +217,370 @@
"Cannot connect to the socket server": "Nemožno sa pripojiť k socket serveru",
"Invert Keyword": "Prevrátiť kľúčové slovo",
"Expected Value": "Očakávaná hodnota",
- "Json Query": "Json Query",
- "Method": "Metoda"
+ "Json Query": "Json dotaz",
+ "Method": "Metóda",
+ "successKeywordExplanation": "Kľúčové slovo MQTT, ktoré sa bude považovať za úspešné",
+ "setupDatabaseChooseDatabase": "Ktorú databázu chcete použiť?",
+ "pushViewCode": "Ako používať Push monitor? (Zobraziť kód)",
+ "setupDatabaseEmbeddedMariaDB": "Nemusíte nič nastavovať. Tento obraz dockera má automaticky vloženú a nakonfigurovanú databázu MariaDB. Uptime Kuma sa k tejto databáze pripojí prostredníctvom unixového socketu.",
+ "setupDatabaseMariaDB": "Pripojenie k externej databáze MariaDB. Musíte nastaviť informácie o pripojení k databáze.",
+ "setupDatabaseSQLite": "Jednoduchý databázový súbor, ktorý sa odporúča pre malé nasadenia. Pred verziou 2.0.0 používal Uptime Kuma ako predvolenú databázu SQLite.",
+ "Host URL": "URL adresa servera",
+ "Search monitored sites": "Vyhľadať sledované stránky",
+ "successKeyword": "Kľúčové slovo úspechu",
+ "startOrEndWithOnly": "Začínať alebo končiť iba s {0}",
+ "wayToGetCloudflaredURL": "(Stiahnite si cloudflared z {0})",
+ "Don't know how to get the token? Please read the guide:": "Neviete, ako získať token? Prečítajte si príručku:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Ak sa práve pripájate cez tunel Cloudflare, aktuálne pripojenie sa môže stratiť. Ste si istí, že to chcete zastaviť? Zadajte svoje aktuálne heslo a potvrďte ho.",
+ "Certificate Chain": "Reťazec certifikátu",
+ "settingUpDatabaseMSG": "Prebieha nastavovanie databázy. Môže to chvíľu trvať, prosím buďte trpezliví.",
+ "dbName": "Názov databázy",
+ "Add one": "Pridať jeden",
+ "No Monitors": "Žiadne sledovania",
+ "Untitled Group": "Skupina bez názvu",
+ "Services": "Služby",
+ "Invalid": "Neplatné",
+ "The slug is already taken. Please choose another slug.": "Slug je už obsadený. Vyberte si prosím iný slug.",
+ "No Proxy": "Žiadny proxy",
+ "Authentication": "Overenie",
+ "HTTP Basic Auth": "Základné HTTP overenie",
+ "New Status Page": "Nová stavová stránka",
+ "Reverse Proxy": "Reverzný proxy server",
+ "Backup": "Záloha",
+ "About": "O programe",
+ "cloudflareWebsite": "Webová stránka Cloudflare",
+ "HTTP Headers": "HTTP hlavičky",
+ "Other Software": "Iný softvér",
+ "For example: nginx, Apache and Traefik.": "Napríklad: nginx, Apache a Traefik.",
+ "Please read": "Prečítajte si, prosím",
+ "pushOthers": "Ostatné",
+ "Created": "Vytvorené",
+ "ignoreTLSErrorGeneral": "Ignorovať chybu TLS/SSL pre pripojenie",
+ "programmingLanguages": "Programovacie jazyky",
+ "No monitors available.": "Žiadne sledovania nie sú k dispozícii.",
+ "templateLimitedToUpDownCertNotifications": "dostupné len pre upozornenia DOSTUPNÉ/NEDOSTUPNÉ/Platnosť certifikátu",
+ "templateLimitedToUpDownNotifications": "dostupné iba pre upozornenia DOSTUPNÉ/NEDOSTUPNÉ",
+ "BodyInvalidFormat": "Telo požiadavky nie je platný JSON: ",
+ "liquidIntroduction": "Šablóna sa dosahuje pomocou šablónovacieho jazyka Liquid. Pokyny na použitie nájdete v {0}. Toto sú dostupné premenné:",
+ "templateMsg": "správa oznámenia",
+ "templateHeartbeatJSON": "objekt popisujúci pulz",
+ "templateMonitorJSON": "objekt popisujúci sledovanie",
+ "Monitor History": "História sledovania",
+ "clearDataOlderThan": "Uchovať dáta histórie sledovania počas {0} dní.",
+ "PasswordsDoNotMatch": "Heslá sa nezhodujú.",
+ "records": "záznamy",
+ "One record": "Jeden záznam",
+ "steamApiKeyDescription": "Na monitorovanie herného servera služby Steam potrebujete kľúč Web-API služby Steam. Kľúč API si môžete zaregistrovať tu: ",
+ "Current User": "Aktuálny používateľ",
+ "topic": "Téma",
+ "topicExplanation": "Téma MQTT na sledovanie",
+ "recent": "Nedávne",
+ "Last Updated": "Naposledy aktualizované",
+ "Switch to Light Theme": "Prepnutie na svetelnú tému",
+ "Show Tags": "Zobraziť štítky",
+ "Hide Tags": "Skryť štítky",
+ "Description": "Popis",
+ "Page Not Found": "Stránka sa nenašla",
+ "locally configured mail transfer agent": "lokálne nakonfigurovaný agent na prenos pošty",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Zadajte adresu servera, ku ktorému chcete pripojiť, alebo {localhost} ak chcete používať {local_mta}",
+ "Reset Token": "Resetovať token",
+ "Done": "Hotovo",
+ "Info": "Informácie",
+ "Security": "Zabezpečenie",
+ "Steam API Key": "Kľúč API služby Steam",
+ "Pick a RR-Type...": "Vyberte typ RR…",
+ "Discard": "Vyhodiť",
+ "Select": "Vybrať",
+ "selectedMonitorCount": "Vybrané: {0}",
+ "Check/Uncheck": "Označiť/Odznačiť",
+ "Powered by": "Poháňané",
+ "proxyDescription": "Aby proxy servery fungovali, musia byť priradené k sledovaniu.",
+ "enableProxyDescription": "Tento proxy server nebude mať vplyv na požiadavky sledovania, kým nebude aktivovaný. Môžete ovládať dočasné vypnutie proxy servera zo všetkých sledovaní podľa stavu aktivácie.",
+ "Valid": "Platné",
+ "No consecutive dashes": "Žiadne po sebe idúce pomlčky",
+ "statusPageSpecialSlugDesc": "Špeciálny slug {0}: táto stránka sa zobrazí, ak nie je uvedený žiadny slug",
+ "Next": "Ďalej",
+ "shrinkDatabaseDescription": "Pomocou tejto možnosti vykonáte príkaz VACUUM nad databázou SQLite. Ak bola databáza vytvorená po vydaní verzie 1.10.0, funkcia AUTO_VACUUM je už zapnutá a táto akcia sa nevyžaduje.",
+ "Customize": "Prispôsobenie",
+ "Custom Footer": "Vlastná päta",
+ "Custom CSS": "Vlastné CSS",
+ "deleteStatusPageMsg": "Ste si istí, že chcete odstrániť túto stavovú stránku?",
+ "Proxies": "Proxy",
+ "default": "Predvolené",
+ "enabled": "Zapnuté",
+ "setAsDefault": "Nastaviť ako predvolené",
+ "deleteProxyMsg": "Ste si istí, že chcete odstrániť toto proxy pre všetky sledovania?",
+ "Body": "Telo",
+ "Message:": "Správa:",
+ "webhookBodyPresetOption": "Uložená hodnota - {0}",
+ "webhookBodyCustomOption": "Vlastné telo",
+ "Headers": "Hlavičky",
+ "PushUrl": "Push URL",
+ "HeadersInvalidFormat": "Hlavičky požiadavky nie sú platný JSON: ",
+ "Shrink Database": "Zmenšiť databázu",
+ "Pick Accepted Status Codes...": "Vybrať akceptovateľné stavové kódy…",
+ "Default": "Predvolené",
+ "HTTP Options": "Možnosti HTTP",
+ "Create Incident": "Vytvoriť incident",
+ "Title": "Názov",
+ "Content": "Obsah",
+ "Style": "Štýl",
+ "info": "info",
+ "warning": "varovanie",
+ "danger": "nebezpečenstvo",
+ "error": "chyba",
+ "User": "Používateľ",
+ "Slug": "Slug",
+ "Accept characters:": "Prijať znaky:",
+ "appriseNotInstalled": "Apprise nie je nainštalovaný. {0}",
+ "critical": "kritické",
+ "primary": "primárne",
+ "light": "svetlé",
+ "dark": "tmavé",
+ "Please input title and content": "Prosím, zadajte názov a obsah",
+ "Switch to Dark Theme": "Prepnutie na tmavú tému",
+ "Cancel": "Zrušiť",
+ "setAsDefaultProxyDescription": "Tento proxy server bude predvolene zapnutý pre nové sledovania. Proxy server môžete stále vypnúť pre každé sledovanie samostatne.",
+ "Installed": "Nainštalované",
+ "Not installed": "Nie je nainštalované",
+ "Running": "Beží",
+ "Remove Token": "Odstrániť token",
+ "Start": "Spustiť",
+ "Stop": "Zastaviť",
+ "Add New Status Page": "Pridať novú stavovú stránku",
+ "grpcMethodDescription": "Názov metódy sa prevedie do formátu camelCase, napríklad sayHello, kontrola atď.",
+ "deleteDockerHostMsg": "Ste si istí, že chcete odstrániť tohto docker hostiteľa pre všetky sledovania?",
+ "Container Name / ID": "Názov kontajnera / ID",
+ "telegramSendSilentlyDescription": "Odošle správu v tichosti. Používatelia dostanú oznámenie bez zvuku.",
+ "trustProxyDescription": "Dôverujte hlavičkám 'X-Forwarded-*'. Ak chcete získať správnu IP adresu klienta a vaša služba Uptime Kuma sa nachádza za proxy serverom, napríklad Nginx alebo Apache, mali by ste túto funkciu povoliť.",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Dlhodobý prístupový token môžete vytvoriť kliknutím na názov svojho profilu (vľavo dole) a rolovaním na spodok, potom kliknite na Vytvoriť token. ",
+ "Event data:": "Dáta udalosti:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Potom vyberte akciu, napríklad prepnite scénu na miesto, kde je svetlo RGB červené.",
+ "warningTimezone": "Používa časové pásmo servera",
+ "lastDay1": "Posledný deň mesiaca",
+ "smtpLiquidIntroduction": "Nasledujúce dve polia je možné šablónovať pomocou šablónovacieho jazyka Liquid. Pokyny na použitie nájdete v časti {0}. Toto sú dostupné premenné:",
+ "wayToGetDiscordURL": "Získate to, ak prejdete do Nastavenia servera -> Integrácie -> Zobraziť webhooky -> Nový webhook",
+ "wayToGetLineChannelToken": "Najprv pristupte k {0}, vytvorte poskytovateľa a kanál ( Rozhranie API správ), potom môžete získať prístupový token kanála a ID používateľa z vyššie uvedených položiek ponuky.",
+ "enableDefaultNotificationDescription": "Toto upozornenie bude predvolene povolené pre nové sledovania. Toto oznámenie môžete stále vypnúť pre každé sledovanie samostatne.",
+ "or": "alebo",
+ "strategyManual": "Aktívne/neaktívne ručne",
+ "cloneOf": "Duplikát {0}",
+ "smtp": "E-mail (SMTP)",
+ "secureOptionNone": "Žiadne / STARTTLS (25, 587)",
+ "Trigger type:": "Typ spúšťača:",
+ "maintenanceStatus-inactive": "Neaktívne",
+ "confirmUninstallPlugin": "Určite chcete odinštalovať tento modul?",
+ "dnsPortDescription": "Port servera DNS. Predvolená hodnota je 53. Port môžete kedykoľvek zmeniť.",
+ "noDockerHostMsg": "Nie je k dispozícii. Najprv nastavte Docker hostiteľa.",
+ "Subject:": "Predmet:",
+ "Valid To:": "Platí do:",
+ "Days Remaining:": "Zostávajúce dni:",
+ "Issuer:": "Vydavateľ:",
+ "Fingerprint:": "Odtlačok:",
+ "No status pages": "Žiadne stavové stránky",
+ "Domain Name Expiry Notification": "Oznámenie o vypršaní platnosti domény",
+ "Remove the expiry notification": "Odstrániť deň oznámenia o vypršaní platnosti",
+ "Proxy": "Proxy",
+ "Date Created": "Dátum vytvorenia",
+ "Footer Text": "Text päty",
+ "RadiusCallingStationIdDescription": "Identifikátor volajúceho zariadenia",
+ "Certificate Expiry Notification": "Oznámenie o skončení platnosti certifikátu",
+ "API Username": "Používateľské meno API",
+ "API Key": "Kľúč API",
+ "Show update if available": "Zobraziť aktualizáciu, ak je k dispozícii",
+ "Also check beta release": "Skontrolovať aj beta verziu",
+ "Using a Reverse Proxy?": "Používanie reverzného proxy servera?",
+ "Steam Game Server": "Herný server služby Steam",
+ "Most likely causes:": "Najpravdepodobnejšie príčiny:",
+ "The resource is no longer available.": "Tento zdroj už nie je k dispozícii.",
+ "There might be a typing error in the address.": "V adrese môže byť preklep.",
+ "What you can try:": "Čo môžete vyskúšať:",
+ "Retype the address.": "Znovu zadajte adresu.",
+ "Go back to the previous page.": "Návrat na predchádzajúcu stránku.",
+ "settingsCertificateExpiry": "Vypršanie platnosti certifikátu TLS",
+ "certificationExpiryDescription": "HTTPS sledovania aktivujú upozornenie, keď vyprší platnosť certifikátu TLS v:",
+ "Setup Docker Host": "Nastavenie Docker hostiteľa",
+ "Connection Type": "Typ pripojenia",
+ "Docker Daemon": "Docker démon",
+ "DockerHostRequired": "Nastavte Docker hostiteľa pre toto sledovanie.",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Docker kontajner",
+ "telegramSendSilently": "Poslať potichu",
+ "telegramProtectContent": "Ochrana preposielania/ukladania",
+ "telegramProtectContentDescription": "Ak je zapnuté, správy bota v Telegrame budú chránené pred preposielaním a ukladaním.",
+ "supportTelegramChatID": "Podpora Priameho chatu / Skupiny / ID chatu kanála",
+ "wayToGetTelegramChatID": "ID chatu môžete získať tak, že botovi pošlete správu a prejdete na túto adresu URL a uvidíte chat_id:",
+ "YOUR BOT TOKEN HERE": "VÁŠ TOKEN BOTA TU",
+ "chatIDNotFound": "ID chatu nebolo nájdené; najprv pošlite správu tomuto botovi",
+ "disableCloudflaredNoAuthMsg": "Ste v režime bez autorizácie, heslo sa nevyžaduje.",
+ "wayToGetLineNotifyToken": "Prístupový token môžete získať z {0}",
+ "Examples": "Príklady",
+ "Home Assistant URL": "URL adresa Home Assistant",
+ "Long-Lived Access Token": "Dlhodobý prístupový token",
+ "Automations can optionally be triggered in Home Assistant:": "Automatizácie možno voliteľne spúšťať v aplikácii Home Assistant:",
+ "Frontend Version": "Verzia frontendu",
+ "Frontend Version do not match backend version!": "Verzia frontendu sa nezhoduje s verziou backendu!",
+ "backupRecommend": "Namiesto toho zálohujte zväzok alebo priečinok s údajmi (./data/) priamo.",
+ "Optional": "Voliteľné",
+ "sameAsServerTimezone": "Rovnaké ako časové pásmo servera",
+ "startDateTime": "Dátum/čas začatia",
+ "endDateTime": "Dátum/čas skončenia",
+ "cronSchedule": "Harmonogram: ",
+ "invalidCronExpression": "Neplatný výraz Cron: {0}",
+ "recurringInterval": "Interval",
+ "Recurring": "Opakujúce sa",
+ "weekdayShortTue": "Ut",
+ "weekdayShortWed": "St",
+ "weekdayShortThu": "Št",
+ "weekdayShortFri": "Pia",
+ "weekdayShortMon": "Pon",
+ "weekdayShortSat": "So",
+ "weekdayShortSun": "Ne",
+ "lastDay": "Posledný deň",
+ "lastDay2": "2. posledný deň mesiaca",
+ "lastDay3": "3. posledný deň mesiaca",
+ "lastDay4": "4. posledný deň mesiaca",
+ "No Maintenance": "Žiadna údržba",
+ "maintenanceStatus-unknown": "Neznáme",
+ "IconUrl": "URL adresa ikony",
+ "chromeExecutableAutoDetect": "Automatická detekcia",
+ "chromeExecutableDescription": "Ak používatelia nástroja Docker ešte nemajú nainštalovanú aplikáciu Chromium, inštalácia a zobrazenie výsledkov testu môže trvať niekoľko minút. Zaberie 1 GB miesta na disku.",
+ "dnsCacheDescription": "V niektorých prostrediach IPv6 nemusí fungovať, ak narazíte na problémy, vypnite to.",
+ "Single Maintenance Window": "Jediné okno údržby",
+ "install": "Nainštalovať",
+ "installing": "Inštaluje sa",
+ "uninstall": "Odinštalovať",
+ "uninstalling": "Odinštalováva sa",
+ "notificationRegional": "Regionálne",
+ "Clone Monitor": "Duplikovať Sledovanie",
+ "secureOptionTLS": "TLS (465)",
+ "Ignore TLS Error": "Ignorovať chybu TLS",
+ "From Email": "Od e-mailu",
+ "emailCustomisableContent": "Prispôsobiteľný obsah",
+ "emailCustomSubject": "Vlastný predmet",
+ "leave blank for default subject": "nechajte prázdne pre predvolený predmet",
+ "emailCustomBody": "Vlastné telo",
+ "leave blank for default body": "nechajte prázdne pre predvolené telo",
+ "emailTemplateServiceName": "Názov služby",
+ "emailTemplateHostnameOrURL": "Názov hostiteľa alebo adresa URL",
+ "emailTemplateStatus": "Stav",
+ "emailTemplateMonitorJSON": "objekt popisujúci sledovanie",
+ "emailTemplateHeartbeatJSON": "objekt popisujúci pulz",
+ "Discord Webhook URL": "URL adresa Discord webhooku",
+ "Bot Display Name": "Zobrazovacie meno bota",
+ "Prefix Custom Message": "Predpona vlastnej správy",
+ "forumPostName": "Názov príspevku vo fóre",
+ "threadForumPostID": "ID vlákna / príspevku na fóre",
+ "e.g. {discordThreadID}": "napr. {discordThreadID}",
+ "whatHappensAtForumPost": "Vytvorte nový príspevok vo fóre. Toto NEPOŠLE správy do existujúceho príspevku. Ak chcete odoslať príspevok v existujúcom príspevku, použite „{option}“",
+ "wayToGetDiscordThreadId": "Získanie id vlákna / príspevku na fóre je podobné získaniu id kanála. Prečítajte si viac o tom, ako získať id {0}",
+ "wayToGetTeamsURL": "Môžete sa naučiť, ako vytvoriť URL adresu webhooku {0}.",
+ "wayToGetZohoCliqURL": "Môžete sa naučiť, ako vytvoriť URL adresu webhooku {0}.",
+ "needSignalAPI": "Musíte mať klienta signálu s rozhraním REST API.",
+ "wayToCheckSignalURL": "Na tejto adrese URL si môžete pozrieť, ako ho nastaviť:",
+ "Recipients": "Príjemcovia",
+ "Access Token": "Prístupový token",
+ "Channel access token": "Prístupový token kanála",
+ "Channel access token (Long-lived)": "Prístupový token kanála (dlhodobý)",
+ "Basic Settings": "Základné nastavenia",
+ "User ID": "ID používateľa",
+ "Your User ID": "Vaše ID používateľa",
+ "Messaging API": "Rozhranie API pre zasielanie správ",
+ "aboutIconURL": "Do položky „ URL adresa ikony“ môžete zadať odkaz na obrázok, ktorý nahradí predvolený profilový obrázok. Nepoužije sa, ak je nastavená ikona Emoji.",
+ "Icon URL": "URL adresa ikony",
+ "aboutMattermostChannelName": "Predvolený kanál, do ktorého sa webhook odosiela, môžete prepísať zadaním názvu kanála do poľa „Názov kanála“. Toto je potrebné povoliť v nastaveniach aplikácie Mattermost Webhook. Napríklad: #iný-kanál",
+ "confirmDeleteTagMsg": "Ste si istí, že chcete túto značku odstrániť? Sledovania priradené k tejto značke nebudú odstránené.",
+ "enableGRPCTls": "Povolenie odosielania požiadaviek gRPC s pripojením TLS",
+ "acceptedStatusCodesDescription": "Vyberte stavové kódy, ktoré sa považujú za úspešnú odpoveď.",
+ "deleteMonitorMsg": "Určite chcete odstrániť toto sledovanie?",
+ "deleteMaintenanceMsg": "Určite chcete odstrániť túto údržbu?",
+ "deleteNotificationMsg": "Určite chcete odstrániť toto oznámenie pre všetky sledovania?",
+ "resolverserverDescription": "Cloudflare je predvolený server. Server resolvera môžete kedykoľvek zmeniť.",
+ "rrtypeDescription": "Vyberte typ RR, ktorý chcete sledovať",
+ "Select message type": "Vyberte typ správy",
+ "Send to channel": "Odoslať do kanála",
+ "Create new forum post": "Vytvorenie nového príspevku vo fóre",
+ "postToExistingThread": "Príspevok do existujúceho vlákna / príspevku na fóre",
+ "Number": "Číslo",
+ "pauseMonitorMsg": "Určite chcete pozastaviť sledovanie?",
+ "RadiusSecretDescription": "Zdieľaný tajný kľúč medzi klientom a serverom",
+ "Clone": "Duplikovať",
+ "Refresh Interval": "Interval obnovovania",
+ "Refresh Interval Description": "Stavová stránka vykoná úplnú obnovu stránky každých {0} sekúnd",
+ "Show Powered By": "Zobraziť Poháňané",
+ "signedInDisp": "Prihlásený ako {0}",
+ "Domain Names": "Domény",
+ "RadiusCallingStationId": "Id volajúcej stanice",
+ "signedInDispDisabled": "Autorizácia zakázaná.",
+ "RadiusCalledStationIdDescription": "Identifikátor volaného zariadenia",
+ "Check how to config it for WebSocket": "Pozrite si, ako nakonfigurovať pre WebSocket",
+ "Notification Service": "Služba oznamovania",
+ "Event type:": "Typ udalosti:",
+ "pauseMaintenanceMsg": "Určite chcete pozastaviť údržbu?",
+ "maintenanceStatus-under-maintenance": "V údržbe",
+ "maintenanceStatus-scheduled": "Plánované",
+ "Server Timezone": "Časové pásmo servera",
+ "statusPageMaintenanceEndDate": "Koniec",
+ "Disable": "Zakázať",
+ "Display Timezone": "Časové pásmo pre zobrazenie",
+ "enableNSCD": "Povoliť NSCD (Name Service Cache Daemon) na ukladanie všetkých požiadaviek DNS do vyrovnávacej pamäte",
+ "Edit Maintenance": "Upraviť údržbu",
+ "Date and Time": "Dátum a čas",
+ "dataRetentionTimeError": "Doba uchovávania musí byť 0 alebo viac",
+ "infiniteRetention": "Nastavte na 0 pre nekonečné uchovávanie.",
+ "Query": "Dotaz",
+ "backupOutdatedWarning": "Vyradené: Keďže bolo pridaných veľa funkcií a táto funkcia zálohovania je trochu neudržiavaná, nemôže generovať alebo obnoviť kompletnú zálohu.",
+ "maintenanceStatus-ended": "Ukončené",
+ "Chat ID": "ID chatu",
+ "telegramMessageThreadID": "(voliteľné) ID vlákna správy",
+ "telegramMessageThreadIDDescription": "Nepovinný jedinečný identifikátor cieľového vlákna správy (témy) fóra; len pre nadskupiny fóra",
+ "Docker Host": "Docker hostiteľ",
+ "Docker Hosts": "Docker hostitelia",
+ "Domain": "Doména",
+ "Workstation": "Pracovisko",
+ "Packet Size": "Veľkosť paketu",
+ "Bot Token": "Token bota",
+ "wayToGetTelegramToken": "Token môžete získať z {0}.",
+ "Effective Date Range": "Rozsah dátumu účinnosti (voliteľné)",
+ "Schedule Maintenance": "Naplánovať údržbu",
+ "DateTime Range": "Rozsah dátumu a času",
+ "loadingError": "Nie je možné načítať údaje, skúste to prosím neskôr.",
+ "plugin": "Modul | Moduly",
+ "Coming Soon": "Už čoskoro",
+ "dayOfWeek": "Deň v týždni",
+ "dayOfMonth": "Deň v mesiaci",
+ "emailTemplateMsg": "správa oznámenia",
+ "emailTemplateLimitedToUpDownNotification": "k dispozícii len pre stav DOSTUPNÉ/NEDOSTUPNÉ, inak je nulový",
+ "To Email": "Na e-mail",
+ "smtpCC": "CC",
+ "smtpBCC": "BCC",
+ "default: notify all devices": "predvolené: upozorniť všetky zariadenia",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Zoznam notifikačných služieb nájdete v aplikácii Home Assistant v časti „Nástroje pre vývojárov > Služby“, kde vyhľadajte položku „ notifikácia“ a nájdite názov svojho zariadenia/telefónu.",
+ "tailscalePingWarning": "Ak chcete používať sledovanie Tailscale Ping, musíte nainštalovať aplikáciu Uptime Kuma bez nástroja Docker a tiež nainštalovať klienta Tailscale na server.",
+ "Enable": "Povoliť",
+ "Enable DNS Cache": "(Zastarané) Povoliť vyrovnávaciu pamäť DNS pre HTTP(s) sledovania",
+ "Post": "Publikovať",
+ "Not running": "Nebeží",
+ "RadiusSecret": "Radius Secret",
+ "cronExpression": "CRON výraz",
+ "Maintenance Time Window of a Day": "Časové okno pre údržbu v daný deň",
+ "Hello @everyone is...": "Dobrý deň, {'@'}všetci sú…",
+ "clearHeartbeatsMsg": "Naozaj chcete odstrániť všetky heartbeaty pre tento monitoring?",
+ "Trust Proxy": "Dôveryhodná proxy",
+ "RadiusCalledStationId": "ID volaného zariadenia",
+ "Connection String": "Connection String",
+ "socket": "Socket",
+ "Line Developers Console": "Konzola Line Developers",
+ "confirmClearStatisticsMsg": "Naozaj chcete odstrániť VŠETKY štatistiky?",
+ "-year": "-rok",
+ "and": "a",
+ "shrinkDatabaseDescriptionSqlite": "Podmienka spustenia príkazu pre SQLite databázu. Príkaz {auto_vacuum} je už zapnutý, ale nedochádza k defragmentácii databázy ani k prebaleniu jednotlivých stránok databázy ako to robí príkaz {vacuum}.",
+ "lineDevConsoleTo": "Konzola Line Developers - {0}",
+ "clearEventsMsg": "Naozaj chcete odstrániť všetky udalosti pre tento monitoring?",
+ "now": "teraz",
+ "time ago": "pred {0}",
+ "Json Query Expression": "Výraz dotazu JSON",
+ "ignoredTLSError": "Chyby TLS/SSL boli ignorované",
+ "Add a new expiry notification day": "Pridať nové oznámenie o vypršaní platnosti",
+ "chromeExecutable": "Spustitelný súbor Chrome/Chromium"
}
diff --git a/src/lang/sl-SI.json b/src/lang/sl-SI.json
index c57248558..c3e3da944 100644
--- a/src/lang/sl-SI.json
+++ b/src/lang/sl-SI.json
@@ -55,7 +55,7 @@
"Delete": "Izbriši",
"Current": "Trenutno",
"Uptime": "Uptime",
- "Cert Exp.": "Potek certifikata",
+ "Cert Exp.": "Pot. cer.",
"day": "dan | dni",
"-day": "-dni",
"hour": "ura",
@@ -104,7 +104,7 @@
"disable authentication": "avtentikacijo",
"disableauth.message2": "Namenjen je {intendThirdPartyAuth}, na primer Cloudflare Access.",
"where you intend to implement third-party authentication": "nekomu, ki ima pred programom Uptime Kuma vklopljeno zunanje preverjanje pristnosti",
- "Please use this option carefully!": "Uporabljajte previdno.",
+ "Please use this option carefully!": "Uporabljajte to opcijo previdno!",
"Logout": "Odjava",
"Leave": "Zapusti",
"I understand, please disable": "Razumem, prosim onemogočite",
@@ -174,7 +174,7 @@
"Purple": "Vijolična",
"Pink": "Roza",
"Search...": "Išči…",
- "Avg. Ping": "Avg. Ping",
+ "Avg. Ping": "Povp. Ping",
"Avg. Response": "Avg. odziv",
"Entry Page": "Vstopna stran",
"statusPageNothing": "Nikjer nič... Dodajte skupino ali monitor.",
@@ -315,7 +315,7 @@
"Done": "Zaključi",
"Info": "Info",
"Security": "Varnost",
- "Steam API Key": "Steam API Key",
+ "Steam API Key": "Steam API Ključ",
"Shrink Database": "Stisni bazo",
"Pick a RR-Type...": "Izberi RR tip…",
"Pick Accepted Status Codes...": "Izbiranje sprejetih kod stanja…",
@@ -349,7 +349,6 @@
"Discard": "zavrzi",
"Cancel": "Prekliči",
"Powered by": "Poganja ga",
- "shrinkDatabaseDescription": "Sprožitev podatkovne zbirke VACUUM za SQLite. Če je vaša zbirka podatkov ustvarjena po različici 1.10.0, je funkcija AUTO_VACUUM že omogočena in ta ukrep ni potreben.",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "API uporabniško ime (vključno z webapi_ prefix)",
"serwersmsAPIPassword": "API geslo",
@@ -542,5 +541,92 @@
"apiKey-active": "Aktivno",
"apiKey-expired": "Poteklo",
"Resend Notification if Down X times consecutively": "Znova pošljite obvestilo, če X-krat zapored ne uspe",
- "alertaEnvironment": "Okolje"
+ "alertaEnvironment": "Okolje",
+ "enableProxyDescription": "Ta proxy ne bo vplival na zahteve za spremljanje, dokler ni aktiviran. S stanjem aktivacije lahko nadzirate začasno onemogočanje proxy-ja na vseh monitorjih.",
+ "setAsDefaultProxyDescription": "Ta proxy bo privzeto omogočen za nove monitorje. Še vedno lahko onemogočite proxy ločeno za vsak monitor.",
+ "Steam Game Server": "Igralni strežnik Steam",
+ "There might be a typing error in the address.": "Morda je v naslovu tipkarska napaka.",
+ "certificationExpiryDescription": "Nadzorniki HTTPS sprožijo obvestilo, ko potrdilo TLS poteče v:",
+ "pushViewCode": "Kako uporabljati Push monitor? (Ogled kode)",
+ "No status pages": "Ni Status strani",
+ "deleteDockerHostMsg": "Ali res želite izbrisati tega docker gostitelja za vse monitorje?",
+ "socket": "Socket",
+ "tcp": "TCP / HTTP",
+ "Docker Container": "Docker Container",
+ "Host URL": "Gostiteljev URL",
+ "styleElapsedTime": "Pretečeni čas pod vrstico srčnega utripa",
+ "Affected Monitors": "Prizadeti Monitorji",
+ "Pick Affected Monitors...": "Izberi prizadete Monitorje…",
+ "All Status Pages": "Vse Status strani",
+ "webhookAdditionalHeadersTitle": "Dodatna zaglavja",
+ "webhookAdditionalHeadersDesc": "Nastavi dodatna zaglavja, poslane z webhookom. Vsaka glava mora biti definirana kot ključ/vrednost JSON.",
+ "topicExplanation": "MQTT tema za spremljanje",
+ "deleteProxyMsg": "Ali ste prepričani, da želite izbrisati ta proxy za vse monitorje?",
+ "Certificate Chain": "Veriga potrdil",
+ "Running": "Se izvaja",
+ "Not running": "Se ne izvaja",
+ "Accept characters:": "Sprejmi znake:",
+ "For example: nginx, Apache and Traefik.": "Na primer: nginx, Apache in Traefik.",
+ "Domain Name Expiry Notification": "Obvestilo o poteku imena domene",
+ "Proxy": "Proxy",
+ "Date Created": "Datum ustvarjanja",
+ "Footer Text": "Besedilo v nogi",
+ "Show Powered By": "Prikaži Powered By",
+ "Domain Names": "Imena domen",
+ "signedInDisp": "Prijavljen kot {0}",
+ "signedInDispDisabled": "Avtentikacija onemogočena.",
+ "proxyDescription": "Proxy-ji morajo biti dodeljeni monitor funkciji.",
+ "Certificate Expiry Notification": "Obvestilo o poteku veljavnosti potrdila",
+ "API Username": "API uporabnik",
+ "Show update if available": "Prikaži posodobitev, če je na voljo",
+ "Also check beta release": "Preverite tudi beta izdaje",
+ "Using a Reverse Proxy?": "Uporabljate povratni proxy?",
+ "Most likely causes:": "Najverjetnejši vzroki:",
+ "The resource is no longer available.": "Vir ni več na voljo.",
+ "What you can try:": "Kaj lahko poskusite:",
+ "Retype the address.": "Ponovno vnesite naslov.",
+ "Go back to the previous page.": "Vrni se na prejšnjo stran.",
+ "Coming Soon": "Prihaja kmalu",
+ "Query": "Poizvedba",
+ "settingsCertificateExpiry": "Potek potrdila TLS",
+ "Setup Docker Host": "Nastavite gostitelja Docker",
+ "Connection Type": "Vrsta povezave",
+ "Check how to config it for WebSocket": "Preverite, kako ga konfigurirati za WebSocket",
+ "Container Name / ID": "Container ime / ID",
+ "Docker Host": "Docker gostitelj",
+ "Docker Hosts": "Docker gostitelji",
+ "Domain": "Domena",
+ "Workstation": "Delovna postaja",
+ "Packet Size": "Velikost paketa",
+ "disableCloudflaredNoAuthMsg": "Ste v No Auth modusu, geslo ni potrebno.",
+ "wayToGetLineNotifyToken": "Žeton za dostop lahko dobite pri {0}",
+ "Examples": "Primeri",
+ "Home Assistant URL": "Home Assistant URL",
+ "API Key": "API ključ",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Vnesite ime gostitelja strežnika, s katerim se želite povezati, ali {localhost}, če nameravate uporabiti {local_mta}",
+ "Next": "Naslednji",
+ "wayToGetCloudflaredURL": "(Prenesite cloudflared iz {0})",
+ "startOrEndWithOnly": "Začnite ali končajte samo z {0}",
+ "No consecutive dashes": "Brez zaporednih pomišljajev",
+ "Authentication": "Avtentikacija",
+ "HTTP Basic Auth": "HTTP Basic Auth",
+ "New Status Page": "Nova Status stran",
+ "Page Not Found": "Stran ne obstaja",
+ "Reverse Proxy": "Povratni proxy",
+ "Backup": "Varnostna kopija",
+ "About": "O nas",
+ "cloudflareWebsite": "Spletno mesto Cloudflare",
+ "Message:": "Sporočilo:",
+ "Don't know how to get the token? Please read the guide:": "Ne veste, kako do žetona? Preberite vodnik:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Trenutna povezava se lahko izgubi, če se trenutno povezujete prek tunela Cloudflare. Ste prepričani, da ga želite ustaviti? Vnesite trenutno geslo, da ga potrdite.",
+ "HTTP Headers": "HTTP zaglavja",
+ "Trust Proxy": "Zaupaj proxy-ju",
+ "Other Software": "Druga programska oprema",
+ "Please read": "Prosim preberi",
+ "Subject:": "Zadeva:",
+ "Valid To:": "Velja do:",
+ "Days Remaining:": "Preostali dnevi:",
+ "Issuer:": "Izdajatelj:",
+ "Fingerprint:": "Prstni odtis:",
+ "No Proxy": "Ni proxy-ja"
}
diff --git a/src/lang/sq.json b/src/lang/sq.json
index a513329aa..d54bc3f7f 100644
--- a/src/lang/sq.json
+++ b/src/lang/sq.json
@@ -1,25 +1,255 @@
{
- "Settings": "Opsione",
- "Dashboard": "FaqeKryesore",
- "Help": "Ndihma",
+ "Settings": "Rregullime",
+ "Dashboard": "Pulti",
+ "Help": "Ndihmë",
"Language": "Gjuha",
- "Appearance": "Paraqitja",
- "Theme": "Theme",
- "General": "Te pergjithshme",
- "Game": "Loje",
- "Primary Base URL": "ULR Baze Primare",
- "List": "List",
+ "Appearance": "Shfaqja",
+ "Theme": "Tema",
+ "General": "Të përgjithshme",
+ "Game": "Lojë",
+ "Primary Base URL": "URL e bazës kryesore",
+ "List": "Listë",
"Add": "Shto",
- "Add New Monitor": "Shto Monitor te Ri",
- "Quick Stats": "Statistika Flash",
- "Up": "Lart",
- "Down": "Poshte",
- "Pending": "Ne Pritje",
- "statusMaintenance": "Mirembatje",
- "Maintenance": "Mirembajtje",
+ "Add New Monitor": "Shto Monitor të ri",
+ "Quick Stats": "Statistika të shpejta",
+ "Up": "Lartë",
+ "Down": "Poshtë",
+ "Pending": "Në pritje",
+ "statusMaintenance": "Mirëmbatje",
+ "Maintenance": "Mirëmbajtje",
"Unknown": "Panjohur",
"languageName": "Shqip",
- "New Update": "Update i ri",
- "Version": "Version",
- "Check Update On GitHub": "Kontrollo Update ne GitHub"
+ "New Update": "Përditësim i ri",
+ "Version": "Verzion",
+ "Check Update On GitHub": "Shiko për përditësim në GitHub",
+ "setupDatabaseSQLite": "Një skedar i thjeshtë për bazë të të dhënave, rekomandohet për shpërndarje të shkallës të vogël. Deri tek v2.0.0, Uptime Kuma përdorte SQLite si bazë të të dhënave të preferuar.",
+ "setupDatabaseEmbeddedMariaDB": "Nuk jeni të obliguar të përcaktoni çkado. Ky imazh i docker posedon të ngulitur dhe konfiguruar MariaDB për ju në mënyrë automatike. Uptime Kuma do të lidhet me këtë bazë të dhënash nëpërmjet një prize të unix.",
+ "setupDatabaseMariaDB": "Lidhu tek ndonjë bazë të dhënash MariaDB të jashtëm. Ju duhet të përcaktoni informacionet e lidhjes për bazën e të dhënave.",
+ "settingUpDatabaseMSG": "Duke rregulluar bazën e të dhënave. Mund të merr kohë, ju lutemi të jeni të durueshëm.",
+ "Cert Exp.": "Skadenca e Cert.",
+ "Invert Keyword": "Përmbys fjalën kyçe",
+ "needPushEvery": "Duhet të vizitohet URL çdo {0} sekonda.",
+ "Theme - Heartbeat Bar": "Tema - Bari i Pulsit",
+ "Search Engine Visibility": "Arritshmëria nga motorët e kërkimit",
+ "Notification Type": "Lloj Njoftimi",
+ "Active": "Aktive",
+ "Tag with this value already exist.": "Tanimë egziston një etiketë me këtë vlerë.",
+ "statusPageNothing": "Ska asgjë këtu, ju lutem shto një grup ose një monitor.",
+ "Edit Status Page": "Modifiko faqen e gjendjes",
+ "defaultNotificationName": "Njoftimi im i ({number}) {notification}",
+ "webhookJsonDesc": "{0} është e mirë për HTTP server moderne siç është Express.js",
+ "appriseNotInstalled": "Apprise nuk është instaluar. {0}",
+ "error": "gabim",
+ "Reset Token": "Reseto Token",
+ "Title": "Titulli",
+ "dbName": "Emri i bazës së të dhënave",
+ "Edit": "Modifiko",
+ "Email": "Email",
+ "Delete": "Fshij",
+ "Current": "Aktuale",
+ "Uptime": "Uptime",
+ "Monitor": "Monitor | Monitorët",
+ "day": "ditë | ditët",
+ "-day": "-ditë",
+ "hour": "orë",
+ "-hour": "-orë",
+ "Response": "Përgjegje",
+ "Ping": "Ping",
+ "Monitor Type": "Lloj Monitori",
+ "Keyword": "Fjalë kyçe",
+ "URL": "URL",
+ "Hostname": "Emri hostit",
+ "Port": "Porta",
+ "Heartbeat Interval": "Shpeshtia e pulsit",
+ "Friendly Name": "Nofka",
+ "ignoreTLSError": "Injoro TLS/SSL vërrejtjet për web faqet HTTPS",
+ "Push URL": "URL Shtysë",
+ "pushOptionalParams": "Parametrat jo të detyrueshme",
+ "Save": "Ruaj",
+ "Notifications": "Njoftimet",
+ "Setup Notification": "Rregullo njoftimet",
+ "Not available, please setup.": "Nuk është në dispozicion, ju lutemi rregulloni.",
+ "Light": "Ndriçuar",
+ "Dark": "Errët",
+ "Auto": "Vetvetiu",
+ "styleElapsedTimeShowWithLine": "Shfaq (Me rreshta)",
+ "styleElapsedTimeShowNoLine": "Shfaq (Pa rresht)",
+ "Normal": "Normal",
+ "Bottom": "Poshtë",
+ "None": "Asnjë",
+ "Timezone": "Zona kohore",
+ "Allow indexing": "Lejo indeksimin",
+ "Discourage search engines from indexing site": "Dekurajo motorët e kërkimit të indeksojnë këtë faqe",
+ "Change Password": "Ndrysho Fjalëkalimin",
+ "Current Password": "Fjalëkalimi Aktual",
+ "New Password": "Fjalëkalimi i ri",
+ "Repeat New Password": "Përsërit Fjalëkalimin e ri",
+ "Update Password": "Përditëso Fjalëkalimin",
+ "add one": "shto një",
+ "Current User": "Përdoruesi aktual",
+ "default": "Paracaktuar",
+ "pushOthers": "Tjerët",
+ "programmingLanguages": "Gjuhët e programimit",
+ "Disable Auth": "Ndalo autentifikimin",
+ "Enable Auth": "Lësho Autentifikimin",
+ "disableauth.message1": "A jeni të sigurtë për {disableAuth}?",
+ "Please use this option carefully!": "Ju lutem përdorni këtë mundësi me kujdes!",
+ "records": "regjistrat",
+ "disable authentication": "ndalo autentifikimin",
+ "Logout": "Ç'kyçu",
+ "Yes": "Po",
+ "No": "Jo",
+ "Username": "Emri përdorues",
+ "Password": "Fjalëkalimi",
+ "Remember me": "Më kujto",
+ "Login": "Kyçu",
+ "No Monitors, please": "Asnjë Monitor, ju lutem",
+ "I understand, please disable": "Kuptoj, të lutem ndalo",
+ "Confirm": "Konfirmo",
+ "Leave": "Largohu",
+ "Clear Data": "Pastro të dhënat",
+ "Start of maintenance": "Fillimi mirëmbajtjes",
+ "All Status Pages": "Gjithë faqet e gjendjes",
+ "Select status pages...": "Zgjedh faqe të gjendjes…",
+ "alertNoFile": "Të lutem zgjedh skedar për importim.",
+ "alertWrongFileType": "Të lutem zgjedh skedar të tipit JSON.",
+ "Clear all statistics": "Pastro gjithë statistikat",
+ "Skip existing": "Tejkalo ato që egzistojnë",
+ "Options": "Mundësitë",
+ "Keep both": "Mbaj që të dy",
+ "Verify Token": "Verifiko Token",
+ "Setup 2FA": "Rregullo 2FA",
+ "Enable 2FA": "Aktivizo 2FA",
+ "Disable 2FA": "Ndalo 2FA",
+ "2FA Settings": "2FA Rregullimet",
+ "Two Factor Authentication": "Autentifikimi Dy Faktorësh",
+ "filterActive": "Aktive",
+ "filterActivePaused": "Pushuar",
+ "Inactive": "Jo aktive",
+ "Token": "Token",
+ "Show URI": "Shfaq URI",
+ "Tags": "Etiketat",
+ "Add New Tag": "Shto Etiketë të re",
+ "Add New below or Select...": "Shto ose Zgjedh një nga mëposhtë…",
+ "Tag with this name already exist.": "Tanimë egziston një etiketë me këtë emër.",
+ "color": "Ngjyra",
+ "value (optional)": "vlera (jo detyrueshme)",
+ "Gray": "Hiri",
+ "Red": "Kuq",
+ "Orange": "Portokall",
+ "Green": "Gjelbërt",
+ "Blue": "Kaltërt",
+ "Indigo": "Llullaq",
+ "Purple": "Vjollcë",
+ "Pink": "Rozë",
+ "Custom": "Tjetër",
+ "Search...": "Kërko…",
+ "Search monitored sites": "Kërko faqet e monitoruara",
+ "Avg. Ping": "Ping Mesatar",
+ "Avg. Response": "Përgjegje Mesatare",
+ "Entry Page": "Faqja hyrjes",
+ "statusPageRefreshIn": "Rifresko në: {0}",
+ "No Services": "Ska shërbime",
+ "All Systems Operational": "Gjithë sistemet në gjendje pune",
+ "Partially Degraded Service": "Shërbime pjesërisht të degraduara",
+ "Degraded Service": "Shërbim i degraduar",
+ "Add Group": "Shto Grup",
+ "Add a monitor": "Shto një monitor",
+ "Go to Dashboard": "Shko tek Pulti",
+ "Status Page": "Faqe e gjendjes",
+ "Status Pages": "Faqet e gjendjes",
+ "here": "këtu",
+ "Required": "E detyrueshme",
+ "Post URL": "Posto URL",
+ "Content Type": "Lloji përmbajtjes",
+ "webhookFormDataDesc": "{multipart} është e mirë për PHP. JSON duhet të jet e kuptueshme me {decodeFunction}",
+ "Priority": "Prioriteti",
+ "One record": "Një regjistër",
+ "Read more": "Lexo më shumë",
+ "appriseInstalled": "Apprise është instaluar.",
+ "Method": "Metoda",
+ "Body": "Trupi",
+ "Headers": "Kokat",
+ "PushUrl": "URL Shtysë",
+ "webhookBodyCustomOption": "Trup tjetër",
+ "webhookAdditionalHeadersTitle": "Kokat shtesë",
+ "topic": "Tema",
+ "recent": "Të fundit",
+ "Done": "E bërë",
+ "Info": "Info",
+ "Security": "Siguri",
+ "Default": "Paracaktuar",
+ "HTTP Options": "Mundësitë HTTP",
+ "Content": "Përmbajtja",
+ "Style": "Stili",
+ "Create Incident": "Krijo incident",
+ "info": "info",
+ "warning": "vërrejtje",
+ "danger": "rrezik",
+ "critical": "kritike",
+ "primary": "primare",
+ "light": "ndriçuar",
+ "dark": "errët",
+ "Post": "Posto",
+ "Created": "Krijuar",
+ "Cancel": "Anulo",
+ "Discard": "Mos i ruaj",
+ "Last Updated": "Përditësuar së fundi",
+ "Show Tags": "Shfaq Etiketat",
+ "Home": "Shtëpi",
+ "Request Timeout": "Kërkesa Dështuar",
+ "timeoutAfter": "Dështo pas {0} sekondash",
+ "Resend Notification if Down X times consecutively": "Ridërgo Njoftim nëse bien X here njëpasnjë",
+ "Advanced": "Avancuar",
+ "checkEverySecond": "Kontrollo çdo {0} sekonda",
+ "retryCheckEverySecond": "Riprovo çdo {0} sekonda",
+ "resendEveryXTimes": "Ridërgo çdo {0} herë",
+ "resendDisabled": "Ridërgimi është ndalur",
+ "retriesDescription": "Maximumi provave para se shërbimi të shënohet si i rrëzuar dhe njoftimi dërgohet",
+ "maxRedirectDescription": "Maksimumi numrit të ridrejtimeve për ti ndjekur. Përcakto 0 për të ndaluar ridrejtimet.",
+ "Max. Redirects": "Maks. Ridrejtimeve",
+ "Accepted Status Codes": "Kodet e gjendjeve të pranuara",
+ "Expected Value": "Vlera e supozuar",
+ "Json Query": "Kërkesë Json",
+ "Retries": "Provat",
+ "Heartbeat Retry Interval": "Intervali riprovimit pulsit",
+ "Upside Down Mode": "Gjendja kokëposhtë",
+ "upsideDownModeDescription": "Rotullo statusin kokëposhtë. Nëse shërbimi nuk është i arritshëm, është rrëzuar.",
+ "Test": "Test",
+ "Certificate Info": "Info e Çertifikatës",
+ "Resolver Server": "Server Përgjegjës",
+ "Resource Record Type": "Lloji i regjistrit të resursit",
+ "Last Result": "Rezultati fundit",
+ "Create your admin account": "Krijo llogarinë tuaj admin",
+ "Repeat Password": "Përsërit Fjalëkalimin",
+ "Import Backup": "Importo Rezervën",
+ "Export Backup": "Eksporto Rezervë",
+ "Export": "Eksporto",
+ "Import": "Importo",
+ "respTime": "Koha Përgj. (ms)",
+ "notAvailableShort": "J/A",
+ "Default enabled": "Normalisht e aktivizuar",
+ "Apply on all existing monitors": "Apliko në të gjithë monitorët që egzistojnë",
+ "Create": "Krijo",
+ "Events": "Ndodhitë",
+ "Heartbeats": "Pulset",
+ "Auto Get": "Merr Vetvetiu",
+ "Schedule maintenance": "Përcakto mirëmbajtje",
+ "Affected Monitors": "Monitorët e përfshirë",
+ "Pick Affected Monitors...": "Zgjedh monitorët e përfshirë…",
+ "Overwrite": "Mbishkruaj",
+ "Cannot connect to the socket server": "Nuk mund të realizohet lidhja me serverin socket",
+ "Reconnecting...": "Duke u ri-lidhur...",
+ "General Monitor Type": "Lloj i përgjithshëm i Monitor",
+ "Passive Monitor Type": "Lloji pasiv i Monitor",
+ "Specific Monitor Type": "Lloj i përcaktuar i Monitor",
+ "markdownSupported": "Sintaksa Markdown përkrahet",
+ "pauseDashboardHome": "Pusho",
+ "Pause": "Pusho",
+ "Name": "Emri",
+ "Status": "Gjendja",
+ "DateTime": "DataKoha",
+ "Message": "Mesazhi",
+ "No important events": "Nuk ka ndodhi të rëndësishme",
+ "Resume": "Vazhdo"
}
diff --git a/src/lang/sv-SE.json b/src/lang/sv-SE.json
index 87fcc5ebb..607cf0d68 100644
--- a/src/lang/sv-SE.json
+++ b/src/lang/sv-SE.json
@@ -94,7 +94,7 @@
"Password": "Lösenord",
"Remember me": "Kom ihåg mig",
"Login": "Logga in",
- "No Monitors, please": "Inga övervakare, tack",
+ "No Monitors, please": "Inga övervakare",
"add one": "lägg till en",
"Notification Type": "Notifieringstyp",
"Email": "Epost",
@@ -145,7 +145,6 @@
"clearDataOlderThan": "Behåll övervakarhistoriksdata i {0} dagar.",
"steamApiKeyDescription": "För att övervaka en Steam Game Server behöver man en Steam Web-API nyckel. Du kan registrera din API nyckel här: ",
"No Monitors": "Inga övervakare",
- "shrinkDatabaseDescription": "Utlös databasdammsugning för SQLite. Om din databas skapades efter 1.10.0, AUTO_VACUUM är redan aktiverat och detta behövs inte.",
"proxyDescription": "Proxyservrar måste tilldelas en övervakare för att fungera.",
"setAsDefaultProxyDescription": "Denna proxyserver kommer att aktiveras som standard för nya övervakare. Du kan fortfarande inaktivera proxyserven var för sig övervakare.",
"Content Type": "Innehållstyp",
@@ -795,7 +794,6 @@
"pushoverDesc1": "Nödprioritet (2) har 30 sekunders timeout mellan försök och löper ut efter 1 timme som standard.",
"octopushTypePremium": "Premium (Snabb - rekommenderas för varningar)",
"octopushTypeLowCost": "Låg kostnad (långsam - blockeras ibland av operatören)",
- "jsonQueryDescription": "Gör en json-förfrågan mot svaret och kontrollera det förväntade värdet (returvärde konverteras till en sträng för jämförelse). Se {0} för dokumentation angående frågespråket. En lekplats kan hittas här {1}.",
"Check octopush prices": "Kontrollera octopush priser {0}.",
"octopushSMSSender": "SMS avsändarnamn: 3-11 alfanumeriska tecken och mellanslag (a-zA-Z0-9)",
"LunaSea Device ID": "LunaSea enhetsid",
@@ -861,7 +859,7 @@
"Badge Suffix": "Brickvärdesuffix",
"Badge Color": "Brickfärg",
"monitorToastMessagesLabel": "Övervakar-toastnotifiering",
- "wayToGetFlashDutyKey": "Du kan gå till Kanal -> (Välj en kanal) -> Integrationer -> Lägg till ny integrationssidan, lägg till en 'Anpassad händelse' för att få en pushadress, kopiera integrationsnyckeln i adressen. För mer information, besök",
+ "wayToGetFlashDutyKey": "Du kan gå till Kanal -> (Välj en kanal) -> Integrationer -> Lägg till ny integrationssidan, lägg till en 'Uptime Kuma' för att få en pushadress, kopiera integrationsnyckeln i adressen. För mer information, besök",
"gamedigGuessPortDescription": "Porten som används av Valve-serverns förfrågningsprotokol kan vara annorlunda från klientporten. Prova detta om övervakaren inte kan kontakta din server.",
"monitorToastMessagesDescription": "Toastnotifieringar för övervakare försvinner efter angiven tid i sekunder. Ange -1 för att inaktivera timeout. Ange 0 för att inkaktivera toastnotifieringar.",
"Mechanism": "Mekanism",
@@ -886,5 +884,111 @@
"nostrRecipientsHelp": "npub-format, en per rad",
"gamedigGuessPort": "Gamedig: Gissa port",
"twilioAuthToken": "Auth-token / API-nyckelhemlighet",
- "What is a Remote Browser?": "Vad är en fjärrläsare?"
+ "What is a Remote Browser?": "Vad är en fjärrläsare?",
+ "Channel access token (Long-lived)": "Kanalaccess-token (långtids)",
+ "Your User ID": "Ditt användarID",
+ "wayToGetHeiiOnCallDetails": "Hur man får Trigger ID och API-nycklar är förklarat i {dokumentationen}",
+ "documentationOf": "{0} Dokumentation",
+ "gtxMessagingFromHint": "På mobiltelefoner, dina mottagare ser TPOA visad som avsändare av meddelandet. 11 alfanumeriska tecken är tillåtet, en kortkod, den lokala långkoden eller internationella nummer ({e164}, {e212} or {e214})",
+ "gtxMessagingApiKeyHint": "Du kan hitta dina API-nycklar i: Mina routningkonton > Visa kontoinformation > API-referenser > REST API (v2.x)",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "Från telefonnummer / Transmission Path Originating Address (TPOA)",
+ "To Phone Number": "TIll telefonnummer",
+ "gtxMessagingToHint": "Internationellt format med inledande \"0\" ({e164}, {e212} or {e214})",
+ "Alphanumeric (recommended)": "Alfanumeriskt (rekommenderat)",
+ "Originator type": "Avsändartyp",
+ "cellsyntOriginator": "Synligt på mottagarens mobiltelefon som avsändare av meddelandet. Tillåtna värden och funktioner beror på avsändartyp.",
+ "cellsyntDestination": "Mottagarens telefonnummer i internationellt format med inledande 00 följt av landskod, ex. 00701234567 för SE nummer 070-123 45 67 (max 17 siffror totalt). Max 25000 kommaseparerade mottagare per HTTP-förfrågan.",
+ "callMeBotGet": "Här kan du generera en slutpunkt för {0}, {1} och {2}. Var uppmärksam på att du kan få en anslutningsbegränsning. Anslutningsbegränsningarna ser ut som: {3}",
+ "Telephone number": "Telefonnummer",
+ "Originator": "Avsändare",
+ "cellsyntOriginatortypeAlphanumeric": "Alfanumerisk sträng (max 11 alfanumeriska tecken). Mottagare kan inte svara på meddelandet.",
+ "Destination": "Destination",
+ "Allow Long SMS": "Tillåt långa SMS",
+ "cellsyntSplitLongMessages": "Dela långa meddelanden i upp till 6 delar. 153 x 6 = 918 tecken.",
+ "max 15 digits": "max 15 siffor",
+ "max 11 alphanumeric characters": "max 11 alfanumeriska tecken",
+ "cellsyntOriginatortypeNumeric": "Numeriskt värde (max 15 siffror) med telefonnummer i internationellt format utan inledande 00 (exempel SE nummer 070-123 45 67 ska anges som 46701234567). Mottagare kan svara på meddelandet.",
+ "wayToWriteWhapiRecipient": "Telefonnummer med internationellt prefix, men utan plustecken i början ({0}, KontaktID ({1}) eller GruppID ({2}).",
+ "wayToGetWhapiUrlAndToken": "Du kan hitta API URL och token genom att gå till din föredragna kanal från {0}",
+ "whapiRecipient": "Telefonnummer / Kontakt ID / Grupp ID",
+ "API URL": "API URL",
+ "Mentioning": "Omnämnande",
+ "Don't mention people": "Omnämn inte människor",
+ "Mention group": "Omnämn {group}",
+ "senderSevenIO": "Skickar nummer eller namn",
+ "receiverSevenIO": "Mottagande nummer",
+ "receiverInfoSevenIO": "Om det mottagande numret inte är lokaliserat i Tyskland, måste du lägga till landskoden för numret (ex. för landskod 46 från Sverige, använd 46123123123 istället för 0123123123)",
+ "apiKeySevenIO": "SevenIO api-nyckel",
+ "wayToGetSevenIOApiKey": "Besök instrumentpanelen under app.seven.io > utvecklare > api-nyckel > den gröna lägg till knappen",
+ "locally configured mail transfer agent": "lokalt konfigurerad mejlskickningsagent",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Endera värdnamnet på servern du vill ansluta till eller {localhost} om du vill använda {local_mta}",
+ "Host URL": "Värd-URL",
+ "whatHappensAtForumPost": "Skapa ett nytt foruminlägg. Detta postar inte meddelande i befintliga inlägg. För att posta i befintligt inlägg, använd \"{option}\"",
+ "mongodbCommandDescription": "Kör ett MongoDB-kommando mot databasen. För information om tillgängliga kommandon, läs i {documentation}",
+ "Command": "Kommando",
+ "smspartnerApiurl": "Du kan hitta din API-nyckel på ditt skrivbord {0}",
+ "smspartnerPhoneNumber": "Telefonnummer",
+ "smspartnerSenderName": "SMS-avsändarnamn",
+ "smspartnerPhoneNumberHelptext": "Numret måste vara i internationellt format {0}, {1}. Flera nummer måste vara separerade med {2}",
+ "smspartnerSenderNameInfo": "Måste vara mellan 3..=11 vanliga tecken",
+ "Bitrix24 Webhook URL": "Bitrix24 Webbhook URL",
+ "wayToGetBitrix24Webhook": "Du kan skapa en webbhook genom att följa stegen på {0}",
+ "bitrix24SupportUserID": "Ange ditt användarID i Bitrix24. Du kan hitta ditt ID från länken genom att gå till användarprofilen.",
+ "Send to channel": "Skicka till kanal",
+ "Create new forum post": "Skapa nytt foruminlägg",
+ "postToExistingThread": "Posta till befintlig tråd / foruminlägg",
+ "Select message type": "Välj meddelandetyp",
+ "forumPostName": "Inläggsnamn i forum",
+ "threadForumPostID": "Tråd / inläggs-ID",
+ "e.g. {discordThreadID}": "ex. {discordThreadID}",
+ "Refresh Interval": "Uppdateringsintervall",
+ "Refresh Interval Description": "Statussidan uppdateras varje {0} sekunder",
+ "ignoreTLSErrorGeneral": "Ignorera TLS/SSL fel för anslutningen",
+ "wayToGetDiscordThreadId": "Hitta ett post- / forum-ID är liknande att hitta ett kanal-ID. Läs mer om hur du hittar IDn {0}",
+ "threemaRecipient": "Mottagare",
+ "threemaRecipientType": "Mottagartyp",
+ "threemaRecipientTypeIdentityFormat": "8 tecken",
+ "threemaRecipientTypePhone": "Telefonnummer",
+ "threemaRecipientTypePhoneFormat": "E.164, utan inledande +",
+ "threemaRecipientTypeEmail": "Epostadress",
+ "threemaSenderIdentity": "Gateway-ID",
+ "wayToGetThreemaGateway": "Du kan registrera dig för Threema Gateway {0}.",
+ "threemaRecipientTypeIdentity": "Threema-ID",
+ "threemaSenderIdentityFormat": "8 tecken, startar oftast med *",
+ "threemaApiAuthenticationSecret": "Gateway-ID hemlighet",
+ "threemaBasicModeInfo": "Notera: Denna integration använder Threema Gateway i standardläge (server-baserad kryptering). Mer detaljer kan hittas {0}.",
+ "apiKeysDisabledMsg": "API-nycklar är inaktiverade för att autentisering är inaktiverad.",
+ "CopyToClipboardError": "Kunde inte kopiera till urklipp: {fel}",
+ "Message format": "Meddelandeformat",
+ "Condition": "Villkor",
+ "SNMP Version": "SNMP-version",
+ "No tags found.": "Inga taggar hittades.",
+ "now": "nu",
+ "time ago": "{0} sedan",
+ "-year": "-år",
+ "Json Query Expression": "Json-frågeutryck",
+ "and": "och",
+ "Recipient Type": "Mottagartyp",
+ "Private Number": "Privat nummer",
+ "New Group": "Ny grupp",
+ "Group Name": "Gruppnamn",
+ "OAuth2: Client Credentials": "OAuth2: Klientuppgifter",
+ "Authentication Method": "Autentiseringsmetod",
+ "Authorization Header": "Autentiseringshuvud",
+ "Client ID": "Klient ID",
+ "Client Secret": "Klienthemlighet",
+ "Go back to home page.": "Gå tillbaka till hemsidan.",
+ "ignoredTLSError": "TLS/SSL-fel har ignorerats",
+ "Debug": "Felsöka",
+ "Copy": "Kopiera",
+ "CopyToClipboardSuccess": "Kopierat!",
+ "firewalls": "brandväggar",
+ "dns resolvers": "dns-upplösare",
+ "docker networks": "docker-nätverk",
+ "cacheBusterParam": "Lägg till {0} parameter",
+ "Community String": "Gruppsträng",
+ "OID (Object Identifier)": "OID (Objektsidentifierare)",
+ "Please enter a valid OID.": "Ange ett giltigt OID.",
+ "Group ID": "GruppID",
+ "Add Remote Browser": "Lägg till fjärrbläddrare"
}
diff --git a/src/lang/te.json b/src/lang/te.json
index 7833fd15e..af5a55115 100644
--- a/src/lang/te.json
+++ b/src/lang/te.json
@@ -303,7 +303,6 @@
"Discard": "విస్మరించండి",
"Cancel": "రద్దు చేయండి",
"Check/Uncheck": "చెక్/చెక్చేయవద్దు",
- "shrinkDatabaseDescription": "SQLite కోసం డేటాబేస్ VACUUMని ట్రిగ్గర్ చేయండి. మీ డేటాబేస్ 1.10.0 తర్వాత సృష్టించబడితే, AUTO_VACUUM ఇప్పటికే ప్రారంభించబడింది మరియు ఈ చర్య అవసరం లేదు.",
"setAsDefault": "డిఫాల్ట్ సెట్ చేయబడింది",
"deleteProxyMsg": "మీరు ఖచ్చితంగా అన్ని మానిటర్ల కోసం ఈ ప్రాక్సీని తొలగించాలనుకుంటున్నారా?",
"proxyDescription": "పనిచేయడానికి ప్రాక్సీలు తప్పనిసరిగా మానిటర్కు కేటాయించబడాలి.",
diff --git a/src/lang/th-TH.json b/src/lang/th-TH.json
index 36f9e1a80..b0a78cf92 100644
--- a/src/lang/th-TH.json
+++ b/src/lang/th-TH.json
@@ -31,7 +31,7 @@
"New Update": "อัพเดทใหม่",
"Language": "ภาษา",
"Appearance": "หน้าตา",
- "Theme": "หน้าตา",
+ "Theme": "ธีม",
"General": "ทั่วไป",
"Primary Base URL": "URL หลัก",
"Version": "เวอร์ชั่น",
@@ -39,7 +39,7 @@
"List": "รายการ",
"Add": "เพิ่ม",
"Add New Monitor": "เพิ่มมอนิเตอร์ใหม่",
- "Quick Stats": "สถิติด่วน",
+ "Quick Stats": "สถิติอย่างย่อ",
"Up": "ใช้งานได้",
"Down": "ไม่สามารถใช้งานได้",
"Pending": "รอดำเนินการ",
@@ -355,7 +355,6 @@
"Discard": "ทิ้ง",
"Cancel": "ยกเลิก",
"Powered by": "ขับเคลื่อนโดย",
- "shrinkDatabaseDescription": "ทริกเกอร์ฐานข้อมูล VACUUM สำหรับ SQLite หากฐานข้อมูลของคุณถูกสร้างขึ้นหลังจากเวอร์ชั่น 1.10.0 แสดงว่า AUTO_VACUUM เปิดใช้งานอยู่แล้วและไม่จำเป็นต้องดำเนินการนี้",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "API Username (incl. webapi_ prefix)",
"serwersmsAPIPassword": "API Password",
@@ -600,7 +599,7 @@
"or": "หรือ",
"recurringInterval": "ช่วงเวลา",
"Recurring": "ทำซ้ำ",
- "General Monitor Type": "ชนิดมอนิเตอร์ทั่วไป",
+ "General Monitor Type": "มอนิเตอร์ชนิดทั่วไป",
"pagertreeCritical": "วิกฤต",
"pagertreeDoNothing": "ไม่ต้องทำอะไร",
"pagertreeResolve": "แก้ไขอัตโนมัติ",
@@ -682,5 +681,34 @@
"setupDatabaseMariaDB": "เชื่อมต่อไปยัง MariaDB ภายนอก คุณจำเป็นจะต้องตั่งค่าการเชื่อมต่อฐานข้อมูล",
"setupDatabaseSQLite": "ไฟล์ฐานข้อมูลอย่างง่าย แนะนำสำหรับการปรับใช้ขนาดเล็ก ก่อนเวอร์ชัน 2.0.0 Uptime Kuma ใช้ SQLite เป็นฐานข้อมูลเริ่มต้น",
"dbName": "ชื่อฐานข้อมูล",
- "Passive Monitor Type": "ชนิดมอนิเตอร์แบบพาสซีฟ"
+ "Passive Monitor Type": "ชนิดมอนิเตอร์แบบพาสซีฟ",
+ "documentationOf": "{0} คู่มือ",
+ "successDeleted": "ลบสำเร็จ.",
+ "Command": "คำสั่ง",
+ "authUserInactiveOrDeleted": "ผู้ใช้งานถูกปิดหรือถูกลบแล้ว",
+ "Saved.": "บันทึกแล้ว",
+ "authInvalidToken": "โทเค็นไม่ถูกต้อง.",
+ "successDisabled": "ปิดการใช้งาน สำเร็จ.",
+ "max 11 alphanumeric characters": "ตัวอักษรสูงสุดไม่เกิน 11 ตัว",
+ "showCertificateExpiry": "แสดง Certificate ที่หมดอายุ",
+ "Telephone number": "เบอร์โทรศัพท์",
+ "successAuthChangePassword": "รหัสผ่านถูกเปลื่ยนเรียบร้อยแล้ว.",
+ "successEdited": "แก้ไขสำเร็จ",
+ "styleElapsedTimeShowNoLine": "แสดง (ไม่มีบรรทัด)",
+ "styleElapsedTimeShowWithLine": "แสดง (พร้อมบรรทัด)",
+ "where you intend to implement third-party authentication": "ที่คุณตั้งใจจะนำการตรวจสอบสิทธิ์ของบุคคลที่สามไปใช้",
+ "styleElapsedTime": "เวลาที่ผ่านไปภายใต้แถบวัดอัตราการเต้นของหัวใจ",
+ "now": "ตอนนี้",
+ "Host URL": "URL ของโฮสต์",
+ "ignoreTLSErrorGeneral": "ละเว้นข้อผิดพลาด TLS/SSL สำหรับการเชื่อมต่อ",
+ "programmingLanguages": "ภาษาโปรแกรมมิ่ง",
+ "Invert Keyword": "คำสำคัญ",
+ "settingUpDatabaseMSG": "กำลังตั้งค่าฐานข้อมูลอาจใช้เวลาสักครู่ โปรดอดทนรอ",
+ "time ago": "{0} ที่ผ่านมา",
+ "-year": "-ปี",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "ป้อนชื่อโฮสต์ของเซิร์ฟเวอร์ที่คุณต้องการเชื่อมต่อหรือ {localhost} หากคุณต้องการใช้ {local_mta}",
+ "Request Timeout": "หมดเวลาการเชื่อมต่อ",
+ "ignoredTLSError": "ข้อผิดพลาด TLS/SSL ถูกละเว้น",
+ "pushOthers": "อื่น ๆ",
+ "pushViewCode": "วิธีใช้งาน Push monitor (ดูโค้ด)"
}
diff --git a/src/lang/tr-TR.json b/src/lang/tr-TR.json
index 72de6d8f8..3c932d636 100644
--- a/src/lang/tr-TR.json
+++ b/src/lang/tr-TR.json
@@ -1,5 +1,5 @@
{
- "languageName": "Türkçe",
+ "languageName": "İngilizce",
"checkEverySecond": "{0} saniyede bir kontrol et",
"retryCheckEverySecond": "{0} saniyede bir dene",
"resendEveryXTimes": "Her {0} bir yeniden gönder",
@@ -19,7 +19,7 @@
"resolverserverDescription": "Cloudflare varsayılan sunucudur, çözümleyici sunucusunu istediğiniz zaman değiştirebilirsiniz.",
"rrtypeDescription": "İzlemek istediğiniz servisin RR-Tipini seçin",
"pauseMonitorMsg": "Durdurmak istediğinden emin misin?",
- "enableDefaultNotificationDescription": "Bu bildirim her yeni serviste aktif olacaktır. Bildirimi servisler için ayrı ayrı deaktive edebilirsiniz.",
+ "enableDefaultNotificationDescription": "Bu bildirim yeni monitörler için varsayılan olarak etkinleştirilecektir. Bildirimi her monitör için ayrı ayrı devre dışı bırakabilirsiniz.",
"clearEventsMsg": "Bu servisin bütün kayıtlarını silmek istediğinden emin misin?",
"clearHeartbeatsMsg": "Bu servis için tüm sağlık durumunu silmek istediğinden emin misin?",
"confirmClearStatisticsMsg": "Tüm istatistikleri silmek istediğinden emin misin?",
@@ -58,7 +58,7 @@
"Delete": "Sil",
"Current": "Şu anda",
"Uptime": "Çalışma zamanı",
- "Cert Exp.": "Sertifika Geç. Süresi",
+ "Cert Exp.": "Sertifika Geçerlilik Süresi.",
"day": "gün | günler",
"-day": "-gün",
"hour": "saat",
@@ -84,8 +84,8 @@
"pushOptionalParams": "İsteğe bağlı parametreler: {0}",
"Save": "Kaydet",
"Notifications": "Bildirimler",
- "Not available, please setup.": "Atanmış bildirim yöntemi yok. Ayarlardan belirleyebilirsiniz.",
- "Setup Notification": "Bildirim yöntemi kur",
+ "Not available, please setup.": "Mevcut değil, lütfen ayarlardan belirleyin.",
+ "Setup Notification": "Bildirim yöntemi ayarla",
"Light": "Açık",
"Dark": "Koyu",
"Auto": "Oto",
@@ -154,7 +154,7 @@
"Options": "Seçenekler",
"Keep both": "İkisini sakla",
"Verify Token": "Tokeni doğrula",
- "Setup 2FA": "2FA Kur",
+ "Setup 2FA": "2FA Ayarla",
"Enable 2FA": "2FA Etkinleştir",
"Disable 2FA": "2FA Devre dışı bırak",
"2FA Settings": "2FA Ayarları",
@@ -183,7 +183,7 @@
"Entry Page": "Giriş Sayfası",
"statusPageNothing": "Burada hiçbir şey yok, lütfen bir grup veya servis ekleyin.",
"No Services": "Hizmet Yok",
- "All Systems Operational": "Tüm Sistemler Operasyonel",
+ "All Systems Operational": "Tüm Sistemler Sorunsuz",
"Partially Degraded Service": "Kısmen Bozulmuş Hizmet",
"Degraded Service": "Bozulmuş Hizmet",
"Add Group": "Grup Ekle",
@@ -201,7 +201,7 @@
"Chat ID": "Chat ID",
"supportTelegramChatID": "Doğrudan Sohbet / Grup / Kanalın Sohbet Kimliğini Destekleyin",
"wayToGetTelegramChatID": "Bot'a bir mesaj göndererek ve chat_id'yi görüntülemek için bu URL'ye giderek sohbet kimliğinizi alabilirsiniz:",
- "YOUR BOT TOKEN HERE": "BOT TOKENİNİZ BURADA",
+ "YOUR BOT TOKEN HERE": "BOT TOKENİNİZ BURAYA",
"chatIDNotFound": "Chat ID bulunamadı; lütfen önce bu bota bir mesaj gönderin",
"webhook": "Webhook",
"Post URL": "Post URL",
@@ -221,10 +221,10 @@
"Discord Webhook URL": "Discord Webhook Bağlantısı",
"wayToGetDiscordURL": "Bunu Sunucu Ayarları -> Entegrasyonlar -> Webhookları Görüntüle -> Yeni Webhook Oluştur adımını izleyerek alabilirsiniz",
"Bot Display Name": "Botun Görünecek Adı",
- "Prefix Custom Message": "Önek Özel Mesaj",
+ "Prefix Custom Message": "Özel Önek Mesajı",
"Hello @everyone is...": "Merhaba {'@'}everyone…",
"teams": "Microsoft Teams",
- "Webhook URL": "Webhook URL",
+ "Webhook URL": "Webhook URL'si",
"wayToGetTeamsURL": "Bir webhook URL'sinin nasıl oluşturulacağını öğrenebilirsiniz {0}.",
"signal": "Sinyal",
"Number": "Numara",
@@ -277,7 +277,7 @@
"lineDevConsoleTo": "Line Geliştirici Konsolu - {0}",
"Basic Settings": "Temel Ayarlar",
"User ID": "Kullanıcı ID",
- "Messaging API": "Messaging API",
+ "Messaging API": "Mesajlaşma API'si",
"wayToGetLineChannelToken": "Önce {0}'e erişin, bir sağlayıcı ve kanal (Messaging API) oluşturun, ardından yukarıda belirtilen menü öğelerinden kanal erişim tokenini ve kullanıcı id alabilirsiniz.",
"Icon URL": "Simge URL",
"aboutIconURL": "Varsayılan profil resmini geçersiz kılmak için \"Simge URL\" bölümünde bir resme bağlantı sağlayabilirsiniz. Simge Emojisi ayarlanmışsa kullanılmayacaktır.",
@@ -351,7 +351,6 @@
"Discard": "İptal Et",
"Cancel": "İptal Et",
"Powered by": "Tarafından desteklenmektedir",
- "shrinkDatabaseDescription": "SQLite için veritabanı VACUUM'unu tetikleyin. Veritabanınız 1.10.0'dan sonra oluşturulduysa, AUTO_VACUUM zaten etkinleştirilmiştir ve bu eyleme gerek yoktur.",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "API Kullanıcı Adı (webapi_ öneki dahil)",
"serwersmsAPIPassword": "API Şifre",
@@ -379,8 +378,8 @@
"auto resolve": "otomatik çözümleme",
"gorush": "Gorush",
"alerta": "Alerta",
- "alertaApiEndpoint": "API Endpoint",
- "alertaEnvironment": "Environment",
+ "alertaApiEndpoint": "API Uç Noktası",
+ "alertaEnvironment": "Ortam",
"alertaApiKey": "API Anahtarı",
"alertaAlertState": "Uyarı Durumu",
"alertaRecoverState": "Kurtarma Durumu",
@@ -404,7 +403,7 @@
"Sms template must contain parameters: ": "Sms şablonu parametreleri içermelidir: ",
"Bark Endpoint": "Bark Endpoint",
"Bark Group": "Bark Group",
- "Bark Sound": "Bark Sound",
+ "Bark Sound": "Havlama Sesi",
"WebHookUrl": "WebHookUrl",
"SecretKey": "SecretKey",
"For safety, must use secret key": "Güvenlik için gizli anahtar kullanılmalıdır",
@@ -415,7 +414,7 @@
"Retry": "Tekrar",
"Topic": "Başlık",
"WeCom Bot Key": "WeCom Bot Anahtarı",
- "Setup Proxy": "Proxy kur",
+ "Setup Proxy": "Proxy Ayarla",
"Proxy Protocol": "Proxy Protokolü",
"Proxy Server": "Proxy Sunucusu",
"Proxy server has authentication": "Proxy sunucusunun kimlik doğrulaması var",
@@ -536,7 +535,7 @@
"Query": "Sorgu",
"settingsCertificateExpiry": "TLS Sertifikasının Geçerlilik Süresi",
"certificationExpiryDescription": "HTTPS Monitörleri, TLS sertifikasının süresi dolduğunda bildirimi tetikler:",
- "Setup Docker Host": "Docker Ana Bilgisayarını Kur",
+ "Setup Docker Host": "Docker Ana Bilgisayarını Ayarla",
"Connection Type": "Bağlantı türü",
"Docker Daemon": "Docker Daemon",
"deleteDockerHostMsg": "Bu docker ana bilgisayarını tüm monitörler için silmek istediğinizden emin misiniz?",
@@ -594,7 +593,7 @@
"Kook": "Kook",
"wayToGetKookBotToken": "Uygulama oluşturun ve {0} adresinde bot tokenı alın",
"wayToGetKookGuildID": "Kook ayarında \"Geliştirici Modu\"nu açın ve kimliğini almak için guild'e sağ tıklayın",
- "Guild ID": "Guild ID",
+ "Guild ID": "Sunucu ID'si",
"smseagle": "SMSEagle",
"smseagleTo": "Telefon numara(ları)",
"smseagleGroup": "Telefon defteri grubu ad(lar)ı",
@@ -794,7 +793,6 @@
"webhookBodyPresetOption": "Ön ayar - {0}",
"webhookBodyCustomOption": "Özel Gövde",
"Request Body": "İstek Gövdesi",
- "jsonQueryDescription": "Yanıta karşı bir json sorgusu yapın ve beklenen değeri kontrol edin (Dönüş değeri, karşılaştırma için dizgeye dönüştürülür). Sorgu diliyle ilgili belgeler için {0}'a bakın. Bir oyun alanı {1} bulunabilir.",
"twilioApiKey": "Api Anahtarı (isteğe bağlı)",
"Expected Value": "Beklenen Değer",
"Json Query": "Json Sorgusu",
@@ -830,7 +828,7 @@
"noOrBadCertificate": "Sertifika Yok/Geçersiz",
"Select": "Seç",
"PushDeer Server": "PushDeer Sunucusu",
- "wayToGetFlashDutyKey": "Kanal -> (Bir Kanal Seçin) -> Entegrasyonlar -> Yeni entegrasyon ekle sayfasına gidebilir, bir push adresi almak için bir 'Özel Etkinlik' ekleyebilir, adresteki Entegrasyon Anahtarını kopyalayabilirsiniz. Daha fazla bilgi için lütfen ziyaret edin",
+ "wayToGetFlashDutyKey": "Kanal -> (Bir Kanal Seçin) -> Entegrasyonlar -> Yeni bir entegrasyon ekle' sayfasına gidebilir, bir push adresi almak için 'Çalışma Süresi Kuma' ekleyebilir, Entegrasyon Anahtarını adrese kopyalayabilirsiniz. Daha fazla bilgi için lütfen ziyaret edin",
"selectedMonitorCount": "Seçildi: {0}",
"Check/Uncheck": "İşaretle/İşareti Kaldır",
"pushDeerServerDescription": "Resmi sunucuyu kullanmak için boş bırakın",
@@ -842,11 +840,11 @@
"styleElapsedTime": "Kalp atışı çubuğunun altında geçen süre",
"styleElapsedTimeShowWithLine": "Göster (Satır ile birlikte)",
"enableNSCD": "Tüm DNS isteklerini önbelleğe almak için NSCD'yi (Ad Hizmeti Önbellek Programı) etkinleştirin",
- "setupDatabaseEmbeddedMariaDB": "Hiçbir şey ayarlamanıza gerek yok. Bu docker imajı, MariaDB'yi sizin için otomatik olarak yerleştirdi ve yapılandırdı. Çalışma Süresi Kuma bu veritabanına unix soketi aracılığıyla bağlanacaktır.",
+ "setupDatabaseEmbeddedMariaDB": "Hiçbir şey ayarlamanıza gerek yok. Bu docker imajı, MariaDB'yi sizin için otomatik olarak yerleştirdi ve yapılandırdı. Çalışma Süresi Kuma bu veri tabanına unix soketi aracılığıyla bağlanacaktır.",
"setupDatabaseSQLite": "Küçük ölçekli dağıtımlar için önerilen basit bir veritabanı dosyası. v2.0.0'dan önce Uptime Kuma, varsayılan veritabanı olarak SQLite'ı kullanıyordu.",
- "setupDatabaseChooseDatabase": "Hangi veritabanını kullanmak istiyorsunuz?",
- "setupDatabaseMariaDB": "Harici bir MariaDB veritabanına bağlanın. Veritabanı bağlantı bilgilerini ayarlamanız gerekir.",
- "dbName": "Veritabanı ismi",
+ "setupDatabaseChooseDatabase": "Hangi veri tabanını kullanmak istersiniz?",
+ "setupDatabaseMariaDB": "Harici bir MariaDB veri tabanına bağlanın. Veri tabanı bağlantı bilgilerini ayarlamanız gerekir.",
+ "dbName": "Veri tabanı ismi",
"Saved.": "Kaydedildi.",
"toastErrorTimeout": "Hata Bildirimleri için Zaman Aşımı",
"toastSuccessTimeout": "Başarı Bildirimleri için Zaman Aşımı",
@@ -893,20 +891,20 @@
"emailTemplateMsg": "bildirim mesajı",
"emailTemplateLimitedToUpDownNotification": "yalnızca Normal/Hatalı kalp atışları için kullanılabilir, aksi takdirde boş",
"GrafanaOncallUrl": "Grafana Oncall URL'i",
- "noDockerHostMsg": "Uygun değil. Önce Docker Ana Bilgisayarını Kurun.",
+ "noDockerHostMsg": "Uygun değil. Önce Docker Ana Bilgisayarını Ayarlayın.",
"DockerHostRequired": "Lütfen bu monitör için Docker Ana Bilgisayarını ayarlayın.",
"Browser Screenshot": "Tarayıcı Ekran Görüntüsü",
"successKeyword": "Başarı Anahtar Kelimesi",
"successKeywordExplanation": "Başarılı olarak kabul edilecek MQTT anahtar kelimesi",
"Add a new expiry notification day": "Yeni bir sona erme bildirim günü ekle",
"Remove the expiry notification": "Sona erme bildirim gününü kaldır",
- "setup a new monitor group": "yeni bir monitör grubu kur",
+ "setup a new monitor group": "yeni bir monitör grubu ayarla",
"Remove domain": "'{0}' alan adını kaldır",
"Remote Browsers": "Uzak Tarayıcılar",
"Remote Browser": "Uzak Tarayıcı",
"Add a Remote Browser": "Uzak Tarayıcı Ekle",
"Remote Browser not found!": "Uzak Tarayıcı bulunamadı!",
- "remoteBrowsersDescription": "Uzak Tarayıcılar, Chromium'u yerel olarak çalıştırmanın bir alternatifidir. browserless.io gibi bir hizmetle kurulum yapın veya kendi hizmetinize bağlanın",
+ "remoteBrowsersDescription": "Uzak Tarayıcılar, Chromium'u yerel olarak çalıştırmanın bir alternatifidir. browserless.io gibi bir hizmet ile kurulum yapın veya kendi hizmetinize bağlanın",
"self-hosted container": "kendi kendine barındırılan konteyner",
"remoteBrowserToggle": "Varsayılan olarak Chromium, Uptime Kuma kapsayıcısının içinde çalışır. Bu anahtarı değiştirerek uzak bir tarayıcıyı kullanabilirsiniz.",
"useRemoteBrowser": "Uzak Tarayıcı Kullanın",
@@ -918,5 +916,206 @@
"settingUpDatabaseMSG": "Veritabanı kuruluyor. Biraz zaman alabilir, lütfen sabırlı olun.",
"statusPageSpecialSlugDesc": "Özel slug {0}: slug belirtilmediğinde bu sayfa gösterilecektir",
"ntfyPriorityHelptextAllExceptDown": "Önceliği {1} olan {0}-olayları hariç tüm olaylar bu öncelik ile gönderilir",
- "What is a Remote Browser?": "Uzak Tarayıcı Nedir?"
+ "What is a Remote Browser?": "Uzak Tarayıcı Nedir?",
+ "Your User ID": "Kullanıcı kimliğiniz",
+ "Channel access token (Long-lived)": "Kanal erişim tokenı (Uzun ömürlü)",
+ "wayToGetHeiiOnCallDetails": "Tetikleyici Kimliği ve API Anahtarlarının nasıl alınacağı {dokümantasyon} bölümünde açıklanmıştır",
+ "documentationOf": "{0} Dokümantasyon",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "Telefon Numarasından / İletim Yolu Kaynak Adresinden (TPOA)",
+ "gtxMessagingFromHint": "Cep telefonlarında, alıcılarınız mesajın göndericisi olarak görüntülenen TPOA'yı görür. En fazla 11 alfanümerik karakter, bir kısa kod, yerel uzun kod veya uluslararası numaralara izin verilir ({e164}, {e212} veya {e214})",
+ "To Phone Number": "Telefon Numarasına",
+ "gtxMessagingToHint": "Uluslararası format, başında \"+\" ile ({e164}, {e212} veya {e214})",
+ "gtxMessagingApiKeyHint": "API anahtarınızı şu adreste bulabilirsiniz: Yönlendirme Hesaplarım > Hesap Bilgilerini Göster > API Kimlik Bilgileri > REST API (v2.x)",
+ "Destination": "Varış Noktası",
+ "cellsyntDestination": "Alıcının uluslararası formattaki telefon numarası, baştaki 00 ve ardından ülke kodu, örneğin İngiltere numarası 07920 110 000 için 00447920110000 (toplamda en fazla 17 hane). HTTP isteği başına maksimum 25000 virgülle ayrılmış alıcı.",
+ "Allow Long SMS": "Uzun SMS'e İzin Ver",
+ "cellsyntSplitLongMessages": "Uzun mesajları en fazla 6 parçaya bölün. 153 x 6 = 918 karakter.",
+ "max 15 digits": "maksimum 15 hane",
+ "Originator type": "Kaynak tipi",
+ "Alphanumeric (recommended)": "Alfanümerik (önerilir)",
+ "Telephone number": "Telefon numarası",
+ "cellsyntOriginatortypeAlphanumeric": "Alfanümerik dize (maksimum 11 alfanümerik karakter). Alıcılar mesajı yanıtlayamaz.",
+ "cellsyntOriginatortypeNumeric": "Başında 00 olmadan uluslararası formatta telefon numarası içeren sayısal değer (maksimum 15 hane) (örneğin İngiltere numarası 07920 110 000 447920110000 olarak ayarlanmalıdır). Alıcılar mesajı yanıtlayabilir.",
+ "Originator": "Kaynak",
+ "cellsyntOriginator": "Alıcının cep telefonunda mesajın kaynağı olarak görünür. İzin verilen değerler ve işlev kaynaktipi parametresine bağlıdır.",
+ "callMeBotGet": "Burada {0}, {1} ve {2} için bir uç nokta oluşturabilirsiniz. Hız sınırlaması alabileceğinizi unutmayın. Hız limitleri şöyle görünür: {3}",
+ "wayToWriteWhapiRecipient": "Uluslararası ön eke sahip, ancak başında artı işareti olmayan telefon numarası ({0}), Kişi Kimliği ({1}) veya Grup Kimliği ({2}).",
+ "wayToGetWhapiUrlAndToken": "API URL'sini ve belirtecini {0} adresinden istediğiniz kanala girerek alabilirsiniz",
+ "whapiRecipient": "Telefon Numarası / Kişi Kimliği / Grup Kimliği",
+ "API URL": "API URL",
+ "max 11 alphanumeric characters": "maksimum 11 alfanümerik karakter",
+ "Mentioning": "Bahsetme",
+ "Don't mention people": "İnsanlardan bahsetme",
+ "Mention group": "Mention {grup}",
+ "wayToGetSevenIOApiKey": "App.seven.io > geliştirici > API anahtarı > yeşil ekle düğmesi altındaki kontrol panelini ziyaret edin",
+ "senderSevenIO": "Numara veya isim gönderiliyor",
+ "receiverSevenIO": "Alıcı numarası",
+ "apiKeySevenIO": "SevenIO API Anahtarı",
+ "receiverInfoSevenIO": "Alıcı numara Almanya'da değilse, numaranın önüne ülke kodunu eklemeniz gerekir (örneğin, ABD'den ülke kodu 1 için 017612121212 yerine 117612121212 kullanın)",
+ "locally configured mail transfer agent": "yerel olarak yapılandırılmış posta aktarım aracısı",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Bağlanmak istediğiniz sunucunun ana bilgisayar adını girin veya {local_mta} kullanmayı düşünüyorsanız {localhost} girin",
+ "Host URL": "Host URL",
+ "whatHappensAtForumPost": "Yeni bir forum gönderisi oluşturun. Bu, mevcut gönderiye mesaj YAYINLAMAZ. Mevcut gönderide yayınlamak için \"{option}\" seçeneğini kullanın",
+ "Command": "Komut",
+ "mongodbCommandDescription": "Veritabanına karşı bir MongoDB komutu çalıştırın. Mevcut komutlar hakkında bilgi için {dokümantasyona} bakın",
+ "Bitrix24 Webhook URL": "Bitrix24 Webhook URL'si",
+ "wayToGetBitrix24Webhook": "{0} adresindeki adımları izleyerek bir web kancası oluşturabilirsiniz",
+ "bitrix24SupportUserID": "Bitrix24'e kullanıcı kimliğinizi girin. Kullanıcının profiline giderek bağlantıdan kimliğini öğrenebilirsiniz.",
+ "Select message type": "Mesaj türünü seçin",
+ "Send to channel": "Kanala gönder",
+ "Create new forum post": "Yeni forum gönderisi oluştur",
+ "postToExistingThread": "Mevcut konuya / forum gönderisine gönder",
+ "forumPostName": "Forum gönderi adı",
+ "Refresh Interval": "Yenileme aralığı",
+ "Refresh Interval Description": "Durum sayfası her {0} saniyede bir tam site yenilemesi yapacaktır",
+ "ignoreTLSErrorGeneral": "Bağlantı için TLS/SSL hatasını yoksay",
+ "threadForumPostID": "Konu / Forum gönderi kimliği",
+ "e.g. {discordThreadID}": "Örneğin. {discordThreadID}",
+ "wayToGetDiscordThreadId": "Konu başlığı/forum gönderisi kimliği almak, kanal kimliği almaya benzer. Kimliklerin nasıl alınacağı hakkında daha fazla bilgi edinin {0}",
+ "smspartnerPhoneNumber": "Telefon numaraları",
+ "smspartnerSenderName": "SMS Gönderenin Adı",
+ "smspartnerApiurl": "API anahtarınızı {0} adresindeki kontrol panelinizde bulabilirsiniz",
+ "smspartnerPhoneNumberHelptext": "Numara uluslararası biçimde {0}, {1} olmalıdır. Birden çok sayı {2} ile ayrılmalıdır",
+ "smspartnerSenderNameInfo": "3..=11 normal karakter arasında olmalıdır",
+ "threemaRecipient": "Alıcı",
+ "threemaRecipientType": "Alıcı Tipi",
+ "threemaRecipientTypeIdentity": "Threema-ID",
+ "threemaRecipientTypePhone": "Telefon numarası",
+ "threemaRecipientTypeEmail": "E-posta Adresi",
+ "threemaSenderIdentity": "Ağ Geçidi Kimliği",
+ "threemaSenderIdentityFormat": "8 karakter, genellikle * ile başlar",
+ "threemaApiAuthenticationSecret": "Ağ Geçidi Kimliği Gizli Anahtarı",
+ "threemaBasicModeInfo": "Not: Bu entegrasyon, temel modda (sunucu tabanlı şifreleme) Threema Gateway'i kullanır. Daha fazla ayrıntıyı {0} adresinde bulabilirsiniz.",
+ "wayToGetThreemaGateway": "Threema Gateway {0}'e kaydolabilirsiniz.",
+ "threemaRecipientTypeIdentityFormat": "8 karakter",
+ "threemaRecipientTypePhoneFormat": "E.164, başında + olmadan",
+ "apiKeysDisabledMsg": "Kimlik doğrulama devre dışı olduğundan API anahtarları devre dışı bırakıldı.",
+ "now": "Şimdi",
+ "time ago": "{0} önce",
+ "-year": "-yıl",
+ "Json Query Expression": "JSON Sorgu İfadesi",
+ "and": "ve",
+ "cacheBusterParam": "{0} parametresini ekleyin",
+ "cacheBusterParamDescription": "Önbellekleri atlamak için rastgele oluşturulmuş parametre.",
+ "Community String": "Topluluk Metni",
+ "snmpCommunityStringHelptext": "Bu metin, SNMP özellikli cihazlara erişimi doğrulamak ve kontrol etmek için bir şifre işlevi görür. Bunu SNMP cihazınızın yapılandırmasıyla eşleştirin.",
+ "OID (Object Identifier)": "OID (Nesne Tanımlayıcı)",
+ "snmpOIDHelptext": "İzlemek istediğiniz sensörün veya durumun OID'sini girin. OID'den emin değilseniz MIB tarayıcıları veya SNMP yazılımı gibi ağ yönetimi araçlarını kullanın.",
+ "Condition": "Koşul",
+ "SNMP Version": "SNMP Sürümü",
+ "Please enter a valid OID.": "Lütfen geçerli bir OID girin.",
+ "groupOnesenderDesc": "Gruba mesaj göndermek için, GroupID değerinin geçerli olduğundan emin olun. Örneğin: 628123456789-342345",
+ "Group ID": "Grup Kimliği",
+ "wayToGetOnesenderUrlandToken": "Onesender web sitesine giderek URL'yi ve Jetonu alabilirsiniz. Daha fazla bilgi için {0}",
+ "Add Remote Browser": "Uzak Tarayıcı Ekle",
+ "New Group": "Yeni Grup",
+ "Host Onesender": "Onesender Host Adresi",
+ "Token Onesender": "Onesender Jetonu",
+ "Group Name": "Grup Adı",
+ "OAuth2: Client Credentials": "OAuth2: İstemci Kimlik Bilgileri",
+ "Recipient Type": "Alıcı Türü",
+ "Private Number": "Özel Numara",
+ "Authentication Method": "Kimlik Doğrulama Yöntemi",
+ "privateOnesenderDesc": "Özel numaralı telefona mesaj göndermek için, telefon numarasının geçerli olduğundan emin olun. Örneğin: 628123456789",
+ "Authorization Header": "Yetkilendirme Başlığı",
+ "Form Data Body": "Form Veri Gövdesi",
+ "Go back to home page.": "Ana sayfaya geri dönün.",
+ "No tags found.": "Etiket bulunamadı.",
+ "Lost connection to the socket server.": "Soket sunucusuyla bağlantı kesildi.",
+ "Cannot connect to the socket server.": "Soket sunucusuna bağlanılamıyor.",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "SIGNL4 Web Kancası URL'si",
+ "OAuth Token URL": "OAuth Jetonu URL'si",
+ "Client ID": "İstemci Kimliği",
+ "Client Secret": "İstemci Jetonu",
+ "OAuth Scope": "OAuth Kapsamı",
+ "Optional: Space separated list of scopes": "İsteğe bağlı: Kapsamların boşlukla ayrılmış listesi",
+ "signl4Docs": "SIGNL4'ün nasıl yapılandırılacağı ve SIGNL4 web kancası URL'sinin nasıl elde edileceği hakkında daha fazla bilgiyi {0} içinde bulabilirsiniz.",
+ "not contains": "içermez/içermiyor",
+ "starts with": "başlar/başlıyor",
+ "equals": "eşit",
+ "not starts with": "ile başlamaz",
+ "not equals": "eşit değil",
+ "contains": "içerir",
+ "conditionDeleteGroup": "Grubu Sil",
+ "conditionValuePlaceholder": "Değer",
+ "Conditions": "Koşullar",
+ "conditionAdd": "Koşul Ekle",
+ "conditionDelete": "Koşul Sil",
+ "conditionAddGroup": "Grup Ekle",
+ "ends with": "ile biter",
+ "not ends with": "ile bitmiyor",
+ "less than or equal to": "küçük veya eşit",
+ "greater than": "daha büyük",
+ "less than": "daha küçük",
+ "greater than or equal to": "büyük veya eşit",
+ "record": "kayıt",
+ "jsonQueryDescription": "JSON sorgusunu kullanarak sunucunun JSON yanıtından belirli verileri ayrıştırın ve çıkarın. JSON beklemiyorsanız ham yanıt için \"$\" sembolünü kullanın. Sonuç daha sonra metin olarak beklenen değerle karşılaştırılır. Belgeler için {0}'a bakın ve sorgularla denemeler yapmak için {1}'i kullanın.",
+ "shrinkDatabaseDescriptionSqlite": "SQLite için {vacuum} veritabanını tetikle. {auto_vacuum} zaten etkin ancak bu, {vacuum} komutunun yaptığı gibi veritabanını birleştirmez veya tek tek veritabanı sayfalarını yeniden paketlemez.",
+ "Debug": "Hata ayıklama",
+ "Copy": "Kopyala",
+ "CopyToClipboardError": "Panoya kopyalanamadı: {hata}",
+ "CopyToClipboardSuccess": "Kopyalandı!",
+ "firewalls": "güvenlik duvarları",
+ "dns resolvers": "dns çözücüler",
+ "docker networks": "Docker ağları",
+ "CurlDebugInfoOAuth2CCUnsupported": "Tam Oauth istemci kimlik bilgisi akışı {curl}'de desteklenmiyor.{newline}Lütfen bir taşıyıcı belirteci alın ve bunu {oauth2_bearer} seçeneği aracılığıyla iletin.",
+ "CurlDebugInfoProxiesUnsupported": "Yukarıdaki {curl} komutunda proxy desteği şu anda uygulanmamıştır.",
+ "Message format": "Mesaj biçimi",
+ "Send rich messages": "Zengin mesajlar gönder",
+ "Notification Channel": "Bildirim Kanalı",
+ "Sound": "Ses",
+ "Alphanumerical string and hyphens only": "Yalnızca alfanümerik dize ve tireler",
+ "Arcade": "Çarşı",
+ "Correct": "Doğru",
+ "Fail": "Hata",
+ "Harp": "Harp",
+ "Reveal": "Ortaya çıkarmak",
+ "Bubble": "Kabarcık",
+ "Doorbell": "Kapı zili",
+ "Flute": "Flüt",
+ "Money": "Para",
+ "Scifi": "Bilimkurgu",
+ "Clear": "Temizlemek",
+ "Elevator": "Asansör",
+ "Guitar": "Gitar",
+ "Pop": "Pop",
+ "Custom sound to override default notification sound": "Varsayılan bildirim sesini geçersiz kılmak için özel ses",
+ "Time Sensitive (iOS Only)": "Zaman Duyarlı (Yalnızca iOS)",
+ "From": "Kimden",
+ "Can be found on:": "Şurada bulunabilir: {0}",
+ "The phone number of the recipient in E.164 format.": "Alıcının E.164 formatındaki telefon numarası.",
+ "ignoredTLSError": "TLS/SSL hataları göz ardı edildi",
+ "CurlDebugInfo": "Monitörü hata ayıklamak için, bunu kendi makinenizin terminaline veya uptime kuma'nın çalıştığı makinenin terminaline yapıştırabilir ve ne istediğinizi görebilirsiniz.{newiline}Lütfen {firewalls}, {dns_resolvers} veya {docker_networks} gibi ağ farklılıklarına dikkat edin.",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "Cihaz rahatsız etmeyin modunda olsa bile, zaman açısından hassas bildirimler anında iletilecek.",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "Cevap alabilmek istiyorsanız E.164 formatında bir kısa mesaj gönderici kimliği veya bir telefon numarası.",
+ "rabbitmqNodesRequired": "Lütfen bu monitör için sunucuları ayarlayın.",
+ "rabbitmqNodesInvalid": "Lütfen RabbitMQ düğümleri için tam nitelikli ('http' ile başlayan) bir URL kullanın.",
+ "RabbitMQ Username": "RabbitMQ Kullanıcı Adı",
+ "RabbitMQ Password": "RabbitMQ Şifresi",
+ "SendGrid API Key": "SendGrid API Anahtarı",
+ "Separate multiple email addresses with commas": "Birden fazla e-posta adresini virgülle ayırın",
+ "RabbitMQ Nodes": "RabbitMQ Yönetim Sunucuları",
+ "rabbitmqNodesDescription": "Protokol ve port dahil olmak üzere RabbitMQ yönetim düğümleri için URL'yi girin. Örnek: {0}",
+ "rabbitmqHelpText": "Monitörü kullanmak için, RabbitMQ kurulumunuzda Yönetim Eklentisini etkinleştirmeniz gerekecektir. Daha fazla bilgi için lütfen {rabitmq_documentation}'a bakın.",
+ "aboutSlackUsername": "Mesaj göndericinin görünen adını değiştir. Eğer birilerini etiketlemek isterseniz, onu ismini dostça ekleyebilirsiniz.",
+ "templateHostnameOrURL": "ana bilgisayar adı veya URL",
+ "templateStatus": "durum",
+ "telegramUseTemplate": "Özel mesaj şablonu kullan",
+ "telegramUseTemplateDescription": "Etkinleştirilirse mesaj özel bir şablon kullanılarak gönderilecektir.",
+ "telegramTemplateFormatDescription": "Telegram, mesajlar için farklı işaretleme dillerinin kullanılmasına izin verir, ayrıntılar için Telegram {0} bölümüne bakın.",
+ "templateServiceName": "servis adı",
+ "telegramServerUrlDescription": "Telegram'ın bot API sınırlamalarını kaldırmak veya engellenen alanlarda (Çin, İran vb.) erişim sağlamak için. Daha fazla bilgi için tıklayın {0}. Varsayılan: {1}",
+ "wahaSession": "Oturum",
+ "wahaChatId": "Sohbet Kimliği (Telefon Numarası / Kişi Kimliği / Grup Kimliği)",
+ "wayToGetWahaApiUrl": "WAHA Örnek URL'niz.",
+ "wayToGetWahaApiKey": "API Anahtarı, WAHA'yı çalıştırmak için kullandığınız WHATSAPP_API_KEY ortam değişkeni değeridir.",
+ "wayToGetWahaSession": "Bu oturumdan itibaren WAHA, Chat ID'ye bildirimler gönderir. Bunu WAHA Dashboard'da bulabilirsiniz.",
+ "wayToWriteWahaChatId": "Uluslararası ön eke sahip, ancak başında artı işareti olmayan telefon numarası ({0}), Kişi Kimliği ({1}) veya Grup Kimliği ({2}). Bildirimler WAHA Session'dan bu Sohbet Kimliğine gönderilir.",
+ "Plain Text": "Düz Metin",
+ "Message Template": "Mesaj Şablonu",
+ "Template Format": "Şablon Biçimi",
+ "YZJ Webhook URL": "YZJ Webhook URL'si",
+ "YZJ Robot Token": "YZJ Robot tokeni",
+ "telegramServerUrl": "(İsteğe bağlı) Sunucu URL'si"
}
diff --git a/src/lang/ug.json b/src/lang/ug.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/src/lang/ug.json
@@ -0,0 +1 @@
+{}
diff --git a/src/lang/uk-UA.json b/src/lang/uk-UA.json
index d5de90849..63070db9f 100644
--- a/src/lang/uk-UA.json
+++ b/src/lang/uk-UA.json
@@ -43,7 +43,7 @@
"Delete": "Видалити",
"Current": "Поточний",
"Uptime": "Аптайм",
- "Cert Exp.": "Сертифікат спливає",
+ "Cert Exp.": "Сертифікат сп.",
"day": "день | днів",
"-day": "днів",
"hour": "година",
@@ -54,7 +54,7 @@
"Keyword": "Ключове слово",
"Friendly Name": "Ім'я",
"URL": "URL",
- "Hostname": "Адреса хоста",
+ "Hostname": "Адреса хосту",
"Port": "Порт",
"Heartbeat Interval": "Частота опитування",
"Retries": "Спроб",
@@ -338,7 +338,6 @@
"About": "Про програму",
"Description": "Опис",
"Powered by": "Працює на основі скрипту від",
- "shrinkDatabaseDescription": "Включає VACUUM для бази даних SQLite. Якщо база даних була створена після версії 1.10.0, AUTO_VACUUM вже включений і ця дія не потрібна.",
"Style": "Стиль",
"info": "ІНФО",
"warning": "УВАГА",
@@ -462,7 +461,7 @@
"onebotMessageType": "OneBot тип повідомлення",
"onebotGroupMessage": "Група",
"onebotPrivateMessage": "Приватне",
- "onebotUserOrGroupId": "Група/ID користувача",
+ "onebotUserOrGroupId": "ID групи/користувача",
"onebotSafetyTips": "Для безпеки необхідно встановити маркер доступу",
"PushDeer Key": "PushDeer ключ",
"Footer Text": "Текст нижнього колонтитула",
@@ -720,7 +719,7 @@
"RadiusCallingStationId": "ID станції, яка викликає",
"Setup Docker Host": "Налаштування Docker-хосту",
"Connection Type": "Тип підключення",
- "Docker Daemon": "Docker Daemon",
+ "Docker Daemon": "Демон Docker",
"socket": "Сокет",
"tcp": "TCP / HTTP",
"Container Name / ID": "Назва / ID контейнера",
@@ -802,7 +801,6 @@
"Request Body": "Тіло запиту",
"Badge Preview": "Попередній перегляд бейджа",
"Badge Duration (in hours)": "Тривалість бейджа (у годинах)",
- "jsonQueryDescription": "Виконувати json-запит до відповіді та перевірити очікуване значення (значення, що повертається, буде перетворено в рядок для порівняння). Зверніться до {0} щоб ознайомитися з документацією про мову запитів. Навчальний майданчик можна знайти {1}.",
"twilioApiKey": "Api ключ (необов'язково)",
"Expected Value": "Очікуване значення",
"Json Query": "Json-запит",
@@ -835,7 +833,7 @@
"noOrBadCertificate": "Відсутність/поганий сертифікат",
"Select": "Вибрати",
"selectedMonitorCount": "Вибрано: {0}",
- "wayToGetFlashDutyKey": "Ви можете перейти на сторінку \"Канал -> (Виберіть канал) -> Інтеграції -> Додати нову інтеграцію\", додати \"Користувацьку подію\", щоб отримати пуш-адресу, скопіювати ключ інтеграції в адресу. Для отримання додаткової інформації, будь ласка, відвідайте",
+ "wayToGetFlashDutyKey": "Ви можете перейти на сторінку \"Канал -> (Виберіть канал) -> Інтеграції -> Додати нову інтеграцію\", додайте \"Uptime Kuma\", щоб отримати пуш-адресу, скопіюйте ключ інтеграції в адресу. Для отримання додаткової інформації, будь ласка, відвідайте",
"nostrRecipientsHelp": "Формат npub, по одному в рядку",
"Check/Uncheck": "Встановити/зняти галочку",
"PushDeer Server": "Сервер PushDeer",
@@ -848,8 +846,8 @@
"styleElapsedTimeShowWithLine": "Показати (з лінією)",
"styleElapsedTimeShowNoLine": "Показати (без лінії)",
"enableNSCD": "Увімкнути NSCD (Name Service Cache Daemon) для кешування всіх DNS-запитів",
- "setupDatabaseChooseDatabase": "Яку базу даних ви хочете використовувати?",
- "setupDatabaseEmbeddedMariaDB": "Вам не потрібно нічого налаштовувати. Цей докер-образ містить вбудовану та автоматично налаштовану базу даних MariaDB. Uptime Kuma підключиться до цієї бази даних через unix-сокет.",
+ "setupDatabaseChooseDatabase": "Яку базу даних ви бажаєте використовувати?",
+ "setupDatabaseEmbeddedMariaDB": "Вам не потрібно нічого налаштовувати. Цей докер-образ містить вбудовану та автоматично налаштовану базу даних MariaDB. Uptime Kuma під'єднатися до цієї бази даних через unix-сокет.",
"setupDatabaseSQLite": "Простий файл бази даних, рекомендований для невеликих проєктів. До версії 2.0.0 Uptime Kuma використовувала SQLite як базу даних за замовчуванням.",
"setupDatabaseMariaDB": "Підключитися до зовнішньої бази даних MariaDB. Вам потрібно задати інформацію для підключення до бази даних.",
"dbName": "Назва бази даних",
@@ -924,5 +922,207 @@
"statusPageSpecialSlugDesc": "Спеціальний slug {0}: ця сторінка буде показана, якщо slug не надано",
"Search monitored sites": "Пошук сайтів, що відстежуються",
"ntfyPriorityHelptextAllEvents": "Усі події надсилаються з максимальним пріоритетом",
- "What is a Remote Browser?": "Що таке віддалений браузер?"
+ "What is a Remote Browser?": "Що таке віддалений браузер?",
+ "Your User ID": "Ваш ID користувача",
+ "Channel access token (Long-lived)": "Токен доступу до каналу (довготривалий)",
+ "documentationOf": "{0} Документація",
+ "wayToGetHeiiOnCallDetails": "Як отримати Trigger ID та API-ключі пояснюється в {documentation}",
+ "To Phone Number": "На номер телефону",
+ "gtxMessagingToHint": "Міжнародний формат, з \"+\" на початку ({e164}, {e212} або {e214})",
+ "gtxMessagingApiKeyHint": "Ви можете знайти свій API-ключ тут: API-ключ: Мої облікові записи маршрутизації > Показати інформацію про обліковий запис > Облікові дані API > REST API (v2.x)",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "З номера телефону / вихідної адреси маршруту передачі (TPOA)",
+ "gtxMessagingFromHint": "На мобільних телефонах ваші одержувачі бачать TPOA як відправника повідомлення. Допускається до 11 буквено-цифрових символів, короткий код, місцевий довгий код або міжнародні номери ({e164}, {e212} або {e214})",
+ "Originator type": "Тип відправника",
+ "Alphanumeric (recommended)": "Буквено-цифровий (рекомендовано)",
+ "Telephone number": "Номер телефону",
+ "Originator": "Відправник",
+ "cellsyntOriginator": "Відображається на мобільному телефоні одержувача як відправник повідомлення. Допустимі значення та функції залежать від параметра originatortype.",
+ "Destination": "Пункт призначення",
+ "callMeBotGet": "Тут ви можете згенерувати кінцеву точку для {0}, {1} і {2}. Майте на увазі, що ви можете бути обмежені у швидкості. Обмеження швидкості виглядає наступним чином: {3}",
+ "cellsyntOriginatortypeAlphanumeric": "Рядок буквено-цифровий (максимум 11 буквено-цифрових символів). Отримувачі не можуть відповісти на повідомлення.",
+ "cellsyntOriginatortypeNumeric": "Числове значення (максимум 15 цифр) з номером телефону в міжнародному форматі без 00 на початку (наприклад, британський номер 07920 110 000 має бути вказаний як 447920110000). Одержувачі можуть відповісти на повідомлення.",
+ "Allow Long SMS": "Дозволити довгі СМС",
+ "wayToGetWhapiUrlAndToken": "Можна отримати URL API та токен, зайдіть у бажаний канал з {0}",
+ "whapiRecipient": "Номер телефону / ID контакту / ID групи",
+ "API URL": "API URL",
+ "cellsyntSplitLongMessages": "Розбивати довгі повідомлення на 6 частин. 153 x 6 = 918 символів.",
+ "max 15 digits": "максимум 15 символів",
+ "wayToWriteWhapiRecipient": "Телефонний номер з міжнародним префіксом, але без плюсового знаку на початку ({0}), ID контакту ({1}) або ID групи ({2}).",
+ "cellsyntDestination": "Номер телефону одержувача в міжнародному форматі з 00 на початку, за яким слідує код країни, наприклад, 00447920110000 для британського номера 07920 110 000 (максимум 17 цифр). Максимум 25000 одержувачів, розділених комами, на один HTTP-запит.",
+ "max 11 alphanumeric characters": "максимум 11 буквено-цифрових символів",
+ "locally configured mail transfer agent": "локально налаштований агент пересилання пошти",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Або введіть ім'я хосту сервера, до якого ви хочете підключитися, або {localhost}, якщо ви маєте намір використовувати {local_mta}",
+ "Don't mention people": "Не згадувати людей",
+ "Mentioning": "Згадування",
+ "Mention group": "Згадати {group}",
+ "senderSevenIO": "Номер або ім'я відправника",
+ "receiverSevenIO": "Номер одержувача",
+ "apiKeySevenIO": "API-ключ SevenIO",
+ "wayToGetSevenIOApiKey": "Відвідайте інформаційну панель у розділі app.seven.io > developer > api key > зелена кнопка додавання",
+ "receiverInfoSevenIO": "Якщо номер одержувача знаходиться не в Німеччині, ви повинні додати код країни перед номером (наприклад, для коду країни 1 з США використовуйте 117612121212 замість 017612121212)",
+ "Host URL": "URL-адреса хосту",
+ "threadForumPostID": "ID теми/повідомлення на форумі",
+ "whatHappensAtForumPost": "Створити нове повідомлення на форумі. Це НЕ призводить до публікації повідомлень в існуючих темах. Щоб написати повідомлення в існуючому дописі, використовуйте \"{option}\"",
+ "wayToGetDiscordThreadId": "Отримання id теми/допису на форумі подібне до отримання id каналу. Дізнайтеся більше про те, як отримати ідентифікатори {0}",
+ "Command": "Команда",
+ "mongodbCommandDescription": "Виконайте MongoDB-команду до бази даних. Для отримання інформації про доступні команди зверніться до {documentation}",
+ "Bitrix24 Webhook URL": "URL-адреса вебхука Бітрікс24",
+ "wayToGetBitrix24Webhook": "Ви можете створити вебхук, виконавши кроки за адресою {0}",
+ "bitrix24SupportUserID": "Введіть свій ID користувача в Бітрікс24. Дізнатися ID можна за посиланням, перейшовши в профіль користувача.",
+ "Select message type": "Вибрати тип повідомлення",
+ "Send to channel": "Надіслати в канал",
+ "Create new forum post": "Створити нове повідомлення на форумі",
+ "postToExistingThread": "Написати до існуючої теми/повідомлення на форумі",
+ "Refresh Interval": "Інтервал оновлення",
+ "Refresh Interval Description": "Сторінка стану буде робити повне оновлення сайту кожні {0} секунд",
+ "ignoreTLSErrorGeneral": "Ігнорувати помилку TLS/SSL для з'єднання",
+ "forumPostName": "Назва повідомлення на форумі",
+ "e.g. {discordThreadID}": "наприклад, {discordThreadID}",
+ "smspartnerPhoneNumber": "Телефонний номер(и)",
+ "smspartnerSenderNameInfo": "Має містити в межах 3..=11 звичайних символів",
+ "smspartnerSenderName": "Ім'я відправника SMS",
+ "smspartnerApiurl": "Ви можете знайти свій API-ключ у своїй інформаційній панелі за адресою {0}",
+ "smspartnerPhoneNumberHelptext": "Номер повинен бути в міжнародному форматі {0}, {1}. Кілька номерів повинні бути розділені символом {2}",
+ "threemaRecipient": "Одержувач",
+ "threemaRecipientType": "Тип одержувача",
+ "threemaRecipientTypeIdentity": "Threema-ID",
+ "threemaRecipientTypePhone": "Номер телефону",
+ "threemaRecipientTypePhoneFormat": "E.164, без + на початку",
+ "threemaRecipientTypeEmail": "Електронна адреса",
+ "threemaSenderIdentity": "ID шлюзу",
+ "threemaApiAuthenticationSecret": "Секрет ID шлюзу",
+ "wayToGetThreemaGateway": "Ви можете зареєструватися на Threema Gateway {0}.",
+ "threemaRecipientTypeIdentityFormat": "8 символів",
+ "threemaSenderIdentityFormat": "8 символів, зазвичай починається з *",
+ "threemaBasicModeInfo": "Примітка: Ця інтеграція використовує Threema Gateway у базовому режимі (шифрування на основі сервера). Більш детальну інформацію можна знайти {0}.",
+ "apiKeysDisabledMsg": "API-ключі вимкнено, оскільки автентифікація вимкнена.",
+ "jsonQueryDescription": "Розбір і вилучення конкретних даних з JSON-відповіді сервера за допомогою JSON-запиту або використання символу «$» для необробленої відповіді, якщо не очікується JSON. Результат порівнюється з очікуваним значенням у вигляді рядків. Дивіться {0} для отримання документації і використовуйте {1} для експериментів із запитами.",
+ "snmpCommunityStringHelptext": "Цей рядок слугує паролем для автентифікації та контролю доступу до пристроїв з підтримкою SNMP. Узгодьте його з конфігурацією вашого SNMP-пристрою.",
+ "snmpOIDHelptext": "Введіть OID для датчика або стану, який ви хочете моніторити. Якщо ви не впевнені щодо OID, скористайтеся інструментами керування мережею, як-от MIB-браузерами або програмним забезпеченням SNMP.",
+ "wayToGetOnesenderUrlandToken": "Ви можете отримати URL-адресу і токен, перейшовши на сайт Onesender. Більше інформації {0}",
+ "conditionValuePlaceholder": "Значення",
+ "not equals": "не дорівнює",
+ "not ends with": "не закінчується на",
+ "and": "і",
+ "Private Number": "Приватний номер",
+ "signl4Docs": "Ви можете знайти більше інформації про те, як налаштувати SIGNL4 і як отримати URL-адресу вебхука SIGNL4 в розділі {0}.",
+ "now": "зараз",
+ "time ago": "{0} тому",
+ "-year": "-рік",
+ "Json Query Expression": "Вираз запиту Json",
+ "cacheBusterParam": "Додати параметр {0}",
+ "cacheBusterParamDescription": "Випадково згенерований параметр для обходу кешування.",
+ "OID (Object Identifier)": "OID (ідентифікатор об'єкта)",
+ "Condition": "Умова",
+ "SNMP Version": "Версія SNMP",
+ "Please enter a valid OID.": "Будь ласка, введіть дійсний OID.",
+ "privateOnesenderDesc": "Переконайтеся, що номер телефону дійсний. Щоб надіслати повідомлення на приватний номер телефону, наприклад: 628123456789",
+ "groupOnesenderDesc": "Переконайтеся, що GroupID дійсний. Щоб надіслати повідомлення в Групу, наприклад: 628123456789-342345",
+ "Add Remote Browser": "Додати віддалений браузер",
+ "New Group": "Нова група",
+ "Group Name": "Назва групи",
+ "Group ID": "ID групи",
+ "OAuth2: Client Credentials": "OAuth2: Облікові дані клієнта",
+ "Authentication Method": "Метод автентифікації",
+ "Authorization Header": "Заголовок авторизації",
+ "OAuth Token URL": "URL-адреса токену OAuth",
+ "Community String": "Рядок спільноти",
+ "Host Onesender": "Хост Onesender",
+ "Token Onesender": "Токен Onesender",
+ "Recipient Type": "Тип отримувача",
+ "Form Data Body": "Тіло даних форми",
+ "Client ID": "ID клієнта",
+ "Client Secret": "Секрет клієнта",
+ "Go back to home page.": "Повернутися на головну сторінку.",
+ "No tags found.": "Тегів не знайдено.",
+ "Lost connection to the socket server.": "Втрачено з'єднання з сервером сокетів.",
+ "Cannot connect to the socket server.": "Не вдається з'єднатися з сервером сокетів.",
+ "Conditions": "Умови",
+ "conditionAdd": "Додати умову",
+ "conditionDelete": "Видалити умову",
+ "conditionAddGroup": "Додати групу",
+ "conditionDeleteGroup": "Видалити групу",
+ "OAuth Scope": "OAuth дозволи",
+ "Optional: Space separated list of scopes": "Необов'язково: Розділений пробілами список дозволів",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "URL-адреса вебхука SIGNL4",
+ "equals": "дорівнює",
+ "contains": "містить",
+ "not contains": "не містить",
+ "starts with": "починається з",
+ "not starts with": "не починається з",
+ "ends with": "закінчується на",
+ "less than": "менше, ніж",
+ "greater than": "більше, ніж",
+ "less than or equal to": "менше або дорівнює",
+ "greater than or equal to": "більше або дорівнює",
+ "record": "запис",
+ "shrinkDatabaseDescriptionSqlite": "Запускає команду {vacuum} для бази даних SQLite. Команда {auto_vacuum} вже увімкнена, але вона не дефрагментує базу даних і не перепаковує окремі сторінки бази даних так, як це робить команда {vacuum}.",
+ "ignoredTLSError": "Помилки TLS/SSL проігноровано",
+ "Debug": "Налагодження",
+ "Copy": "Копіювати",
+ "CopyToClipboardError": "Не вдалося скопіювати в буфер обміну: {error}",
+ "CopyToClipboardSuccess": "Скопійовано!",
+ "firewalls": "фаєрволи",
+ "dns resolvers": "dns сервери",
+ "docker networks": "docker-мережі",
+ "CurlDebugInfoProxiesUnsupported": "Підтримка проксі у наведеній вище команді {curl} наразі не реалізована.",
+ "Message format": "Формат повідомлення",
+ "Send rich messages": "Надіслати розгорнуті повідомлення",
+ "Notification Channel": "Канал сповіщення",
+ "Sound": "Звук",
+ "Alphanumerical string and hyphens only": "Тільки алфавітно-цифровий рядок і дефіси",
+ "Arcade": "Аркада",
+ "Correct": "Вірно",
+ "Fail": "Невдача",
+ "Harp": "Арфа",
+ "Reveal": "Розкриття",
+ "Bubble": "Бульбашка",
+ "Doorbell": "Дзвінок",
+ "Flute": "Флейта",
+ "Money": "Гроші",
+ "Scifi": "Наукова фантастика",
+ "Clear": "Чисто",
+ "Elevator": "Ліфт",
+ "Guitar": "Гітара",
+ "Pop": "Поп",
+ "Custom sound to override default notification sound": "Користувацький звук для заміни звуку сповіщень за замовчуванням",
+ "Time Sensitive (iOS Only)": "Чутливий до часу (лише для iOS)",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "Сповіщення, що залежать від часу, будуть доставлені негайно, навіть якщо пристрій перебуває в режимі «Не турбувати».",
+ "From": "Від",
+ "The phone number of the recipient in E.164 format.": "Номер телефону одержувача у форматі E.164.",
+ "CurlDebugInfo": "Для налагодження монітора ви можете вставити цей файл у термінал вашої власної машини або у термінал машини, на якій запущено uptime kuma, і подивитися, що ви запитуєте.{newline}Зверніть увагу на мережеві відмінності, такі як {firewalls}, {dns_resolvers} або {docker_networks}.",
+ "CurlDebugInfoOAuth2CCUnsupported": "Повний потік облікових даних клієнта oauth не підтримується в {curl}.{newline}Потрібно отримати bearer-токен і передати його за допомогою опції {oauth2_bearer}.",
+ "Can be found on:": "Можна знайти на: {0}",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "Або ідентифікатор відправника тексту, або номер телефону у форматі E.164, якщо ви хочете отримувати відповіді.",
+ "rabbitmqNodesRequired": "Будь ласка, встановіть вузли для цього монітора.",
+ "RabbitMQ Username": "Ім'я користувача RabbitMQ",
+ "RabbitMQ Password": "Пароль RabbitMQ",
+ "SendGrid API Key": "API-ключ SendGrid",
+ "Separate multiple email addresses with commas": "Розділяйте кілька адрес комами",
+ "RabbitMQ Nodes": "Вузли керування RabbitMQ",
+ "rabbitmqNodesDescription": "Введіть URL-адресу для вузлів керування RabbitMQ, включаючи протокол і порт. Приклад: {0}",
+ "rabbitmqNodesInvalid": "Будь ласка, використовуйте повну URL-адресу (починаючи з 'http') для вузлів RabbitMQ.",
+ "rabbitmqHelpText": "Щоб використовувати монітор, вам потрібно увімкнути плагін керування у налаштуваннях RabbitMQ. Для отримання додаткової інформації, будь ласка, зверніться до {rabitmq_documentation}.",
+ "aboutSlackUsername": "Змінює відображуване ім'я відправника повідомлення. Якщо ви хочете згадати когось, додайте його до дружнього імені.",
+ "templateServiceName": "назва сервісу",
+ "templateHostnameOrURL": "ім'я хосту або URL",
+ "telegramUseTemplate": "Використовувати власний шаблон повідомлення",
+ "telegramUseTemplateDescription": "Якщо увімкнено, повідомлення буде надіслано з використанням спеціального шаблону.",
+ "telegramTemplateFormatDescription": "Telegram дозволяє використовувати різні мови розмітки для повідомлень, див. Telegram {0} для більш детальної інформації.",
+ "Plain Text": "Звичайний текст",
+ "templateStatus": "статус",
+ "Message Template": "Шаблон повідомлення",
+ "Template Format": "Формат шаблону",
+ "YZJ Webhook URL": "URL вебхука YZJ",
+ "YZJ Robot Token": "Токен YZJ Robot",
+ "wayToGetWahaApiUrl": "URL вашого екземпляра WAHA.",
+ "wayToGetWahaApiKey": "Ключ API - це значення змінної оточення WHATSAPP_API_KEY, яку ви використовували для запуску WAHA.",
+ "wahaSession": "Сесія",
+ "wahaChatId": "ID чату (номер телефону / ID контакту / ID групи)",
+ "wayToGetWahaSession": "З цієї сесії WAHA надсилає сповіщення на ID чату. Ви можете знайти його в інформаційній панелі WAHA.",
+ "wayToWriteWahaChatId": "Номер телефону з міжнародним префіксом, але без знака плюс на початку ({0}), ID контакту ({1}) або ID групи ({2}). На цей ID чату надсилаються сповіщення з сеансу WAHA.",
+ "telegramServerUrl": "(Необов'язково) URL сервера",
+ "telegramServerUrlDescription": "Щоб зняти обмеження з Telegram bot api або отримати доступ у заблокованих регіонах (Китай, Іран тощо). Для отримання додаткової інформації натисніть {0}. За замовчуванням: {1}",
+ "Font Twemoji by Twitter licensed under": "Шрифт Twemoji від Twitter ліцензований під"
}
diff --git a/src/lang/ur.json b/src/lang/ur.json
index 5df21232f..2ba588cb9 100644
--- a/src/lang/ur.json
+++ b/src/lang/ur.json
@@ -59,7 +59,7 @@
"pushOptionalParams": "اختیاری پیرامیٹرز: {0}",
"Save": "محفوظ کریں",
"Notifications": "اطلاعات",
- "Setup Notification": "سیٹ اپ نوٹیفکیشن",
+ "Setup Notification": "نوٹیفکیشن مرتب کریں",
"Light": "روشنی",
"Dark": "اندھیرا",
"Auto": "آٹو",
@@ -109,7 +109,6 @@
"Passive Monitor Type": "غیر فعال مانیٹر کی قسم",
"No important events": "کوئی اہم واقعات نہیں",
"-hour": "-گھنٹہ",
- "shrinkDatabaseDescription": "SQLite کے لیے ڈیٹا بیس ویکیوم کو متحرک کریں۔ اگر آپ کا ڈیٹا بیس 1.10.0 کے بعد بنتا ہے، تو AUTO_VACUUM پہلے ہی فعال ہے اور اس کارروائی کی ضرورت نہیں ہے۔",
"goAlertIntegrationKeyInfo": "اس فارمیٹ میں سروس کے لیے عام API انٹیگریشن کلید حاصل کریں \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee\" عام طور پر کاپی شدہ URL کے ٹوکن پیرامیٹر کی قدر۔",
"Sms template must contain parameters: ": "ایس ایم ایس ٹیمپلیٹ میں پیرامیٹرز ہونا ضروری ہے: ",
"Keyword": "کلیدی لفظ",
@@ -119,7 +118,7 @@
"resendDisabled": "دوبارہ بھیجنا غیر فعال ہے",
"retriesDescription": "سروس کو ڈاؤن کے بطور نشان زد کرنے اور ایک اطلاع بھیجے جانے سے پہلے زیادہ سے زیادہ کوششیں کریں",
"maxRedirectDescription": "فالو کرنے کے لیے ری ڈائریکٹس کی زیادہ سے زیادہ تعداد۔ ری ڈائریکٹ کو غیر فعال کرنے کے لیے 0 پر سیٹ کریں۔",
- "Not available, please setup.": "دستیاب نہیں، براہ کرم سیٹ اپ کریں۔",
+ "Not available, please setup.": "دستیاب نہیں ہے، براہ کرم ترتیب دیں۔",
"Timezone": "ٹائم زون",
"Discourage search engines from indexing site": "انڈیکسنگ سائٹ سے سرچ انجنوں کی حوصلہ شکنی کریں",
"disableauth.message1": "کیا آپ واقعی {disableAuth} کرنا چاہتے ہیں؟",
@@ -152,7 +151,7 @@
"Overwrite": "اوور رائٹ کریں",
"Options": "اختیارات",
"Verify Token": "ٹوکن کی تصدیق کریں",
- "Setup 2FA": "2FA سیٹ اپ کریں",
+ "Setup 2FA": "2FA مرتب کریں",
"Enable 2FA": "2FA کو فعال کریں",
"2FA Settings": "2FA کی ترتیبات",
"Two Factor Authentication": "دو عنصر کی تصدیق",
@@ -369,7 +368,7 @@
"Connection String": "کنکشن سٹرنگ",
"Query": "استفسار",
"settingsCertificateExpiry": "TLS سرٹیفکیٹ کی میعاد ختم",
- "Setup Docker Host": "ڈوکر ہوسٹ سیٹ اپ کریں",
+ "Setup Docker Host": "ڈوکر ہوسٹ مرتب کریں",
"Connection Type": "کنکشن کی قسم",
"Docker Daemon": "ڈوکر ڈیمون",
"deleteDockerHostMsg": "کیا آپ واقعی تمام مانیٹر کے لیے اس ڈاکر ہوسٹ کو حذف کرنا چاہتے ہیں؟",
@@ -484,7 +483,7 @@
"Json Query": "Json استفسار",
"setupDatabaseMariaDB": "ایک بیرونی ماریا ڈی بی ڈیٹا بیس سے جڑیں۔ آپ کو ڈیٹا بیس کنکشن کی معلومات سیٹ کرنے کی ضرورت ہے۔",
"wayToGetDiscordURL": "آپ اسے سرور کی ترتیبات -> انٹیگریشنز -> ویب ہکس دیکھیں -> نیو ویب ہک پر جاکر حاصل کرسکتے ہیں",
- "setupDatabaseChooseDatabase": "آپ کون سا ڈیٹا بیس استعمال کرنا چاہتے ہیں؟",
+ "setupDatabaseChooseDatabase": "آپ کون سا ڈیٹا بیس استعمال کرنا چاہیں گے؟",
"setupDatabaseEmbeddedMariaDB": "آپ کو کچھ بھی سیٹ کرنے کی ضرورت نہیں ہے۔ اس ڈاکر امیج نے آپ کے لیے ماریا ڈی بی کو خود بخود ایمبیڈ اور کنفیگر کر دیا ہے۔ اپ ٹائم کوما یونکس ساکٹ کے ذریعے اس ڈیٹا بیس سے جڑے گا۔",
"setupDatabaseSQLite": "ایک سادہ ڈیٹا بیس فائل، چھوٹے پیمانے پر تعیناتیوں کے لیے تجویز کردہ۔ v2.0.0 سے پہلے، Uptime Kuma SQLite کو بطور ڈیفالٹ ڈیٹا بیس استعمال کرتا تھا۔",
"dbName": "ڈیٹا بیس کا نام",
@@ -521,7 +520,7 @@
"emailTemplateServiceName": "سروس کا نام",
"emailTemplateHostnameOrURL": "میزبان نام یا URL",
"emailTemplateStatus": "حالت",
- "noDockerHostMsg": "دستیاب نہیں ہے. پہلے ایک ڈاکر ہوسٹ سیٹ اپ کریں۔",
+ "noDockerHostMsg": "دستیاب نہیں ہے. پہلے ایک ڈاکر ہوسٹ مرتب کریں۔",
"emailTemplateLimitedToUpDownNotification": "صرف UP/DOWN دل کی دھڑکنوں کے لیے دستیاب ہے، ورنہ کالعدم",
"liquidIntroduction": "Templatability Liquid templating زبان کے ذریعے حاصل کی جاتی ہے۔ براہ کرم استعمال کی ہدایات کے لیے {0} سے رجوع کریں۔ یہ دستیاب متغیرات ہیں:",
"templateMsg": "اطلاع کا پیغام",
@@ -542,5 +541,29 @@
"Access Token": "ٹوکن تک رسائی حاصل کریں",
"Channel access token": "چینل تک رسائی کا ٹوکن",
"Line Developers Console": "لائن ڈویلپرز کنسول",
- "lineDevConsoleTo": "لائن ڈیولپرز کنسول - {0}"
+ "lineDevConsoleTo": "لائن ڈیولپرز کنسول - {0}",
+ "successKeywordExplanation": "MQTT کلیدی لفظ جسے کامیابی سمجھا جائے گا",
+ "User ID": "صارف کی شناخت",
+ "Search monitored sites": "نگرانی شدہ سائٹس تلاش کریں",
+ "successKeyword": "کامیابی کا کلیدی لفظ",
+ "statusPageSpecialSlugDesc": "خصوصی سلگ {0}: یہ صفحہ اس وقت دکھایا جائے گا جب کوئی سلگ فراہم نہ کیا جائے",
+ "settingUpDatabaseMSG": "ڈیٹا بیس کی ترتیب۔ اس میں کچھ وقت لگ سکتا ہے، براہ کرم صبر کریں۔",
+ "Add a new expiry notification day": "میعاد ختم ہونے کی اطلاع کا نیا دن شامل کریں",
+ "Remove the expiry notification": "میعاد ختم ہونے کی اطلاع کے دن کو ہٹا دیں",
+ "postToExistingThread": "موجودہ تھریڈ/فورم پوسٹ پر پوسٹ کریں",
+ "forumPostName": "فورم پوسٹ کا نام",
+ "threadForumPostID": "تھریڈ / فورم پوسٹ آئی ڈی",
+ "e.g. {discordThreadID}": "جیسے {discordThreadID}",
+ "Select message type": "پیغام کی قسم منتخب کریں",
+ "Send to channel": "چینل پر بھیجیں",
+ "Create new forum post": "نئی فورم پوسٹ بنائیں",
+ "whatHappensAtForumPost": "ایک نئی فورم پوسٹ بنائیں۔ یہ موجودہ پوسٹ میں پیغامات پوسٹ نہیں کرتا ہے۔ موجودہ پوسٹ میں پوسٹ کرنے کے لیے \"{option}\" کا استعمال کریں",
+ "wayToGetDiscordThreadId": "تھریڈ/فورم پوسٹ آئی ڈی حاصل کرنا چینل آئی ڈی حاصل کرنے کے مترادف ہے۔ آئی ڈی حاصل کرنے کے طریقے کے بارے میں مزید پڑھیں {0}",
+ "Channel access token (Long-lived)": "چینل تک رسائی کا ٹوکن (طویل المدت)",
+ "Host URL": "میزبان یو آر ایل",
+ "Refresh Interval": "تروتازہ کیا وقفہ",
+ "Refresh Interval Description": "اسٹیٹس کا صفحہ ہر {0} سیکنڈ میں مکمل سائٹ ریفریش کرے گا",
+ "ignoreTLSErrorGeneral": "کنکشن کے لیے TLS/SSL کی خرابی کو نظر انداز کریں",
+ "locally configured mail transfer agent": "مقامی طور پر ترتیب شدہ میل ٹرانسفر ایجنٹ",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "یا تو اس سرور کا میزبان نام درج کریں جس سے آپ جڑنا چاہتے ہیں یا اگر آپ {local_mta} استعمال کرنا چاہتے ہیں تو {localhost}"
}
diff --git a/src/lang/vi-VN.json b/src/lang/vi-VN.json
index 3a7eb2636..3e196350c 100644
--- a/src/lang/vi-VN.json
+++ b/src/lang/vi-VN.json
@@ -80,8 +80,8 @@
"pushOptionalParams": "Tham số tuỳ chọn: {0}",
"Save": "Lưu",
"Notifications": "Thông báo",
- "Not available, please setup.": "Chưa sẵn sàng, hãy cài đặt.",
- "Setup Notification": "Cài đặt thông báo",
+ "Not available, please setup.": "Không tồn tại, hãy cài đặt.",
+ "Setup Notification": "Thiết lập thông báo",
"Light": "Sáng",
"Dark": "Tối",
"Auto": "Tự động",
@@ -150,7 +150,7 @@
"Options": "Tuỳ chọn",
"Keep both": "Giữ lại cả hai",
"Verify Token": "Xác minh Token",
- "Setup 2FA": "Cài đặt xác thực 2 lớp (2FA)",
+ "Setup 2FA": "Thiết lập xác thực 2 lớp (2FA)",
"Enable 2FA": "Bật xác thực 2 lớp (2FA)",
"Disable 2FA": "Tắt xác thực 2 lớp (2FA)",
"2FA Settings": "Cài đặt xác thực 2 lớp (2FA)",
@@ -355,7 +355,6 @@
"Discard": "Bỏ",
"Cancel": "Hủy",
"Powered by": "Được cung cấp bởi",
- "shrinkDatabaseDescription": "Khởi chạy database VACCUM cho SQLite. Nếu database được tạo sau version 1.10.0, AUTO_VACCUM đã được bật sẵn, hành động này không cần thiết.",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "API Username (incl. webapi_ prefix)",
"serwersmsAPIPassword": "API Password",
@@ -451,7 +450,7 @@
"Issuer:": "Issuer:",
"Fingerprint:": "Fingerprint:",
"No status pages": "No status pages",
- "Domain Name Expiry Notification": "Cảnh báo hạn hạn Domain Name",
+ "Domain Name Expiry Notification": "Cảnh báo hết hạn tên miền",
"Proxy": "Proxy",
"Date Created": "Ngày khởi tạo",
"onebotHttpAddress": "OneBot HTTP Address",
@@ -504,7 +503,7 @@
"resendDisabled": "Vô hiệu hoá gửi phản hồi liên tục",
"resendEveryXTimes": "Gửi phản hồi mỗi {0} lần",
"setupDatabaseMariaDB": "Kết nối tới một cơ sở dữ liệu MariaDB bên ngoài. Bạn cần cấu hình thông tin kết nối cơ sở dữ liệu.",
- "setupDatabaseChooseDatabase": "Bạn muốn dùng cơ sở dữ liệu nào?",
+ "setupDatabaseChooseDatabase": "Bạn muốn dùng loại cơ sở dữ liệu nào?",
"setupDatabaseEmbeddedMariaDB": "Bạn không cần phải cài đặt bất cứ thứ gì. Docker image đã nhúng và cấu hình tự động cơ sở dữ liệu MariaDB cho bạn. Uptime Kuma sẽ kết nối tới cơ sở dữ liệu thông qua unix socket.",
"setupDatabaseSQLite": "Một tệp cơ sở dữ liệu đơn giản, được khuyên dùng cho quy mô triển khai nhỏ. Trước v2.0.0, Uptime Kuma sử dụng SQLite như là một cơ sở dữ liệu mặc định.",
"dbName": "Tên cơ sở dữ liệu",
@@ -522,5 +521,39 @@
"styleElapsedTime": "Thời gian đã qua dưới thanh trạng thái",
"styleElapsedTimeShowNoLine": "Hiển Thị (Không Dòng Kẻ)",
"styleElapsedTimeShowWithLine": "Hiển Thị (Có Dòng Kẻ)",
- "Request Timeout": "Yêu cầu hết hạn"
+ "Request Timeout": "Yêu cầu hết hạn",
+ "now": "hiện tại",
+ "Add a new expiry notification day": "Thêm ngày hết hạn",
+ "time ago": "đã qua {0} giây",
+ "There might be a typing error in the address.": "Có lỗi trong quá trình nhập địa chỉ",
+ "DockerHostRequired": "Vui lòng đặt Docker Host cho trang giám sát này",
+ "templateMsg": "Tin nhắn",
+ "-year": "-năm",
+ "filterActive": "Hoạt động",
+ "filterActivePaused": "Tạm dừng",
+ "Search monitored sites": "Tìm kiếm trang",
+ "Reset Token": "Thiết lập lại Token",
+ "Remove the expiry notification": "Xóa ngày hết hạn",
+ "API Username": "Tên người dùng API",
+ "Also check beta release": "Hãy kiểm tra bản beta",
+ "Check/Uncheck": "Chọn/Bỏ chọn",
+ "API Key": "mã API",
+ "Coming Soon": "Sắp tới",
+ "Query": "Tìm kiếm",
+ "Setup Docker Host": "Thiết lập máy chủ Docker",
+ "Connection Type": "Loại kết nối",
+ "Docker Daemon": "Trình nền docker",
+ "noDockerHostMsg": "Không tồn tại. Vui lòng thiết lập máy chủ Docker trước",
+ "Host URL": "URL Máy chủ",
+ "Footer Text": "Chân trang",
+ "Refresh Interval": "Tốc độ làm mới",
+ "Refresh Interval Description": "Trang status sẽ tự làm mới mỗi {0} giây",
+ "Connection String": "Chuỗi kết nối",
+ "settingsCertificateExpiry": "Ngày hết hạn chứng chỉ TLS",
+ "ignoreTLSErrorGeneral": "Bỏ qua lỗi TLS/SSL cho kết nối",
+ "Select": "Chọn",
+ "selectedMonitorCount": "Đã chọn: {0}",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "nhập hostname của server bạn muốn kết nối hoặc {localhost} nếu bạn muốn dùng {local_mta}",
+ "webhookBodyPresetOption": "Cài đặt sẵn",
+ "critical": "nguy kịch"
}
diff --git a/src/lang/xh.json b/src/lang/xh.json
index 0967ef424..29d4c0e1d 100644
--- a/src/lang/xh.json
+++ b/src/lang/xh.json
@@ -1 +1,7 @@
-{}
+{
+ "setupDatabaseEmbeddedMariaDB": "Akukho mfuneko yokuba usethe nantoni na. Lo mfanekiso weDocker sele uqulathe kwaye ulungiselele iMariaDB ngokuzenzekelayo. I-Uptime Kuma iya kuqhagamshela kule database nge-unix socket.",
+ "setupDatabaseChooseDatabase": "Ngowuphi umthombo wedatha ofuna ukuwusebenzisa?",
+ "setupDatabaseMariaDB": "Qhagamshela kwi-database yeMariaDB yangaphandle. Kuya kufuneka usethe ulwazi loqhagamshelo lwedathabase.",
+ "setupDatabaseSQLite": "I database elula, ecetyiswayo kusetyenziso oluncinci. Ngaphambi kwe v2.0.0, i-Uptime Kuma yayisebenzisa i-SQLite njenge database yomdibaniso.",
+ "settingUpDatabaseMSG": "Ukumisela i-database. Kungathatha ixesha, nceda ube nomonde."
+}
diff --git a/src/lang/zh-CN.json b/src/lang/zh-CN.json
index 1040b6ddd..88134e3d8 100644
--- a/src/lang/zh-CN.json
+++ b/src/lang/zh-CN.json
@@ -117,11 +117,11 @@
"New Password": "新密码",
"Repeat New Password": "重复新密码",
"Update Password": "更新密码",
- "Disable Auth": "禁用身份验证",
- "Enable Auth": "启用身份验证",
+ "Disable Auth": "禁用登录验证",
+ "Enable Auth": "启用登录验证",
"disableauth.message1": "是否确定 {disableAuth}?",
"disable authentication": "取消登录验证",
- "disableauth.message2": "这是为 {intendThirdPartyAuth} 的用户提供的功能,如 Cloudflare Access。",
+ "disableauth.message2": "这是为 {intendThirdPartyAuth} (如 Cloudflare Access、Authelia 或其他认证方式)的用户提供的功能。",
"where you intend to implement third-party authentication": "您打算在哪里实施第三方身份验证",
"Please use this option carefully!": "请谨慎使用!",
"Logout": "退出",
@@ -294,7 +294,7 @@
"apiCredentials": "API Credentials",
"octopushLegacyHint": "您是否在使用旧版本的 Octopush(2011-2020)?",
"Check octopush prices": "查看 Octopush 的价格 {0}。",
- "octopushPhoneNumber": "电话号码(国际格式,例如:+33612345678) ",
+ "octopushPhoneNumber": "电话号码(国际通用格式,例如:+33612345678) ",
"octopushSMSSender": "短信发送名称:3-11 位大小写字母、数字和空格(a-zA-Z0-9)",
"LunaSea Device ID": "LunaSea 设备 ID",
"Apprise URL": "Apprise 网址",
@@ -341,7 +341,7 @@
"One record": "一条记录",
"steamApiKeyDescription": "要监控 Steam 游戏服务器,您需要 Steam Web-API 密钥。您可以在这里注册您的 API 密钥: ",
"Current User": "当前用户",
- "topic": "Topic",
+ "topic": "主题",
"topicExplanation": "要监控的 MQTT Topic",
"successMessage": "成功消息",
"successMessageExplanation": "视为成功的 MQTT 消息",
@@ -385,7 +385,6 @@
"Discard": "放弃",
"Cancel": "取消",
"Powered by": "本站使用",
- "shrinkDatabaseDescription": "触发 SQLite 数据库的 VACUUM 命令,如果您的数据库是在 1.10.0 版本之后创建的,则已启用 AUTO_VACUUM,不再需要此操作。",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "API 用户名(包括 webapi_ 前缀)",
"serwersmsAPIPassword": "API 密码",
@@ -415,7 +414,7 @@
"smtpDkimheaderFieldNames": "包含在哈希计算对象内的 Header 列表(可选)",
"smtpDkimskipFields": "不包含在哈希计算对象内的 Header 列表(可选)",
"wayToGetPagerDutyKey": "您可以在 Service -> Service Directory -> (选择一个 Service) -> Integrations -> Add integration 页面中搜索“Events API V2”以获取此 Integration Key,更多信息请看{0}",
- "wayToGetFlashDutyKey": "您可以进入 协作空间 -> (选择一个 协作空间) -> 集成数据 -> 新增一个集成 页面,添加“自定义事件”获得一个推送地址,复制地址中的 Integration Key,更多信息前往{0}",
+ "wayToGetFlashDutyKey": "您可以进入 协作空间 -> (选择一个 协作空间) -> 集成数据 -> 新增一个集成 页面,添加“Uptime Kuma”集成获得一个推送地址,复制地址中的 Integration Key,更多信息前往{0}",
"Integration Key": "集成密钥",
"Integration URL": "集成网址",
"Auto resolve or acknowledged": "自动标记为已解决或已读",
@@ -544,11 +543,11 @@
"pushoversounds pushover": "Pushover(默认)",
"pushoversounds bike": "自行车",
"pushoversounds bugle": "军号",
- "pushoversounds cashregister": "Cash Register",
+ "pushoversounds cashregister": "收银机",
"pushoversounds classical": "Classical",
"pushoversounds cosmic": "宇宙",
"pushoversounds falling": "Falling",
- "pushoversounds gamelan": "Gamelan",
+ "pushoversounds gamelan": "GameLAN",
"pushoversounds incoming": "Incoming",
"pushoversounds intermission": "Intermission",
"pushoversounds magic": "Magic",
@@ -780,7 +779,7 @@
"Badge Label Color": "徽章标签颜色",
"Show Clickable Link Description": "勾选后所有能访问本状态页的访客均可查看该监控项网址。",
"Show Clickable Link": "显示可点击的监控项链接",
- "Group": "组",
+ "Group": "分组",
"Monitor Group": "监控项组",
"Cannot connect to the socket server": "无法连接到后端服务器",
"Reconnecting...": "重连中……",
@@ -802,7 +801,6 @@
"webhookCustomBodyDesc": "为 webhook 设定一个自定义 HTTP 请求体。可在模板内使用 {msg}、{heartbeat}和{monitor} 变量。",
"webhookBodyPresetOption": "预设 - {0}",
"Request Body": "请求体",
- "jsonQueryDescription": "对响应结果执行一次 JSON 查询,其返回值将会被转换为字符串,再与期望值进行比较。可访问 {0} 阅读 JSON 查询语言的文档,或在{1}测试查询语句。",
"Json Query": "JSON 查询",
"twilioApiKey": "API Key(可选)",
"Expected Value": "预期值",
@@ -920,5 +918,207 @@
"Search monitored sites": "搜索监控中站点",
"settingUpDatabaseMSG": "正在配置数据库中。这需要一定的时间,请耐心等候。",
"ntfyPriorityHelptextAllEvents": "所有事件将使用最高优先级",
- "What is a Remote Browser?": "什么是远程浏览器?"
+ "What is a Remote Browser?": "什么是远程浏览器?",
+ "Your User ID": "你的用户 ID",
+ "Channel access token (Long-lived)": "频道访问令牌(长期版)",
+ "wayToGetHeiiOnCallDetails": "如需了解如何获取 Trigger ID 和 API 密钥,请访问 {documentation}",
+ "documentationOf": "{0} 文档",
+ "gtxMessagingToHint": "国际通用格式,需要前导 \"+\" ({e164}、{e212} 或 {e214} 格式)",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "发件人电话号码 / 传输路径起始地址(TPOA)",
+ "gtxMessagingApiKeyHint": "你可以在此找到你的 API 密钥:My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)",
+ "To Phone Number": "收件人电话号码",
+ "gtxMessagingFromHint": "在手机上,收件人会看到 TPOA 地址作为消息的发送者。TPOA 允许的格式包括:至多11个字母或数字、短代码、当地长代码或国际号码({e164}、{e212} 或 {e214} 格式)",
+ "Allow Long SMS": "允许长消息",
+ "Destination": "收件人",
+ "cellsyntOriginator": "在收件人处作为消息发送者显示。允许的内容取决于发件人类型。",
+ "Originator": "发件人",
+ "max 15 digits": "最多 15 位数字",
+ "cellsyntOriginatortypeAlphanumeric": "字符或数字类型(最多 11 个字母或数字)。收件人无法向此号码回复消息。",
+ "Telephone number": "手机号码",
+ "Alphanumeric (recommended)": "字符或数字类型(推荐)",
+ "Originator type": "发件人类型",
+ "max 11 alphanumeric characters": "最多 11 个字母或数字",
+ "cellsyntSplitLongMessages": "长消息会被切分为至多 6 段,每段至多 153 个字符,总共至多 918 个字符。",
+ "cellsyntDestination": "收件人的手机号码需要使用以 00+国家代码开头的国际通用格式,例如若要发给英国的号码 07920 110 000 需使用 00447920110000 作为收件人手机号码(至多17位数)。需发送给多个收件人手机号码时可使用英文逗号分隔,每次请求最 多250 00个收件人手机号码。",
+ "cellsyntOriginatortypeNumeric": "数字类型(最多 15 位数)需使用国际通用格式,不以 00+国家代码开头,例如若要使用英国的号码 07920 110 000 需填写 447920110000。收件人可向此号码回复消息。",
+ "callMeBotGet": "您可以在此处填写您生成的用于 {0}、{1} 或 {2} 的端点。 请注意您可能会受到速率限制。 速率限制被推测为:{3}(仅供参考)",
+ "whapiRecipient": "手机号码 / 联系人 ID / 组 ID",
+ "API URL": "API 地址",
+ "wayToGetWhapiUrlAndToken": "您可以通过进入您想要的频道来获取 API URL 和令牌:{0}",
+ "wayToWriteWhapiRecipient": "可用格式为不含 + 号的国际通用格式手机号码({0})、联系人 ID({1})或组 ID({2})。",
+ "Mentioning": "是否提及成员",
+ "Don't mention people": "不提及任何人",
+ "Mention group": "提及 {group}",
+ "senderSevenIO": "发信人号码或名称",
+ "wayToGetSevenIOApiKey": "访问 app.seven.io > 开发人员 > api 密钥 > 绿色添加按钮下的仪表板",
+ "receiverInfoSevenIO": "如果接收号码不在德国,您必须在号码前面添加国家代码(例如,对于来自美国的国家代码 1,请使用 117612121212 而不是 017612121212)",
+ "apiKeySevenIO": "SevenIO API 密钥",
+ "locally configured mail transfer agent": "本地配置的邮件传输代理",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "输入您要连接的服务器的主机名,或者输入 {localhost}(如果您打算使用 {local_mta})",
+ "receiverSevenIO": "收信人号码",
+ "Host URL": "服务器地址",
+ "ignoreTLSErrorGeneral": "连接时忽视 TLS/SSL 错误",
+ "wayToGetDiscordThreadId": "获取一个子区(thread)或论坛帖子的消息 ID 与获取一个频道的 ID 相似。关于如何获取 ID 请参阅 {0}",
+ "whatHappensAtForumPost": "创建一个新论坛帖子。本功能不会向已存在的论坛帖子发送消息。如果需要请使用 \"{option}\"",
+ "mongodbCommandDescription": "对数据库运行 MongoDB 命令。有关可用命令的信息,请查阅 {documentation}",
+ "Command": "命令",
+ "bitrix24SupportUserID": "输入你在 Bitrix24 的用户 ID。你可以在你的用户个人资料页找到你的用户 ID。",
+ "wayToGetBitrix24Webhook": "你可以按以下步骤创建一个 webhook:{0}",
+ "Bitrix24 Webhook URL": "Bitrix24 Webhook 地址",
+ "postToExistingThread": "发送到已存在的子区/论坛帖子",
+ "Create new forum post": "创建新的论坛帖子",
+ "Send to channel": "发送到频道",
+ "Select message type": "选择消息类型",
+ "Refresh Interval Description": "状态页面会每 {0} 秒进行一次完全刷新",
+ "Refresh Interval": "刷新间隔",
+ "forumPostName": "论坛帖子名称",
+ "e.g. {discordThreadID}": "例如 {discordThreadID}",
+ "threadForumPostID": "子区/论坛帖子 ID",
+ "smspartnerSenderName": "SMS 发件人名称",
+ "smspartnerPhoneNumber": "手机号码",
+ "smspartnerApiurl": "你可以在此处找到你的 API 密钥:{0}",
+ "smspartnerSenderNameInfo": "不能使用特殊字符,字符数在 3 到 11 个之间",
+ "smspartnerPhoneNumberHelptext": "号码必须使用国际通用格式,例如 {0}、{1}。多个号码必须使用 {2} 分隔",
+ "threemaRecipientTypePhone": "电话号码",
+ "threemaRecipientTypeIdentityFormat": "8 位字符",
+ "threemaRecipientTypeIdentity": "Threema ID",
+ "threemaRecipientType": "收信人类型",
+ "threemaRecipient": "收件人",
+ "threemaApiAuthenticationSecret": "网关密钥",
+ "threemaSenderIdentityFormat": "8 位字符,通常以 * 开头",
+ "threemaSenderIdentity": "网关 ID",
+ "threemaRecipientTypeEmail": "邮件地址",
+ "threemaBasicModeInfo": "注:此通知类型所使用的 Threema 网关为基础模式(服务器端加密)。更多细节参见 {0}。",
+ "threemaRecipientTypePhoneFormat": "E.164 标准,不含前导 + 号",
+ "wayToGetThreemaGateway": "你可以在 {0} 注册 Threema 网关。",
+ "apiKeysDisabledMsg": "由于登录验证被禁用,API 密钥也被禁用。",
+ "now": "现在",
+ "Json Query Expression": "JSON 查询表达式",
+ "and": "与",
+ "cacheBusterParam": "添加参数 {0}",
+ "cacheBusterParamDescription": "随机生成一个参数以绕过缓存。",
+ "Community String": "SNMP 通讯字符串",
+ "snmpCommunityStringHelptext": "此字符串用作密码,以验证和控制对SNMP启用设备的访问。请将其与您的SNMP设备配置匹配。",
+ "Please enter a valid OID.": "请输入一个合法的 OID。",
+ "privateOnesenderDesc": "请确保电话号码有效。要向私人电话号码发送消息,格式形如:628123456789",
+ "wayToGetOnesenderUrlandToken": "你可以在 Onesender 网站获取地址和令牌。更多信息参见 {0}",
+ "signl4Docs": "你可以在此找到更多关于如何配置 SIGNL4 以及如何获取 SIGNL4 Webhook 地址的信息:{0}。",
+ "groupOnesenderDesc": "请确保分组 ID 有效。要向分组发送消息,格式形如:628123456789-342345",
+ "time ago": "{0} 之前",
+ "-year": "年",
+ "OID (Object Identifier)": "OID(对象标识符)",
+ "snmpOIDHelptext": "输入您想监控的传感器或状态的 OID。如果您不确定 OID 是什么,可以使用 MIB 浏览器或 SNMP 软件等网络管理工具进行查找。",
+ "Condition": "条件",
+ "SNMP Version": "SNMP 版本",
+ "Host Onesender": "Onesender 服务器",
+ "Token Onesender": "Onesender 令牌",
+ "Recipient Type": "收件人类型",
+ "Private Number": "私密号码",
+ "Add Remote Browser": "添加远程浏览器",
+ "OAuth2: Client Credentials": "OAuth2:客户端凭据",
+ "Authentication Method": "鉴权方式",
+ "Authorization Header": "鉴权请求头",
+ "Form Data Body": "表单数据请求体",
+ "OAuth Token URL": "OAuth 令牌地址",
+ "Client ID": "客户端 ID",
+ "Client Secret": "客户端秘钥",
+ "OAuth Scope": "OAuth 范围",
+ "New Group": "新分组",
+ "Group ID": "分组 ID",
+ "Group Name": "分组名称",
+ "Optional: Space separated list of scopes": "可选项:用空格分隔的范围列表",
+ "Go back to home page.": "返回到首页。",
+ "No tags found.": "未找到标签。",
+ "Lost connection to the socket server.": "与 socket 服务器的连接丢失。",
+ "Cannot connect to the socket server.": "无法连接到 socket 服务器。",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "SIGNL4 Webhook 地址",
+ "Conditions": "条件",
+ "conditionAdd": "添加条件",
+ "conditionDelete": "删除条件",
+ "conditionAddGroup": "添加分组",
+ "conditionDeleteGroup": "删除分组",
+ "conditionValuePlaceholder": "值",
+ "equals": "相等",
+ "not equals": "不相等",
+ "contains": "包含",
+ "not contains": "不包含",
+ "starts with": "以此开头",
+ "not starts with": "不以此开头",
+ "ends with": "以此结尾",
+ "not ends with": "不以此结尾",
+ "less than": "少于",
+ "greater than": "多于",
+ "less than or equal to": "不多于",
+ "greater than or equal to": "不少于",
+ "record": "记录",
+ "jsonQueryDescription": "使用 JSON 查询解析并提取服务器 JSON 响应中的特定数据,或者,如果不期望得到 JSON 响应,则可使用 \"$\" 获取原始响应。然后将结果转为字符串并与期望值进行字符串比较。有关更多文档,请参阅 {0},亦可使用 {1} 来尝试查询。",
+ "shrinkDatabaseDescriptionSqlite": "触发 SQLite 数据库的 {vacuum} 命令。{auto_vacuum} 已经启用,但它不会像 {vacuum} 命令那样对数据库进行碎片整理,也不会重新打包各个数据库页面。",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "如需可被回复,请输入发送者 ID 或 E.164 格式的手机号码。",
+ "Copy": "复制",
+ "Debug": "Debug",
+ "CopyToClipboardSuccess": "已复制!",
+ "CopyToClipboardError": "无法复制到剪贴板:{error}",
+ "CurlDebugInfoProxiesUnsupported": "上述 {curl} 命令中的代理支持目前尚未实现。",
+ "docker networks": "Docker 网络",
+ "dns resolvers": "DNS 解析器",
+ "firewalls": "防火墙",
+ "Message format": "消息格式",
+ "Send rich messages": "发送富文本消息",
+ "Sound": "声音",
+ "Notification Channel": "通知频道",
+ "Bubble": "Bubble(气泡)",
+ "Reveal": "Reveal(揭示)",
+ "Harp": "Harp(竖琴)",
+ "Correct": "Correct(成功音)",
+ "Fail": "Fail(失败音)",
+ "Arcade": "Arcade(拱廊)",
+ "Alphanumerical string and hyphens only": "仅限字母、数字和连字符(-)",
+ "Custom sound to override default notification sound": "自定义声音,用以覆盖默认通知声音",
+ "Pop": "Pop(流行音乐)",
+ "Guitar": "Guitar(吉他)",
+ "Elevator": "Elevator(电梯)",
+ "Clear": "Clear(清除声)",
+ "Scifi": "Scifi(科幻)",
+ "Flute": "Flute(长笛)",
+ "Doorbell": "Doorbell(门铃)",
+ "The phone number of the recipient in E.164 format.": "收件人的 E.164 格式电话号码。",
+ "Can be found on:": "可在此找到:{0}",
+ "From": "发件人",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "即使设备处于专注模式,即时通知也会立即发送。",
+ "Time Sensitive (iOS Only)": "即时通知(仅 iOS 可用)",
+ "Money": "Money(钱)",
+ "CurlDebugInfoOAuth2CCUnsupported": "{curl} 不支持完整的 oauth 客户端凭证流。{newline}请获取承载令牌(bearer token)并通过 {oauth2_bearer} 选项传递。",
+ "CurlDebugInfo": "要调试监控项,您可以将该命令粘贴到您自己的或 uptime kuma 正在运行的机器的命令行终端中,并查看结果。{newiline}请注意网络差异,例如 {firewalls}、{dns_resolvers} 或 {docker_networks}。",
+ "ignoredTLSError": "TLS/SSL 错误已被忽略",
+ "SendGrid API Key": "SendGrid API 密钥",
+ "RabbitMQ Password": "RabbitMQ 密码",
+ "RabbitMQ Username": "RabbitMQ 用户名",
+ "rabbitmqNodesInvalid": "请使用 RabbitMQ 节点的完整 URL(即完全限定 URL,以 http 开头)。",
+ "rabbitmqNodesRequired": "请设置此监视项的节点。",
+ "rabbitmqNodesDescription": "输入 RabbitMQ 管理节点的 URL,包括协议和端口。例如:{0}",
+ "RabbitMQ Nodes": "RabbitMQ 管理节点",
+ "Separate multiple email addresses with commas": "用逗号分隔多个电子邮件地址",
+ "rabbitmqHelpText": "要使用此监控项,您需要在 RabbitMQ 设置中启用管理插件。有关更多信息,请参阅 {rabitmq_documentation}。",
+ "aboutSlackUsername": "更改消息发件人的显示名称。如果您想提及某人,请另行将其包含在友好名称中。",
+ "templateStatus": "状态",
+ "templateHostnameOrURL": "主机名或 URL",
+ "templateServiceName": "服务名",
+ "telegramUseTemplateDescription": "如果启用,该消息将使用自定义模板发送。",
+ "telegramUseTemplate": "使用自定义消息模板",
+ "wayToGetWahaSession": "在此会话中,WAHA 会向聊天 ID 发送通知。您可以在 WAHA 仪表板中找到它。",
+ "wayToGetWahaApiUrl": "你的 WAHA 实例 URL。",
+ "wahaChatId": "聊天 ID(电话号码 / 联系人 ID / 群组 ID)",
+ "wahaSession": "会话",
+ "Template Format": "模板格式",
+ "Message Template": "消息模板",
+ "Plain Text": "纯文本",
+ "wayToWriteWahaChatId": "包含国际区号但不含开头加号({0})的电话号码、联系人 ID({1})、组 ID({2})。通知将从 WAHA 会话发送到此聊天 ID。",
+ "wayToGetWahaApiKey": "API 密钥是你用于运行 WAHA 的 WHATSAPP_API_KEY 环境变量值。",
+ "telegramTemplateFormatDescription": "Telegram 允许在消息中使用不同的标记语言,具体细节请参见 Telegram {0}。",
+ "YZJ Webhook URL": "YZJ Webhook 地址",
+ "YZJ Robot Token": "YZJ 机器人令牌",
+ "telegramServerUrl": "(可选) 服务器 Url",
+ "telegramServerUrlDescription": "用以解除 Telegram 的机器人 API 限制或在封锁区域(中国、伊朗等)获得访问权限。获取更多信息,请点击 {0}。默认值:{1}",
+ "Font Twemoji by Twitter licensed under": "由 Twitter 制作的 Twemoji 字体根据此许可证授权"
}
diff --git a/src/lang/zh-HK.json b/src/lang/zh-HK.json
index f3b5069f0..9ecd5dd3a 100644
--- a/src/lang/zh-HK.json
+++ b/src/lang/zh-HK.json
@@ -47,7 +47,7 @@
"Retries": "重試數次確定為離線",
"retriesDescription": "重試多少次後才判定為離線及傳送通知。如數值為 0 會即判定為離線及傳送通知。",
"Advanced": "進階",
- "ignoreTLSError": "忽略 TLS/SSL 錯誤",
+ "ignoreTLSError": "忽略 HTTPS 網站的 TLS/SSL 錯誤",
"Upside Down Mode": "反轉模式",
"upsideDownModeDescription": "反轉狀態,如網址是可正常瀏覽,會被判定為 '離線/DOWN'",
"Max. Redirects": "跟隨重新導向 (Redirect) 的次數",
@@ -56,8 +56,8 @@
"acceptedStatusCodesDescription": "可多選",
"Save": "儲存",
"Notifications": "通知",
- "Not available, please setup.": "無法使用,需要設定",
- "Setup Notification": "設定通知",
+ "Not available, please setup.": "無法使用,需要設定。",
+ "Setup Notification": "設置通知",
"Light": "明亮",
"Dark": "暗黑",
"Auto": "自動",
@@ -82,7 +82,7 @@
"disableauth.message2": "這個功能是設計給已有{intendThirdPartyAuth}的用家,例如 Cloudflare Access。",
"where you intend to implement third-party authentication": "第三方認証",
"Please use this option carefully!": "請小心使用。",
- "Logout": "登出",
+ "Logout": "退出",
"notificationDescription": "新增後,你需要在監測器裡啟用。",
"Leave": "離開",
"I understand, please disable": "我明白,請取消登入認証",
@@ -92,7 +92,7 @@
"Username": "帳號",
"Password": "密碼",
"Remember me": "記住我",
- "Login": "登入",
+ "Login": "登錄",
"No Monitors, please": "沒有監測器,請",
"add one": "新增",
"Notification Type": "通知類型",
@@ -353,7 +353,6 @@
"Services": "服務",
"Discard": "捨棄",
"Cancel": "取消",
- "shrinkDatabaseDescription": "觸發 SQLite 的資料庫清理 (VACUUM)。如果您的資料庫是在 1.10.0 版本後建立,AUTO_VACUUM 已自動啟用,則無需此操作。",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "API 使用者名稱 (包括 webapi_ 前綴)",
"serwersmsAPIPassword": "API 密碼",
@@ -386,7 +385,7 @@
"setAsDefaultProxyDescription": "預設情況下,新監測器將啟用此 Proxy。您仍可分別停用各監測器的 Proxy。",
"Maintenance": "維護",
"statusMaintenance": "維護中",
- "Enable DNS Cache": "啟用 DNS 快取",
+ "Enable DNS Cache": "(已棄用)啟用 DNS 快取",
"Enable": "啟用",
"Disable": "停用",
"Schedule maintenance": "計劃維護",
@@ -501,7 +500,7 @@
"Query": "Query",
"settingsCertificateExpiry": "TLS 証書到期",
"certificationExpiryDescription": "証書將於 X 天後到期時觸發 HTTPS 監測器通知:",
- "Setup Docker Host": "設定 Docker 主機",
+ "Setup Docker Host": "配置 Docker 宿主資訊",
"Connection Type": "連線方式",
"deleteDockerHostMsg": "您確定要為所有監測器刪除此 Docker 主機嗎?",
"socket": "Socket",
@@ -596,7 +595,7 @@
"wayToGetPagerDutyKey": "您可以前往 Service -> Service Directory -> (Select a service) -> Integrations -> Add integration 以取得。您可以搜尋 \"Events API V2\"。詳細資訊 {0}",
"Kook": "Kook",
"wayToGetKookBotToken": "到 {0} 創建應用並取得 Bot Token",
- "grpcMethodDescription": "Method 名稱將被轉換成 cammelCase 命名,如 sayHello、check 等。",
+ "grpcMethodDescription": "方法名會轉換為小駝峰格式,例如 sayHello、check 等等。",
"deleteMaintenanceMsg": "您確定要刪除此維護嗎?",
"dnsPortDescription": "DNS 伺服器 port。預設為 53。您可以隨時變更 port。",
"atLeastOneMonitor": "選擇至少一個受影響的監測器",
@@ -691,7 +690,7 @@
"Proxy server has authentication": "Proxy 伺服器啟用了驗證功能",
"Proxy Server": "Proxy 伺服器",
"Proxy Protocol": "Proxy 通訊協定",
- "Setup Proxy": "設定 Proxy",
+ "Setup Proxy": "設置代理",
"Topic": "Topic",
"Retry": "重試",
"High": "高",
@@ -738,7 +737,7 @@
"selectedMonitorCount": "已選:{0}",
"Check/Uncheck": "選取中/取消選取",
"telegramMessageThreadIDDescription": "(可選) Telegram 在超級群組使用的話題標識字串",
- "pushViewCode": "查看代碼",
+ "pushViewCode": "如何使用 Push 監控?(檢視程式碼)",
"pushOthers": "其他",
"webhookBodyCustomOption": "自定義內容",
"tailscalePingWarning": "如要使用 Tailscale Ping ,您需要以非 docker 方式安裝 Uptime Kuma,並在系統安裝 Tailscale 客戶端。",
@@ -755,5 +754,336 @@
"styleElapsedTimeShowNoLine": "顯示(不帶連接線)",
"styleElapsedTimeShowWithLine": "顯示(帶連接線)",
"Request Timeout": "請求超時",
- "timeoutAfter": "{0} 秒後為超時"
+ "timeoutAfter": "{0} 秒後為超時",
+ "settingUpDatabaseMSG": "正在設定資料庫。可能需要一段時間,請耐心等待。",
+ "Host URL": "主機網址",
+ "locally configured mail transfer agent": "本機設定的郵件傳輸代理",
+ "now": "現在",
+ "time ago": "{0} 之前",
+ "ignoreTLSErrorGeneral": "忽略連接中的TLS/SSL錯誤",
+ "liquidIntroduction": "可透過 Liquid 模板語言實現模板化。請參考 {0} 的使用說明。這些是可用的變數:",
+ "Reset Token": "重設代幣",
+ "shrinkDatabaseDescriptionSqlite": "觸發 SQLite 資料庫 {vacuum}。{auto_vacuum} 已經啟用,但這不會像 {vacuum} 指令那樣整理資料庫或重新包裝個別資料庫頁面。",
+ "statusPageSpecialSlugDesc": "特殊標題 {0}:當未提供標題時,將顯示此頁面",
+ "Add a new expiry notification day": "新增到期通知日",
+ "DockerHostRequired": "請設定此監視器的 Docker 主機。",
+ "and": "與",
+ "smtpLiquidIntroduction": "以下兩個欄位可透過 Liquid 模板語言進行模板化。請參考 {0} 的使用說明。這些是可用的變數:",
+ "Select message type": "選擇訊息類型",
+ "Create new forum post": "建立新的討論區文章",
+ "whatHappensAtForumPost": "建立新的論壇文章。這不會在現有的文章中發佈訊息。要在現有文章中發佈訊息,請使用 \"{option}\" 。",
+ "Search monitored sites": "搜尋受監控的網站",
+ "templateMsg": "通知訊息",
+ "templateMonitorJSON": "描述監視器的物件",
+ "templateLimitedToUpDownCertNotifications": "僅適用於上線/下線/證書到期通知",
+ "templateLimitedToUpDownNotifications": "僅適用於 上/下線 通知",
+ "Remove the expiry notification": "移除到期通知日",
+ "Refresh Interval": "刷新時間間隔",
+ "Refresh Interval Description": "狀態頁面會每隔 {0} 秒刷新一次全站",
+ "emailCustomisableContent": "可客製化內容",
+ "leave blank for default subject": "留空以使用默認主題",
+ "emailTemplateServiceName": "服務名",
+ "emailTemplateHostnameOrURL": "主機名稱或 URL",
+ "emailTemplateStatus": "狀態",
+ "emailTemplateMonitorJSON": "監視器物件的描述",
+ "emailTemplateMsg": "通知訊息內容",
+ "Send to channel": "傳送至頻道",
+ "postToExistingThread": "張貼到現有的主題/論壇文章",
+ "forumPostName": "論壇文章名稱",
+ "threadForumPostID": "主題 / 論壇文章 ID",
+ "wayToGetDiscordThreadId": "取得主題 / 論壇文章 id 與取得頻道 id 相似。閱讀更多如何取得id {0}",
+ "Channel access token (Long-lived)": "通道存取標記 (長效)",
+ "successKeywordExplanation": "將被視為成功的 MQTT 關鍵字",
+ "noDockerHostMsg": "無法使用。 請先設定 Docker 主機 。",
+ "ignoredTLSError": "已忽略 TLS/SSL 錯誤",
+ "-year": "-年",
+ "Json Query Expression": "Json 查詢表達式",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "請輸入您要連線的伺服器主機名稱 若要使用 {local_mta} 則輸入 {localhost}",
+ "RabbitMQ Nodes": "RabbitMQ 管理節點",
+ "jsonQueryDescription": "使用 JSON 查詢解析並提取伺服器 JSON 響應中的特定數據,或者,如果不期望得到 JSON 響應,則可使用 \"$\" 獲取原始響應。然後將結果轉為字符串並與期望值進行字符串比較。有關更多文檔,請參閱 {0},亦可使用 {1} 來嘗試查詢。",
+ "wayToGetKookGuildID": "在 Kook 設置中打開“開發者模式”,然後右鍵點擊頻道可獲取其 ID",
+ "Gateway Type": "網關類型",
+ "You can divide numbers with": "可用的數字分隔符包括",
+ "Base URL": "API 基礎地址",
+ "goAlertInfo": "GoAlert 是一個用於呼叫調度、自動匯報和通知(如 SMS 或語音呼叫)的開源應用程式。在正確的時間以正確的方式自動讓正確的人參與!{0}",
+ "goAlertIntegrationKeyInfo": "使用形如 aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee 的通用 API 集成密鑰,通常是複製來的鏈接中的 token 參數值。",
+ "AccessKeyId": "AccessKey ID",
+ "SecretAccessKey": "AccessKey 密碼",
+ "PhoneNumbers": "電話號碼",
+ "TemplateCode": "TemplateCode",
+ "SignName": "SignName",
+ "Sms template must contain parameters: ": "短訊模板必須包含以下變量: ",
+ "Bark API Version": "Bark API 版本",
+ "Mentioning": "是否提及成員",
+ "Mention group": "提及 {group}",
+ "aboutSlackUsername": "更改消息發件人的顯示名稱。如果您想提及某人,請另行將其包含在友好名稱中。",
+ "smspartnerApiurl": "你可以在此處找到你的 API 密鑰:{0}",
+ "smspartnerPhoneNumber": "手機號碼",
+ "smspartnerPhoneNumberHelptext": "號碼必須使用國際通用格式,例如 {0}、{1}。多個號碼必須使用 {2} 分隔",
+ "smspartnerSenderName": "SMS 發件人名稱",
+ "smspartnerSenderNameInfo": "不能使用特殊字符,字符數在 3 到 11 個之間",
+ "Server URL should not contain the nfty topic": "伺服器地址不應包含 ntfy主題",
+ "PushDeer Server": "PushDeer 伺服器",
+ "pushDeerServerDescription": "留空則使用官方伺服器",
+ "pagertreeIntegrationUrl": "集成 URL 地址",
+ "pagertreeUrgency": "緊急程度",
+ "pagertreeSilent": "靜默",
+ "pagertreeCritical": "嚴重",
+ "pagertreeResolve": "自動解除",
+ "pagertreeDoNothing": "甚麼都不做",
+ "wayToGetPagerTreeIntegrationURL": "在 PagerTree 中創建 Uptime Kuma 集成後,複製端點 URL 到此處。在 {0} 查看詳情",
+ "lunaseaTarget": "目標",
+ "lunaseaDeviceID": "設備 ID",
+ "lunaseaUserID": "用戶 ID",
+ "ntfyAuthenticationMethod": "鑒權方式",
+ "ntfyPriorityHelptextAllEvents": "所有事件將使用最高優先級",
+ "ntfyPriorityHelptextAllExceptDown": "除了 {0} 類事件使用 {1} 優先級外,其他所有事件均使用該優先級",
+ "ntfyUsernameAndPassword": "用戶名和密碼",
+ "twilioAccountSID": "賬戶 SID",
+ "twilioApiKey": "API Key(可選)",
+ "twilioAuthToken": "鑒權 Token / API Key Secret",
+ "twilioFromNumber": "發信號碼",
+ "twilioToNumber": "收信號碼",
+ "Monitor Setting": "{0} 監控項設置",
+ "Show Clickable Link": "顯示可點擊的監控項鍊接",
+ "Show Clickable Link Description": "勾選後所有能訪問本狀態頁的訪客均可查看該監控項網址。",
+ "Open Badge Generator": "打開徽章生成器",
+ "Badge Generator": "{0} 徽章生成器",
+ "Badge Type": "徽章類型",
+ "Badge Duration (in hours)": "徽章時間範圍(以小時為單位)",
+ "Badge Label": "徽章標籤",
+ "Badge Prefix": "徽章內容前綴",
+ "Badge Suffix": "徽章內容後綴",
+ "Badge Label Color": "徽章標籤顏色",
+ "Badge Color": "徽章內容顏色",
+ "Badge Label Prefix": "徽章標籤前綴",
+ "Badge Preview": "徽章預覽",
+ "Badge Label Suffix": "徽章標籤後綴",
+ "Badge Up Color": "正常狀態下徽章顏色",
+ "Badge Down Color": "故障狀態下徽章顏色",
+ "Badge Pending Color": "重試中狀態下徽章顏色",
+ "Badge Maintenance Color": "維護狀態下徽章顏色",
+ "Badge Warn Color": "警告狀態下徽章顏色",
+ "Badge Warn Days": "徽章預警天數",
+ "Badge Down Days": "故障狀態所需剩餘天數",
+ "Badge Style": "徽章樣式",
+ "Badge value (For Testing only.)": "徽章內容(僅供測試)",
+ "Badge URL": "徽章網址",
+ "Group": "分組",
+ "Monitor Group": "監控項組",
+ "monitorToastMessagesLabel": "監控項的彈窗通知",
+ "monitorToastMessagesDescription": "監控項的彈窗通知的自動關閉用時,以秒為單位。設置為 -1 將禁用彈窗通知的自動關閉功能,設置為 0 將完全禁用彈窗通知功能。",
+ "toastErrorTimeout": "失敗類彈窗通知的自動關閉用時",
+ "Enter the list of brokers": "輸入緩存代理(broker)列表",
+ "Press Enter to add broker": "按回車鍵添加緩存代理(broker)",
+ "authInvalidToken": "無效的令牌。",
+ "Enable Kafka SSL": "啟用 Kafka SSL 功能",
+ "Enable Kafka Producer Auto Topic Creation": "啟用 Kafka 生成者(Producer)自動創建主題(Topic)功能",
+ "Kafka SASL Options": "Kafka SASL 選項",
+ "Pick a SASL Mechanism...": "選擇一種 SASL 鑒權方式……",
+ "Authorization Identity": "授權實體(Authorization Identity)",
+ "Secret AccessKey": "訪問密鑰(Secret AccessKey)",
+ "Session Token": "會話令牌(Session Token)",
+ "noGroupMonitorMsg": "暫無可用,請先創建一個監控項組。",
+ "Close": "關閉",
+ "Request Body": "請求體",
+ "wayToGetFlashDutyKey": "您可以進入 協作空間 -> (選擇一個 協作空間) -> 集成數據 -> 新增一個集成 頁面,添加“Uptime Kuma”集成獲得一個推送地址,複製地址中的 Integration Key,更多資訊前往{0}",
+ "FlashDuty Severity": "嚴重程度",
+ "nostrRelays": "Nostr relay 服務",
+ "nostrRelaysHelp": "Relay 服務地址,每行一個",
+ "nostrSender": "發送者私鑰(nsec 格式)",
+ "nostrRecipients": "接收者公鑰(npub 格式)",
+ "nostrRecipientsHelp": "npub 格式,每行一個",
+ "showCertificateExpiry": "顯示證書有效期",
+ "noOrBadCertificate": "無證書或證書錯誤",
+ "cacheBusterParam": "添加參數 {0}",
+ "cacheBusterParamDescription": "隨機生成一個參數以繞過緩存。",
+ "gamedigGuessPort": "Gamedig: 自動檢測端口號",
+ "gamedigGuessPortDescription": "Valve 伺服器查詢協議使用的端口可能與客戶端端口不同。如果監控器無法連接到伺服器,請嘗試此方法。",
+ "Message format": "消息格式",
+ "Send rich messages": "發送富文本消息",
+ "Bitrix24 Webhook URL": "Bitrix24 Webhook 地址",
+ "wayToGetBitrix24Webhook": "你可以按以下步驟創建一個 webhook:{0}",
+ "bitrix24SupportUserID": "輸入你在 Bitrix24 的用戶 ID。你可以在你的用戶個人資料頁找到你的用戶 ID。",
+ "authUserInactiveOrDeleted": "該用戶被禁用或刪除。",
+ "authIncorrectCreds": "錯誤的用戶名或密碼。",
+ "2faAlreadyEnabled": "2FA 已經啟用。",
+ "2faEnabled": "已成功啟用 2FA。",
+ "2faDisabled": "已成功禁用 2FA。",
+ "successAdded": "已成功添加。",
+ "successResumed": "已成功恢復。",
+ "successPaused": "已成功暫停。",
+ "successDeleted": "已成功刪除。",
+ "successEdited": "已成功編輯。",
+ "successAuthChangePassword": "已成功更新密碼。",
+ "successBackupRestored": "已成功恢復備份。",
+ "successDisabled": "已成功禁用。",
+ "tagNotFound": "標籤未找到。",
+ "foundChromiumVersion": "已找到 Chromium/Chrome。版本:{0}",
+ "Remote Browsers": "遠程瀏覽器",
+ "Remote Browser": "遠程瀏覽器",
+ "Add a Remote Browser": "添加一個遠程瀏覽器",
+ "Remote Browser not found!": "未找到遠程瀏覽器!",
+ "remoteBrowsersDescription": "遠程瀏覽器可用以代替本地 Chromium 瀏覽器。您可使用類似於 browserless.io 的服務,或者自行運行一個類似服務",
+ "self-hosted container": "自託管容器",
+ "remoteBrowserToggle": "默認情況下 Chromium 運行於 Uptime Kuma 所在容器內。您可以通過切換此開關來使用遠程瀏覽器。",
+ "useRemoteBrowser": "使用遠程瀏覽器",
+ "deleteRemoteBrowserMessage": "您確定要刪除此遠程瀏覽器嗎,這會影響所有監控項?",
+ "GrafanaOncallUrl": "Grafana Oncall 服務 URL",
+ "Browser Screenshot": "瀏覽器截圖",
+ "Command": "命令",
+ "mongodbCommandDescription": "對資料庫運行 MongoDB 命令。有關可用命令的資訊,請查閱 {documentation}",
+ "wayToGetSevenIOApiKey": "訪問 app.seven.io > 開發人員 > api 密鑰 > 綠色添加按鈕下的儀錶板",
+ "senderSevenIO": "發信人號碼或名稱",
+ "receiverSevenIO": "收信人號碼",
+ "receiverInfoSevenIO": "如果接收號碼不在德國,您必須在號碼前面添加國家代碼(例如,對於來自美國的國家代碼 1,請使用 117612121212 而不是 017612121212)",
+ "apiKeySevenIO": "SevenIO API 密鑰",
+ "wayToWriteWhapiRecipient": "可用格式為不含 + 號的國際通用格式手機號碼({0})、聯繫人 ID({1})或組 ID({2})。",
+ "wayToGetWhapiUrlAndToken": "您可以通過進入您想要的頻道來獲取 API URL 和令牌:{0}",
+ "whapiRecipient": "手機號碼 / 聯繫人 ID / 組 ID",
+ "API URL": "API 地址",
+ "What is a Remote Browser?": "甚麼是遠程瀏覽器?",
+ "wayToGetHeiiOnCallDetails": "如需了解如何獲取 Trigger ID 和 API 密鑰,請訪問 {documentation}",
+ "documentationOf": "{0} 文檔",
+ "callMeBotGet": "您可以在此處填寫您生成的用於 {0}、{1} 或 {2} 的端點。 請注意您可能會受到速率限制。 速率限制被推測為:{3}(僅供參考)",
+ "gtxMessagingApiKeyHint": "你可以在此找到你的 API 密鑰:My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "發件人電話號碼 / 傳輸路徑起始地址(TPOA)",
+ "gtxMessagingFromHint": "在手機上,收件人會看到 TPOA 地址作為消息的發送者。TPOA 允許的格式包括:至多11個字母或數字、短代碼、當地長代碼或國際號碼({e164}、{e212} 或 {e214} 格式)",
+ "To Phone Number": "收件人電話號碼",
+ "gtxMessagingToHint": "國際通用格式,需要前導 \"+\" ({e164}、{e212} 或 {e214} 格式)",
+ "Originator type": "發件人類型",
+ "Alphanumeric (recommended)": "字符或數字類型(推薦)",
+ "Telephone number": "手機號碼",
+ "cellsyntOriginatortypeAlphanumeric": "字符或數字類型(最多 11 個字母或數字)。收件人無法向此號碼回覆消息。",
+ "cellsyntOriginatortypeNumeric": "數字類型(最多 15 位數)需使用國際通用格式,不以 00+國家代碼開頭,例如若要使用英國的號碼 07920 110 000 需填寫 447920110000。收件人可向此號碼回覆消息。",
+ "Originator": "發件人",
+ "Destination": "收件人",
+ "Allow Long SMS": "允許長消息",
+ "cellsyntSplitLongMessages": "長消息會被切分為至多 6 段,每段至多 153 個字符,總共至多 918 個字符。",
+ "max 15 digits": "最多 15 位數字",
+ "max 11 alphanumeric characters": "最多 11 個字母或數字",
+ "Community String": "SNMP 通訊字符串",
+ "snmpCommunityStringHelptext": "此字符串用作密碼,以驗證和控制對SNMP啟用設備的訪問。請將其與您的SNMP設備配置匹配。",
+ "OID (Object Identifier)": "OID(對象標識符)",
+ "snmpOIDHelptext": "輸入您想監控的傳感器或狀態的 OID。如果您不確定 OID 是甚麼,可以使用 MIB 瀏覽器或 SNMP 軟件等網絡管理工具進行查找。",
+ "Condition": "條件",
+ "SNMP Version": "SNMP 版本",
+ "Please enter a valid OID.": "請輸入一個合法的 OID。",
+ "wayToGetThreemaGateway": "你可以在 {0} 註冊 Threema 網關。",
+ "threemaRecipientType": "收信人類型",
+ "threemaRecipientTypeIdentity": "Threema ID",
+ "threemaRecipientTypePhone": "電話號碼",
+ "threemaRecipientTypePhoneFormat": "E.164 標準,不含前導 + 號",
+ "threemaRecipientTypeEmail": "郵件地址",
+ "threemaSenderIdentity": "網關 ID",
+ "threemaSenderIdentityFormat": "8 位字符,通常以 * 開頭",
+ "threemaApiAuthenticationSecret": "網關密鑰",
+ "threemaBasicModeInfo": "註:此通知類型所使用的 Threema 網關為基礎模式(伺服器端加密)。更多細節參見 {0}。",
+ "apiKeysDisabledMsg": "由於登錄驗證被禁用,API 密鑰也被禁用。",
+ "Host Onesender": "Onesender 伺服器",
+ "Token Onesender": "Onesender 令牌",
+ "Recipient Type": "收件人類型",
+ "Private Number": "私密號碼",
+ "privateOnesenderDesc": "請確保電話號碼有效。要向私人電話號碼發送消息,格式形如:628123456789",
+ "groupOnesenderDesc": "請確保分組 ID 有效。要向分組發送消息,格式形如:628123456789-342345",
+ "Group ID": "分組 ID",
+ "wayToGetOnesenderUrlandToken": "你可以在 Onesender 網站獲取地址和令牌。更多資訊參見 {0}",
+ "Add Remote Browser": "添加遠程瀏覽器",
+ "New Group": "新分組",
+ "Group Name": "分組名稱",
+ "OAuth2: Client Credentials": "OAuth2:客戶端憑據",
+ "Authentication Method": "鑒權方式",
+ "Authorization Header": "鑒權請求頭",
+ "Form Data Body": "表單數據請求體",
+ "OAuth Token URL": "OAuth 令牌地址",
+ "Client ID": "客戶端 ID",
+ "Client Secret": "客戶端祕鑰",
+ "OAuth Scope": "OAuth 範圍",
+ "Optional: Space separated list of scopes": "可選項:用空格分隔的範圍列表",
+ "Go back to home page.": "返回到首頁。",
+ "No tags found.": "未找到標籤。",
+ "Lost connection to the socket server.": "與 socket 伺服器的連接丟失。",
+ "Cannot connect to the socket server.": "無法連接到 socket 伺服器。",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "SIGNL4 Webhook 地址",
+ "signl4Docs": "你可以在此找到更多關於如何配置 SIGNL4 以及如何獲取 SIGNL4 Webhook 地址的資訊:{0}。",
+ "conditionAdd": "添加條件",
+ "conditionDelete": "刪除條件",
+ "conditionAddGroup": "添加分組",
+ "conditionDeleteGroup": "刪除分組",
+ "conditionValuePlaceholder": "值",
+ "equals": "相等",
+ "not equals": "不相等",
+ "contains": "包含",
+ "not contains": "不包含",
+ "starts with": "以此開頭",
+ "not starts with": "不以此開頭",
+ "ends with": "以此結尾",
+ "not ends with": "不以此結尾",
+ "less than": "少於",
+ "greater than": "多於",
+ "less than or equal to": "不多於",
+ "greater than or equal to": "不少於",
+ "record": "記錄",
+ "Notification Channel": "通知頻道",
+ "Sound": "聲音",
+ "Alphanumerical string and hyphens only": "僅限字母、數字和連字符(-)",
+ "Arcade": "Arcade(拱廊)",
+ "Correct": "Correct(成功音)",
+ "Fail": "Fail(失敗音)",
+ "Harp": "Harp(豎琴)",
+ "Reveal": "Reveal(揭示)",
+ "Bubble": "Bubble(氣泡)",
+ "Doorbell": "Doorbell(門鈴)",
+ "Flute": "Flute(長笛)",
+ "Money": "Money(錢)",
+ "Scifi": "Scifi(科幻)",
+ "Clear": "Clear(清除聲)",
+ "Elevator": "Elevator(電梯)",
+ "Guitar": "Guitar(結他)",
+ "Pop": "Pop(流行音樂)",
+ "Custom sound to override default notification sound": "自定義聲音,用以覆蓋默認通知聲音",
+ "Time Sensitive (iOS Only)": "即時通知(僅 iOS 可用)",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "即使設備處於專注模式,即時通知也會立即發送。",
+ "From": "發件人",
+ "Can be found on:": "可在此找到:{0}",
+ "The phone number of the recipient in E.164 format.": "收件人的 E.164 格式電話號碼。",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "如需可被回復,請輸入發送者 ID 或 E.164 格式的手機號碼。",
+ "rabbitmqNodesDescription": "輸入 RabbitMQ 管理節點的 URL,包括協議和端口。例如:{0}",
+ "rabbitmqNodesRequired": "請設置此監視項的節點。",
+ "rabbitmqNodesInvalid": "請使用 RabbitMQ 節點的完整 URL(即完全限定 URL,以 http 開頭)。",
+ "RabbitMQ Username": "RabbitMQ 用戶名",
+ "RabbitMQ Password": "RabbitMQ 密碼",
+ "rabbitmqHelpText": "要使用此監控項,您需要在 RabbitMQ 設置中啟用管理插件。有關更多資訊,請參閱 {rabitmq_documentation}。",
+ "SendGrid API Key": "SendGrid API 密鑰",
+ "Separate multiple email addresses with commas": "用逗號分隔多個電子郵件地址",
+ "templateHeartbeatJSON": "描述心跳資訊的對象",
+ "successKeyword": "“成功”關鍵詞",
+ "emailCustomBody": "自定義正文",
+ "leave blank for default body": "留空以使用默認正文",
+ "emailTemplateHeartbeatJSON": "描述心跳資訊的對象",
+ "emailTemplateLimitedToUpDownNotification": "僅適用於“正常”、“故障”類心跳,否則為空",
+ "e.g. {discordThreadID}": "例如 {discordThreadID}",
+ "Your User ID": "你的用戶 ID",
+ "promosmsAllowLongSMS": "允許長的短訊",
+ "Notify Channel": "通知該頻道",
+ "aboutNotifyChannel": "勾選“通知該頻道”,會令該頻道內所有成員都收到一條桌面端或移動端通知,無論其狀態是在線或離開。",
+ "setup a new monitor group": "創建一個新的監控項組",
+ "openModalTo": "打開一個新窗口以{0}",
+ "Add a domain": "添加一個域名",
+ "Remove domain": "移除域名 {0}",
+ "successEnabled": "已成功啟用。",
+ "Conditions": "條件",
+ "Kafka Topic Name": "Kafka 主題名稱",
+ "Kafka Producer Message": "Kafka 生成者(Producer)消息",
+ "Mechanism": "鑒權方式",
+ "toastSuccessTimeout": "成功類彈窗通知的自動關閉用時",
+ "pushoverMessageTtl": "消息存活時間(秒)",
+ "Don't mention people": "不提及任何人",
+ "Kafka Brokers": "Kafka 緩存代理(Broker)",
+ "AccessKey Id": "密鑰 ID(AccessKey Id)",
+ "cellsyntOriginator": "在收件人處作為消息發送者顯示。允許的內容取決於發件人類型。",
+ "cellsyntDestination": "收件人的手機號碼需要使用以 00+國家代碼開頭的國際通用格式,例如若要發給英國的號碼 07920 110 000 需使用 00447920110000 作為收件人手機號碼(至多17位數)。需發送給多個收件人手機號碼時可使用英文逗號分隔,每次請求最 多250 00個收件人手機號碼。",
+ "threemaRecipient": "收件人",
+ "threemaRecipientTypeIdentityFormat": "8 位字符"
}
diff --git a/src/lang/zh-TW.json b/src/lang/zh-TW.json
index fa8a5aeb3..b894f1298 100644
--- a/src/lang/zh-TW.json
+++ b/src/lang/zh-TW.json
@@ -239,7 +239,7 @@
"wayToGetDiscordURL": "您可以前往伺服器設定 (Server Settings) -> 整合 (Integrations) -> 檢視 Webhooks (View Webhooks) -> 新 Webhook (New Webhook) 以取得新的 Webhook",
"Bot Display Name": "機器人顯示名稱",
"Prefix Custom Message": "前綴自訂訊息",
- "Hello @everyone is...": "Hello {'@'}everyone is…",
+ "Hello @everyone is...": "哈囉 {'@'} 每個人都是…",
"teams": "Microsoft Teams",
"Webhook URL": "Webhook 網址",
"wayToGetTeamsURL": "您可以前往此頁面以瞭解如何建立 Webhook 網址 {0}。",
@@ -304,7 +304,7 @@
"lineDevConsoleTo": "Line 開發者控制檯 - {0}",
"Basic Settings": "基本設定",
"User ID": "使用者 ID",
- "Messaging API": "Messaging API",
+ "Messaging API": "即時通訊 API",
"wayToGetLineChannelToken": "首先,前往 {0},建立 provider 和 channel (Messaging API)。接著您就可以從上面提到的選單項目中取得頻道存取權杖及使用者 ID。",
"Icon URL": "圖示網址",
"aboutIconURL": "您可以在 \"圖示網址\" 中提供圖片網址以覆蓋預設個人檔案圖片。若已設定 Emoji 圖示,將忽略此設定。",
@@ -318,7 +318,7 @@
"promosmsSMSSender": "簡訊寄件人名稱:預先註冊的名稱或以下的預設名稱:InfoSMS、SMS Info、MaxSMS、INFO、SMS",
"Feishu WebHookUrl": "飛書 WebHook 網址",
"matrixHomeserverURL": "Homeserver 網址 (開頭為 http(s)://,結尾可能帶連接埠)",
- "Internal Room Id": "Internal Room ID",
+ "Internal Room Id": "內部識別碼",
"matrixDesc1": "您可以在 Matrix 客戶端的房間設定中的進階選項找到 internal room ID。應該看起來像 !QMdRCpUIfLwsfjxye6:home.server。",
"matrixDesc2": "使用您自己的 Matrix 使用者存取權杖將賦予存取您的帳號和您加入的房間的完整權限。建議建立新使用者,並邀請至您想要接收通知的房間中。您可以執行 {0} 以取得存取權杖",
"Method": "方法",
@@ -334,7 +334,7 @@
"One record": "一項記錄",
"steamApiKeyDescription": "若要監測 Steam 遊戲伺服器,您將需要 Steam Web-API 金鑰。您可以在此註冊您的 API 金鑰: ",
"Current User": "目前使用者",
- "topic": "Topic",
+ "topic": "問題",
"topicExplanation": "要監測的 MQTT Topic",
"successMessage": "成功訊息",
"successMessageExplanation": "視為成功的 MQTT 訊息",
@@ -378,7 +378,6 @@
"Discard": "捨棄",
"Cancel": "取消",
"Powered by": "技術支援",
- "shrinkDatabaseDescription": "觸發 SQLite 的資料庫清理 (VACUUM)。如果您的資料庫是在 1.10.0 版本後建立,AUTO_VACUUM 已自動啟用,則無需此操作。",
"serwersms": "SerwerSMS.pl",
"serwersmsAPIUser": "API 使用者名稱 (包括 webapi_ 前綴)",
"serwersmsAPIPassword": "API 密碼",
@@ -433,24 +432,24 @@
"Certificate Chain": "憑證鏈結",
"Valid": "有效",
"Invalid": "無效",
- "AccessKeyId": "AccessKey ID",
+ "AccessKeyId": "標識使用者 ID",
"SecretAccessKey": "AccessKey 密碼",
- "PhoneNumbers": "PhoneNumbers",
- "TemplateCode": "TemplateCode",
- "SignName": "SignName",
+ "PhoneNumbers": "電話號碼",
+ "TemplateCode": "範例程式碼",
+ "SignName": "簽名",
"Sms template must contain parameters: ": "Sms 範本必須包含參數: ",
"Bark Endpoint": "Bark 端點",
"Bark Group": "Bark 群組",
"Bark Sound": "Bark 鈴聲",
- "WebHookUrl": "WebHookUrl",
- "SecretKey": "SecretKey",
+ "WebHookUrl": "WebHookURL",
+ "SecretKey": "對稱金鑰",
"For safety, must use secret key": "為了安全起見,必須使用秘密金鑰",
"Device Token": "裝置權杖",
"Platform": "平臺",
"Huawei": "華為",
"High": "高",
"Retry": "重試",
- "Topic": "Topic",
+ "Topic": "問題",
"WeCom Bot Key": "WeCom 機器人金鑰",
"Setup Proxy": "設定 Proxy",
"Proxy Protocol": "Proxy 通訊協定",
@@ -512,7 +511,7 @@
"Domain Names": "網域名稱",
"signedInDisp": "以 {0} 身分登入",
"signedInDispDisabled": "驗證已停用。",
- "RadiusSecret": "Radius Secret",
+ "RadiusSecret": "Radius 加密",
"RadiusSecretDescription": "客戶端與伺服器端的共享機密",
"RadiusCalledStationId": "被叫站 Id",
"RadiusCalledStationIdDescription": "被呼叫裝置的識別碼",
@@ -587,7 +586,7 @@
"Domain": "網域",
"Workstation": "工作站",
"disableCloudflaredNoAuthMsg": "您處於無驗證模式。無須輸入密碼。",
- "trustProxyDescription": "信任 'X-Forwarded-*' 標頭。如果您想要取得正確的客戶端 IP,且您的 Uptime Kuma 架設於 Nginx 或 Apache 後方,您應啟用此選項。",
+ "trustProxyDescription": "信任 'X-Forwarded-*' 標頭。如果您想要取得正確的客戶端 IP,且您的 Uptime Kuma 架設於 Nginx 或 Apache 後方,您應該啟用此選項。",
"wayToGetLineNotifyToken": "您可以從 {0} 取得存取權杖",
"Examples": "範例",
"Home Assistant URL": "Home Assistant 網址",
@@ -611,7 +610,7 @@
"backupRecommend": "請直接備份磁碟區或 ./data/ 資料夾。",
"Optional": "選填",
"squadcast": "Squadcast",
- "SendKey": "SendKey",
+ "SendKey": "傳送金鑰",
"SMSManager API Docs": "SMSManager API 文件 ",
"Gateway Type": "閘道類型",
"SMSManager": "SMSManager",
@@ -657,7 +656,7 @@
"Date and Time": "時間和日期",
"DateTime Range": "DateTime 範圍",
"Strategy": "策略",
- "Free Mobile User Identifier": "Free Mobile User Identifier",
+ "Free Mobile User Identifier": "免費的行動用戶識別碼",
"Free Mobile API Key": "Free Mobile API 金鑰",
"Enable TLS": "啟用 TLS",
"Proto Service Name": "Proto 服務名稱",
@@ -700,8 +699,8 @@
"Clone Monitor": "複製監控項目",
"Clone": "複製",
"cloneOf": "從 {0} 複製",
- "uninstalling": "移除中",
- "notificationRegional": "地區限定",
+ "uninstalling": "正在卸載",
+ "notificationRegional": "地區性的",
"wayToGetZohoCliqURL": "您可以前往此頁面以瞭解如何建立 webhook 網址 {0}。",
"wayToGetKookBotToken": "到 {0} 建立應用程式並取得 bot token",
"dataRetentionTimeError": "保留期限必須為 0 或正數",
@@ -712,11 +711,11 @@
"ntfyUsernameAndPassword": "使用者名稱和密碼",
"ntfyAuthenticationMethod": "認證類型",
"API Keys": "API 金鑰",
- "Expiry": "到期",
+ "Expiry": "過期",
"apiKey-inactive": "無效",
- "apiKey-expired": "過期",
+ "apiKey-expired": "已過期",
"Reconnecting...": "重新連線...",
- "Expiry date": "到期時間",
+ "Expiry date": "過期時間",
"Don't expire": "不要過期",
"Continue": "繼續",
"Add Another": "新增作者",
@@ -744,7 +743,7 @@
"Expires": "過期",
"disableAPIKeyMsg": "您確定要停用這個 API 金鑰?",
"Monitor Setting": "{0} 的監視器設定",
- "Guild ID": "Guild ID",
+ "Guild ID": "公會 ID",
"chromeExecutableDescription": "如果您使用 Docker 且未安裝 Chromium,可能要花數分鐘安裝後才能顯示測試結果。安裝會使用 1GB 的硬碟空間。",
"promosmsAllowLongSMS": "允許長 SMS 訊息",
"Home": "首頁",
@@ -772,7 +771,6 @@
"Check/Uncheck": "選中/取消選中",
"tailscalePingWarning": "如需使用 Tailscale Ping 客戶端,您需要以非 docker 方式安裝 Uptime Kuma,並同時安裝 Tailscale 客戶端。",
"invertKeywordDescription": "出現關鍵詞將令檢測結果設為失敗,而非成功。",
- "jsonQueryDescription": "對回應結果執行一次 JSON 查詢,其返回值將會被轉換為字串,再與期望值進行比較。可造訪{0}閱讀JSON 查詢語言的文件,或在{1}測試查詢語句。",
"wayToGetKookGuildID": "在 Kook 設定中打開“開發者模式”,然後右鍵點選頻道可取得其 ID",
"Notify Channel": "通知該頻道",
"aboutNotifyChannel": "勾選“通知該頻道”,會令該頻道內所有成員都收到一條桌面端或移動端通知,無論其狀態是在線或離開。",
@@ -780,7 +778,7 @@
"pagertreeUrgency": "緊急程度",
"Expected Value": "預期值",
"Json Query": "JSON 查詢",
- "setupDatabaseChooseDatabase": "您想使用什麼資料庫?",
+ "setupDatabaseChooseDatabase": "您想使用哪個資料庫?",
"setupDatabaseEmbeddedMariaDB": "您不需要做任何設定。此 Docker 映像檔已內建並設定了 MariaDB。Uptime Kuma 將透過 unix socket 連線到該資料庫。",
"setupDatabaseMariaDB": "連線到外部 MariaDB 資料庫。 需要設定資料庫連線資訊。",
"dbName": "資料庫名稱",
@@ -789,7 +787,7 @@
"twilioApiKey": "API 金鑰 (選用)",
"Badge Preview": "徽章預覽",
"pushViewCode": "如何使用 Push 監控?(檢視程式碼)",
- "pushOthers": "其他",
+ "pushOthers": "其它",
"programmingLanguages": "程式語言",
"twilioToNumber": "目標號碼",
"Badge Duration (in hours)": "徽章持續時間(小時)",
@@ -866,7 +864,7 @@
"tagNotFound": "找不到標籤。",
"foundChromiumVersion": "找到 Chromium/Chrome。版本:{0}",
"setupDatabaseSQLite": "一個簡單的資料庫檔案,適用於小規模部署。在 v2.0.0 之前,Uptime Kuma 預設使用 SQLite 作為資料庫。",
- "Pick a SASL Mechanism...": "選擇一個 SASL 機制...",
+ "Pick a SASL Mechanism...": "選擇一個 SASL 機制...…",
"Authorization Identity": "授權身份",
"AccessKey Id": "存取金鑰 ID",
"Secret AccessKey": "秘密存取金鑰",
@@ -899,5 +897,193 @@
"self-hosted container": "自架容器",
"useRemoteBrowser": "使用遠端瀏覽器",
"Add a domain": "新增網域",
- "Remove domain": "移除網域 '{0}'"
+ "Remove domain": "移除網域 '{0}'",
+ "settingUpDatabaseMSG": "設定資料庫中,可能需要一段時間,請耐心等待。",
+ "smspartnerApiurl": "您可以在儀表板上的 {0} 找到您的 API 金鑰",
+ "smspartnerPhoneNumberHelptext": "號碼必須是國際格式 {0}, {1}。多個號碼必須用 {2} 分隔",
+ "statusPageSpecialSlugDesc": "特殊 slug {0}: 當未提供 slug 時,將顯示此頁面",
+ "Add a new expiry notification day": "新增到期通知日",
+ "Remove the expiry notification": "移除到期通知日",
+ "Mentioning": "提及",
+ "Select message type": "選擇訊息類型",
+ "Send to channel": "發送至頻道",
+ "Create new forum post": "新增論壇貼文",
+ "postToExistingThread": "發佈到現有的討論串/論壇貼文",
+ "forumPostName": "論壇貼文名稱",
+ "threadForumPostID": "討論串 / 論壇貼文 ID",
+ "e.g. {discordThreadID}": "例如: {discordThreadID}",
+ "Channel access token (Long-lived)": "頻道存取權杖(長期有效)",
+ "Your User ID": "你的 user ID",
+ "Host URL": "主機 URL",
+ "Refresh Interval": "更新間隔",
+ "ignoreTLSErrorGeneral": "忽略連接中的TLS/SSL錯誤",
+ "Search monitored sites": "搜索監控中的站點",
+ "openModalTo": "以 {0} 打開一個新的對話框",
+ "locally configured mail transfer agent": "本機端的郵件傳輸代理",
+ "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "請輸入您要連接的伺服器主機名稱,或者輸入 {localhost} (如果您打算使用 {local_mta})",
+ "documentationOf": "{0} 文件",
+ "threemaRecipientType": "收件者類型",
+ "threemaRecipientTypeIdentityFormat": "8 個字元",
+ "threemaRecipientTypePhone": "電話號碼",
+ "threemaSenderIdentityFormat": "8 個字元,通常以 * 開頭",
+ "threemaRecipient": "收件者",
+ "mongodbCommandDescription": "對資料庫執行 MongoDB 指令。有關可用指令的資訊,請參閱 {documentation}",
+ "threemaRecipientTypeEmail": "電子郵件地址",
+ "Originator type": "發送者類型",
+ "smspartnerPhoneNumber": "電話號碼",
+ "Allow Long SMS": "允許長 SMS",
+ "cellsyntSplitLongMessages": "長訊息最多會被分成 6 段,每段最多 153 個字元,總共最多 918 字元。",
+ "max 15 digits": "最多 15 位數字",
+ "What is a Remote Browser?": "什麼是遠端瀏覽器?",
+ "Bitrix24 Webhook URL": "Bitrix24 WebHook URL",
+ "wayToGetBitrix24Webhook": "您可以按照 {0} 的步驟創建一個 Webhook",
+ "apiKeySevenIO": "SevenIO API 金鑰",
+ "ntfyPriorityHelptextAllEvents": "所有事件都以最高優先級發送",
+ "Telephone number": "手機號碼",
+ "Destination": "收件人",
+ "smspartnerSenderName": "SMS 寄件人名稱",
+ "setup a new monitor group": "設定新的監控群組",
+ "jsonQueryDescription": "使用 JSON 查詢從伺服器的 JSON 回應中解析並擷取特定資料,或者如果不需要 JSON,則使用“$”作為預設回應。然後將結果與字串形式的預期值進行比較。請參閱 {0} 以了解文件並使用 {1} 來測試查詢。",
+ "shrinkDatabaseDescriptionSqlite": "SQLite 的觸發器資料庫 {vacuum}。 {auto_vacuum} 已啟用,但這不會對資料庫進行片段整理,也不會像 {vacuum} 指令那樣重新打包各個資料庫頁面。",
+ "and": "和",
+ "whatHappensAtForumPost": "建立一個新的論壇文章。這不會在現有文章中發布。要在現有文章中發文,請使用“{option}”",
+ "aboutSlackUsername": "變更訊息寄件者的顯示名稱。如果您想提及他人,請將其包含在好友的名稱中。",
+ "remoteBrowsersDescription": "遠端瀏覽器是本機運行 Chromium 的替代方案。使用 browserless.io 等服務進行設定或連接到您自己的服務",
+ "Money": "錢",
+ "successKeyword": "成功關鍵字",
+ "successKeywordExplanation": "MQTT 關鍵字將被視為成功",
+ "Refresh Interval Description": "狀態頁面將每 {0} 秒刷新一次完整網站",
+ "wayToGetDiscordThreadId": "取得主題 / 論壇文章 ID 與取得頻道 ID 類似。詳細了解如何取得 ID {0}",
+ "Don't mention people": "不要提及他人",
+ "Mention group": "提及 {group}",
+ "smspartnerSenderNameInfo": "必須介於 3..=11 個字元之間",
+ "cacheBusterParam": "新增 {0} 參數",
+ "cacheBusterParamDescription": "隨機生成參數以跳過快取。",
+ "gamedigGuessPort": "GameDig:隨機埠",
+ "Message format": "訊息格式",
+ "Send rich messages": "發送豐富的訊息",
+ "bitrix24SupportUserID": "輸入您在 Bitrix24 中的使用者 ID。您可以透過使用者的個人資料連結找到 ID。",
+ "remoteBrowserToggle": "預設情況下,Chromium 在 Uptime Kuma 容器內運作。您可以透過切換此開關來使用遠端瀏覽器。",
+ "Elevator": "電梯",
+ "Clear": "清除",
+ "Scifi": "幻想",
+ "Doorbell": "電鈴",
+ "Bubble": "氣泡",
+ "Reveal": "暴露",
+ "Fail": "失敗",
+ "Correct": "正確的",
+ "time ago": "{0} 以前",
+ "ignoredTLSError": "TLS/SSL 錯誤已被略過",
+ "now": "現在",
+ "-year": "-年",
+ "Json Query Expression": "JSON查詢表達式",
+ "ntfyPriorityHelptextAllExceptDown": "所有事件均以此優先權發送,但 {0} 事件除外,其優先權為 {1}",
+ "receiverInfoSevenIO": "如果接收號碼不在德國,您必須在號碼前面添加國家代碼(例如,對於來自美國的國家代碼 1,請使用 117612121212 而不是 017612121212)",
+ "callMeBotGet": "您可以在此處填寫您生成的用於 {0}、{1} 或 {2} 的端點。 請注意您可能會受到速率限制。 速率限制被推測為:{3}(僅供參考)",
+ "gtxMessagingFromHint": "在手機上,收件人會看到 TPOA 地址作為消息的發送者。TPOA 允許的格式包括:至多11個字母或數字、短代碼、當地長代碼或國際號碼({e164}、{e212} 或 {e214} 格式)",
+ "deleteRemoteBrowserMessage": "您確定要刪除此遠程瀏覽器嗎,這會影響所有監控項?",
+ "Command": "命令",
+ "wayToGetSevenIOApiKey": "訪問 app.seven.io > 開發人員 > api 密鑰 > 綠色添加按鈕下的儀錶板",
+ "senderSevenIO": "發信人號碼或名稱",
+ "receiverSevenIO": "收信人號碼",
+ "wayToWriteWhapiRecipient": "可用格式為不含 + 號的國際通用格式手機號碼({0})、聯繫人 ID({1})或組 ID({2})。",
+ "wayToGetWhapiUrlAndToken": "您可以通過進入您想要的頻道來獲取 API URL 和令牌:{0}",
+ "whapiRecipient": "手機號碼 / 聯繫人 ID / 組 ID",
+ "API URL": "API 地址",
+ "wayToGetHeiiOnCallDetails": "如需了解如何獲取 Trigger ID 和 API 密鑰,請訪問 {documentation}",
+ "gtxMessagingApiKeyHint": "你可以在此找到你的 API 密鑰:My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)",
+ "From Phone Number / Transmission Path Originating Address (TPOA)": "發件人電話號碼 / 傳輸路徑起始地址(TPOA)",
+ "To Phone Number": "收件人電話號碼",
+ "gtxMessagingToHint": "國際通用格式,需要前導 \"+\" ({e164}、{e212} 或 {e214} 格式)",
+ "Alphanumeric (recommended)": "字符或數字類型(推薦)",
+ "cellsyntOriginatortypeAlphanumeric": "字符或數字類型(最多 11 個字母或數字)。收件人無法向此號碼回覆消息。",
+ "cellsyntOriginatortypeNumeric": "數字類型(最多 15 位數)需使用國際通用格式,不以 00+國家代碼開頭,例如若要使用英國的號碼 07920 110 000 需填寫 447920110000。收件人可向此號碼回覆消息。",
+ "max 11 alphanumeric characters": "最多 11 個字母或數字",
+ "Community String": "SNMP 通訊字符串",
+ "snmpCommunityStringHelptext": "此字符串用作密碼,以驗證和控制對SNMP啟用設備的訪問。請將其與您的SNMP設備配置匹配。",
+ "OID (Object Identifier)": "OID(對象標識符)",
+ "snmpOIDHelptext": "輸入您想監控的傳感器或狀態的 OID。如果您不確定 OID 是什麼,可以使用 MIB 瀏覽器或 SNMP 軟件等網絡管理工具進行查找。",
+ "Condition": "條件",
+ "SNMP Version": "SNMP 版本",
+ "Please enter a valid OID.": "請輸入一個合法的 OID。",
+ "wayToGetThreemaGateway": "你可以在 {0} 註冊 Threema 網關。",
+ "threemaRecipientTypeIdentity": "Threema ID",
+ "threemaRecipientTypePhoneFormat": "E.164 標準,不含前導 + 號",
+ "threemaSenderIdentity": "網關 ID",
+ "threemaApiAuthenticationSecret": "網關密鑰",
+ "threemaBasicModeInfo": "註:此通知類型所使用的 Threema 網關為基礎模式(服務器端加密)。更多細節參見 {0}。",
+ "apiKeysDisabledMsg": "由於登錄驗證被禁用,API 密鑰也被禁用。",
+ "Host Onesender": "Onesender 服務器",
+ "Token Onesender": "Onesender 令牌",
+ "Recipient Type": "收件人類型",
+ "Private Number": "私密號碼",
+ "privateOnesenderDesc": "請確保電話號碼有效。要向私人電話號碼發送消息,格式形如:628123456789",
+ "groupOnesenderDesc": "請確保分組 ID 有效。要向分組發送消息,格式形如:628123456789-342345",
+ "Group ID": "分組 ID",
+ "wayToGetOnesenderUrlandToken": "你可以在 Onesender 網站獲取地址和令牌。更多信息參見 {0}",
+ "Add Remote Browser": "添加遠程瀏覽器",
+ "Group Name": "分組名稱",
+ "OAuth2: Client Credentials": "OAuth2:客戶端憑據",
+ "Authentication Method": "鑒權方式",
+ "Authorization Header": "鑒權請求頭",
+ "Form Data Body": "表單數據請求體",
+ "OAuth Token URL": "OAuth 令牌地址",
+ "Client ID": "客戶端 ID",
+ "Client Secret": "客戶端秘鑰",
+ "OAuth Scope": "OAuth 範圍",
+ "Optional: Space separated list of scopes": "可選項:用空格分隔的範圍列表",
+ "Go back to home page.": "返回到首頁。",
+ "No tags found.": "未找到標籤。",
+ "Lost connection to the socket server.": "與 socket 服務器的連接丟失。",
+ "Cannot connect to the socket server.": "無法連接到 socket 服務器。",
+ "conditionDelete": "刪除條件",
+ "conditionAddGroup": "添加分組",
+ "conditionDeleteGroup": "刪除分組",
+ "equals": "相等",
+ "not equals": "不相等",
+ "contains": "包含",
+ "not contains": "不包含",
+ "starts with": "以此開頭",
+ "not starts with": "不以此開頭",
+ "ends with": "以此結尾",
+ "greater than": "多於",
+ "less than or equal to": "不多於",
+ "greater than or equal to": "不少於",
+ "Notification Channel": "通知頻道",
+ "Sound": "聲音",
+ "Alphanumerical string and hyphens only": "僅限字母、數字和連字符(-)",
+ "Arcade": "Arcade(拱廊)",
+ "Harp": "Harp(豎琴)",
+ "Flute": "Flute(長笛)",
+ "Guitar": "Guitar(吉他)",
+ "Pop": "Pop(流行音樂)",
+ "Custom sound to override default notification sound": "自定義聲音,用以覆蓋默認通知聲音",
+ "Time Sensitive (iOS Only)": "即時通知(僅 iOS 可用)",
+ "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "即使設備處於專注模式,即時通知也會立即發送。",
+ "From": "發件人",
+ "Can be found on:": "可在此找到:{0}",
+ "The phone number of the recipient in E.164 format.": "收件人的 E.164 格式電話號碼。",
+ "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.": "如需可被回復,請輸入發送者 ID 或 E.164 格式的手機號碼。",
+ "RabbitMQ Nodes": "RabbitMQ 管理節點",
+ "rabbitmqNodesDescription": "輸入 RabbitMQ 管理節點的 URL,包括協議和端口。例如:{0}",
+ "rabbitmqNodesRequired": "請設置此監視項的節點。",
+ "rabbitmqNodesInvalid": "請使用 RabbitMQ 節點的完整 URL(即完全限定 URL,以 http 開頭)。",
+ "RabbitMQ Username": "RabbitMQ 用戶名",
+ "RabbitMQ Password": "RabbitMQ 密碼",
+ "rabbitmqHelpText": "要使用此監控項,您需要在 RabbitMQ 設置中啟用管理插件。有關更多信息,請參閱 {rabitmq_documentation}。",
+ "SendGrid API Key": "SendGrid API 密鑰",
+ "not ends with": "不以此結尾",
+ "less than": "少於",
+ "Originator": "發件人",
+ "cellsyntOriginator": "在收件人處作為消息發送者顯示。允許的內容取決於發件人類型。",
+ "cellsyntDestination": "收件人的手機號碼需要使用以 00+國家代碼開頭的國際通用格式,例如若要發給英國的號碼 07920 110 000 需使用 00447920110000 作為收件人手機號碼(至多17位數)。需發送給多個收件人手機號碼時可使用英文逗號分隔,每次請求最 多250 00個收件人手機號碼。",
+ "SIGNL4": "SIGNL4",
+ "SIGNL4 Webhook URL": "SIGNL4 Webhook 地址",
+ "signl4Docs": "你可以在此找到更多關於如何配置 SIGNL4 以及如何獲取 SIGNL4 Webhook 地址的信息:{0}。",
+ "Conditions": "條件",
+ "conditionAdd": "添加條件",
+ "conditionValuePlaceholder": "值",
+ "Separate multiple email addresses with commas": "用逗號分隔多個電子郵件地址",
+ "record": "記錄",
+ "New Group": "新分組"
}
diff --git a/src/layouts/Layout.vue b/src/layouts/Layout.vue
index 610681835..9faedf589 100644
--- a/src/layouts/Layout.vue
+++ b/src/layouts/Layout.vue
@@ -211,6 +211,20 @@ export default {
@import "../assets/vars.scss";
.nav-link {
+ &:hover {
+ background-color: $primary;
+ color: #fff;
+
+ .dark & {
+ background-color: $primary;
+ color: #000;
+ }
+
+ &.active {
+ background-color: $highlight;
+ }
+ }
+
&.status-page {
background-color: rgba(255, 255, 255, 0.1);
}
diff --git a/src/mixins/datetime.js b/src/mixins/datetime.js
index 1946d1902..ca2d8f018 100644
--- a/src/mixins/datetime.js
+++ b/src/mixins/datetime.js
@@ -41,6 +41,33 @@ export default {
return this.datetimeFormat(value, "YYYY-MM-DD HH:mm:ss");
},
+ /**
+ * Converts a Unix timestamp to a formatted date and time string.
+ * @param {number} value - The Unix timestamp to convert.
+ * @returns {string} The formatted date and time string.
+ */
+ unixToDateTime(value) {
+ return dayjs.unix(value).tz(this.timezone).format("YYYY-MM-DD HH:mm:ss");
+ },
+
+ /**
+ * Converts a Unix timestamp to a dayjs object.
+ * @param {number} value - The Unix timestamp to convert.
+ * @returns {dayjs.Dayjs} The dayjs object representing the given timestamp.
+ */
+ unixToDayjs(value) {
+ return dayjs.unix(value).tz(this.timezone);
+ },
+
+ /**
+ * Converts the given value to a dayjs object.
+ * @param {string} value - the value to be converted
+ * @returns {dayjs.Dayjs} a dayjs object in the timezone of this instance
+ */
+ toDayjs(value) {
+ return dayjs.utc(value).tz(this.timezone);
+ },
+
/**
* Get time for maintenance
* @param {string | number | Date | dayjs.Dayjs} value Time to
diff --git a/src/mixins/socket.js b/src/mixins/socket.js
index 0a8001a4d..3272e042c 100644
--- a/src/mixins/socket.js
+++ b/src/mixins/socket.js
@@ -38,6 +38,7 @@ export default {
allowLoginDialog: false, // Allowed to show login dialog, but "loggedIn" have to be true too. This exists because prevent the login dialog show 0.1s in first before the socket server auth-ed.
loggedIn: false,
monitorList: { },
+ monitorTypeList: {},
maintenanceList: {},
apiKeyList: {},
heartbeatList: { },
@@ -129,20 +130,38 @@ export default {
this.allowLoginDialog = false;
});
+ socket.on("loginRequired", () => {
+ let token = this.storage().token;
+ if (token && token !== "autoLogin") {
+ this.loginByToken(token);
+ } else {
+ this.$root.storage().removeItem("token");
+ this.allowLoginDialog = true;
+ }
+ });
+
socket.on("monitorList", (data) => {
- // Add Helper function
- Object.entries(data).forEach(([ monitorID, monitor ]) => {
- monitor.getUrl = () => {
- try {
- return new URL(monitor.url);
- } catch (_) {
- return null;
- }
- };
- });
+ this.assignMonitorUrlParser(data);
this.monitorList = data;
});
+ socket.on("updateMonitorIntoList", (data) => {
+ this.assignMonitorUrlParser(data);
+ Object.entries(data).forEach(([ monitorID, updatedMonitor ]) => {
+ this.monitorList[monitorID] = updatedMonitor;
+ });
+ });
+
+ socket.on("deleteMonitorFromList", (monitorID) => {
+ if (this.monitorList[monitorID]) {
+ delete this.monitorList[monitorID];
+ }
+ });
+
+ socket.on("monitorTypeList", (data) => {
+ this.monitorTypeList = data;
+ });
+
socket.on("maintenanceList", (data) => {
this.maintenanceList = data;
});
@@ -241,7 +260,7 @@ export default {
socket.on("disconnect", () => {
console.log("disconnect");
- this.connectionErrorMsg = "Lost connection to the socket server. Reconnecting...";
+ this.connectionErrorMsg = `${this.$t("Lost connection to the socket server.")} ${this.$t("Reconnecting...")}`;
this.socket.connected = false;
});
@@ -256,24 +275,6 @@ export default {
this.clearData();
}
- let token = this.storage().token;
-
- if (token) {
- if (token !== "autoLogin") {
- this.loginByToken(token);
- } else {
- // Timeout if it is not actually auto login
- setTimeout(() => {
- if (! this.loggedIn) {
- this.allowLoginDialog = true;
- this.$root.storage().removeItem("token");
- }
- }, 5000);
- }
- } else {
- this.allowLoginDialog = true;
- }
-
this.socket.firstConnect = false;
});
@@ -292,6 +293,23 @@ export default {
location.reload();
});
},
+ /**
+ * parse all urls from list.
+ * @param {object} data Monitor data to modify
+ * @returns {object} list
+ */
+ assignMonitorUrlParser(data) {
+ Object.entries(data).forEach(([ monitorID, monitor ]) => {
+ monitor.getUrl = () => {
+ try {
+ return new URL(monitor.url);
+ } catch (_) {
+ return null;
+ }
+ };
+ });
+ return data;
+ },
/**
* The storage currently in use
@@ -323,7 +341,7 @@ export default {
},
/**
- * Show success or error toast dependant on response status code
+ * Show success or error toast dependent on response status code
* @param {object} res Response object
* @returns {void}
*/
@@ -681,6 +699,17 @@ export default {
getMonitorBeats(monitorID, period, callback) {
socket.emit("getMonitorBeats", monitorID, period, callback);
},
+
+ /**
+ * Retrieves monitor chart data.
+ * @param {string} monitorID - The ID of the monitor.
+ * @param {number} period - The time period for the chart data, in hours.
+ * @param {socketCB} callback - The callback function to handle the chart data.
+ * @returns {void}
+ */
+ getMonitorChartData(monitorID, period, callback) {
+ socket.emit("getMonitorChartData", monitorID, period, callback);
+ }
},
computed: {
diff --git a/src/pages/AddStatusPage.vue b/src/pages/AddStatusPage.vue
index 4580c98da..b35091cc2 100644
--- a/src/pages/AddStatusPage.vue
+++ b/src/pages/AddStatusPage.vue
@@ -9,21 +9,18 @@
{{ $t("Name") }}
-
+
@@ -65,7 +62,7 @@ export default {
this.processing = false;
if (res.ok) {
- location.href = "/status/" + this.slug + "?edit";
+ location.href = "/status/" + res.slug + "?edit";
} else {
if (res.msg.includes("UNIQUE constraint")) {
@@ -85,4 +82,8 @@ export default {
.shadow-box {
padding: 20px;
}
+
+#slug {
+ text-transform: lowercase;
+}
diff --git a/src/pages/DashboardHome.vue b/src/pages/DashboardHome.vue
index 3baf35a62..a00dedb99 100644
--- a/src/pages/DashboardHome.vue
+++ b/src/pages/DashboardHome.vue
@@ -9,15 +9,30 @@
{{ $t("Up") }}
- {{ $root.stats.up }}
+
+ {{ $root.stats.up }}
+
{{ $t("Down") }}
- {{ $root.stats.down }}
+
+ {{ $root.stats.down }}
+
{{ $t("Maintenance") }}
- {{ $root.stats.maintenance }}
+
+ {{ $root.stats.maintenance }}
+
{{ $t("Unknown") }}
@@ -42,7 +57,7 @@
- {{ $root.monitorList[beat.monitorID]?.name }}
+ {{ $root.monitorList[beat.monitorID]?.name }}
{{ beat.msg }}
@@ -218,4 +233,16 @@ table {
overflow-wrap: break-word;
}
}
+
+@media screen and (max-width: 1280px) {
+ .name-column {
+ min-width: 150px;
+ }
+}
+
+@media screen and (min-aspect-ratio: 4/3) {
+ .name-column {
+ min-width: 200px;
+ }
+}
diff --git a/src/pages/Details.vue b/src/pages/Details.vue
index 8582b82c2..17d32365c 100644
--- a/src/pages/Details.vue
+++ b/src/pages/Details.vue
@@ -16,7 +16,7 @@
- {{ filterPassword(monitor.url) }}
+ {{ filterPassword(monitor.url) }}
TCP Port {{ monitor.hostname }}:{{ monitor.port }}
Ping: {{ monitor.hostname }}
@@ -79,7 +79,7 @@
{{ $t("checkEverySecond", [ monitor.interval ]) }}
- {{ status.text }}
+ {{ status.text }}
@@ -550,7 +550,7 @@ export default {
/**
* Return the correct title for the ping stat
* @param {boolean} average Is the statistic an average?
- * @returns {string} Title formatted dependant on monitor type
+ * @returns {string} Title formatted dependent on monitor type
*/
pingTitle(average = false) {
let translationPrefix = "";
diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue
index 06e83bb08..2f9456b2b 100644
--- a/src/pages/EditMonitor.vue
+++ b/src/pages/EditMonitor.vue
@@ -10,7 +10,7 @@
{{ $t("Monitor Type") }}
-
+
{{ $t("Group") }}
@@ -24,6 +24,9 @@
Ping
+
+ SNMP
+
HTTP(s) - {{ $t("Keyword") }}
@@ -61,6 +64,9 @@
MQTT
+
+ RabbitMQ
+
Kafka Producer
@@ -87,6 +93,13 @@
+
+
+
+ RabbitMQ documentation
+
+
+
-
-
-
@@ -245,20 +243,125 @@
+
+
+
+
{{ $t("RabbitMQ Nodes") }}
+
+
+ {{ $t("rabbitmqNodesDescription", ["https://node1.rabbitmq.com:15672"]) }}
+
+
+
+
+ RabbitMQ {{ $t("RabbitMQ Username") }}
+
+
+
+
+ {{ $t("RabbitMQ Password") }}
+
+
+
+
-
-
+
+
{{ $t("Hostname") }}
-
+
-
-
+
+
{{ $t("Port") }}
+
+
+
{{ $t("Community String") }}
+
+
+
+
{{ $t('snmpCommunityStringHelptext') }}
+
+
+
+
{{ $t("OID (Object Identifier)") }}
+
+
{{ $t('snmpOIDHelptext') }}
+
+
+
+ {{ $t("SNMP Version") }}
+
+
+ SNMPv1
+
+
+ SNMPv2c
+
+
+
+
+
+
+
+
@@ -295,6 +398,7 @@
:preselect-first="false"
:max-height="500"
:taggable="false"
+ data-testid="resolve-type-select"
>
+
+
+
+
+
+ {{ $t("Expected Value") }}
+
+
+
+
+
+
+
{{ $t("Heartbeat Interval") }} ({{ $t("checkEverySecond", [ monitor.interval ]) }})
@@ -456,8 +595,8 @@
-
-
+
+
{{ $t("Request Timeout") }} ({{ $t("timeoutAfter", [ monitor.timeout || clampTimeout(monitor.interval) ]) }})
@@ -473,8 +612,8 @@
{{ $t("Advanced") }}
-
-
@@ -890,7 +1049,7 @@
-
+
@@ -909,8 +1068,9 @@ import TagsManager from "../components/TagsManager.vue";
import { genSecret, isDev, MAX_INTERVAL_SECOND, MIN_INTERVAL_SECOND, sleep } from "../util.ts";
import { hostNameRegexPattern } from "../util-frontend";
import HiddenInput from "../components/HiddenInput.vue";
+import EditMonitorConditions from "../components/EditMonitorConditions.vue";
-const toast = useToast;
+const toast = useToast();
const pushTokenLength = 32;
@@ -924,7 +1084,6 @@ const monitorDefaults = {
retryInterval: 60,
resendInterval: 0,
maxretries: 0,
- timeout: 48,
notificationIDList: {},
ignoreTls: false,
upsideDown: false,
@@ -949,10 +1108,15 @@ const monitorDefaults = {
kafkaProducerSaslOptions: {
mechanism: "None",
},
+ cacheBust: false,
kafkaProducerSsl: false,
kafkaProducerAllowAutoTopicCreation: false,
gamedigGivenPortOnly: true,
- remote_browser: null
+ remote_browser: null,
+ rabbitmqNodes: [],
+ rabbitmqUsername: "",
+ rabbitmqPassword: "",
+ conditions: []
};
export default {
@@ -967,6 +1131,7 @@ export default {
RemoteBrowserDialog,
TagsManager,
VueMultiselect,
+ EditMonitorConditions,
},
data() {
@@ -997,6 +1162,24 @@ export default {
},
computed: {
+ defaultFriendlyName() {
+ if (this.monitor.hostname) {
+ return this.monitor.hostname;
+ }
+ if (this.monitor.url) {
+ if (this.monitor.url !== "http://" && this.monitor.url !== "https://") {
+ // Ensure monitor without a URL is not affected by invisible URL.
+ try {
+ const url = new URL(this.monitor.url);
+ return url.hostname;
+ } catch (e) {
+ return this.monitor.url.replace(/https?:\/\//, "");
+ }
+ }
+ }
+ // Default placeholder if neither hostname nor URL is available
+ return this.$t("defaultFriendlyName");
+ },
ipRegex() {
@@ -1136,8 +1319,8 @@ message HealthCheckResponse {
// Only groups, not itself, not a decendant
result = result.filter(
monitor => monitor.type === "group" &&
- monitor.id !== this.monitor.id &&
- !this.monitor.childrenIDs?.includes(monitor.id)
+ monitor.id !== this.monitor.id &&
+ !this.monitor.childrenIDs?.includes(monitor.id)
);
// Filter result by active state, weight and alphabetical
@@ -1221,7 +1404,15 @@ message HealthCheckResponse {
value: null,
}];
}
- }
+ },
+
+ supportsConditions() {
+ return this.$root.monitorTypeList[this.monitor.type]?.supportsConditions || false;
+ },
+
+ conditionVariables() {
+ return this.$root.monitorTypeList[this.monitor.type]?.conditionVariables || [];
+ },
},
watch: {
"$root.proxyList"() {
@@ -1254,7 +1445,7 @@ message HealthCheckResponse {
}
},
- "monitor.type"() {
+ "monitor.type"(newType, oldType) {
if (this.monitor.type === "push") {
if (! this.monitor.pushToken) {
// ideally this would require checking if the generated token is already used
@@ -1269,11 +1460,38 @@ message HealthCheckResponse {
this.monitor.port = "53";
} else if (this.monitor.type === "radius") {
this.monitor.port = "1812";
+ } else if (this.monitor.type === "snmp") {
+ this.monitor.port = "161";
} else {
this.monitor.port = undefined;
}
}
+ // Set a default timeout if the monitor type has changed or if it's a new monitor
+ if (oldType || this.isAdd) {
+ if (this.monitor.type === "snmp") {
+ // snmp is not expected to be executed via the internet => we can choose a lower default timeout
+ this.monitor.timeout = 5;
+ } else {
+ this.monitor.timeout = 48;
+ }
+ }
+
+ // Set default SNMP version
+ if (!this.monitor.snmpVersion) {
+ this.monitor.snmpVersion = "2c";
+ }
+
+ // Set default jsonPath
+ if (!this.monitor.jsonPath) {
+ this.monitor.jsonPath = "$";
+ }
+
+ // Set default condition for for jsonPathOperator
+ if (!this.monitor.jsonPathOperator) {
+ this.monitor.jsonPathOperator = "==";
+ }
+
// Get the game list from server
if (this.monitor.type === "gamedig") {
this.$root.getSocket().emit("getGameList", (res) => {
@@ -1302,6 +1520,10 @@ message HealthCheckResponse {
}
}
+ // Reset conditions since condition variables likely change:
+ if (oldType && newType !== oldType) {
+ this.monitor.conditions = [];
+ }
},
currentGameObject(newGameObject, previousGameObject) {
@@ -1310,6 +1532,12 @@ message HealthCheckResponse {
}
this.monitor.game = newGameObject.keys[0];
},
+
+ "monitor.ignoreTls"(newVal) {
+ if (newVal) {
+ this.monitor.expiryNotification = false;
+ }
+ },
},
mounted() {
this.init();
@@ -1439,6 +1667,10 @@ message HealthCheckResponse {
this.monitor.kafkaProducerBrokers.push(newBroker);
},
+ addRabbitmqNode(newNode) {
+ this.monitor.rabbitmqNodes.push(newNode);
+ },
+
/**
* Validate form input
* @returns {boolean} Is the form input valid?
@@ -1466,6 +1698,17 @@ message HealthCheckResponse {
return false;
}
}
+
+ if (this.monitor.type === "rabbitmq") {
+ if (this.monitor.rabbitmqNodes.length === 0) {
+ toast.error(this.$t("rabbitmqNodesRequired"));
+ return false;
+ }
+ if (!this.monitor.rabbitmqNodes.every(node => node.startsWith("http://") || node.startsWith("https://"))) {
+ toast.error(this.$t("rabbitmqNodesInvalid"));
+ return false;
+ }
+ }
return true;
},
@@ -1481,6 +1724,10 @@ message HealthCheckResponse {
this.processing = true;
+ if (!this.monitor.name) {
+ this.monitor.name = this.defaultFriendlyName;
+ }
+
if (!this.isInputValid()) {
this.processing = false;
return;
@@ -1543,7 +1790,6 @@ message HealthCheckResponse {
await this.startParentGroupMonitor();
}
this.processing = false;
- this.$root.getMonitorList();
this.$router.push("/dashboard/" + res.monitorID);
} else {
this.processing = false;
diff --git a/src/pages/StatusPage.vue b/src/pages/StatusPage.vue
index 7dfd6aff3..e5842a199 100644
--- a/src/pages/StatusPage.vue
+++ b/src/pages/StatusPage.vue
@@ -1,7 +1,7 @@
-