fix: secret variables being populated as undefined on code snippets (#4180)

This commit is contained in:
Nivedin
2024-07-18 14:44:37 +05:30
committed by GitHub
parent 7ad3f660ae
commit 7ebc9a6fd6
9 changed files with 134 additions and 87 deletions

View File

@@ -37,7 +37,7 @@
"vue": "3.3.9" "vue": "3.3.9"
}, },
"packageExtensions": { "packageExtensions": {
"httpsnippet@3.0.1": { "@hoppscotch/httpsnippet": {
"dependencies": { "dependencies": {
"ajv": "6.12.3" "ajv": "6.12.3"
} }

View File

@@ -38,6 +38,7 @@
"@hoppscotch/js-sandbox": "workspace:^", "@hoppscotch/js-sandbox": "workspace:^",
"@hoppscotch/ui": "0.2.0", "@hoppscotch/ui": "0.2.0",
"@hoppscotch/vue-toasted": "0.1.0", "@hoppscotch/vue-toasted": "0.1.0",
"@hoppscotch/httpsnippet": "3.0.6",
"@lezer/highlight": "1.2.0", "@lezer/highlight": "1.2.0",
"@unhead/vue": "1.8.8", "@unhead/vue": "1.8.8",
"@urql/core": "4.2.0", "@urql/core": "4.2.0",
@@ -58,7 +59,6 @@
"graphql": "16.8.1", "graphql": "16.8.1",
"graphql-language-service-interface": "2.10.2", "graphql-language-service-interface": "2.10.2",
"graphql-tag": "2.12.6", "graphql-tag": "2.12.6",
"httpsnippet": "3.0.1",
"insomnia-importers": "3.6.0", "insomnia-importers": "3.6.0",
"io-ts": "2.2.20", "io-ts": "2.2.20",
"js-yaml": "4.1.0", "js-yaml": "4.1.0",

View File

@@ -178,7 +178,7 @@ const requestCode = computed(() => {
...aggregateEnvs, ...aggregateEnvs,
], ],
} }
const effectiveRequest = getEffectiveRESTRequest(request.value, env) const effectiveRequest = getEffectiveRESTRequest(request.value, env, true)
const result = generateCode( const result = generateCode(
codegenType.value, codegenType.value,

View File

@@ -126,7 +126,7 @@ export const parseCurlCommand = (curlCommand: string) => {
hasBodyBeenParsed = true hasBodyBeenParsed = true
} }
const urlString = concatParams(urlObject, danglingParams) const urlString = decodeURIComponent(concatParams(urlObject, danglingParams))
let multipartUploads: Record<string, string> = pipe( let multipartUploads: Record<string, string> = pipe(
O.of(parsedArguments), O.of(parsedArguments),

View File

@@ -53,7 +53,7 @@ const parseURL = (urlText: string | number) =>
u u
.toString() .toString()
.replace(/^'|'$/g, "") .replace(/^'|'$/g, "")
.replaceAll(/[^a-zA-Z0-9_\-./?&=:@%+#,;()'\s]/g, "") .replaceAll(/[^a-zA-Z0-9_\-./?&=:@%+#,;()'<>\s]/g, "")
), ),
O.filter((u) => u.length > 0), O.filter((u) => u.length > 0),
O.chain((u) => O.chain((u) =>

View File

@@ -1,4 +1,4 @@
import { HTTPSnippet } from "httpsnippet" import { HTTPSnippet } from "@hoppscotch/httpsnippet"
import { HoppRESTRequest } from "@hoppscotch/data" import { HoppRESTRequest } from "@hoppscotch/data"
import * as O from "fp-ts/Option" import * as O from "fp-ts/Option"
import * as E from "fp-ts/Either" import * as E from "fp-ts/Either"

View File

@@ -69,10 +69,10 @@ export const getComputedAuthHeaders = (
// TODO: Support a better b64 implementation than btoa ? // TODO: Support a better b64 implementation than btoa ?
if (request.auth.authType === "basic") { if (request.auth.authType === "basic") {
const username = parse const username = parse
? parseTemplateString(request.auth.username, envVars) ? parseTemplateString(request.auth.username, envVars, false, true)
: request.auth.username : request.auth.username
const password = parse const password = parse
? parseTemplateString(request.auth.password, envVars) ? parseTemplateString(request.auth.password, envVars, false, true)
: request.auth.password : request.auth.password
headers.push({ headers.push({
@@ -92,16 +92,18 @@ export const getComputedAuthHeaders = (
headers.push({ headers.push({
active: true, active: true,
key: "Authorization", key: "Authorization",
value: `Bearer ${parse ? parseTemplateString(token, envVars) : token}`, value: `Bearer ${
parse ? parseTemplateString(token, envVars, false, true) : token
}`,
}) })
} else if (request.auth.authType === "api-key") { } else if (request.auth.authType === "api-key") {
const { key, addTo } = request.auth const { key, addTo } = request.auth
if (addTo === "HEADERS" && key) { if (addTo === "HEADERS" && key) {
headers.push({ headers.push({
active: true, active: true,
key: parseTemplateString(key, envVars), key: parseTemplateString(key, envVars, false, true),
value: parse value: parse
? parseTemplateString(request.auth.value ?? "", envVars) ? parseTemplateString(request.auth.value ?? "", envVars, false, true)
: request.auth.value ?? "", : request.auth.value ?? "",
}) })
} }
@@ -215,8 +217,8 @@ export const getComputedParams = (
source: "auth" as const, source: "auth" as const,
param: { param: {
active: true, active: true,
key: parseTemplateString(req.auth.key, envVars), key: parseTemplateString(req.auth.key, envVars, false, true),
value: parseTemplateString(req.auth.value, envVars), value: parseTemplateString(req.auth.value, envVars, false, true),
}, },
}, },
] ]
@@ -230,7 +232,7 @@ export const getComputedParams = (
param: { param: {
active: true, active: true,
key: "access_token", key: "access_token",
value: parseTemplateString(grantTypeInfo.token, envVars), value: parseTemplateString(grantTypeInfo.token, envVars, false, true),
}, },
}, },
] ]
@@ -244,6 +246,11 @@ export const resolvesEnvsInBody = (
if (!body.contentType) return body if (!body.contentType) return body
if (body.contentType === "multipart/form-data") { if (body.contentType === "multipart/form-data") {
if (!body.body)
return {
contentType: "",
body: [],
}
return { return {
contentType: "multipart/form-data", contentType: "multipart/form-data",
body: body.body.map( body: body.body.map(
@@ -251,10 +258,10 @@ export const resolvesEnvsInBody = (
<FormDataKeyValue>{ <FormDataKeyValue>{
active: entry.active, active: entry.active,
isFile: entry.isFile, isFile: entry.isFile,
key: parseTemplateString(entry.key, env.variables), key: parseTemplateString(entry.key, env.variables, false, true),
value: entry.isFile value: entry.isFile
? entry.value ? entry.value
: parseTemplateString(entry.value, env.variables), : parseTemplateString(entry.value, env.variables, false, true),
} }
), ),
} }
@@ -262,13 +269,14 @@ export const resolvesEnvsInBody = (
return { return {
contentType: body.contentType, contentType: body.contentType,
body: parseTemplateString(body.body ?? "", env.variables), body: parseTemplateString(body.body ?? "", env.variables, false, true),
} }
} }
function getFinalBodyFromRequest( function getFinalBodyFromRequest(
request: HoppRESTRequest, request: HoppRESTRequest,
envVariables: Environment["variables"] envVariables: Environment["variables"],
showKeyIfSecret = false
): FormData | string | null { ): FormData | string | null {
if (request.body.contentType === null) return null if (request.body.contentType === null) return null
@@ -289,8 +297,8 @@ function getFinalBodyFromRequest(
* which will be resolved in further steps. * which will be resolved in further steps.
*/ */
A.map(({ key, value }) => [ A.map(({ key, value }) => [
parseTemplateStringE(key, envVariables), parseTemplateStringE(key, envVariables, false, showKeyIfSecret),
parseTemplateStringE(value, envVariables), parseTemplateStringE(value, envVariables, false, showKeyIfSecret),
]), ]),
/** /**
@@ -349,12 +357,14 @@ function getFinalBodyFromRequest(
* *
* @param request The request to source from * @param request The request to source from
* @param environment The environment to apply * @param environment The environment to apply
* @param showKeyIfSecret Whether to show the key if the value is a secret
* *
* @returns An object with extra fields defining a complete request * @returns An object with extra fields defining a complete request
*/ */
export function getEffectiveRESTRequest( export function getEffectiveRESTRequest(
request: HoppRESTRequest, request: HoppRESTRequest,
environment: Environment environment: Environment,
showKeyIfSecret = false
): EffectiveHoppRESTRequest { ): EffectiveHoppRESTRequest {
const effectiveFinalHeaders = pipe( const effectiveFinalHeaders = pipe(
getComputedHeaders(request, environment.variables).map((h) => h.header), getComputedHeaders(request, environment.variables).map((h) => h.header),
@@ -362,8 +372,18 @@ export function getEffectiveRESTRequest(
A.filter((x) => x.active && x.key !== ""), A.filter((x) => x.active && x.key !== ""),
A.map((x) => ({ A.map((x) => ({
active: true, active: true,
key: parseTemplateString(x.key, environment.variables), key: parseTemplateString(
value: parseTemplateString(x.value, environment.variables), x.key,
environment.variables,
false,
showKeyIfSecret
),
value: parseTemplateString(
x.value,
environment.variables,
false,
showKeyIfSecret
),
})) }))
) )
@@ -373,8 +393,18 @@ export function getEffectiveRESTRequest(
A.filter((x) => x.active && x.key !== ""), A.filter((x) => x.active && x.key !== ""),
A.map((x) => ({ A.map((x) => ({
active: true, active: true,
key: parseTemplateString(x.key, environment.variables), key: parseTemplateString(
value: parseTemplateString(x.value, environment.variables), x.key,
environment.variables,
false,
showKeyIfSecret
),
value: parseTemplateString(
x.value,
environment.variables,
false,
showKeyIfSecret
),
})) }))
) )
@@ -390,14 +420,17 @@ export function getEffectiveRESTRequest(
const effectiveFinalBody = getFinalBodyFromRequest( const effectiveFinalBody = getFinalBodyFromRequest(
request, request,
environment.variables environment.variables,
showKeyIfSecret
) )
return { return {
...request, ...request,
effectiveFinalURL: parseTemplateString( effectiveFinalURL: parseTemplateString(
request.endpoint, request.endpoint,
environment.variables environment.variables,
false,
showKeyIfSecret
), ),
effectiveFinalHeaders, effectiveFinalHeaders,
effectiveFinalParams, effectiveFinalParams,

View File

@@ -93,7 +93,8 @@ export function parseTemplateStringE(
variables: variables:
| Environment["variables"] | Environment["variables"]
| { secret: true; value: string; key: string }[], | { secret: true; value: string; key: string }[],
maskValue = false maskValue = false,
showKeyIfSecret = false
) { ) {
if (!variables || !str) { if (!variables || !str) {
return E.right(str) return E.right(str)
@@ -101,12 +102,22 @@ export function parseTemplateStringE(
let result = str let result = str
let depth = 0 let depth = 0
let isSecret = false
while (result.match(REGEX_ENV_VAR) != null && depth <= ENV_MAX_EXPAND_LIMIT) { while (
result.match(REGEX_ENV_VAR) != null &&
depth <= ENV_MAX_EXPAND_LIMIT &&
!isSecret
) {
result = decodeURI(encodeURI(result)).replace(REGEX_ENV_VAR, (_, p1) => { result = decodeURI(encodeURI(result)).replace(REGEX_ENV_VAR, (_, p1) => {
const variable = variables.find((x) => x && x.key === p1) const variable = variables.find((x) => x && x.key === p1)
if (variable && "value" in variable) { if (variable && "value" in variable) {
// Show the key if it is a secret and explicitly specified
if (variable.secret && showKeyIfSecret) {
isSecret = true
return `<<${p1}>>`
}
// Mask the value if it is a secret and explicitly specified // Mask the value if it is a secret and explicitly specified
if (variable.secret && maskValue) { if (variable.secret && maskValue) {
return "*".repeat( return "*".repeat(
@@ -144,10 +155,11 @@ export const parseTemplateString = (
variables: variables:
| Environment["variables"] | Environment["variables"]
| { secret: true; value: string; key: string }[], | { secret: true; value: string; key: string }[],
maskValue = false maskValue = false,
showKeyIfSecret = false
) => ) =>
pipe( pipe(
parseTemplateStringE(str, variables, maskValue), parseTemplateStringE(str, variables, maskValue, showKeyIfSecret),
E.getOrElse(() => str) E.getOrElse(() => str)
) )

114
pnpm-lock.yaml generated
View File

@@ -7,7 +7,7 @@ settings:
overrides: overrides:
vue: 3.3.9 vue: 3.3.9
packageExtensionsChecksum: e7f8d2e2f491662822f685ff3c4b1274 packageExtensionsChecksum: da57d58cd55bf5e7924e59ad5f1485b8
importers: importers:
@@ -406,6 +406,9 @@ importers:
'@hoppscotch/data': '@hoppscotch/data':
specifier: workspace:^ specifier: workspace:^
version: link:../hoppscotch-data version: link:../hoppscotch-data
'@hoppscotch/httpsnippet':
specifier: 3.0.6
version: 3.0.6
'@hoppscotch/js-sandbox': '@hoppscotch/js-sandbox':
specifier: workspace:^ specifier: workspace:^
version: link:../hoppscotch-js-sandbox version: link:../hoppscotch-js-sandbox
@@ -475,9 +478,6 @@ importers:
graphql-tag: graphql-tag:
specifier: 2.12.6 specifier: 2.12.6
version: 2.12.6(graphql@16.8.1) version: 2.12.6(graphql@16.8.1)
httpsnippet:
specifier: 3.0.1
version: 3.0.1
insomnia-importers: insomnia-importers:
specifier: 3.6.0 specifier: 3.6.0
version: 3.6.0(openapi-types@12.1.3) version: 3.6.0(openapi-types@12.1.3)
@@ -757,7 +757,7 @@ importers:
version: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) version: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)
vite-plugin-checker: vite-plugin-checker:
specifier: 0.6.2 specifier: 0.6.2
version: 0.6.2(eslint@8.57.0)(optionator@0.9.4)(typescript@5.3.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue-tsc@1.8.24(typescript@5.3.2)) version: 0.6.2(eslint@8.57.0)(meow@8.1.2)(optionator@0.9.4)(typescript@5.3.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue-tsc@1.8.24(typescript@5.3.2))
vite-plugin-fonts: vite-plugin-fonts:
specifier: 0.7.0 specifier: 0.7.0
version: 0.7.0(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) version: 0.7.0(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))
@@ -876,7 +876,7 @@ importers:
version: 2.8.4 version: 2.8.4
ts-jest: ts-jest:
specifier: 27.1.5 specifier: 27.1.5
version: 27.1.5(@babel/core@7.24.5)(@types/jest@27.5.2)(jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@17.0.45)(typescript@4.9.5)))(typescript@4.9.5) version: 27.1.5(@babel/core@7.24.5)(@types/jest@27.5.2)(babel-jest@29.7.0(@babel/core@7.24.5))(jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@17.0.45)(typescript@4.9.5)))(typescript@4.9.5)
typescript: typescript:
specifier: 4.9.5 specifier: 4.9.5
version: 4.9.5 version: 4.9.5
@@ -1060,7 +1060,7 @@ importers:
version: 0.14.9(@vue/compiler-sfc@3.3.10)(vue-template-compiler@2.7.16) version: 0.14.9(@vue/compiler-sfc@3.3.10)(vue-template-compiler@2.7.16)
unplugin-vue-components: unplugin-vue-components:
specifier: 0.21.0 specifier: 0.21.0
version: 0.21.0(@babel/parser@7.24.5)(esbuild@0.20.2)(rollup@2.79.1)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@4.9.5))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)) version: 0.21.0(@babel/parser@7.24.5)(esbuild@0.20.2)(rollup@3.29.4)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@4.9.5))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2))
vite: vite:
specifier: 4.5.0 specifier: 4.5.0
version: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) version: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)
@@ -1069,7 +1069,7 @@ importers:
version: 1.0.11(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) version: 1.0.11(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))
vite-plugin-inspect: vite-plugin-inspect:
specifier: 0.7.38 specifier: 0.7.38
version: 0.7.38(rollup@2.79.1)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) version: 0.7.38(rollup@3.29.4)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))
vite-plugin-pages: vite-plugin-pages:
specifier: 0.26.0 specifier: 0.26.0
version: 0.26.0(@vue/compiler-sfc@3.3.10)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) version: 0.26.0(@vue/compiler-sfc@3.3.10)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))
@@ -1229,7 +1229,7 @@ importers:
version: 0.17.4(@vue/compiler-sfc@3.3.10)(vue-template-compiler@2.7.16) version: 0.17.4(@vue/compiler-sfc@3.3.10)(vue-template-compiler@2.7.16)
unplugin-vue-components: unplugin-vue-components:
specifier: 0.25.2 specifier: 0.25.2
version: 0.25.2(@babel/parser@7.24.5)(rollup@2.79.1)(vue@3.3.9(typescript@5.3.2)) version: 0.25.2(@babel/parser@7.24.5)(rollup@3.29.4)(vue@3.3.9(typescript@5.3.2))
vite: vite:
specifier: 4.5.0 specifier: 4.5.0
version: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) version: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)
@@ -1241,7 +1241,7 @@ importers:
version: 1.0.11(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) version: 1.0.11(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))
vite-plugin-inspect: vite-plugin-inspect:
specifier: 0.7.42 specifier: 0.7.42
version: 0.7.42(rollup@2.79.1)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) version: 0.7.42(rollup@3.29.4)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))
vite-plugin-pages: vite-plugin-pages:
specifier: 0.31.0 specifier: 0.31.0
version: 0.31.0(@vue/compiler-sfc@3.3.10)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) version: 0.31.0(@vue/compiler-sfc@3.3.10)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))
@@ -1283,7 +1283,7 @@ importers:
version: 0.1.0(vue@3.3.9(typescript@4.9.3)) version: 0.1.0(vue@3.3.9(typescript@4.9.3))
'@intlify/unplugin-vue-i18n': '@intlify/unplugin-vue-i18n':
specifier: 1.2.0 specifier: 1.2.0
version: 1.2.0(rollup@2.79.1)(vue-i18n@9.2.2(vue@3.3.9(typescript@4.9.3))) version: 1.2.0(rollup@3.29.4)(vue-i18n@9.2.2(vue@3.3.9(typescript@4.9.3)))
'@types/cors': '@types/cors':
specifier: 2.8.13 specifier: 2.8.13
version: 2.8.13 version: 2.8.13
@@ -1349,7 +1349,7 @@ importers:
version: 0.14.9(@vue/compiler-sfc@3.2.45)(vue-template-compiler@2.7.16) version: 0.14.9(@vue/compiler-sfc@3.2.45)(vue-template-compiler@2.7.16)
unplugin-vue-components: unplugin-vue-components:
specifier: 0.21.0 specifier: 0.21.0
version: 0.21.0(@babel/parser@7.24.5)(esbuild@0.20.2)(rollup@2.79.1)(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0))(vue@3.3.9(typescript@4.9.3))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)) version: 0.21.0(@babel/parser@7.24.5)(esbuild@0.20.2)(rollup@3.29.4)(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0))(vue@3.3.9(typescript@4.9.3))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2))
vue: vue:
specifier: 3.3.9 specifier: 3.3.9
version: 3.3.9(typescript@4.9.3) version: 3.3.9(typescript@4.9.3)
@@ -3364,6 +3364,11 @@ packages:
peerDependencies: peerDependencies:
graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
'@hoppscotch/httpsnippet@3.0.6':
resolution: {integrity: sha512-W42cXJWrPvydwImgHZAV6s60fKouQ9TeTX/vzXqjBuszccrPywOJaPUlBjMe26Xe+5xEQccjlGaVaxSVJu9nXw==}
engines: {node: '^14.19.1 || ^16.14.2 || ^18.0.0 '}
hasBin: true
'@hoppscotch/ui@0.1.0': '@hoppscotch/ui@0.1.0':
resolution: {integrity: sha512-+4iHdfO7gRn7l3vpnPcQZbgdA+uE/K1KQX0/eUFcCWvja/C3eSM0db31MRX2cz1KYGwiezzhhVe21mIT4a0CZQ==} resolution: {integrity: sha512-+4iHdfO7gRn7l3vpnPcQZbgdA+uE/K1KQX0/eUFcCWvja/C3eSM0db31MRX2cz1KYGwiezzhhVe21mIT4a0CZQ==}
engines: {node: '>=16'} engines: {node: '>=16'}
@@ -3508,8 +3513,8 @@ packages:
resolution: {integrity: sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==} resolution: {integrity: sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==}
engines: {node: '>= 14'} engines: {node: '>= 14'}
'@intlify/message-compiler@10.0.0-beta.1': '@intlify/message-compiler@10.0.0-beta.2':
resolution: {integrity: sha512-rBmXBZzDgq3yPkL/3/r9uK0nrsJOYHSpaW0mtGBxxjt9pY9vaPL0UAKbVAjFPRnfEY41ixgpkpTjai6IKZ+hvg==} resolution: {integrity: sha512-2yl340oNiCDjdpPIfo49a7o56ZTc+35iN7mxdQvXOLxJ6Pdh9p0GkB0duV44hfHaAxsD1cGQ4naLDRokKUdyvQ==}
engines: {node: '>= 16'} engines: {node: '>= 16'}
'@intlify/message-compiler@9.13.1': '@intlify/message-compiler@9.13.1':
@@ -3528,8 +3533,8 @@ packages:
resolution: {integrity: sha512-McnYWhcoYmDJvssVu6QGR0shqlkJuL1HHdi5lK7fNqvQqRYaQ4lSLjYmZxwc8tRNMdIe9/KUKfyPxU9M6yCtNQ==} resolution: {integrity: sha512-McnYWhcoYmDJvssVu6QGR0shqlkJuL1HHdi5lK7fNqvQqRYaQ4lSLjYmZxwc8tRNMdIe9/KUKfyPxU9M6yCtNQ==}
engines: {node: '>= 16'} engines: {node: '>= 16'}
'@intlify/shared@10.0.0-beta.1': '@intlify/shared@10.0.0-beta.2':
resolution: {integrity: sha512-61MnYhgqS/TyAto9CXOltHlhK2WflLBcKpIkRhZCUL2IkiVvh7qKevsqZ3RYZylyC3q19ajLW6mB+iJtnbAOpg==} resolution: {integrity: sha512-u3ey3jn7VZl8SfuBH1nZC1xvdu59/PYkjR6UjXMWiDoowmr/PuPzmIRmOD8jZvRfCbKnKWYRK33HN4uTWLr/Yw==}
engines: {node: '>= 16'} engines: {node: '>= 16'}
'@intlify/shared@9.13.1': '@intlify/shared@9.13.1':
@@ -7918,11 +7923,6 @@ packages:
resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==}
engines: {node: '>= 14'} engines: {node: '>= 14'}
httpsnippet@3.0.1:
resolution: {integrity: sha512-RJbzVu9Gq97Ti76MPKAb9AknKbRluRbzOqswM2qgEW48QUShVEIuJjl43dZG5q0Upj2SZlKqzR6B6ah1q5znfg==}
engines: {node: ^14.19.1 || ^16.14.2 || ^18.0.0}
hasBin: true
human-signals@1.1.1: human-signals@1.1.1:
resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==}
engines: {node: '>=8.12.0'} engines: {node: '>=8.12.0'}
@@ -15267,6 +15267,16 @@ snapshots:
dependencies: dependencies:
graphql: 16.8.1 graphql: 16.8.1
'@hoppscotch/httpsnippet@3.0.6':
dependencies:
ajv: 6.12.3
chalk: 4.1.2
event-stream: 4.0.1
form-data: 4.0.0
har-schema: 2.0.0
stringify-object: 3.3.0
yargs: 17.7.2
'@hoppscotch/ui@0.1.0(eslint@8.55.0)(terser@5.31.0)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@5.3.2))': '@hoppscotch/ui@0.1.0(eslint@8.55.0)(terser@5.31.0)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@5.3.2))':
dependencies: dependencies:
'@boringer-avatars/vue3': 0.2.1(vue@3.3.9(typescript@5.3.2)) '@boringer-avatars/vue3': 0.2.1(vue@3.3.9(typescript@5.3.2))
@@ -15469,8 +15479,8 @@ snapshots:
'@intlify/bundle-utils@3.4.0(vue-i18n@9.8.0(vue@3.3.9(typescript@5.3.2)))': '@intlify/bundle-utils@3.4.0(vue-i18n@9.8.0(vue@3.3.9(typescript@5.3.2)))':
dependencies: dependencies:
'@intlify/message-compiler': 10.0.0-beta.1 '@intlify/message-compiler': 10.0.0-beta.2
'@intlify/shared': 10.0.0-beta.1 '@intlify/shared': 10.0.0-beta.2
jsonc-eslint-parser: 1.4.1 jsonc-eslint-parser: 1.4.1
source-map: 0.6.1 source-map: 0.6.1
yaml-eslint-parser: 0.3.2 yaml-eslint-parser: 0.3.2
@@ -15523,9 +15533,9 @@ snapshots:
dependencies: dependencies:
'@intlify/shared': 9.2.2 '@intlify/shared': 9.2.2
'@intlify/message-compiler@10.0.0-beta.1': '@intlify/message-compiler@10.0.0-beta.2':
dependencies: dependencies:
'@intlify/shared': 10.0.0-beta.1 '@intlify/shared': 10.0.0-beta.2
source-map-js: 1.2.0 source-map-js: 1.2.0
'@intlify/message-compiler@9.13.1': '@intlify/message-compiler@9.13.1':
@@ -15548,7 +15558,7 @@ snapshots:
'@intlify/shared': 9.8.0 '@intlify/shared': 9.8.0
source-map-js: 1.2.0 source-map-js: 1.2.0
'@intlify/shared@10.0.0-beta.1': {} '@intlify/shared@10.0.0-beta.2': {}
'@intlify/shared@9.13.1': {} '@intlify/shared@9.13.1': {}
@@ -15558,11 +15568,11 @@ snapshots:
'@intlify/shared@9.8.0': {} '@intlify/shared@9.8.0': {}
'@intlify/unplugin-vue-i18n@1.2.0(rollup@2.79.1)(vue-i18n@9.2.2(vue@3.3.9(typescript@4.9.3)))': '@intlify/unplugin-vue-i18n@1.2.0(rollup@3.29.4)(vue-i18n@9.2.2(vue@3.3.9(typescript@4.9.3)))':
dependencies: dependencies:
'@intlify/bundle-utils': 7.5.1(vue-i18n@9.2.2(vue@3.3.9(typescript@4.9.3))) '@intlify/bundle-utils': 7.5.1(vue-i18n@9.2.2(vue@3.3.9(typescript@4.9.3)))
'@intlify/shared': 9.13.1 '@intlify/shared': 9.13.1
'@rollup/pluginutils': 5.1.0(rollup@2.79.1) '@rollup/pluginutils': 5.1.0(rollup@3.29.4)
'@vue/compiler-sfc': 3.3.10 '@vue/compiler-sfc': 3.3.10
debug: 4.3.4(supports-color@9.4.0) debug: 4.3.4(supports-color@9.4.0)
fast-glob: 3.3.2 fast-glob: 3.3.2
@@ -15581,7 +15591,7 @@ snapshots:
'@intlify/vite-plugin-vue-i18n@6.0.1(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue-i18n@9.8.0(vue@3.3.9(typescript@4.9.5)))': '@intlify/vite-plugin-vue-i18n@6.0.1(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue-i18n@9.8.0(vue@3.3.9(typescript@4.9.5)))':
dependencies: dependencies:
'@intlify/bundle-utils': 7.0.0(vue-i18n@9.8.0(vue@3.3.9(typescript@4.9.5))) '@intlify/bundle-utils': 7.0.0(vue-i18n@9.8.0(vue@3.3.9(typescript@4.9.5)))
'@intlify/shared': 10.0.0-beta.1 '@intlify/shared': 10.0.0-beta.2
'@rollup/pluginutils': 4.2.1 '@rollup/pluginutils': 4.2.1
debug: 4.3.4(supports-color@9.4.0) debug: 4.3.4(supports-color@9.4.0)
fast-glob: 3.3.2 fast-glob: 3.3.2
@@ -15595,7 +15605,7 @@ snapshots:
'@intlify/vite-plugin-vue-i18n@7.0.0(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue-i18n@9.8.0(vue@3.3.9(typescript@5.3.2)))': '@intlify/vite-plugin-vue-i18n@7.0.0(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue-i18n@9.8.0(vue@3.3.9(typescript@5.3.2)))':
dependencies: dependencies:
'@intlify/bundle-utils': 3.4.0(vue-i18n@9.8.0(vue@3.3.9(typescript@5.3.2))) '@intlify/bundle-utils': 3.4.0(vue-i18n@9.8.0(vue@3.3.9(typescript@5.3.2)))
'@intlify/shared': 10.0.0-beta.1 '@intlify/shared': 10.0.0-beta.2
'@rollup/pluginutils': 4.2.1 '@rollup/pluginutils': 4.2.1
debug: 4.3.4(supports-color@9.4.0) debug: 4.3.4(supports-color@9.4.0)
fast-glob: 3.3.2 fast-glob: 3.3.2
@@ -21336,16 +21346,6 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
httpsnippet@3.0.1:
dependencies:
ajv: 6.12.3
chalk: 4.1.2
event-stream: 4.0.1
form-data: 4.0.0
har-schema: 2.0.0
stringify-object: 3.3.0
yargs: 17.7.2
human-signals@1.1.1: {} human-signals@1.1.1: {}
human-signals@2.1.0: {} human-signals@2.1.0: {}
@@ -25237,7 +25237,7 @@ snapshots:
ts-interface-checker@0.1.13: {} ts-interface-checker@0.1.13: {}
ts-jest@27.1.5(@babel/core@7.24.5)(@types/jest@27.5.2)(jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@17.0.45)(typescript@4.9.5)))(typescript@4.9.5): ts-jest@27.1.5(@babel/core@7.24.5)(@types/jest@27.5.2)(babel-jest@29.7.0(@babel/core@7.24.5))(jest@29.7.0(@types/node@17.0.45)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@17.0.45)(typescript@4.9.5)))(typescript@4.9.5):
dependencies: dependencies:
bs-logger: 0.2.6 bs-logger: 0.2.6
fast-json-stable-stringify: 2.1.0 fast-json-stable-stringify: 2.1.0
@@ -25252,6 +25252,7 @@ snapshots:
optionalDependencies: optionalDependencies:
'@babel/core': 7.24.5 '@babel/core': 7.24.5
'@types/jest': 27.5.2 '@types/jest': 27.5.2
babel-jest: 29.7.0(@babel/core@7.24.5)
ts-jest@29.0.5(@babel/core@7.24.5)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.5))(jest@29.4.1(@types/node@18.11.10)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.11.10)(typescript@4.9.3)))(typescript@4.9.3): ts-jest@29.0.5(@babel/core@7.24.5)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.5))(jest@29.4.1(@types/node@18.11.10)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.11.10)(typescript@4.9.3)))(typescript@4.9.3):
dependencies: dependencies:
@@ -25695,7 +25696,7 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
unplugin-vue-components@0.21.0(@babel/parser@7.24.5)(esbuild@0.20.2)(rollup@2.79.1)(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0))(vue@3.3.9(typescript@4.9.3))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)): unplugin-vue-components@0.21.0(@babel/parser@7.24.5)(esbuild@0.20.2)(rollup@3.29.4)(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0))(vue@3.3.9(typescript@4.9.3))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)):
dependencies: dependencies:
'@antfu/utils': 0.5.2 '@antfu/utils': 0.5.2
'@rollup/pluginutils': 4.2.1 '@rollup/pluginutils': 4.2.1
@@ -25706,7 +25707,7 @@ snapshots:
magic-string: 0.26.7 magic-string: 0.26.7
minimatch: 5.1.6 minimatch: 5.1.6
resolve: 1.22.8 resolve: 1.22.8
unplugin: 0.7.2(esbuild@0.20.2)(rollup@2.79.1)(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)) unplugin: 0.7.2(esbuild@0.20.2)(rollup@3.29.4)(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2))
vue: 3.3.9(typescript@4.9.3) vue: 3.3.9(typescript@4.9.3)
optionalDependencies: optionalDependencies:
'@babel/parser': 7.24.5 '@babel/parser': 7.24.5
@@ -25717,7 +25718,7 @@ snapshots:
- vite - vite
- webpack - webpack
unplugin-vue-components@0.21.0(@babel/parser@7.24.5)(esbuild@0.20.2)(rollup@2.79.1)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@4.9.5))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)): unplugin-vue-components@0.21.0(@babel/parser@7.24.5)(esbuild@0.20.2)(rollup@3.29.4)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@4.9.5))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)):
dependencies: dependencies:
'@antfu/utils': 0.5.2 '@antfu/utils': 0.5.2
'@rollup/pluginutils': 4.2.1 '@rollup/pluginutils': 4.2.1
@@ -25728,7 +25729,7 @@ snapshots:
magic-string: 0.26.7 magic-string: 0.26.7
minimatch: 5.1.6 minimatch: 5.1.6
resolve: 1.22.8 resolve: 1.22.8
unplugin: 0.7.2(esbuild@0.20.2)(rollup@2.79.1)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)) unplugin: 0.7.2(esbuild@0.20.2)(rollup@3.29.4)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2))
vue: 3.3.9(typescript@4.9.5) vue: 3.3.9(typescript@4.9.5)
optionalDependencies: optionalDependencies:
'@babel/parser': 7.24.5 '@babel/parser': 7.24.5
@@ -25739,10 +25740,10 @@ snapshots:
- vite - vite
- webpack - webpack
unplugin-vue-components@0.25.2(@babel/parser@7.24.5)(rollup@2.79.1)(vue@3.3.9(typescript@5.3.2)): unplugin-vue-components@0.25.2(@babel/parser@7.24.5)(rollup@3.29.4)(vue@3.3.9(typescript@5.3.2)):
dependencies: dependencies:
'@antfu/utils': 0.7.7 '@antfu/utils': 0.7.7
'@rollup/pluginutils': 5.1.0(rollup@2.79.1) '@rollup/pluginutils': 5.1.0(rollup@3.29.4)
chokidar: 3.6.0 chokidar: 3.6.0
debug: 4.3.4(supports-color@9.4.0) debug: 4.3.4(supports-color@9.4.0)
fast-glob: 3.3.2 fast-glob: 3.3.2
@@ -25777,7 +25778,7 @@ snapshots:
- rollup - rollup
- supports-color - supports-color
unplugin@0.7.2(esbuild@0.20.2)(rollup@2.79.1)(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)): unplugin@0.7.2(esbuild@0.20.2)(rollup@3.29.4)(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)):
dependencies: dependencies:
acorn: 8.11.3 acorn: 8.11.3
chokidar: 3.6.0 chokidar: 3.6.0
@@ -25785,11 +25786,11 @@ snapshots:
webpack-virtual-modules: 0.4.6 webpack-virtual-modules: 0.4.6
optionalDependencies: optionalDependencies:
esbuild: 0.20.2 esbuild: 0.20.2
rollup: 2.79.1 rollup: 3.29.4
vite: 3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0) vite: 3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0)
webpack: 5.91.0(@swc/core@1.4.2)(esbuild@0.20.2) webpack: 5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)
unplugin@0.7.2(esbuild@0.20.2)(rollup@2.79.1)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)): unplugin@0.7.2(esbuild@0.20.2)(rollup@3.29.4)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)):
dependencies: dependencies:
acorn: 8.11.3 acorn: 8.11.3
chokidar: 3.6.0 chokidar: 3.6.0
@@ -25797,7 +25798,7 @@ snapshots:
webpack-virtual-modules: 0.4.6 webpack-virtual-modules: 0.4.6
optionalDependencies: optionalDependencies:
esbuild: 0.20.2 esbuild: 0.20.2
rollup: 2.79.1 rollup: 3.29.4
vite: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) vite: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)
webpack: 5.91.0(@swc/core@1.4.2)(esbuild@0.20.2) webpack: 5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)
@@ -25938,7 +25939,7 @@ snapshots:
- supports-color - supports-color
- terser - terser
vite-plugin-checker@0.6.2(eslint@8.57.0)(optionator@0.9.4)(typescript@5.3.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue-tsc@1.8.24(typescript@5.3.2)): vite-plugin-checker@0.6.2(eslint@8.57.0)(meow@8.1.2)(optionator@0.9.4)(typescript@5.3.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue-tsc@1.8.24(typescript@5.3.2)):
dependencies: dependencies:
'@babel/code-frame': 7.24.2 '@babel/code-frame': 7.24.2
ansi-escapes: 4.3.2 ansi-escapes: 4.3.2
@@ -25960,6 +25961,7 @@ snapshots:
vscode-uri: 3.0.8 vscode-uri: 3.0.8
optionalDependencies: optionalDependencies:
eslint: 8.57.0 eslint: 8.57.0
meow: 8.1.2
optionator: 0.9.4 optionator: 0.9.4
typescript: 5.3.2 typescript: 5.3.2
vue-tsc: 1.8.24(typescript@5.3.2) vue-tsc: 1.8.24(typescript@5.3.2)
@@ -26005,10 +26007,10 @@ snapshots:
dependencies: dependencies:
vite: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) vite: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)
vite-plugin-inspect@0.7.38(rollup@2.79.1)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)): vite-plugin-inspect@0.7.38(rollup@3.29.4)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)):
dependencies: dependencies:
'@antfu/utils': 0.7.7 '@antfu/utils': 0.7.7
'@rollup/pluginutils': 5.1.0(rollup@2.79.1) '@rollup/pluginutils': 5.1.0(rollup@3.29.4)
debug: 4.3.4(supports-color@9.4.0) debug: 4.3.4(supports-color@9.4.0)
error-stack-parser-es: 0.1.1 error-stack-parser-es: 0.1.1
fs-extra: 11.2.0 fs-extra: 11.2.0
@@ -26020,10 +26022,10 @@ snapshots:
- rollup - rollup
- supports-color - supports-color
vite-plugin-inspect@0.7.42(rollup@2.79.1)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)): vite-plugin-inspect@0.7.42(rollup@3.29.4)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)):
dependencies: dependencies:
'@antfu/utils': 0.7.7 '@antfu/utils': 0.7.7
'@rollup/pluginutils': 5.1.0(rollup@2.79.1) '@rollup/pluginutils': 5.1.0(rollup@3.29.4)
debug: 4.3.4(supports-color@9.4.0) debug: 4.3.4(supports-color@9.4.0)
error-stack-parser-es: 0.1.1 error-stack-parser-es: 0.1.1
fs-extra: 11.2.0 fs-extra: 11.2.0