chore: merge main into next
This commit is contained in:
commit
d8e297f61e
52 changed files with 2561 additions and 1990 deletions
175
.github/workflows/release-push-docker.yml
vendored
175
.github/workflows/release-push-docker.yml
vendored
|
|
@ -10,14 +10,13 @@ on:
|
|||
|
||||
jobs:
|
||||
build:
|
||||
# strategy:
|
||||
# matrix:
|
||||
# platform: [
|
||||
# { platform: linux/amd64, cache: docker-release-amd64 },
|
||||
# { platform: linux/arm64, cache: docker-release-arm64 },
|
||||
# ]
|
||||
strategy:
|
||||
matrix:
|
||||
platform: [
|
||||
{ platform: linux/amd64, cache: docker-release-amd64, artifactSuffix: amd64 },
|
||||
{ platform: linux/arm64, cache: docker-release-arm64, artifactSuffix: arm64 },
|
||||
]
|
||||
runs-on: ubuntu-latest
|
||||
# continue-on-error: true # We can continue each platform deployment if the other fails
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
|
@ -37,85 +36,147 @@ jobs:
|
|||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
|
||||
- name: Build and push the backend container
|
||||
- name: Build and push the backend container by digest
|
||||
id: backend-build
|
||||
uses: docker/build-push-action@v4
|
||||
if: false # TODO: Temporary, remove later
|
||||
with:
|
||||
context: .
|
||||
file: ./prod.Dockerfile
|
||||
target: backend
|
||||
push: true
|
||||
# cache-from: type=gha,timeout=200m,scope=${{ matrix.platform.cache }}
|
||||
# cache-to: type=gha,mode=max,timeout=200m,scope=${{ matrix.platform.cache }}
|
||||
cache-from: type=gha,timeout=200m,scope=docker-release-allarch
|
||||
cache-to: type=gha,mode=max,timeout=200m,scope=docker-release-allarch
|
||||
# platforms: |
|
||||
# ${{ matrix.platform.platform }}
|
||||
cache-from: type=gha,timeout=200m,scope=${{ matrix.platform.cache }}
|
||||
cache-to: type=gha,mode=max,timeout=200m,scope=${{ matrix.platform.cache }}
|
||||
platforms: |
|
||||
linux/amd64
|
||||
linux/arm64
|
||||
${{ matrix.platform.platform }}
|
||||
tags: |
|
||||
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_BACKEND_CONTAINER_NAME }}:latest
|
||||
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_BACKEND_CONTAINER_NAME }}:${{ github.ref_name }}
|
||||
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_BACKEND_CONTAINER_NAME }}
|
||||
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
|
||||
|
||||
- name: Build and push the frontend container
|
||||
- name: Build and push the frontend container by digest
|
||||
id: frontend-build
|
||||
uses: docker/build-push-action@v4
|
||||
if: false # TODO: Temporary, remove later
|
||||
with:
|
||||
context: .
|
||||
file: ./prod.Dockerfile
|
||||
target: app
|
||||
push: true
|
||||
# cache-from: type=gha,timeout=200m,scope=${{ matrix.platform.cache }}
|
||||
# cache-to: type=gha,mode=max,timeout=200m,scope=${{ matrix.platform.cache }}
|
||||
cache-from: type=gha,timeout=200m,scope=docker-release-allarch
|
||||
cache-to: type=gha,mode=max,timeout=200m,scope=docker-release-allarch
|
||||
# platforms: |
|
||||
# ${{ matrix.platform.platform }}
|
||||
cache-from: type=gha,timeout=200m,scope=${{ matrix.platform.cache }}
|
||||
cache-to: type=gha,mode=max,timeout=200m,scope=${{ matrix.platform.cache }}
|
||||
platforms: |
|
||||
linux/amd64
|
||||
linux/arm64
|
||||
${{ matrix.platform.platform }}
|
||||
tags: |
|
||||
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_FRONTEND_CONTAINER_NAME }}:latest
|
||||
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_FRONTEND_CONTAINER_NAME }}:${{ github.ref_name }}
|
||||
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_FRONTEND_CONTAINER_NAME }}
|
||||
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
|
||||
|
||||
- name: Build and push the admin dashboard container
|
||||
- name: Build and push the admin dashboard container by digest
|
||||
id: sh_admin-build
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
context: .
|
||||
file: ./prod.Dockerfile
|
||||
target: sh_admin
|
||||
push: true
|
||||
# cache-from: type=gha,timeout=200m,scope=${{ matrix.platform.cache }}
|
||||
# cache-to: type=gha,mode=max,timeout=200m,scope=${{ matrix.platform.cache }}
|
||||
cache-from: type=gha,timeout=200m,scope=docker-release-allarch
|
||||
cache-to: type=gha,mode=max,timeout=200m,scope=docker-release-allarch
|
||||
# platforms: |
|
||||
# ${{ matrix.platform.platform }}
|
||||
cache-from: type=gha,timeout=200m,scope=${{ matrix.platform.cache }}
|
||||
cache-to: type=gha,mode=max,timeout=200m,scope=${{ matrix.platform.cache }}
|
||||
platforms: |
|
||||
linux/amd64
|
||||
linux/arm64
|
||||
${{ matrix.platform.platform }}
|
||||
tags: |
|
||||
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_SH_ADMIN_CONTAINER_NAME }}:latest
|
||||
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_SH_ADMIN_CONTAINER_NAME }}:${{ github.ref_name }}
|
||||
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_SH_ADMIN_CONTAINER_NAME }}
|
||||
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
|
||||
|
||||
- name: Build and push the AIO container
|
||||
- name: Build and push the AIO container by digest
|
||||
id: aio-build
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
context: .
|
||||
file: ./prod.Dockerfile
|
||||
target: aio
|
||||
push: true
|
||||
# cache-from: type=gha,timeout=200m,scope=${{ matrix.platform.cache }}
|
||||
# cache-to: type=gha,mode=max,timeout=200m,scope=${{ matrix.platform.cache }}
|
||||
cache-from: type=gha,timeout=200m,scope=docker-release-allarch
|
||||
cache-to: type=gha,mode=max,timeout=200m,scope=docker-release-allarch
|
||||
# platforms: |
|
||||
# ${{ matrix.platform.platform }}
|
||||
cache-from: type=gha,timeout=200m,scope=${{ matrix.platform.cache }}
|
||||
cache-to: type=gha,mode=max,timeout=200m,scope=${{ matrix.platform.cache }}
|
||||
platforms: |
|
||||
linux/amd64
|
||||
linux/arm64
|
||||
${{ matrix.platform.platform }}
|
||||
tags: |
|
||||
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_AIO_CONTAINER_NAME }}:latest
|
||||
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_AIO_CONTAINER_NAME }}:${{ github.ref_name }}
|
||||
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_AIO_CONTAINER_NAME }}
|
||||
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
|
||||
|
||||
- name: Make digest files
|
||||
run: |
|
||||
backend_digest="${{ steps.backend-build.outputs.digest }}"
|
||||
frontend_digest="${{ steps.frontend-build.outputs.digest }}"
|
||||
sh_admin_digest="${{ steps.sh_admin-build.outputs.digest }}"
|
||||
aio_digest="${{ steps.aio-build.outputs.digest }}"
|
||||
|
||||
mkdir -p digests/backend digests/frontend digests/sh_admin digests/aio
|
||||
|
||||
touch "digests/backend/${backend_digest#sha256:}"
|
||||
touch "digests/frontend/${frontend_digest#sha256:}"
|
||||
touch "digests/sh_admin/${sh_admin_digest#sha256:}"
|
||||
touch "digests/aio/${aio_digest#sha256:}"
|
||||
|
||||
- name: Upload digests files as artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: release-docker-build-digests-${{ github.ref_name }}-${{ matrix.platform.artifactSuffix }}
|
||||
path: digests/*
|
||||
if-no-files-found: error
|
||||
retention-days: 1
|
||||
|
||||
assemble-and-push-to-docker-hub:
|
||||
runs-on: ubuntu-latest
|
||||
needs:
|
||||
- build
|
||||
steps:
|
||||
- name: Download digests from artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: digests
|
||||
pattern: release-docker-build-digests-${{ github.ref_name }}-*
|
||||
merge-multiple: true
|
||||
|
||||
- name: Setup QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
||||
- name: Setup Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Log in to Docker Hub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
|
||||
- name: "[Backend] - Create manifest list and push"
|
||||
working-directory: digests/backend
|
||||
run: |
|
||||
docker buildx imagetools create -t ${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_BACKEND_CONTAINER_NAME }}:${{ github.ref_name }} \
|
||||
$(printf '${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_BACKEND_CONTAINER_NAME }}@sha256:%s ' *)
|
||||
|
||||
docker buildx imagetools create -t ${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_BACKEND_CONTAINER_NAME }}:latest \
|
||||
$(printf '${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_BACKEND_CONTAINER_NAME }}@sha256:%s ' *)
|
||||
|
||||
|
||||
- name: "[Frontend] - Create manifest list and push"
|
||||
working-directory: digests/frontend
|
||||
run: |
|
||||
docker buildx imagetools create -t ${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_FRONTEND_CONTAINER_NAME }}:${{ github.ref_name }} \
|
||||
$(printf '${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_FRONTEND_CONTAINER_NAME }}@sha256:%s ' *)
|
||||
|
||||
docker buildx imagetools create -t ${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_FRONTEND_CONTAINER_NAME }}:latest \
|
||||
$(printf '${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_FRONTEND_CONTAINER_NAME }}@sha256:%s ' *)
|
||||
|
||||
|
||||
- name: "[SH Admin] - Create manifest list and push"
|
||||
working-directory: digests/sh_admin
|
||||
run: |
|
||||
docker buildx imagetools create -t ${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_SH_ADMIN_CONTAINER_NAME }}:${{ github.ref_name }} \
|
||||
$(printf '${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_SH_ADMIN_CONTAINER_NAME }}@sha256:%s ' *)
|
||||
|
||||
docker buildx imagetools create -t ${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_SH_ADMIN_CONTAINER_NAME }}:latest \
|
||||
$(printf '${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_SH_ADMIN_CONTAINER_NAME }}@sha256:%s ' *)
|
||||
|
||||
- name: "[AIO] - Create manifest list and push"
|
||||
working-directory: digests/aio
|
||||
run: |
|
||||
docker buildx imagetools create -t ${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_AIO_CONTAINER_NAME }}:${{ github.ref_name }} \
|
||||
$(printf '${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_AIO_CONTAINER_NAME }}@sha256:%s ' *)
|
||||
|
||||
docker buildx imagetools create -t ${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_AIO_CONTAINER_NAME }}:latest \
|
||||
$(printf '${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_AIO_CONTAINER_NAME }}@sha256:%s ' *)
|
||||
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ function runChildProcessWithPrefix(command, args, prefix) {
|
|||
|
||||
const envFileContent = Object.entries(process.env)
|
||||
.filter(([env]) => env.startsWith("VITE_"))
|
||||
.sort(([envA], [envB]) => envA.localeCompare(envB))
|
||||
.map(([env, val]) => `${env}=${
|
||||
(val.startsWith("\"") && val.endsWith("\""))
|
||||
? val
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "hoppscotch-agent",
|
||||
"private": true,
|
||||
"version": "0.1.6",
|
||||
"version": "0.1.7",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
|
|
|||
1918
packages/hoppscotch-agent/src-tauri/Cargo.lock
generated
1918
packages/hoppscotch-agent/src-tauri/Cargo.lock
generated
File diff suppressed because it is too large
Load diff
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "hoppscotch-agent"
|
||||
version = "0.1.6"
|
||||
version = "0.1.7"
|
||||
description = "A cross-platform HTTP request agent for Hoppscotch for advanced request handling including custom headers, certificates, proxies, and local system integration."
|
||||
authors = ["AndrewBastin", "CuriousCorrelation"]
|
||||
edition = "2021"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"$schema": "https://schema.tauri.app/config/2.0.0-rc",
|
||||
"productName": "Hoppscotch Agent",
|
||||
"version": "0.1.6",
|
||||
"version": "0.1.7",
|
||||
"identifier": "io.hoppscotch.agent",
|
||||
"build": {
|
||||
"beforeDevCommand": "pnpm dev",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"$schema": "https://schema.tauri.app/config/2.0.0-rc",
|
||||
"productName": "Hoppscotch Agent Portable",
|
||||
"version": "0.1.6",
|
||||
"version": "0.1.7",
|
||||
"identifier": "io.hoppscotch.agent",
|
||||
"build": {
|
||||
"beforeDevCommand": "pnpm dev",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "hoppscotch-backend",
|
||||
"version": "2025.2.2",
|
||||
"version": "2025.2.3",
|
||||
"description": "",
|
||||
"author": "",
|
||||
"private": true,
|
||||
|
|
|
|||
|
|
@ -1225,6 +1225,7 @@
|
|||
"published_error": "Something went wrong while publishing msg: {topic} to topic: {message}",
|
||||
"published_message": "Published message: {message} to topic: {topic}",
|
||||
"reconnection_error": "Failed to reconnect",
|
||||
"saved": "Saved",
|
||||
"show": "Show",
|
||||
"subscribed_failed": "Failed to subscribe to topic: {topic}",
|
||||
"subscribed_success": "Successfully subscribed to topic: {topic}",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "@hoppscotch/common",
|
||||
"private": true,
|
||||
"version": "2025.2.2",
|
||||
"version": "2025.2.3",
|
||||
"scripts": {
|
||||
"dev": "pnpm exec npm-run-all -p -l dev:*",
|
||||
"test": "vitest --run",
|
||||
|
|
@ -125,7 +125,7 @@
|
|||
"@graphql-codegen/urql-introspection": "3.0.0",
|
||||
"@graphql-typed-document-node/core": "3.2.0",
|
||||
"@iconify-json/lucide": "1.2.9",
|
||||
"@intlify/vite-plugin-vue-i18n": "7.0.0",
|
||||
"@intlify/unplugin-vue-i18n": "6.0.4",
|
||||
"@relmify/jest-fp-ts": "2.1.1",
|
||||
"@rushstack/eslint-patch": "1.10.4",
|
||||
"@types/har-format": "1.2.16",
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ declare module 'vue' {
|
|||
AppGitHubStarButton: typeof import('./components/app/GitHubStarButton.vue')['default']
|
||||
AppHeader: typeof import('./components/app/Header.vue')['default']
|
||||
AppInspection: typeof import('./components/app/Inspection.vue')['default']
|
||||
AppInterceptor: typeof import('./components/app/Interceptor.vue')['default']
|
||||
AppKernelInterceptor: typeof import('./components/app/KernelInterceptor.vue')['default']
|
||||
AppLogo: typeof import('./components/app/Logo.vue')['default']
|
||||
AppMarkdown: typeof import('./components/app/Markdown.vue')['default']
|
||||
|
|
|
|||
|
|
@ -1,60 +0,0 @@
|
|||
<template>
|
||||
<div class="flex flex-col space-y-2">
|
||||
<div v-if="isTooltipComponent" class="flex flex-col px-4 pt-2">
|
||||
<h2 class="inline-flex pb-1 font-semibold text-secondaryDark">
|
||||
{{ t("settings.interceptor") }}
|
||||
</h2>
|
||||
<p class="inline-flex text-tiny">
|
||||
{{ t("settings.interceptor_description") }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div
|
||||
v-for="interceptor in interceptors"
|
||||
:key="interceptor.interceptorID"
|
||||
class="flex flex-col"
|
||||
>
|
||||
<HoppSmartRadio
|
||||
:value="interceptor.interceptorID"
|
||||
:label="unref(interceptor.name(t))"
|
||||
:selected="interceptorSelection === interceptor.interceptorID"
|
||||
:class="{
|
||||
'!px-0 hover:bg-transparent': !isTooltipComponent,
|
||||
}"
|
||||
@change="interceptorSelection = interceptor.interceptorID"
|
||||
/>
|
||||
|
||||
<component
|
||||
:is="interceptor.selectorSubtitle"
|
||||
v-if="interceptor.selectorSubtitle"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { useI18n } from "@composables/i18n"
|
||||
import { useService } from "dioc/vue"
|
||||
import { Ref, unref } from "vue"
|
||||
import { InterceptorService } from "~/services/interceptor.service"
|
||||
|
||||
const t = useI18n()
|
||||
|
||||
withDefaults(
|
||||
defineProps<{
|
||||
isTooltipComponent?: boolean
|
||||
}>(),
|
||||
{
|
||||
isTooltipComponent: true,
|
||||
}
|
||||
)
|
||||
|
||||
const interceptorService = useService(InterceptorService)
|
||||
|
||||
const interceptorSelection =
|
||||
interceptorService.currentInterceptorID as Ref<string>
|
||||
|
||||
const interceptors = interceptorService.availableInterceptors
|
||||
</script>
|
||||
|
|
@ -14,7 +14,9 @@
|
|||
:text="t('cookies.modal.interceptor_no_support')"
|
||||
>
|
||||
<template #body>
|
||||
<AppInterceptor class="rounded border border-dividerLight p-2" />
|
||||
<AppKernelInterceptor
|
||||
class="rounded border border-dividerLight p-2"
|
||||
/>
|
||||
</template>
|
||||
</HoppSmartPlaceholder>
|
||||
<div v-else class="flex flex-col">
|
||||
|
|
|
|||
|
|
@ -57,7 +57,9 @@
|
|||
:text="t('helpers.network_fail')"
|
||||
>
|
||||
<template #body>
|
||||
<AppInterceptor class="rounded border border-dividerLight p-2" />
|
||||
<AppKernelInterceptor
|
||||
class="rounded border border-dividerLight p-2"
|
||||
/>
|
||||
</template>
|
||||
</HoppSmartPlaceholder>
|
||||
<HoppSmartPlaceholder
|
||||
|
|
|
|||
|
|
@ -101,7 +101,8 @@ const urlFetchLogic =
|
|||
const responsePayload = parseBodyAsJSON<unknown>(res.right.body)
|
||||
|
||||
if (O.isSome(responsePayload)) {
|
||||
return E.right(responsePayload)
|
||||
// stringify the response payload
|
||||
return E.right(JSON.stringify(responsePayload.value))
|
||||
}
|
||||
|
||||
return E.left("REQUEST_FAILED")
|
||||
|
|
|
|||
|
|
@ -98,6 +98,7 @@ import IconEyeOff from "~icons/lucide/eye-off"
|
|||
import IconWrapText from "~icons/lucide/wrap-text"
|
||||
import IconSave from "~icons/lucide/save"
|
||||
import { HoppRESTRequestResponse } from "@hoppscotch/data"
|
||||
import { computedAsync } from "@vueuse/core"
|
||||
|
||||
const t = useI18n()
|
||||
const persistenceService = useService(PersistenceService)
|
||||
|
|
@ -136,8 +137,12 @@ const { downloadIcon, downloadResponse } = useDownloadResponse(
|
|||
request_name: responseName.value,
|
||||
})
|
||||
)
|
||||
const defaultPreview =
|
||||
(await persistenceService.getLocalConfig("lens_html_preview")) === "true"
|
||||
|
||||
const defaultPreview = computedAsync(
|
||||
async () =>
|
||||
(await persistenceService.getLocalConfig("lens_html_preview")) === "true",
|
||||
false
|
||||
)
|
||||
|
||||
const { previewFrame, previewEnabled, togglePreview } = usePreview(
|
||||
defaultPreview,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { HoppRESTResponse } from "@helpers/types/HoppRESTResponse"
|
||||
import { copyToClipboard } from "@helpers/utils/clipboard"
|
||||
import { refAutoReset } from "@vueuse/core"
|
||||
import { computed, ComputedRef, onMounted, ref, Ref } from "vue"
|
||||
import { computed, ComputedRef, ref, Ref, watch } from "vue"
|
||||
|
||||
import jsonToLanguage from "~/helpers/utils/json-to-language"
|
||||
import { platform } from "~/platform"
|
||||
|
|
@ -88,7 +88,7 @@ export function useDownloadResponse(
|
|||
}
|
||||
|
||||
export function usePreview(
|
||||
previewEnabledDefault: boolean,
|
||||
previewEnabled: Ref<boolean>,
|
||||
responseBodyText: Ref<string>
|
||||
): {
|
||||
previewFrame: Ref<HTMLIFrameElement | null>
|
||||
|
|
@ -96,18 +96,8 @@ export function usePreview(
|
|||
togglePreview: () => void
|
||||
} {
|
||||
const previewFrame: Ref<HTMLIFrameElement | null> = ref(null)
|
||||
const previewEnabled = ref(previewEnabledDefault)
|
||||
const url = ref("")
|
||||
|
||||
// `previewFrame` is a template ref that gets attached to the `iframe` element when the component mounts
|
||||
// Ensures the HTML content is rendered immediately after a request, persists between tab switches, and is not limited to preview toggles
|
||||
onMounted(() => updatePreviewFrame())
|
||||
|
||||
// Prevent updating the `iframe` element attributes during preview toggle actions after they are set initially
|
||||
const shouldUpdatePreviewFrame = computed(
|
||||
() => previewFrame.value?.getAttribute("data-previewing-url") !== url.value
|
||||
)
|
||||
|
||||
const updatePreviewFrame = () => {
|
||||
if (
|
||||
previewEnabled.value &&
|
||||
|
|
@ -126,9 +116,35 @@ export function usePreview(
|
|||
// Finally, set the iframe source to the resulting HTML.
|
||||
previewFrame.value.srcdoc = previewDocument.documentElement.outerHTML
|
||||
previewFrame.value.setAttribute("data-previewing-url", url.value)
|
||||
|
||||
// Enable sandboxing for the iframe but this can have security implications
|
||||
// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-sandbox
|
||||
// https://stackoverflow.com/a/30785417
|
||||
// previewFrame.value.setAttribute(
|
||||
// "sandbox",
|
||||
// "allow-scripts allow-same-origin"
|
||||
// )
|
||||
}
|
||||
}
|
||||
|
||||
// `previewFrame` is a template ref that gets attached to the `iframe` element when the component mounts
|
||||
// Ensures the HTML content is rendered immediately after a request, persists between tab switches, and is not limited to preview toggles
|
||||
// Also watches for changes in the `previewEnabled` state to update the `iframe` element attributes
|
||||
watch(
|
||||
previewEnabled,
|
||||
() => {
|
||||
updatePreviewFrame()
|
||||
},
|
||||
{
|
||||
immediate: true,
|
||||
}
|
||||
)
|
||||
|
||||
// Prevent updating the `iframe` element attributes during preview toggle actions after they are set initially
|
||||
const shouldUpdatePreviewFrame = computed(
|
||||
() => previewFrame.value?.getAttribute("data-previewing-url") !== url.value
|
||||
)
|
||||
|
||||
const togglePreview = () => {
|
||||
previewEnabled.value = !previewEnabled.value
|
||||
updatePreviewFrame()
|
||||
|
|
|
|||
|
|
@ -130,32 +130,30 @@ const convertSecurity = (
|
|||
pipe(
|
||||
O.fromNullable(security),
|
||||
O.chain((security) => {
|
||||
return pipe(
|
||||
const certificatesOption = pipe(
|
||||
O.fromNullable(security.certificates),
|
||||
O.chain((certificates) =>
|
||||
pipe(
|
||||
O.Do,
|
||||
O.bind("client", () => convertClientCert(certificates.client)),
|
||||
O.bind("ca", () => convertCaCerts(certificates.ca)),
|
||||
O.map((convertedCerts) => ({
|
||||
certificates: {
|
||||
client: convertedCerts.client,
|
||||
ca: convertedCerts.ca,
|
||||
},
|
||||
// Default to `false` if not explicitly set
|
||||
verifyHost: security.verifyHost ?? false,
|
||||
verifyPeer: security.verifyPeer ?? false,
|
||||
}))
|
||||
)
|
||||
),
|
||||
// If no certificates but security object exists, still return verify settings
|
||||
O.alt(() =>
|
||||
O.some({
|
||||
verifyHost: security.verifyHost ?? false,
|
||||
verifyPeer: security.verifyPeer ?? false,
|
||||
})
|
||||
)
|
||||
O.chain((certificates) => {
|
||||
const clientCert = convertClientCert(certificates.client)
|
||||
const caCerts = convertCaCerts(certificates.ca)
|
||||
|
||||
// Include if at least one certificate exists
|
||||
return O.isSome(clientCert) || O.isSome(caCerts)
|
||||
? O.some({
|
||||
...(O.isSome(clientCert) ? { client: clientCert.value } : {}),
|
||||
...(O.isSome(caCerts) ? { ca: caCerts.value } : {}),
|
||||
})
|
||||
: O.none
|
||||
})
|
||||
)
|
||||
return O.some({
|
||||
...(O.isSome(certificatesOption)
|
||||
? { certificates: certificatesOption.value }
|
||||
: {}),
|
||||
// Default to `false` if not explicitly set,
|
||||
// if no certificates but security object exists, still return verify settings
|
||||
verifyHost: security.verifyHost ?? false,
|
||||
verifyPeer: security.verifyPeer ?? false,
|
||||
})
|
||||
}),
|
||||
// If no security object at all, return default settings
|
||||
O.alt(() =>
|
||||
|
|
|
|||
|
|
@ -48,11 +48,13 @@ export function GistSource(metadata: {
|
|||
loading: metadata.isLoading?.value,
|
||||
}))
|
||||
}
|
||||
|
||||
const fetchGistFromUrl = async (url: string) => {
|
||||
// Extract the gist ID from the URL (eg. https://gist.github.com/username/gistID/...)
|
||||
const gistID = url.split("/")[4]
|
||||
|
||||
const { response } = interceptorService.execute({
|
||||
id: Date.now(),
|
||||
url: `https://api.github.com/gists/${url.split("/").pop()}`,
|
||||
url: `https://api.github.com/gists/${gistID}`,
|
||||
method: "GET",
|
||||
version: "HTTP/1.1",
|
||||
headers: {
|
||||
|
|
@ -69,7 +71,7 @@ const fetchGistFromUrl = async (url: string) => {
|
|||
const responsePayload = parseBodyAsJSON<unknown>(res.right.body)
|
||||
|
||||
if (O.isSome(responsePayload)) {
|
||||
return E.right(responsePayload)
|
||||
return E.right(responsePayload.value)
|
||||
}
|
||||
|
||||
return E.left("REQUEST_FAILED")
|
||||
|
|
|
|||
|
|
@ -745,7 +745,9 @@ const parseOpenAPIUrl = (
|
|||
**/
|
||||
|
||||
if (objectHasProperty(doc, "swagger")) {
|
||||
return `${doc.host}${doc.basePath}`
|
||||
const { host = "<<baseUrl>>", basePath = "" } =
|
||||
doc satisfies OpenAPIV2.Document
|
||||
return `${host}${basePath}`
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ import { getService } from "./dioc"
|
|||
|
||||
import FALLBACK_LANG_MESSAGES from "../../locales/en.json"
|
||||
|
||||
import messages from "@intlify/unplugin-vue-i18n/messages"
|
||||
|
||||
/*
|
||||
In context of this file, we have 2 main kinds of things.
|
||||
1. Locale -> A locale is termed as the i18n entries present in the /locales folder
|
||||
|
|
@ -140,6 +142,7 @@ export default <HoppModule>{
|
|||
fallbackLocale: "en",
|
||||
legacy: false,
|
||||
allowComposition: true,
|
||||
messages,
|
||||
})
|
||||
|
||||
app.use(i18n)
|
||||
|
|
|
|||
|
|
@ -340,13 +340,13 @@ export class ProxyKernelInterceptorService
|
|||
// NOTE: This should be conditional but seems to be hit always,
|
||||
// see std/interceptor/proxy.ts for more info. Also see the above similar note.
|
||||
if (parsedProxyResponse.isBinary) {
|
||||
const decodedData = decodeB64StringToArrayBuffer(
|
||||
parsedProxyResponse.data
|
||||
const decodedData = new Uint8Array(
|
||||
decodeB64StringToArrayBuffer(parsedProxyResponse.data)
|
||||
)
|
||||
|
||||
// NOTE: This is also for backwards compat,
|
||||
// better solution would be to ask for raw bytes from proxyscotch.
|
||||
const jsonResult = parseBytesToJSON(new Uint8Array(decodedData))
|
||||
const jsonResult = parseBytesToJSON(decodedData)
|
||||
|
||||
if (O.isSome(jsonResult)) {
|
||||
return E.right({
|
||||
|
|
@ -382,7 +382,7 @@ export class ProxyKernelInterceptorService
|
|||
statusText: parsedProxyResponse.statusText,
|
||||
headers: parsedProxyResponse.headers,
|
||||
body: {
|
||||
body: parsedProxyResponse.data,
|
||||
body: new TextEncoder().encode(parsedProxyResponse.data),
|
||||
mediaType:
|
||||
parsedProxyResponse.headers["content-type"] || "text/plain",
|
||||
},
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ export class InstanceSwitcherService extends Service<ConnectionState> {
|
|||
const instance: VendoredInstance = {
|
||||
type: "vendored",
|
||||
displayName: "Hoppscotch",
|
||||
version: "25.2.2",
|
||||
version: "25.2.3",
|
||||
}
|
||||
|
||||
this.state$.next({
|
||||
|
|
@ -121,7 +121,7 @@ export class InstanceSwitcherService extends Service<ConnectionState> {
|
|||
const instance: VendoredInstance = {
|
||||
type: "vendored",
|
||||
displayName: "Hoppscotch",
|
||||
version: "25.2.2",
|
||||
version: "25.2.3",
|
||||
}
|
||||
|
||||
this.state$.next({
|
||||
|
|
|
|||
|
|
@ -303,6 +303,7 @@ const refreshToken = async ({
|
|||
id: Date.now(),
|
||||
url: tokenEndpoint,
|
||||
method: "POST",
|
||||
version: "HTTP/1.1",
|
||||
headers: {
|
||||
"Content-Type": "application/x-www-form-urlencoded",
|
||||
Accept: "application/json",
|
||||
|
|
|
|||
|
|
@ -126,6 +126,7 @@ const handleRedirectForAuthCodeOauthFlow = async (localConfig: string) => {
|
|||
id: Date.now(),
|
||||
url: decodedLocalConfig.data.tokenEndpoint,
|
||||
method: "POST",
|
||||
version: "HTTP/1.1",
|
||||
headers: {
|
||||
"Content-Type": "application/x-www-form-urlencoded",
|
||||
Accept: "application/json",
|
||||
|
|
|
|||
|
|
@ -154,6 +154,7 @@ const handleRedirectForAuthCodeOauthFlow = async (localConfig: string) => {
|
|||
id: Date.now(),
|
||||
url: decodedLocalConfig.data.tokenEndpoint,
|
||||
method: "POST",
|
||||
version: "HTTP/1.1",
|
||||
headers: {
|
||||
"Content-Type": "application/x-www-form-urlencoded",
|
||||
Accept: "application/json",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "hoppscotch-desktop",
|
||||
"private": true,
|
||||
"version": "25.2.2",
|
||||
"version": "25.2.3",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
|
|
|||
|
|
@ -188,7 +188,7 @@ checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf"
|
|||
dependencies = [
|
||||
"cfg-if",
|
||||
"crossbeam-utils",
|
||||
"hashbrown",
|
||||
"hashbrown 0.14.5",
|
||||
"lock_api",
|
||||
"once_cell",
|
||||
"parking_lot_core",
|
||||
|
|
@ -238,6 +238,12 @@ dependencies = [
|
|||
"log",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "equivalent"
|
||||
version = "1.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
|
||||
|
||||
[[package]]
|
||||
name = "fnv"
|
||||
version = "1.0.7"
|
||||
|
|
@ -292,6 +298,12 @@ version = "0.14.5"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
|
||||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
version = "0.15.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
|
||||
|
||||
[[package]]
|
||||
name = "heck"
|
||||
version = "0.5.0"
|
||||
|
|
@ -464,6 +476,17 @@ dependencies = [
|
|||
"icu_properties",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "indexmap"
|
||||
version = "2.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058"
|
||||
dependencies = [
|
||||
"equivalent",
|
||||
"hashbrown 0.15.2",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "infer"
|
||||
version = "0.16.0"
|
||||
|
|
@ -730,6 +753,7 @@ dependencies = [
|
|||
"env_logger",
|
||||
"http",
|
||||
"http-serde",
|
||||
"indexmap",
|
||||
"infer",
|
||||
"lazy_static",
|
||||
"log",
|
||||
|
|
|
|||
|
|
@ -30,3 +30,4 @@ strum = { version = "0.26.3", features = ["derive"] }
|
|||
bytes = { version = "1.9.0", features = ["serde"] }
|
||||
mime = "0.3.17"
|
||||
url = "2.5.4"
|
||||
indexmap = { version = "2.8.0", features = ["serde"] }
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
use curl::easy::Easy;
|
||||
use http::HeaderName;
|
||||
use indexmap::IndexMap;
|
||||
use std::{collections::HashMap, path::Path};
|
||||
|
||||
use crate::{
|
||||
|
|
@ -26,15 +27,25 @@ impl<'a> ContentHandler<'a> {
|
|||
);
|
||||
|
||||
for (key, value) in new_headers {
|
||||
if let Ok(header_name) = HeaderName::from_bytes(key.as_bytes()) {
|
||||
let canonical_name = header_name.to_string();
|
||||
self.headers.insert(canonical_name, value);
|
||||
let key_lower = key.to_lowercase();
|
||||
|
||||
if !self
|
||||
.headers
|
||||
.iter()
|
||||
.any(|(k, _)| k.to_lowercase() == key_lower)
|
||||
{
|
||||
let canonical_key = HeaderName::from_bytes(key.as_bytes())
|
||||
.map(|name| name.to_string())
|
||||
.unwrap_or_else(|_| key);
|
||||
|
||||
tracing::debug!(key = %canonical_key, value = %value, "Adding header");
|
||||
self.headers.insert(canonical_key, value);
|
||||
} else {
|
||||
self.headers.insert(key, value);
|
||||
tracing::debug!(key = %key, "Skipping duplicate header (case-insensitive match exists)");
|
||||
}
|
||||
}
|
||||
|
||||
tracing::info!(merged_headers = ?self.headers, "Headers merged");
|
||||
tracing::trace!(merged_headers = ?self.headers, "Headers after merge");
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip(self), level = "debug")]
|
||||
|
|
@ -188,7 +199,7 @@ impl<'a> ContentHandler<'a> {
|
|||
|
||||
fn set_form_content(
|
||||
&mut self,
|
||||
content: &HashMap<String, Vec<FormValue>>,
|
||||
content: &IndexMap<String, Vec<FormValue>>,
|
||||
media_type: &MediaType,
|
||||
) -> Result<()> {
|
||||
let mut headers = HashMap::new();
|
||||
|
|
@ -264,7 +275,7 @@ impl<'a> ContentHandler<'a> {
|
|||
|
||||
fn set_multipart_content(
|
||||
&mut self,
|
||||
content: &HashMap<String, Vec<FormValue>>,
|
||||
content: &IndexMap<String, Vec<FormValue>>,
|
||||
media_type: &MediaType,
|
||||
) -> Result<()> {
|
||||
self.set_form_content(content, media_type)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
use std::collections::HashMap;
|
||||
use std::str::FromStr;
|
||||
|
||||
use curl::easy::{Easy, List};
|
||||
use http::{HeaderMap, HeaderName, HeaderValue};
|
||||
|
||||
use crate::error::{RelayError, Result};
|
||||
|
||||
|
|
@ -20,19 +22,28 @@ impl<'a> HeadersBuilder<'a> {
|
|||
return Ok(());
|
||||
};
|
||||
|
||||
let header_count = headers.len();
|
||||
let mut header_map = HeaderMap::new();
|
||||
for (key, value) in headers {
|
||||
if let (Ok(name), Ok(val)) = (HeaderName::from_str(key), HeaderValue::from_str(value)) {
|
||||
header_map.insert(name, val);
|
||||
}
|
||||
}
|
||||
|
||||
let header_count = header_map.len();
|
||||
tracing::info!(header_count, "Building header list");
|
||||
|
||||
let list = headers
|
||||
let list = header_map
|
||||
.iter()
|
||||
.map(|(key, value)| {
|
||||
let key_str = key.as_str();
|
||||
let value_str = value.to_str().unwrap_or("");
|
||||
tracing::debug!(
|
||||
?key,
|
||||
value_count = value.len(),
|
||||
?value,
|
||||
key = ?key_str,
|
||||
value_count = value_str.len(),
|
||||
value = ?value_str,
|
||||
"Processing headers"
|
||||
);
|
||||
let header = format!("{key}: {value}");
|
||||
let header = format!("{}: {}", key_str, value_str);
|
||||
tracing::debug!(%header, "Adding header");
|
||||
header
|
||||
})
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ use std::collections::HashMap;
|
|||
|
||||
use bytes::Bytes;
|
||||
use http::{Method, StatusCode, Version};
|
||||
use indexmap::IndexMap;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use strum::{Display, EnumString};
|
||||
use time::OffsetDateTime;
|
||||
|
|
@ -49,9 +50,7 @@ pub enum MediaType {
|
|||
#[serde(tag = "kind", rename_all = "camelCase")]
|
||||
pub enum FormValue {
|
||||
#[serde(rename_all = "camelCase")]
|
||||
Text {
|
||||
value: String,
|
||||
},
|
||||
Text { value: String },
|
||||
#[serde(rename_all = "camelCase")]
|
||||
File {
|
||||
filename: String,
|
||||
|
|
@ -60,7 +59,7 @@ pub enum FormValue {
|
|||
},
|
||||
}
|
||||
|
||||
pub type FormData = HashMap<String, Vec<FormValue>>;
|
||||
pub type FormData = IndexMap<String, Vec<FormValue>>;
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||
#[serde(tag = "kind", rename_all = "camelCase")]
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
23
packages/hoppscotch-desktop/src-tauri/Cargo.lock
generated
23
packages/hoppscotch-desktop/src-tauri/Cargo.lock
generated
|
|
@ -1949,7 +1949,7 @@ dependencies = [
|
|||
"futures-core",
|
||||
"futures-sink",
|
||||
"http",
|
||||
"indexmap 2.7.0",
|
||||
"indexmap 2.8.0",
|
||||
"slab",
|
||||
"tokio",
|
||||
"tokio-util",
|
||||
|
|
@ -2023,7 +2023,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "hoppscotch-desktop"
|
||||
version = "25.2.2"
|
||||
version = "25.2.3"
|
||||
dependencies = [
|
||||
"axum",
|
||||
"portpicker",
|
||||
|
|
@ -2398,9 +2398,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "indexmap"
|
||||
version = "2.7.0"
|
||||
version = "2.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f"
|
||||
checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058"
|
||||
dependencies = [
|
||||
"equivalent",
|
||||
"hashbrown 0.15.2",
|
||||
|
|
@ -3580,7 +3580,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"indexmap 2.7.0",
|
||||
"indexmap 2.8.0",
|
||||
"quick-xml 0.32.0",
|
||||
"serde",
|
||||
"time",
|
||||
|
|
@ -3956,7 +3956,7 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
|
|||
[[package]]
|
||||
name = "relay"
|
||||
version = "0.1.1"
|
||||
source = "git+https://github.com/CuriousCorrelation/relay.git#b744a64c0e40829a44a562e51f9d18b4696d2ba4"
|
||||
source = "git+https://github.com/CuriousCorrelation/relay.git#78f2360c022e974c34413d68355dcbc625ba1acd"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"curl",
|
||||
|
|
@ -3964,6 +3964,7 @@ dependencies = [
|
|||
"env_logger",
|
||||
"http",
|
||||
"http-serde",
|
||||
"indexmap 2.8.0",
|
||||
"infer",
|
||||
"lazy_static",
|
||||
"log",
|
||||
|
|
@ -4385,7 +4386,7 @@ dependencies = [
|
|||
"chrono",
|
||||
"hex",
|
||||
"indexmap 1.9.3",
|
||||
"indexmap 2.7.0",
|
||||
"indexmap 2.8.0",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
|
|
@ -5081,7 +5082,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "tauri-plugin-relay"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/CuriousCorrelation/tauri-plugin-relay#124133dd126da3e0ed25ce578420c0ea2671e38e"
|
||||
source = "git+https://github.com/CuriousCorrelation/tauri-plugin-relay#86e1ccf327e60442c6ae9c2911d9359bf9e32c1b"
|
||||
dependencies = [
|
||||
"relay",
|
||||
"serde",
|
||||
|
|
@ -5511,7 +5512,7 @@ version = "0.19.15"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
|
||||
dependencies = [
|
||||
"indexmap 2.7.0",
|
||||
"indexmap 2.8.0",
|
||||
"serde",
|
||||
"serde_spanned",
|
||||
"toml_datetime",
|
||||
|
|
@ -5524,7 +5525,7 @@ version = "0.20.2"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
|
||||
dependencies = [
|
||||
"indexmap 2.7.0",
|
||||
"indexmap 2.8.0",
|
||||
"serde",
|
||||
"serde_spanned",
|
||||
"toml_datetime",
|
||||
|
|
@ -6842,7 +6843,7 @@ dependencies = [
|
|||
"displaydoc",
|
||||
"flate2",
|
||||
"hmac",
|
||||
"indexmap 2.7.0",
|
||||
"indexmap 2.8.0",
|
||||
"lzma-rs",
|
||||
"memchr",
|
||||
"pbkdf2",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "hoppscotch-desktop"
|
||||
version = "25.2.2"
|
||||
version = "25.2.3"
|
||||
description = "Desktop App for hoppscotch.io"
|
||||
authors = ["CuriousCorrelation"]
|
||||
edition = "2021"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"$schema": "https://schema.tauri.app/config/2",
|
||||
"productName": "Hoppscotch",
|
||||
"version": "25.2.2",
|
||||
"version": "25.2.3",
|
||||
"identifier": "io.hoppscotch.desktop",
|
||||
"build": {
|
||||
"beforeDevCommand": "pnpm dev",
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ export type PluginRequest = Request
|
|||
export type PluginResponse = Response
|
||||
|
||||
import * as E from 'fp-ts/Either'
|
||||
import * as O from 'fp-ts/Option'
|
||||
import { pipe } from 'fp-ts/function'
|
||||
|
||||
export type Method =
|
||||
| "GET" // Retrieve resource
|
||||
|
|
@ -495,13 +497,42 @@ export const body = {
|
|||
}),
|
||||
}
|
||||
|
||||
export const transform = {
|
||||
text: (content: string): string => content,
|
||||
json: <T>(content: T): T => content,
|
||||
xml: (content: string): string => content,
|
||||
form: (content: FormData): FormData => content,
|
||||
binary: (content: Uint8Array): Uint8Array => content,
|
||||
multipart: (content: FormData): FormData => content,
|
||||
stream: (content: ReadableStream): ReadableStream => content,
|
||||
urlencoded: (arg: string | Record<string, any>): string =>
|
||||
pipe(
|
||||
arg,
|
||||
(input) => typeof input === 'string'
|
||||
? O.some(input)
|
||||
: O.none,
|
||||
O.getOrElse(() => {
|
||||
const params = new URLSearchParams()
|
||||
const obj = arg as Record<string, any>
|
||||
|
||||
Object.entries(obj)
|
||||
.filter(([_, value]) => value !== undefined && value !== null)
|
||||
.forEach(([key, value]) =>
|
||||
params.append(key, value.toString())
|
||||
)
|
||||
|
||||
return params.toString()
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
export const content = {
|
||||
text: (
|
||||
content: string,
|
||||
mediaType?: MediaType.TEXT_PLAIN | MediaType.TEXT_HTML | MediaType.TEXT_CSS | MediaType.TEXT_CSV
|
||||
): ContentType => ({
|
||||
kind: "text",
|
||||
content,
|
||||
content: transform.text(content),
|
||||
mediaType: mediaType ?? MediaType.TEXT_PLAIN
|
||||
}),
|
||||
|
||||
|
|
@ -510,7 +541,7 @@ export const content = {
|
|||
mediaType?: MediaType.APPLICATION_JSON | MediaType.APPLICATION_LD_JSON | MediaType.APPLICATION_JSON
|
||||
): ContentType => ({
|
||||
kind: "json",
|
||||
content,
|
||||
content: transform.json(content),
|
||||
mediaType: mediaType ?? MediaType.APPLICATION_JSON
|
||||
}),
|
||||
|
||||
|
|
@ -519,13 +550,13 @@ export const content = {
|
|||
mediaType?: MediaType.APPLICATION_XML | MediaType.TEXT_XML
|
||||
): ContentType => ({
|
||||
kind: "xml",
|
||||
content,
|
||||
content: transform.xml(content),
|
||||
mediaType: mediaType ?? MediaType.APPLICATION_XML
|
||||
}),
|
||||
|
||||
form: (content: FormData): ContentType => ({
|
||||
kind: "form",
|
||||
content,
|
||||
content: transform.form(content),
|
||||
mediaType: MediaType.APPLICATION_FORM
|
||||
}),
|
||||
|
||||
|
|
@ -535,26 +566,26 @@ export const content = {
|
|||
filename?: string
|
||||
): ContentType => ({
|
||||
kind: "binary",
|
||||
content,
|
||||
content: transform.binary(content),
|
||||
mediaType,
|
||||
filename
|
||||
}),
|
||||
|
||||
multipart: (content: FormData): ContentType => ({
|
||||
kind: "multipart",
|
||||
content,
|
||||
content: transform.multipart(content),
|
||||
mediaType: MediaType.MULTIPART_FORM
|
||||
}),
|
||||
|
||||
urlencoded: (content: string): ContentType => ({
|
||||
urlencoded: (content: string | Record<string, any>): ContentType => ({
|
||||
kind: "urlencoded",
|
||||
content,
|
||||
content: transform.urlencoded(content),
|
||||
mediaType: MediaType.APPLICATION_FORM
|
||||
}),
|
||||
|
||||
stream: (content: ReadableStream, mediaType: string): ContentType => ({
|
||||
kind: "stream",
|
||||
content,
|
||||
content: transform.stream(content),
|
||||
mediaType
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@
|
|||
"@graphql-codegen/urql-introspection": "2.2.1",
|
||||
"@graphql-typed-document-node/core": "3.2.0",
|
||||
"@iconify-json/lucide": "1.1.144",
|
||||
"@intlify/vite-plugin-vue-i18n": "7.0.0",
|
||||
"@intlify/unplugin-vue-i18n": "6.0.4",
|
||||
"@rushstack/eslint-patch": "1.3.3",
|
||||
"@types/lodash-es": "4.17.10",
|
||||
"@types/node": "18.18.8",
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import { viteStaticCopy as StaticCopy } from "vite-plugin-static-copy"
|
|||
import generateSitemap from "vite-plugin-pages-sitemap"
|
||||
import HtmlConfig from "vite-plugin-html-config"
|
||||
import Vue from "@vitejs/plugin-vue"
|
||||
import VueI18n from "@intlify/vite-plugin-vue-i18n"
|
||||
import VueI18n from "@intlify/unplugin-vue-i18n/vite"
|
||||
import Components from "unplugin-vue-components/vite"
|
||||
import Icons from "unplugin-icons/vite"
|
||||
import Inspect from "vite-plugin-inspect"
|
||||
|
|
@ -79,7 +79,7 @@ export default defineConfig({
|
|||
dirs: "../hoppscotch-common/src/pages",
|
||||
importMode: "async",
|
||||
onRoutesGenerated(routes) {
|
||||
return ((generateSitemap as any) as typeof generateSitemap)({
|
||||
return (generateSitemap as any as typeof generateSitemap)({
|
||||
routes,
|
||||
nuxtStyle: true,
|
||||
allowRobots: true,
|
||||
|
|
@ -107,10 +107,7 @@ export default defineConfig({
|
|||
}),
|
||||
Components({
|
||||
dts: "../hoppscotch-common/src/components.d.ts",
|
||||
dirs: [
|
||||
"../hoppscotch-common/src/components",
|
||||
"./src/components"
|
||||
],
|
||||
dirs: ["../hoppscotch-common/src/components", "./src/components"],
|
||||
directoryAsNamespace: true,
|
||||
resolvers: [
|
||||
IconResolver({
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "@hoppscotch/selfhost-web",
|
||||
"private": true,
|
||||
"version": "2025.2.2",
|
||||
"version": "2025.2.3",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev:vite": "vite",
|
||||
|
|
@ -32,12 +32,13 @@
|
|||
"@hoppscotch/ui": "0.2.1",
|
||||
"@import-meta-env/unplugin": "0.6.0",
|
||||
"@tauri-apps/api": "2.1.1",
|
||||
"@tauri-apps/plugin-shell": "2.0.1",
|
||||
"@tauri-apps/plugin-dialog": "2.0.1",
|
||||
"@tauri-apps/plugin-fs": "2.0.2",
|
||||
"@tauri-apps/plugin-shell": "2.0.1",
|
||||
"@vueuse/core": "10.5.0",
|
||||
"axios": "1.7.7",
|
||||
"buffer": "6.0.3",
|
||||
"dioc": "3.0.2",
|
||||
"fp-ts": "2.16.9",
|
||||
"process": "0.11.10",
|
||||
"rxjs": "7.8.1",
|
||||
|
|
@ -46,7 +47,6 @@
|
|||
"verzod": "0.2.4",
|
||||
"vue": "3.5.12",
|
||||
"workbox-window": "7.1.0",
|
||||
"dioc": "3.0.2",
|
||||
"zod": "3.23.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
@ -59,7 +59,7 @@
|
|||
"@graphql-codegen/urql-introspection": "3.0.0",
|
||||
"@graphql-typed-document-node/core": "3.2.0",
|
||||
"@iconify-json/lucide": "1.2.8",
|
||||
"@intlify/vite-plugin-vue-i18n": "7.0.0",
|
||||
"@intlify/unplugin-vue-i18n": "6.0.4",
|
||||
"@rushstack/eslint-patch": "1.10.4",
|
||||
"@typescript-eslint/eslint-plugin": "8.9.0",
|
||||
"@typescript-eslint/parser": "8.9.0",
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import fs from "fs"
|
|||
|
||||
const envFileContent = Object.entries(process.env)
|
||||
.filter(([env]) => env.startsWith("VITE_"))
|
||||
.sort(([envA], [envB]) => envA.localeCompare(envB))
|
||||
.map(
|
||||
([env, val]) =>
|
||||
`${env}=${val.startsWith('"') && val.endsWith('"') ? val : `"${val}"`}`
|
||||
|
|
|
|||
|
|
@ -115,6 +115,7 @@ const recursivelySyncCollections = async (
|
|||
collection.id = childCollectionId
|
||||
collection.auth = returnedData.auth
|
||||
collection.headers = returnedData.headers
|
||||
parentCollectionID = childCollectionId
|
||||
|
||||
removeDuplicateGraphqlCollectionOrFolder(
|
||||
childCollectionId,
|
||||
|
|
|
|||
|
|
@ -120,6 +120,7 @@ const recursivelySyncCollections = async (
|
|||
collection._ref_id = returnedData._ref_id ?? generateUniqueRefId("coll")
|
||||
collection.auth = returnedData.auth
|
||||
collection.headers = returnedData.headers
|
||||
parentCollectionID = childCollectionId
|
||||
|
||||
removeDuplicateRESTCollectionOrFolder(
|
||||
childCollectionId,
|
||||
|
|
|
|||
|
|
@ -115,6 +115,7 @@ const recursivelySyncCollections = async (
|
|||
collection.id = childCollectionId
|
||||
collection.auth = returnedData.auth
|
||||
collection.headers = returnedData.headers
|
||||
parentCollectionID = childCollectionId
|
||||
|
||||
removeDuplicateGraphqlCollectionOrFolder(
|
||||
childCollectionId,
|
||||
|
|
|
|||
|
|
@ -120,6 +120,7 @@ const recursivelySyncCollections = async (
|
|||
collection._ref_id = returnedData._ref_id ?? generateUniqueRefId("coll")
|
||||
collection.auth = returnedData.auth
|
||||
collection.headers = returnedData.headers
|
||||
parentCollectionID = childCollectionId
|
||||
|
||||
removeDuplicateRESTCollectionOrFolder(
|
||||
childCollectionId,
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import { viteStaticCopy as StaticCopy } from "vite-plugin-static-copy"
|
|||
import generateSitemap from "vite-plugin-pages-sitemap"
|
||||
import HtmlConfig from "vite-plugin-html-config"
|
||||
import Vue from "@vitejs/plugin-vue"
|
||||
import VueI18n from "@intlify/vite-plugin-vue-i18n"
|
||||
import VueI18n from "@intlify/unplugin-vue-i18n/vite"
|
||||
import Components from "unplugin-vue-components/vite"
|
||||
import Icons from "unplugin-icons/vite"
|
||||
import Inspect from "vite-plugin-inspect"
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ pub struct Bundle {
|
|||
impl Bundle {
|
||||
pub fn new(bundle_version: Option<String>, content: Vec<u8>, signature: Signature, files: Vec<FileEntry>) -> Self {
|
||||
let metadata = BundleMetadata {
|
||||
version: "2025.2.2".to_string(),
|
||||
version: "2025.2.3".to_string(),
|
||||
created_at: Utc::now(),
|
||||
signature,
|
||||
manifest: Manifest { files },
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ impl Default for ServerConfig {
|
|||
Self {
|
||||
port: default_port(),
|
||||
max_bundle_size: default_max_bundle_size(),
|
||||
bundle_version: Some("2025.2.2".to_string()),
|
||||
bundle_version: Some("2025.2.3".to_string()),
|
||||
csp_directives: None,
|
||||
signing_key: None,
|
||||
verifying_key: None,
|
||||
|
|
@ -75,7 +75,7 @@ impl ServerConfig {
|
|||
Self {
|
||||
signing_key: Some(key_pair.signing_key),
|
||||
verifying_key: Some(key_pair.verifying_key),
|
||||
bundle_version: Some("2025.2.2".to_string()),
|
||||
bundle_version: Some("2025.2.3".to_string()),
|
||||
frontend_path,
|
||||
is_dev: cfg!(debug_assertions),
|
||||
..Default::default()
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "hoppscotch-sh-admin",
|
||||
"private": true,
|
||||
"version": "2025.2.2",
|
||||
"version": "2025.2.3",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "pnpm exec npm-run-all -p -l dev:*",
|
||||
|
|
@ -19,7 +19,7 @@
|
|||
"@graphql-typed-document-node/core": "3.2.0",
|
||||
"@hoppscotch/ui": "0.2.1",
|
||||
"@hoppscotch/vue-toasted": "0.1.0",
|
||||
"@intlify/unplugin-vue-i18n": "5.2.0",
|
||||
"@intlify/unplugin-vue-i18n": "6.0.4",
|
||||
"@types/cors": "2.8.17",
|
||||
"@urql/exchange-auth": "2.2.0",
|
||||
"@urql/vue": "1.4.0",
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ function runChildProcessWithPrefix(command, args, prefix) {
|
|||
|
||||
const envFileContent = Object.entries(process.env)
|
||||
.filter(([env]) => env.startsWith('VITE_'))
|
||||
.sort(([envA], [envB]) => envA.localeCompare(envB))
|
||||
.map(
|
||||
([env, val]) =>
|
||||
`${env}=${val.startsWith('"') && val.endsWith('"') ? val : `"${val}"`}`
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ declare module 'vue' {
|
|||
AppSidebar: typeof import('./components/app/Sidebar.vue')['default']
|
||||
AppToast: typeof import('./components/app/Toast.vue')['default']
|
||||
DashboardMetricsCard: typeof import('./components/dashboard/MetricsCard.vue')['default']
|
||||
FallbackComponent: typeof import('./components/FallbackComponent.vue')['default']
|
||||
HoppButtonPrimary: typeof import('@hoppscotch/ui')['HoppButtonPrimary']
|
||||
HoppButtonSecondary: typeof import('@hoppscotch/ui')['HoppButtonSecondary']
|
||||
HoppSmartAnchor: typeof import('@hoppscotch/ui')['HoppSmartAnchor']
|
||||
|
|
@ -43,7 +42,6 @@ declare module 'vue' {
|
|||
IconLucideInfo: typeof import('~icons/lucide/info')['default']
|
||||
IconLucideSearch: typeof import('~icons/lucide/search')['default']
|
||||
IconLucideUser: typeof import('~icons/lucide/user')['default']
|
||||
IconLucideX: typeof import('~icons/lucide/x')['default']
|
||||
SettingsAuthProvider: typeof import('./components/settings/AuthProvider.vue')['default']
|
||||
SettingsConfigurations: typeof import('./components/settings/Configurations.vue')['default']
|
||||
SettingsDataSharing: typeof import('./components/settings/DataSharing.vue')['default']
|
||||
|
|
|
|||
437
pnpm-lock.yaml
437
pnpm-lock.yaml
|
|
@ -770,9 +770,9 @@ importers:
|
|||
'@iconify-json/lucide':
|
||||
specifier: 1.2.9
|
||||
version: 1.2.9
|
||||
'@intlify/vite-plugin-vue-i18n':
|
||||
specifier: 7.0.0
|
||||
version: 7.0.0(vite@5.4.9(@types/node@22.9.3)(sass@1.79.5)(terser@5.34.1))(vue-i18n@10.0.4(vue@3.5.12(typescript@5.3.3)))
|
||||
'@intlify/unplugin-vue-i18n':
|
||||
specifier: 6.0.4
|
||||
version: 6.0.4(@vue/compiler-dom@3.5.12)(eslint@8.57.0)(rollup@4.24.0)(typescript@5.3.3)(vue-i18n@10.0.4(vue@3.5.12(typescript@5.3.3)))(vue@3.5.12(typescript@5.3.3))(webpack-sources@3.2.3)
|
||||
'@relmify/jest-fp-ts':
|
||||
specifier: 2.1.1
|
||||
version: 2.1.1(fp-ts@2.16.9)(io-ts@2.2.21(fp-ts@2.16.9))
|
||||
|
|
@ -1180,7 +1180,7 @@ importers:
|
|||
dependencies:
|
||||
'@hoppscotch/plugin-relay':
|
||||
specifier: github:CuriousCorrelation/tauri-plugin-relay
|
||||
version: '@CuriousCorrelation/plugin-relay@https://codeload.github.com/CuriousCorrelation/tauri-plugin-relay/tar.gz/124133dd126da3e0ed25ce578420c0ea2671e38e'
|
||||
version: '@CuriousCorrelation/plugin-relay@https://codeload.github.com/CuriousCorrelation/tauri-plugin-relay/tar.gz/86e1ccf327e60442c6ae9c2911d9359bf9e32c1b'
|
||||
'@tauri-apps/api':
|
||||
specifier: 2.1.1
|
||||
version: 2.1.1
|
||||
|
|
@ -1333,9 +1333,9 @@ importers:
|
|||
'@iconify-json/lucide':
|
||||
specifier: 1.1.144
|
||||
version: 1.1.144
|
||||
'@intlify/vite-plugin-vue-i18n':
|
||||
specifier: 7.0.0
|
||||
version: 7.0.0(vite@4.5.0(@types/node@18.18.8)(sass@1.80.3)(terser@5.34.1))(vue-i18n@10.0.4(vue@3.5.12(typescript@4.9.5)))
|
||||
'@intlify/unplugin-vue-i18n':
|
||||
specifier: 6.0.4
|
||||
version: 6.0.4(@vue/compiler-dom@3.5.12)(eslint@8.47.0)(rollup@2.79.2)(typescript@4.9.5)(vue-i18n@10.0.4(vue@3.5.12(typescript@4.9.5)))(vue@3.5.12(typescript@4.9.5))(webpack-sources@3.2.3)
|
||||
'@rushstack/eslint-patch':
|
||||
specifier: 1.3.3
|
||||
version: 1.3.3
|
||||
|
|
@ -1529,9 +1529,9 @@ importers:
|
|||
'@iconify-json/lucide':
|
||||
specifier: 1.2.8
|
||||
version: 1.2.8
|
||||
'@intlify/vite-plugin-vue-i18n':
|
||||
specifier: 7.0.0
|
||||
version: 7.0.0(vite@5.4.9(@types/node@22.9.3)(sass@1.80.3)(terser@5.34.1))(vue-i18n@10.0.4(vue@3.5.12(typescript@5.3.3)))
|
||||
'@intlify/unplugin-vue-i18n':
|
||||
specifier: 6.0.4
|
||||
version: 6.0.4(@vue/compiler-dom@3.5.12)(eslint@8.57.0)(rollup@4.24.0)(typescript@5.3.3)(vue-i18n@10.0.4(vue@3.5.12(typescript@5.3.3)))(vue@3.5.12(typescript@5.3.3))(webpack-sources@3.2.3)
|
||||
'@rushstack/eslint-patch':
|
||||
specifier: 1.10.4
|
||||
version: 1.10.4
|
||||
|
|
@ -1644,8 +1644,8 @@ importers:
|
|||
specifier: 0.1.0
|
||||
version: 0.1.0(vue@3.5.12(typescript@5.6.3))
|
||||
'@intlify/unplugin-vue-i18n':
|
||||
specifier: 5.2.0
|
||||
version: 5.2.0(@vue/compiler-dom@3.5.12)(eslint@9.12.0(jiti@2.3.3))(rollup@4.24.0)(typescript@5.6.3)(vue-i18n@10.0.4(vue@3.5.12(typescript@5.6.3)))(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3)
|
||||
specifier: 6.0.4
|
||||
version: 6.0.4(@vue/compiler-dom@3.5.12)(eslint@9.12.0(jiti@2.3.3))(rollup@4.24.0)(typescript@5.6.3)(vue-i18n@10.0.4(vue@3.5.12(typescript@5.6.3)))(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3)
|
||||
'@types/cors':
|
||||
specifier: 2.8.17
|
||||
version: 2.8.17
|
||||
|
|
@ -1809,8 +1809,8 @@ packages:
|
|||
resolution: {tarball: https://codeload.github.com/CuriousCorrelation/tauri-plugin-appload/tar.gz/1c2e8b19db7f1b6af6d00abb907f15cdc2017298}
|
||||
version: 0.1.0
|
||||
|
||||
'@CuriousCorrelation/plugin-relay@https://codeload.github.com/CuriousCorrelation/tauri-plugin-relay/tar.gz/124133dd126da3e0ed25ce578420c0ea2671e38e':
|
||||
resolution: {tarball: https://codeload.github.com/CuriousCorrelation/tauri-plugin-relay/tar.gz/124133dd126da3e0ed25ce578420c0ea2671e38e}
|
||||
'@CuriousCorrelation/plugin-relay@https://codeload.github.com/CuriousCorrelation/tauri-plugin-relay/tar.gz/86e1ccf327e60442c6ae9c2911d9359bf9e32c1b':
|
||||
resolution: {tarball: https://codeload.github.com/CuriousCorrelation/tauri-plugin-relay/tar.gz/86e1ccf327e60442c6ae9c2911d9359bf9e32c1b}
|
||||
version: 0.1.0
|
||||
|
||||
'@alloc/quick-lru@5.2.0':
|
||||
|
|
@ -4125,20 +4125,8 @@ packages:
|
|||
'@import-meta-env/cli':
|
||||
optional: true
|
||||
|
||||
'@intlify/bundle-utils@3.4.0':
|
||||
resolution: {integrity: sha512-2UQkqiSAOSPEHMGWlybqWm4G2K0X+FyYho5AwXz6QklSX1EY5EDmOSxZmwscn2qmKBnp6OYsme5kUrnN9xrWzQ==}
|
||||
engines: {node: '>= 12'}
|
||||
peerDependencies:
|
||||
petite-vue-i18n: '*'
|
||||
vue-i18n: '*'
|
||||
peerDependenciesMeta:
|
||||
petite-vue-i18n:
|
||||
optional: true
|
||||
vue-i18n:
|
||||
optional: true
|
||||
|
||||
'@intlify/bundle-utils@9.0.0-beta.0':
|
||||
resolution: {integrity: sha512-xVaMrgbr60fYE1Jkq+k6grs2ZoXqh1EU71RVKkHkKh3KP7T6OYtG1Vbp1T09/jCUbv1GBd8Ir5WdZDyN+e8BpQ==}
|
||||
'@intlify/bundle-utils@10.0.1':
|
||||
resolution: {integrity: sha512-WkaXfSevtpgtUR4t8K2M6lbR7g03mtOxFeh+vXp5KExvPqS12ppaRj1QxzwRuRI5VUto54A22BjKoBMLyHILWQ==}
|
||||
engines: {node: '>= 18'}
|
||||
peerDependencies:
|
||||
petite-vue-i18n: '*'
|
||||
|
|
@ -4157,20 +4145,20 @@ packages:
|
|||
resolution: {integrity: sha512-AFbhEo10DP095/45EauinQJ5hJ3rJUmuuqltGguvc3WsvezZN+g8qNHLGWKu60FHQVizMrQY7VJ+zVlBXlQQkQ==}
|
||||
engines: {node: '>= 16'}
|
||||
|
||||
'@intlify/message-compiler@11.0.0-rc.1':
|
||||
resolution: {integrity: sha512-TGw2uBfuTFTegZf/BHtUQBEKxl7Q/dVGLoqRIdw8lFsp9g/53sYn5iD+0HxIzdYjbWL6BTJMXCPUHp9PxDTRPw==}
|
||||
'@intlify/message-compiler@11.1.2':
|
||||
resolution: {integrity: sha512-T/xbNDzi+Yv0Qn2Dfz2CWCAJiwNgU5d95EhhAEf4YmOgjCKktpfpiUSmLcBvK1CtLpPQ85AMMQk/2NCcXnNj1g==}
|
||||
engines: {node: '>= 16'}
|
||||
|
||||
'@intlify/shared@10.0.4':
|
||||
resolution: {integrity: sha512-ukFn0I01HsSgr3VYhYcvkTCLS7rGa0gw4A4AMpcy/A9xx/zRJy7PS2BElMXLwUazVFMAr5zuiTk3MQeoeGXaJg==}
|
||||
engines: {node: '>= 16'}
|
||||
|
||||
'@intlify/shared@11.0.0-rc.1':
|
||||
resolution: {integrity: sha512-8tR1xe7ZEbkabTuE/tNhzpolygUn9OaYp9yuYAF4MgDNZg06C3Qny80bes2/e9/Wm3aVkPUlCw6WgU7mQd0yEg==}
|
||||
'@intlify/shared@11.1.2':
|
||||
resolution: {integrity: sha512-dF2iMMy8P9uKVHV/20LA1ulFLL+MKSbfMiixSmn6fpwqzvix38OIc7ebgnFbBqElvghZCW9ACtzKTGKsTGTWGA==}
|
||||
engines: {node: '>= 16'}
|
||||
|
||||
'@intlify/unplugin-vue-i18n@5.2.0':
|
||||
resolution: {integrity: sha512-pmRiPY2Nj9mmSrixT69aO45XxGUr5fDBy/IIw4ajLlDTJm5TSmQKA5YNdsH0uxVDCPWy5tlQrF18hkDwI7UJvg==}
|
||||
'@intlify/unplugin-vue-i18n@6.0.4':
|
||||
resolution: {integrity: sha512-QjNhbw7LkPe2vvoO9uDuq/omnHJg5dQUH9YViu+68+puM2ZQnk0sQDyWxnWLZ8+AiB+wDDOfW23t26VupLbiow==}
|
||||
engines: {node: '>= 18'}
|
||||
peerDependencies:
|
||||
petite-vue-i18n: '*'
|
||||
|
|
@ -4182,30 +4170,14 @@ packages:
|
|||
vue-i18n:
|
||||
optional: true
|
||||
|
||||
'@intlify/vite-plugin-vue-i18n@7.0.0':
|
||||
resolution: {integrity: sha512-2TbDOQ8XD+vkc0s5OFmr+IY/k4mYMC7pzvx0xGQn+cU/ev314+yi7Z7N7rWcBgiYk1WOUalbGSo3d4nJDxOOyw==}
|
||||
engines: {node: '>= 14.6'}
|
||||
deprecated: This plugin support until Vite 3. If you would like to use on Vite 4, please use @intlify/unplugin-vue-i18n
|
||||
peerDependencies:
|
||||
petite-vue-i18n: '*'
|
||||
vite: ^2.9.0 || ^3.0.0
|
||||
vue-i18n: '*'
|
||||
peerDependenciesMeta:
|
||||
petite-vue-i18n:
|
||||
optional: true
|
||||
vite:
|
||||
optional: true
|
||||
vue-i18n:
|
||||
optional: true
|
||||
|
||||
'@intlify/vue-i18n-extensions@7.0.0':
|
||||
resolution: {integrity: sha512-MtvfJnb4aklpCU5Q/dkWkBT/vGsp3qERiPIwtTq5lX4PCLHtUprAJZp8wQj5ZcwDaFCU7+yVMjYbeXpIf927cA==}
|
||||
'@intlify/vue-i18n-extensions@8.0.0':
|
||||
resolution: {integrity: sha512-w0+70CvTmuqbskWfzeYhn0IXxllr6mU+IeM2MU0M+j9OW64jkrvqY+pYFWrUnIIC9bEdij3NICruicwd5EgUuQ==}
|
||||
engines: {node: '>= 18'}
|
||||
peerDependencies:
|
||||
'@intlify/shared': ^9.0.0 || ^10.0.0
|
||||
'@intlify/shared': ^9.0.0 || ^10.0.0 || ^11.0.0
|
||||
'@vue/compiler-dom': ^3.0.0
|
||||
vue: 3.5.12
|
||||
vue-i18n: ^9.0.0 || ^10.0.0
|
||||
vue-i18n: ^9.0.0 || ^10.0.0 || ^11.0.0
|
||||
peerDependenciesMeta:
|
||||
'@intlify/shared':
|
||||
optional: true
|
||||
|
|
@ -5649,6 +5621,10 @@ packages:
|
|||
resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==}
|
||||
engines: {node: ^18.18.0 || >=20.0.0}
|
||||
|
||||
'@typescript-eslint/scope-manager@8.26.1':
|
||||
resolution: {integrity: sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@typescript-eslint/scope-manager@8.8.1':
|
||||
resolution: {integrity: sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
|
@ -5703,6 +5679,10 @@ packages:
|
|||
resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==}
|
||||
engines: {node: ^18.18.0 || >=20.0.0}
|
||||
|
||||
'@typescript-eslint/types@8.26.1':
|
||||
resolution: {integrity: sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@typescript-eslint/types@8.8.1':
|
||||
resolution: {integrity: sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
|
@ -5729,6 +5709,12 @@ packages:
|
|||
typescript:
|
||||
optional: true
|
||||
|
||||
'@typescript-eslint/typescript-estree@8.26.1':
|
||||
resolution: {integrity: sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
peerDependencies:
|
||||
typescript: '>=4.8.4 <5.9.0'
|
||||
|
||||
'@typescript-eslint/typescript-estree@8.8.1':
|
||||
resolution: {integrity: sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
|
@ -5779,6 +5765,10 @@ packages:
|
|||
resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==}
|
||||
engines: {node: ^18.18.0 || >=20.0.0}
|
||||
|
||||
'@typescript-eslint/visitor-keys@8.26.1':
|
||||
resolution: {integrity: sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
'@typescript-eslint/visitor-keys@8.8.1':
|
||||
resolution: {integrity: sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
|
@ -7817,20 +7807,12 @@ packages:
|
|||
resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
eslint-utils@2.1.0:
|
||||
resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
eslint-visitor-keys@1.3.0:
|
||||
resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==}
|
||||
engines: {node: '>=4'}
|
||||
|
||||
eslint-visitor-keys@3.4.3:
|
||||
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
|
||||
eslint-visitor-keys@4.1.0:
|
||||
resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==}
|
||||
eslint-visitor-keys@4.2.0:
|
||||
resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
eslint@8.47.0:
|
||||
|
|
@ -7859,10 +7841,6 @@ packages:
|
|||
resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
|
||||
espree@6.2.1:
|
||||
resolution: {integrity: sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
|
||||
espree@9.6.1:
|
||||
resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
|
|
@ -9235,10 +9213,6 @@ packages:
|
|||
engines: {node: '>=6'}
|
||||
hasBin: true
|
||||
|
||||
jsonc-eslint-parser@1.4.1:
|
||||
resolution: {integrity: sha512-hXBrvsR1rdjmB2kQmUjf1rEIa+TqHBGMge8pwi++C+Si1ad7EjZrJcpgwym+QGK/pqTx+K7keFAtLlVNdLRJOg==}
|
||||
engines: {node: '>=8.10.0'}
|
||||
|
||||
jsonc-eslint-parser@2.4.0:
|
||||
resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
|
|
@ -11835,6 +11809,12 @@ packages:
|
|||
peerDependencies:
|
||||
typescript: '>=4.2.0'
|
||||
|
||||
ts-api-utils@2.0.1:
|
||||
resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==}
|
||||
engines: {node: '>=18.12'}
|
||||
peerDependencies:
|
||||
typescript: '>=4.8.4'
|
||||
|
||||
ts-essentials@10.0.2:
|
||||
resolution: {integrity: sha512-Xwag0TULqriaugXqVdDiGZ5wuZpqABZlpwQ2Ho4GDyiu/R2Xjkp/9+zcFxL7uzeLl/QCPrflnvpVYyS3ouT7Zw==}
|
||||
peerDependencies:
|
||||
|
|
@ -13141,9 +13121,6 @@ packages:
|
|||
yaml-ast-parser@0.0.43:
|
||||
resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==}
|
||||
|
||||
yaml-eslint-parser@0.3.2:
|
||||
resolution: {integrity: sha512-32kYO6kJUuZzqte82t4M/gB6/+11WAuHiEnK7FreMo20xsCKPeFH5tDBU7iWxR7zeJpNnMXfJyXwne48D0hGrg==}
|
||||
|
||||
yaml-eslint-parser@1.2.3:
|
||||
resolution: {integrity: sha512-4wZWvE398hCP7O8n3nXKu/vdq1HcH01ixYlCREaJL5NUMwQ0g3MaGFUBNSlmBtKmhbtVG/Cm6lyYmSVTEVil8A==}
|
||||
engines: {node: ^14.17.0 || >=16.0.0}
|
||||
|
|
@ -13236,7 +13213,7 @@ snapshots:
|
|||
dependencies:
|
||||
'@tauri-apps/api': 2.1.1
|
||||
|
||||
'@CuriousCorrelation/plugin-relay@https://codeload.github.com/CuriousCorrelation/tauri-plugin-relay/tar.gz/124133dd126da3e0ed25ce578420c0ea2671e38e':
|
||||
'@CuriousCorrelation/plugin-relay@https://codeload.github.com/CuriousCorrelation/tauri-plugin-relay/tar.gz/86e1ccf327e60442c6ae9c2911d9359bf9e32c1b':
|
||||
dependencies:
|
||||
'@tauri-apps/api': 2.1.1
|
||||
|
||||
|
|
@ -16247,35 +16224,43 @@ snapshots:
|
|||
transitivePeerDependencies:
|
||||
- webpack-sources
|
||||
|
||||
'@intlify/bundle-utils@3.4.0(vue-i18n@10.0.4(vue@3.5.12(typescript@4.9.5)))':
|
||||
'@intlify/bundle-utils@10.0.1(vue-i18n@10.0.4(vue@3.5.12(typescript@4.9.5)))':
|
||||
dependencies:
|
||||
'@intlify/message-compiler': 11.0.0-rc.1
|
||||
'@intlify/shared': 11.0.0-rc.1
|
||||
jsonc-eslint-parser: 1.4.1
|
||||
source-map: 0.6.1
|
||||
yaml-eslint-parser: 0.3.2
|
||||
optionalDependencies:
|
||||
vue-i18n: 10.0.4(vue@3.5.12(typescript@4.9.5))
|
||||
|
||||
'@intlify/bundle-utils@3.4.0(vue-i18n@10.0.4(vue@3.5.12(typescript@5.3.3)))':
|
||||
dependencies:
|
||||
'@intlify/message-compiler': 11.0.0-rc.1
|
||||
'@intlify/shared': 11.0.0-rc.1
|
||||
jsonc-eslint-parser: 1.4.1
|
||||
source-map: 0.6.1
|
||||
yaml-eslint-parser: 0.3.2
|
||||
optionalDependencies:
|
||||
vue-i18n: 10.0.4(vue@3.5.12(typescript@5.3.3))
|
||||
|
||||
'@intlify/bundle-utils@9.0.0-beta.0(vue-i18n@10.0.4(vue@3.5.12(typescript@5.6.3)))':
|
||||
dependencies:
|
||||
'@intlify/message-compiler': 11.0.0-rc.1
|
||||
'@intlify/shared': 11.0.0-rc.1
|
||||
acorn: 8.12.1
|
||||
'@intlify/message-compiler': 11.1.2
|
||||
'@intlify/shared': 11.1.2
|
||||
acorn: 8.14.0
|
||||
escodegen: 2.1.0
|
||||
estree-walker: 2.0.2
|
||||
jsonc-eslint-parser: 2.4.0
|
||||
mlly: 1.7.2
|
||||
mlly: 1.7.4
|
||||
source-map-js: 1.2.1
|
||||
yaml-eslint-parser: 1.2.3
|
||||
optionalDependencies:
|
||||
vue-i18n: 10.0.4(vue@3.5.12(typescript@4.9.5))
|
||||
|
||||
'@intlify/bundle-utils@10.0.1(vue-i18n@10.0.4(vue@3.5.12(typescript@5.3.3)))':
|
||||
dependencies:
|
||||
'@intlify/message-compiler': 11.1.2
|
||||
'@intlify/shared': 11.1.2
|
||||
acorn: 8.14.0
|
||||
escodegen: 2.1.0
|
||||
estree-walker: 2.0.2
|
||||
jsonc-eslint-parser: 2.4.0
|
||||
mlly: 1.7.4
|
||||
source-map-js: 1.2.1
|
||||
yaml-eslint-parser: 1.2.3
|
||||
optionalDependencies:
|
||||
vue-i18n: 10.0.4(vue@3.5.12(typescript@5.3.3))
|
||||
|
||||
'@intlify/bundle-utils@10.0.1(vue-i18n@10.0.4(vue@3.5.12(typescript@5.6.3)))':
|
||||
dependencies:
|
||||
'@intlify/message-compiler': 11.1.2
|
||||
'@intlify/shared': 11.1.2
|
||||
acorn: 8.14.0
|
||||
escodegen: 2.1.0
|
||||
estree-walker: 2.0.2
|
||||
jsonc-eslint-parser: 2.4.0
|
||||
mlly: 1.7.4
|
||||
source-map-js: 1.2.1
|
||||
yaml-eslint-parser: 1.2.3
|
||||
optionalDependencies:
|
||||
|
|
@ -16291,30 +16276,86 @@ snapshots:
|
|||
'@intlify/shared': 10.0.4
|
||||
source-map-js: 1.2.1
|
||||
|
||||
'@intlify/message-compiler@11.0.0-rc.1':
|
||||
'@intlify/message-compiler@11.1.2':
|
||||
dependencies:
|
||||
'@intlify/shared': 11.0.0-rc.1
|
||||
'@intlify/shared': 11.1.2
|
||||
source-map-js: 1.2.1
|
||||
|
||||
'@intlify/shared@10.0.4': {}
|
||||
|
||||
'@intlify/shared@11.0.0-rc.1': {}
|
||||
'@intlify/shared@11.1.2': {}
|
||||
|
||||
'@intlify/unplugin-vue-i18n@5.2.0(@vue/compiler-dom@3.5.12)(eslint@9.12.0(jiti@2.3.3))(rollup@4.24.0)(typescript@5.6.3)(vue-i18n@10.0.4(vue@3.5.12(typescript@5.6.3)))(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3)':
|
||||
'@intlify/unplugin-vue-i18n@6.0.4(@vue/compiler-dom@3.5.12)(eslint@8.47.0)(rollup@2.79.2)(typescript@4.9.5)(vue-i18n@10.0.4(vue@3.5.12(typescript@4.9.5)))(vue@3.5.12(typescript@4.9.5))(webpack-sources@3.2.3)':
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0(jiti@2.3.3))
|
||||
'@intlify/bundle-utils': 9.0.0-beta.0(vue-i18n@10.0.4(vue@3.5.12(typescript@5.6.3)))
|
||||
'@intlify/shared': 11.0.0-rc.1
|
||||
'@intlify/vue-i18n-extensions': 7.0.0(@intlify/shared@11.0.0-rc.1)(@vue/compiler-dom@3.5.12)(vue-i18n@10.0.4(vue@3.5.12(typescript@5.6.3)))(vue@3.5.12(typescript@5.6.3))
|
||||
'@rollup/pluginutils': 5.1.2(rollup@4.24.0)
|
||||
'@typescript-eslint/scope-manager': 7.18.0
|
||||
'@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3)
|
||||
debug: 4.3.7
|
||||
'@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0)
|
||||
'@intlify/bundle-utils': 10.0.1(vue-i18n@10.0.4(vue@3.5.12(typescript@4.9.5)))
|
||||
'@intlify/shared': 11.1.2
|
||||
'@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.1.2)(@vue/compiler-dom@3.5.12)(vue-i18n@10.0.4(vue@3.5.12(typescript@4.9.5)))(vue@3.5.12(typescript@4.9.5))
|
||||
'@rollup/pluginutils': 5.1.2(rollup@2.79.2)
|
||||
'@typescript-eslint/scope-manager': 8.26.1
|
||||
'@typescript-eslint/typescript-estree': 8.26.1(typescript@4.9.5)
|
||||
debug: 4.4.0
|
||||
fast-glob: 3.3.2
|
||||
js-yaml: 4.1.0
|
||||
json5: 2.2.3
|
||||
pathe: 1.1.2
|
||||
picocolors: 1.1.0
|
||||
picocolors: 1.1.1
|
||||
source-map-js: 1.2.1
|
||||
unplugin: 1.14.1(webpack-sources@3.2.3)
|
||||
vue: 3.5.12(typescript@4.9.5)
|
||||
optionalDependencies:
|
||||
vue-i18n: 10.0.4(vue@3.5.12(typescript@4.9.5))
|
||||
transitivePeerDependencies:
|
||||
- '@vue/compiler-dom'
|
||||
- eslint
|
||||
- rollup
|
||||
- supports-color
|
||||
- typescript
|
||||
- webpack-sources
|
||||
|
||||
'@intlify/unplugin-vue-i18n@6.0.4(@vue/compiler-dom@3.5.12)(eslint@8.57.0)(rollup@4.24.0)(typescript@5.3.3)(vue-i18n@10.0.4(vue@3.5.12(typescript@5.3.3)))(vue@3.5.12(typescript@5.3.3))(webpack-sources@3.2.3)':
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
|
||||
'@intlify/bundle-utils': 10.0.1(vue-i18n@10.0.4(vue@3.5.12(typescript@5.3.3)))
|
||||
'@intlify/shared': 11.1.2
|
||||
'@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.1.2)(@vue/compiler-dom@3.5.12)(vue-i18n@10.0.4(vue@3.5.12(typescript@5.3.3)))(vue@3.5.12(typescript@5.3.3))
|
||||
'@rollup/pluginutils': 5.1.2(rollup@4.24.0)
|
||||
'@typescript-eslint/scope-manager': 8.26.1
|
||||
'@typescript-eslint/typescript-estree': 8.26.1(typescript@5.3.3)
|
||||
debug: 4.4.0
|
||||
fast-glob: 3.3.2
|
||||
js-yaml: 4.1.0
|
||||
json5: 2.2.3
|
||||
pathe: 1.1.2
|
||||
picocolors: 1.1.1
|
||||
source-map-js: 1.2.1
|
||||
unplugin: 1.14.1(webpack-sources@3.2.3)
|
||||
vue: 3.5.12(typescript@5.3.3)
|
||||
optionalDependencies:
|
||||
vue-i18n: 10.0.4(vue@3.5.12(typescript@5.3.3))
|
||||
transitivePeerDependencies:
|
||||
- '@vue/compiler-dom'
|
||||
- eslint
|
||||
- rollup
|
||||
- supports-color
|
||||
- typescript
|
||||
- webpack-sources
|
||||
|
||||
'@intlify/unplugin-vue-i18n@6.0.4(@vue/compiler-dom@3.5.12)(eslint@9.12.0(jiti@2.3.3))(rollup@4.24.0)(typescript@5.6.3)(vue-i18n@10.0.4(vue@3.5.12(typescript@5.6.3)))(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3)':
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0(jiti@2.3.3))
|
||||
'@intlify/bundle-utils': 10.0.1(vue-i18n@10.0.4(vue@3.5.12(typescript@5.6.3)))
|
||||
'@intlify/shared': 11.1.2
|
||||
'@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.1.2)(@vue/compiler-dom@3.5.12)(vue-i18n@10.0.4(vue@3.5.12(typescript@5.6.3)))(vue@3.5.12(typescript@5.6.3))
|
||||
'@rollup/pluginutils': 5.1.2(rollup@4.24.0)
|
||||
'@typescript-eslint/scope-manager': 8.26.1
|
||||
'@typescript-eslint/typescript-estree': 8.26.1(typescript@5.6.3)
|
||||
debug: 4.4.0
|
||||
fast-glob: 3.3.2
|
||||
js-yaml: 4.1.0
|
||||
json5: 2.2.3
|
||||
pathe: 1.1.2
|
||||
picocolors: 1.1.1
|
||||
source-map-js: 1.2.1
|
||||
unplugin: 1.14.1(webpack-sources@3.2.3)
|
||||
vue: 3.5.12(typescript@5.6.3)
|
||||
|
|
@ -16328,53 +16369,29 @@ snapshots:
|
|||
- typescript
|
||||
- webpack-sources
|
||||
|
||||
'@intlify/vite-plugin-vue-i18n@7.0.0(vite@4.5.0(@types/node@18.18.8)(sass@1.80.3)(terser@5.34.1))(vue-i18n@10.0.4(vue@3.5.12(typescript@4.9.5)))':
|
||||
dependencies:
|
||||
'@intlify/bundle-utils': 3.4.0(vue-i18n@10.0.4(vue@3.5.12(typescript@4.9.5)))
|
||||
'@intlify/shared': 11.0.0-rc.1
|
||||
'@rollup/pluginutils': 4.2.1
|
||||
debug: 4.3.7
|
||||
fast-glob: 3.3.2
|
||||
source-map: 0.6.1
|
||||
optionalDependencies:
|
||||
vite: 4.5.0(@types/node@18.18.8)(sass@1.80.3)(terser@5.34.1)
|
||||
vue-i18n: 10.0.4(vue@3.5.12(typescript@4.9.5))
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@intlify/vite-plugin-vue-i18n@7.0.0(vite@5.4.9(@types/node@22.9.3)(sass@1.79.5)(terser@5.34.1))(vue-i18n@10.0.4(vue@3.5.12(typescript@5.3.3)))':
|
||||
dependencies:
|
||||
'@intlify/bundle-utils': 3.4.0(vue-i18n@10.0.4(vue@3.5.12(typescript@5.3.3)))
|
||||
'@intlify/shared': 11.0.0-rc.1
|
||||
'@rollup/pluginutils': 4.2.1
|
||||
debug: 4.3.7
|
||||
fast-glob: 3.3.2
|
||||
source-map: 0.6.1
|
||||
optionalDependencies:
|
||||
vite: 5.4.9(@types/node@22.9.3)(sass@1.79.5)(terser@5.34.1)
|
||||
vue-i18n: 10.0.4(vue@3.5.12(typescript@5.3.3))
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@intlify/vite-plugin-vue-i18n@7.0.0(vite@5.4.9(@types/node@22.9.3)(sass@1.80.3)(terser@5.34.1))(vue-i18n@10.0.4(vue@3.5.12(typescript@5.3.3)))':
|
||||
dependencies:
|
||||
'@intlify/bundle-utils': 3.4.0(vue-i18n@10.0.4(vue@3.5.12(typescript@5.3.3)))
|
||||
'@intlify/shared': 11.0.0-rc.1
|
||||
'@rollup/pluginutils': 4.2.1
|
||||
debug: 4.3.7
|
||||
fast-glob: 3.3.2
|
||||
source-map: 0.6.1
|
||||
optionalDependencies:
|
||||
vite: 5.4.9(@types/node@22.9.3)(sass@1.80.3)(terser@5.34.1)
|
||||
vue-i18n: 10.0.4(vue@3.5.12(typescript@5.3.3))
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@intlify/vue-i18n-extensions@7.0.0(@intlify/shared@11.0.0-rc.1)(@vue/compiler-dom@3.5.12)(vue-i18n@10.0.4(vue@3.5.12(typescript@5.6.3)))(vue@3.5.12(typescript@5.6.3))':
|
||||
'@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.1.2)(@vue/compiler-dom@3.5.12)(vue-i18n@10.0.4(vue@3.5.12(typescript@4.9.5)))(vue@3.5.12(typescript@4.9.5))':
|
||||
dependencies:
|
||||
'@babel/parser': 7.25.7
|
||||
optionalDependencies:
|
||||
'@intlify/shared': 11.0.0-rc.1
|
||||
'@intlify/shared': 11.1.2
|
||||
'@vue/compiler-dom': 3.5.12
|
||||
vue: 3.5.12(typescript@4.9.5)
|
||||
vue-i18n: 10.0.4(vue@3.5.12(typescript@4.9.5))
|
||||
|
||||
'@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.1.2)(@vue/compiler-dom@3.5.12)(vue-i18n@10.0.4(vue@3.5.12(typescript@5.3.3)))(vue@3.5.12(typescript@5.3.3))':
|
||||
dependencies:
|
||||
'@babel/parser': 7.25.7
|
||||
optionalDependencies:
|
||||
'@intlify/shared': 11.1.2
|
||||
'@vue/compiler-dom': 3.5.12
|
||||
vue: 3.5.12(typescript@5.3.3)
|
||||
vue-i18n: 10.0.4(vue@3.5.12(typescript@5.3.3))
|
||||
|
||||
'@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.1.2)(@vue/compiler-dom@3.5.12)(vue-i18n@10.0.4(vue@3.5.12(typescript@5.6.3)))(vue@3.5.12(typescript@5.6.3))':
|
||||
dependencies:
|
||||
'@babel/parser': 7.25.7
|
||||
optionalDependencies:
|
||||
'@intlify/shared': 11.1.2
|
||||
'@vue/compiler-dom': 3.5.12
|
||||
vue: 3.5.12(typescript@5.6.3)
|
||||
vue-i18n: 10.0.4(vue@3.5.12(typescript@5.6.3))
|
||||
|
|
@ -17966,6 +17983,11 @@ snapshots:
|
|||
'@typescript-eslint/types': 7.18.0
|
||||
'@typescript-eslint/visitor-keys': 7.18.0
|
||||
|
||||
'@typescript-eslint/scope-manager@8.26.1':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.26.1
|
||||
'@typescript-eslint/visitor-keys': 8.26.1
|
||||
|
||||
'@typescript-eslint/scope-manager@8.8.1':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.8.1
|
||||
|
|
@ -18040,6 +18062,8 @@ snapshots:
|
|||
|
||||
'@typescript-eslint/types@7.18.0': {}
|
||||
|
||||
'@typescript-eslint/types@8.26.1': {}
|
||||
|
||||
'@typescript-eslint/types@8.8.1': {}
|
||||
|
||||
'@typescript-eslint/types@8.9.0': {}
|
||||
|
|
@ -18073,17 +18097,44 @@ snapshots:
|
|||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/typescript-estree@7.18.0(typescript@5.6.3)':
|
||||
'@typescript-eslint/typescript-estree@8.26.1(typescript@4.9.5)':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 7.18.0
|
||||
'@typescript-eslint/visitor-keys': 7.18.0
|
||||
debug: 4.3.7
|
||||
globby: 11.1.0
|
||||
'@typescript-eslint/types': 8.26.1
|
||||
'@typescript-eslint/visitor-keys': 8.26.1
|
||||
debug: 4.4.0
|
||||
fast-glob: 3.3.2
|
||||
is-glob: 4.0.3
|
||||
minimatch: 9.0.5
|
||||
semver: 7.6.3
|
||||
ts-api-utils: 1.3.0(typescript@5.6.3)
|
||||
optionalDependencies:
|
||||
ts-api-utils: 2.0.1(typescript@4.9.5)
|
||||
typescript: 4.9.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/typescript-estree@8.26.1(typescript@5.3.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.26.1
|
||||
'@typescript-eslint/visitor-keys': 8.26.1
|
||||
debug: 4.4.0
|
||||
fast-glob: 3.3.2
|
||||
is-glob: 4.0.3
|
||||
minimatch: 9.0.5
|
||||
semver: 7.6.3
|
||||
ts-api-utils: 2.0.1(typescript@5.3.3)
|
||||
typescript: 5.3.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/typescript-estree@8.26.1(typescript@5.6.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.26.1
|
||||
'@typescript-eslint/visitor-keys': 8.26.1
|
||||
debug: 4.4.0
|
||||
fast-glob: 3.3.2
|
||||
is-glob: 4.0.3
|
||||
minimatch: 9.0.5
|
||||
semver: 7.6.3
|
||||
ts-api-utils: 2.0.1(typescript@5.6.3)
|
||||
typescript: 5.6.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
|
@ -18202,6 +18253,11 @@ snapshots:
|
|||
'@typescript-eslint/types': 7.18.0
|
||||
eslint-visitor-keys: 3.4.3
|
||||
|
||||
'@typescript-eslint/visitor-keys@8.26.1':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.26.1
|
||||
eslint-visitor-keys: 4.2.0
|
||||
|
||||
'@typescript-eslint/visitor-keys@8.8.1':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.8.1
|
||||
|
|
@ -18974,10 +19030,6 @@ snapshots:
|
|||
dependencies:
|
||||
acorn: 8.12.1
|
||||
|
||||
acorn-jsx@5.3.2(acorn@7.4.1):
|
||||
dependencies:
|
||||
acorn: 7.4.1
|
||||
|
||||
acorn-jsx@5.3.2(acorn@8.12.1):
|
||||
dependencies:
|
||||
acorn: 8.12.1
|
||||
|
|
@ -18998,7 +19050,8 @@ snapshots:
|
|||
|
||||
acorn@6.4.2: {}
|
||||
|
||||
acorn@7.4.1: {}
|
||||
acorn@7.4.1:
|
||||
optional: true
|
||||
|
||||
acorn@8.12.1: {}
|
||||
|
||||
|
|
@ -20923,15 +20976,9 @@ snapshots:
|
|||
esrecurse: 4.3.0
|
||||
estraverse: 5.3.0
|
||||
|
||||
eslint-utils@2.1.0:
|
||||
dependencies:
|
||||
eslint-visitor-keys: 1.3.0
|
||||
|
||||
eslint-visitor-keys@1.3.0: {}
|
||||
|
||||
eslint-visitor-keys@3.4.3: {}
|
||||
|
||||
eslint-visitor-keys@4.1.0: {}
|
||||
eslint-visitor-keys@4.2.0: {}
|
||||
|
||||
eslint@8.47.0:
|
||||
dependencies:
|
||||
|
|
@ -21038,7 +21085,7 @@ snapshots:
|
|||
debug: 4.4.0
|
||||
escape-string-regexp: 4.0.0
|
||||
eslint-scope: 8.1.0
|
||||
eslint-visitor-keys: 4.1.0
|
||||
eslint-visitor-keys: 4.2.0
|
||||
espree: 10.2.0
|
||||
esquery: 1.6.0
|
||||
esutils: 2.0.3
|
||||
|
|
@ -21064,13 +21111,7 @@ snapshots:
|
|||
dependencies:
|
||||
acorn: 8.14.0
|
||||
acorn-jsx: 5.3.2(acorn@8.14.0)
|
||||
eslint-visitor-keys: 4.1.0
|
||||
|
||||
espree@6.2.1:
|
||||
dependencies:
|
||||
acorn: 7.4.1
|
||||
acorn-jsx: 5.3.2(acorn@7.4.1)
|
||||
eslint-visitor-keys: 1.3.0
|
||||
eslint-visitor-keys: 4.2.0
|
||||
|
||||
espree@9.6.1:
|
||||
dependencies:
|
||||
|
|
@ -22945,17 +22986,9 @@ snapshots:
|
|||
|
||||
json5@2.2.3: {}
|
||||
|
||||
jsonc-eslint-parser@1.4.1:
|
||||
dependencies:
|
||||
acorn: 7.4.1
|
||||
eslint-utils: 2.1.0
|
||||
eslint-visitor-keys: 1.3.0
|
||||
espree: 6.2.1
|
||||
semver: 6.3.1
|
||||
|
||||
jsonc-eslint-parser@2.4.0:
|
||||
dependencies:
|
||||
acorn: 8.12.1
|
||||
acorn: 8.14.0
|
||||
eslint-visitor-keys: 3.4.3
|
||||
espree: 9.6.1
|
||||
semver: 7.6.3
|
||||
|
|
@ -26335,7 +26368,15 @@ snapshots:
|
|||
dependencies:
|
||||
typescript: 5.5.4
|
||||
|
||||
ts-api-utils@1.3.0(typescript@5.6.3):
|
||||
ts-api-utils@2.0.1(typescript@4.9.5):
|
||||
dependencies:
|
||||
typescript: 4.9.5
|
||||
|
||||
ts-api-utils@2.0.1(typescript@5.3.3):
|
||||
dependencies:
|
||||
typescript: 5.3.3
|
||||
|
||||
ts-api-utils@2.0.1(typescript@5.6.3):
|
||||
dependencies:
|
||||
typescript: 5.6.3
|
||||
|
||||
|
|
@ -28233,12 +28274,6 @@ snapshots:
|
|||
|
||||
yaml-ast-parser@0.0.43: {}
|
||||
|
||||
yaml-eslint-parser@0.3.2:
|
||||
dependencies:
|
||||
eslint-visitor-keys: 1.3.0
|
||||
lodash: 4.17.21
|
||||
yaml: 1.10.2
|
||||
|
||||
yaml-eslint-parser@1.2.3:
|
||||
dependencies:
|
||||
eslint-visitor-keys: 3.4.3
|
||||
|
|
|
|||
Loading…
Reference in a new issue