feat: support for sending client credentials via basic auth header (#4635)

Co-authored-by: jamesgeorge007 <25279263+jamesgeorge007@users.noreply.github.com>
Co-authored-by: nivedin <nivedinp@gmail.com>
This commit is contained in:
Akash K 2025-01-15 18:43:05 +05:30 committed by GitHub
parent a16402e94d
commit 8b70d7f419
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
26 changed files with 522 additions and 179 deletions

View file

@ -50,7 +50,7 @@
"lodash-es": "4.17.21",
"papaparse": "5.4.1",
"qs": "6.13.0",
"verzod": "0.2.3",
"verzod": "0.2.4",
"xmlbuilder2": "3.1.1",
"zod": "3.23.8"
},

View file

@ -485,17 +485,17 @@ export const WORKSPACE_MULTIPLE_CHILD_COLLECTIONS_WITH_AUTH_HEADERS_MOCK: Worksp
export const TRANSFORMED_MULTIPLE_CHILD_COLLECTIONS_WITH_AUTH_HEADERS_MOCK: HoppCollection[] =
[
{
v: 5,
v: 6,
id: "clx1f86hv000010f8szcfya0t",
name: "Multiple child collections with authorization & headers set at each level",
folders: [
{
v: 5,
v: 6,
id: "clx1fjgah000110f8a5bs68gd",
name: "folder-1",
folders: [
{
v: 5,
v: 6,
id: "clx1fjwmm000410f8l1gkkr1a",
name: "folder-11",
folders: [],
@ -537,7 +537,7 @@ export const TRANSFORMED_MULTIPLE_CHILD_COLLECTIONS_WITH_AUTH_HEADERS_MOCK: Hopp
],
},
{
v: 5,
v: 6,
id: "clx1fjyxm000510f8pv90dt43",
name: "folder-12",
folders: [],
@ -595,7 +595,7 @@ export const TRANSFORMED_MULTIPLE_CHILD_COLLECTIONS_WITH_AUTH_HEADERS_MOCK: Hopp
],
},
{
v: 5,
v: 6,
id: "clx1fk1cv000610f88kc3aupy",
name: "folder-13",
folders: [],
@ -707,12 +707,12 @@ export const TRANSFORMED_MULTIPLE_CHILD_COLLECTIONS_WITH_AUTH_HEADERS_MOCK: Hopp
],
},
{
v: 5,
v: 6,
id: "clx1fjk9o000210f8j0573pls",
name: "folder-2",
folders: [
{
v: 5,
v: 6,
id: "clx1fk516000710f87sfpw6bo",
name: "folder-21",
folders: [],
@ -752,7 +752,7 @@ export const TRANSFORMED_MULTIPLE_CHILD_COLLECTIONS_WITH_AUTH_HEADERS_MOCK: Hopp
],
},
{
v: 5,
v: 6,
id: "clx1fk72t000810f8gfwkpi5y",
name: "folder-22",
folders: [],
@ -810,7 +810,7 @@ export const TRANSFORMED_MULTIPLE_CHILD_COLLECTIONS_WITH_AUTH_HEADERS_MOCK: Hopp
],
},
{
v: 5,
v: 6,
id: "clx1fk95g000910f8bunhaoo8",
name: "folder-23",
folders: [],
@ -915,12 +915,12 @@ export const TRANSFORMED_MULTIPLE_CHILD_COLLECTIONS_WITH_AUTH_HEADERS_MOCK: Hopp
],
},
{
v: 5,
v: 6,
id: "clx1fjmlq000310f86o4d3w2o",
name: "folder-3",
folders: [
{
v: 5,
v: 6,
id: "clx1iwq0p003e10f8u8zg0p85",
name: "folder-31",
folders: [],
@ -960,7 +960,7 @@ export const TRANSFORMED_MULTIPLE_CHILD_COLLECTIONS_WITH_AUTH_HEADERS_MOCK: Hopp
],
},
{
v: 5,
v: 6,
id: "clx1izut7003m10f894ip59zg",
name: "folder-32",
folders: [],
@ -1018,7 +1018,7 @@ export const TRANSFORMED_MULTIPLE_CHILD_COLLECTIONS_WITH_AUTH_HEADERS_MOCK: Hopp
],
},
{
v: 5,
v: 6,
id: "clx1j2ka9003q10f8cdbzpgpg",
name: "folder-33",
folders: [],

View file

@ -199,7 +199,10 @@
"label_password": "Password",
"label_username": "Username",
"label_auth_code": "Authorization Code",
"label_client_credentials": "Client Credentials"
"label_client_credentials": "Client Credentials",
"label_send_as": "Client Authentication",
"label_send_in_body": "Send Credentials in Body",
"label_send_as_basic_auth": "Send Credentials as Basic Auth"
},
"pass_key_by": "Pass by",
"pass_by_query_params_label": "Query Parameters",

View file

@ -94,7 +94,7 @@
"url": "0.11.4",
"util": "0.12.5",
"uuid": "10.0.0",
"verzod": "0.2.3",
"verzod": "0.2.4",
"vue": "3.5.12",
"vue-i18n": "10.0.4",
"vue-pdf-embed": "2.1.0",

View file

@ -85,7 +85,7 @@ const onSaveAsExample = () => {
} = response.req
const originalRequest: HoppRESTResponseOriginalRequest = {
v: "2",
v: "3",
method,
endpoint,
headers,

View file

@ -564,6 +564,33 @@ const supportedGrantTypes = [
}
)
const clientAuthentication = refWithCallbackOnChange(
grantTypeInfo.clientAuthentication
? grantTypeInfo.clientAuthentication === "AS_BASIC_AUTH_HEADERS"
? {
id: "AS_BASIC_AUTH_HEADERS" as const,
label: t("authorization.oauth.label_send_as_basic_auth"),
}
: {
id: "IN_BODY" as const,
label: t("authorization.oauth.label_send_in_body"),
}
: {
id: "IN_BODY" as const,
label: t("authorization.oauth.label_send_in_body"),
},
(value) => {
if (!("clientAuthentication" in auth.value.grantTypeInfo)) {
return
}
auth.value.grantTypeInfo = {
...auth.value.grantTypeInfo,
clientAuthentication: value.id,
}
}
)
const runAction = async () => {
const values: ClientCredentialsFlowParams =
replaceTemplateStringsInObjectValues({
@ -571,6 +598,7 @@ const supportedGrantTypes = [
clientID: clientID.value,
clientSecret: clientSecret.value,
scopes: scopes.value,
clientAuthentication: clientAuthentication.value.id,
})
const parsedArgs = clientCredentials.params.safeParse(values)
@ -596,28 +624,46 @@ const supportedGrantTypes = [
return [
{
id: "authEndpoint",
label: "Authorization Endpoint",
label: t("authorization.oauth.label_authorization_endpoint"),
type: "text" as const,
ref: authEndpoint,
},
{
id: "clientId",
label: "Client ID",
label: t("authorization.oauth.label_client_id"),
type: "text" as const,
ref: clientID,
},
{
id: "clientSecret",
label: "Client Secret",
label: t("authorization.oauth.label_client_secret"),
type: "text" as const,
ref: clientSecret,
},
{
id: "scopes",
label: "Scopes",
label: t("authorization.oauth.label_scopes"),
type: "text" as const,
ref: scopes,
},
{
id: "clientAuthentication",
label: t("authorization.oauth.label_send_as"),
type: "dropdown" as const,
ref: clientAuthentication,
tippyRefName: "clientAuthenticationTippyActions",
tippyRef: clientAuthenticationTippyActions,
options: [
{
id: "IN_BODY" as const,
label: t("authorization.oauth.label_send_in_body"),
},
{
id: "AS_BASIC_AUTH_HEADERS" as const,
label: t("authorization.oauth.label_send_as_basic_auth"),
},
],
},
]
})
@ -1066,4 +1112,5 @@ const generateOAuthToken = async () => {
const grantTypeTippyActions = ref<HTMLElement | null>(null)
const pkceTippyActions = ref<HTMLElement | null>(null)
const authTippyActions = ref<HTMLElement | null>(null)
const clientAuthenticationTippyActions = ref<HTMLElement | null>(null)
</script>

View file

@ -470,6 +470,7 @@ const resolveOpenAPIV3SecurityObj = (
clientSecret: "",
scopes: _schemeData.join(" "),
token: "",
clientAuthentication: "IN_BODY",
},
addTo: "HEADERS",
}
@ -616,6 +617,7 @@ const resolveOpenAPIV2SecurityScheme = (
grantType: "CLIENT_CREDENTIALS",
scopes: _schemeData.join(" "),
token: "",
clientAuthentication: "IN_BODY",
},
addTo: "HEADERS",
}
@ -812,7 +814,7 @@ const convertPathToHoppReqs = (
requestVariables: parseOpenAPIVariables(
(info.parameters as OpenAPIParamsType[] | undefined) ?? []
),
v: "2",
v: "3",
}),
}),
metadata: {

View file

@ -177,7 +177,7 @@ const getHoppResponses = (
requestVariables: getHoppReqVariables(
response.originalRequest?.url.variables ?? null
),
v: "2" as const,
v: "3" as const,
},
}
return [response.name, res]

View file

@ -9,6 +9,7 @@ import * as E from "fp-ts/Either"
import { InterceptorService } from "~/services/interceptor.service"
import { useToast } from "~/composables/toast"
import { ClientCredentialsGrantTypeParams } from "@hoppscotch/data"
import { AxiosRequestConfig } from "axios"
const interceptorService = getService(InterceptorService)
@ -18,6 +19,7 @@ const ClientCredentialsFlowParamsSchema = ClientCredentialsGrantTypeParams.pick(
clientID: true,
clientSecret: true,
scopes: true,
clientAuthentication: true,
}
).refine(
(params) => {
@ -42,37 +44,20 @@ export const getDefaultClientCredentialsFlowParams =
clientID: "",
clientSecret: "",
scopes: undefined,
clientAuthentication: "IN_BODY",
})
const initClientCredentialsOAuthFlow = async ({
clientID,
clientSecret,
scopes,
authEndpoint,
}: ClientCredentialsFlowParams) => {
const initClientCredentialsOAuthFlow = async (
payload: ClientCredentialsFlowParams
) => {
const toast = useToast()
const formData = new URLSearchParams()
formData.append("grant_type", "client_credentials")
formData.append("client_id", clientID)
const requestPayload =
payload.clientAuthentication === "AS_BASIC_AUTH_HEADERS"
? getPayloadForViaBasicAuthHeader(payload)
: getPayloadForViaBody(payload)
if (clientSecret) {
formData.append("client_secret", clientSecret)
}
if (scopes) {
formData.append("scope", scopes)
}
const { response } = interceptorService.runRequest({
url: authEndpoint,
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
Accept: "application/json",
},
data: formData.toString(),
})
const { response } = interceptorService.runRequest(requestPayload)
const res = await response
@ -183,3 +168,58 @@ export default createFlowConfig(
initClientCredentialsOAuthFlow,
handleRedirectForAuthCodeOauthFlow
)
const getPayloadForViaBasicAuthHeader = (
payload: Omit<ClientCredentialsFlowParams, "clientAuthentication">
): AxiosRequestConfig => {
const { clientID, clientSecret, scopes, authEndpoint } = payload
const basicAuthToken = btoa(`${clientID}:${clientSecret}`)
const formData = new URLSearchParams()
formData.append("grant_type", "client_credentials")
if (scopes) {
formData.append("scope", scopes)
}
return {
method: "POST",
url: authEndpoint,
headers: {
Authorization: `Basic ${basicAuthToken}`,
"Content-Type": "application/x-www-form-urlencoded",
Accept: "application/json",
},
data: formData.toString(),
}
}
const getPayloadForViaBody = (
payload: Omit<ClientCredentialsFlowParams, "clientAuthentication">
) => {
const { clientID, clientSecret, scopes, authEndpoint } = payload
const formData = new URLSearchParams()
formData.append("grant_type", "client_credentials")
formData.append("client_id", clientID)
if (clientSecret) {
formData.append("client_secret", clientSecret)
}
if (scopes) {
formData.append("scope", scopes)
}
return {
method: "POST",
url: authEndpoint,
headers: {
"Content-Type": "application/x-www-form-urlencoded",
Accept: "application/json",
},
data: formData.toString(),
}
}

View file

@ -25,7 +25,7 @@ const DEFAULT_SETTINGS = getDefaultSettings()
export const REST_COLLECTIONS_MOCK: HoppCollection[] = [
{
v: 5,
v: 6,
name: "Echo",
requests: [
{
@ -57,11 +57,11 @@ export const REST_COLLECTIONS_MOCK: HoppCollection[] = [
export const GQL_COLLECTIONS_MOCK: HoppCollection[] = [
{
v: 5,
v: 6,
name: "Echo",
requests: [
{
v: 7,
v: 8,
name: "Echo test",
url: "https://echo.hoppscotch.io/graphql",
headers: [],
@ -167,7 +167,7 @@ export const GQL_HISTORY_MOCK: GQLHistoryEntry[] = [
{
v: 1,
request: {
v: 7,
v: 8,
name: "Untitled",
url: "https://echo.hoppscotch.io/graphql",
query: "query Request { url }",
@ -188,7 +188,7 @@ export const GQL_TAB_STATE_MOCK: PersistableTabState<HoppGQLDocument> = {
tabID: "5edbe8d4-65c9-4381-9354-5f1bf05d8ccc",
doc: {
request: {
v: 7,
v: 8,
name: "Untitled",
url: "https://echo.hoppscotch.io/graphql",
headers: [],

View file

@ -46,7 +46,7 @@
"lodash": "4.17.21",
"parser-ts": "0.7.0",
"uuid": "10.0.0",
"verzod": "0.2.3",
"verzod": "0.2.4",
"zod": "3.23.8"
}
}

View file

@ -5,6 +5,7 @@ import V2_VERSION from "./v/2"
import V3_VERSION from "./v/3"
import V4_VERSION from "./v/4"
import V5_VERSION from "./v/5"
import V6_VERSION from "./v/6"
import { z } from "zod"
import { translateToNewRequest } from "../rest"
@ -16,13 +17,14 @@ const versionedObject = z.object({
})
export const HoppCollection = createVersionedEntity({
latestVersion: 5,
latestVersion: 6,
versionMap: {
1: V1_VERSION,
2: V2_VERSION,
3: V3_VERSION,
4: V4_VERSION,
5: V5_VERSION,
6: V6_VERSION,
},
getVersion(data) {
const versionCheck = versionedObject.safeParse(data)
@ -38,7 +40,7 @@ export const HoppCollection = createVersionedEntity({
export type HoppCollection = InferredEntity<typeof HoppCollection>
export const CollectionSchemaVersion = 5
export const CollectionSchemaVersion = 6
/**
* Generates a Collection object. This ignores the version number object

View file

@ -26,9 +26,10 @@ type Output = z.output<typeof baseCollectionSchema> & {
folders: Output[]
}
export const V1_SCHEMA: z.ZodType<Output, z.ZodTypeDef, Input> = baseCollectionSchema.extend({
folders: z.lazy(() => z.array(V1_SCHEMA)),
})
export const V1_SCHEMA: z.ZodType<Output, z.ZodTypeDef, Input> =
baseCollectionSchema.extend({
folders: z.lazy(() => z.array(V1_SCHEMA)),
})
export default defineVersion({
initial: true,

View file

@ -4,7 +4,7 @@ import { z } from "zod"
import { V4_SCHEMA, v4_baseCollectionSchema } from "./4"
import { generateUniqueRefId } from "../../utils/collection"
const v5_baseCollectionSchema = v4_baseCollectionSchema.extend({
export const v5_baseCollectionSchema = v4_baseCollectionSchema.extend({
v: z.literal(5),
_ref_id: z.string().optional(),
})
@ -17,7 +17,7 @@ type Output = z.output<typeof v5_baseCollectionSchema> & {
folders: Output[]
}
const V5_SCHEMA: z.ZodType<Output, z.ZodTypeDef, Input> =
export const V5_SCHEMA: z.ZodType<Output, z.ZodTypeDef, Input> =
v5_baseCollectionSchema.extend({
folders: z.lazy(() => z.array(V5_SCHEMA)),
})

View file

@ -0,0 +1,54 @@
import { defineVersion } from "verzod"
import { z } from "zod"
import { HoppGQLAuth } from "../../graphql/v/8"
import { HoppRESTAuth } from "../../rest/v/11"
import { V5_SCHEMA, v5_baseCollectionSchema } from "./5"
export const v6_baseCollectionSchema = v5_baseCollectionSchema.extend({
v: z.literal(6),
auth: z.union([HoppRESTAuth, HoppGQLAuth]),
})
type Input = z.input<typeof v6_baseCollectionSchema> & {
folders: Input[]
}
type Output = z.output<typeof v6_baseCollectionSchema> & {
folders: Output[]
}
export const V6_SCHEMA: z.ZodType<Output, z.ZodTypeDef, Input> =
v6_baseCollectionSchema.extend({
folders: z.lazy(() => z.array(V6_SCHEMA)),
})
export default defineVersion({
initial: false,
schema: V6_SCHEMA,
// @ts-expect-error
up(old: z.infer<typeof V5_SCHEMA>) {
const auth = old.auth
const migratedAuth: HoppRESTAuth =
auth.authType === "oauth-2"
? {
...auth,
grantTypeInfo:
auth.grantTypeInfo.grantType === "CLIENT_CREDENTIALS"
? {
...auth.grantTypeInfo,
clientAuthentication: "IN_BODY",
}
: auth.grantTypeInfo,
}
: auth
return {
...old,
auth: migratedAuth,
v: 6 as const,
}
},
})

View file

@ -7,6 +7,7 @@ import V4_VERSION from "./v/4"
import V5_VERSION from "./v/5"
import V6_VERSION from "./v/6"
import V7_VERSION from "./v/7"
import V8_VERSION from "./v/8"
export {
HoppGQLAuthBasic,
@ -18,16 +19,16 @@ export {
export { HoppGQLAuthAPIKey } from "./v/4"
export { GQLHeader, HoppGQLAuthAWSSignature } from "./v/6"
export { HoppGQLAuth, HoppGQLAuthOAuth2 } from "./v/7"
export { HoppGQLAuth, HoppGQLAuthOAuth2 } from "./v/8"
export const GQL_REQ_SCHEMA_VERSION = 7
export const GQL_REQ_SCHEMA_VERSION = 8
const versionedObject = z.object({
v: z.number(),
})
export const HoppGQLRequest = createVersionedEntity({
latestVersion: 7,
latestVersion: 8,
versionMap: {
1: V1_VERSION,
2: V2_VERSION,
@ -36,6 +37,7 @@ export const HoppGQLRequest = createVersionedEntity({
5: V5_VERSION,
6: V6_VERSION,
7: V7_VERSION,
8: V8_VERSION,
},
getVersion(x) {
const result = versionedObject.safeParse(x)

View file

@ -0,0 +1,64 @@
import { defineVersion } from "verzod"
import { z } from "zod"
import {
HoppGQLAuthBasic,
HoppGQLAuthBearer,
HoppGQLAuthInherit,
HoppGQLAuthNone,
} from "./2"
import { HoppGQLAuthAPIKey } from "./4"
import { HoppGQLAuthAWSSignature } from "./6"
import { HoppRESTAuthOAuth2 } from "./../../rest/v/11"
import { V7_SCHEMA } from "./7"
export { HoppRESTAuthOAuth2 as HoppGQLAuthOAuth2 } from "../../rest/v/11"
export const HoppGQLAuth = z
.discriminatedUnion("authType", [
HoppGQLAuthNone,
HoppGQLAuthInherit,
HoppGQLAuthBasic,
HoppGQLAuthBearer,
HoppRESTAuthOAuth2,
HoppGQLAuthAPIKey,
HoppGQLAuthAWSSignature,
])
.and(
z.object({
authActive: z.boolean(),
})
)
export type HoppGQLAuth = z.infer<typeof HoppGQLAuth>
export const V8_SCHEMA = V7_SCHEMA.extend({
v: z.literal(8),
auth: HoppGQLAuth,
})
export default defineVersion({
schema: V8_SCHEMA,
initial: false,
up(old: z.infer<typeof V7_SCHEMA>) {
const auth = old.auth
return {
...old,
v: 8 as const,
auth:
auth.authType === "oauth-2"
? {
...auth,
grantTypeInfo:
auth.grantTypeInfo.grantType === "CLIENT_CREDENTIALS"
? {
...auth.grantTypeInfo,
clientAuthentication: "IN_BODY" as const,
}
: auth.grantTypeInfo,
}
: auth,
}
},
})

View file

@ -14,9 +14,10 @@ import V4_VERSION from "./v/4"
import V5_VERSION from "./v/5"
import V6_VERSION from "./v/6"
import V7_VERSION, { HoppRESTHeaders, HoppRESTParams } from "./v/7"
import V8_VERSION, { HoppRESTAuth } from "./v/8"
import V9_VERSION, { HoppRESTRequestResponses } from "./v/9"
import V8_VERSION from "./v/8"
import V9_VERSION from "./v/9"
import V10_VERSION, { HoppRESTReqBody } from "./v/10"
import V11_VERSION, { HoppRESTAuth, HoppRESTRequestResponses } from "./v/11"
export * from "./content-types"
@ -41,30 +42,31 @@ export {
HoppRESTParams,
} from "./v/7"
export {
ClientCredentialsGrantTypeParams,
HoppRESTAuth,
HoppRESTAuthOAuth2,
HoppRESTAuthDigest,
PasswordGrantTypeParams,
} from "./v/8"
export { HoppRESTAuthDigest, PasswordGrantTypeParams } from "./v/8"
export { FormDataKeyValue } from "./v/9"
export {
FormDataKeyValue,
HoppRESTResponseOriginalRequest,
HoppRESTRequestResponse,
HoppRESTRequestResponses,
} from "./v/9"
} from "./v/11"
export { HoppRESTReqBody } from "./v/10"
export {
HoppRESTAuthOAuth2,
HoppRESTAuth,
ClientCredentialsGrantTypeParams,
} from "./v/11"
const versionedObject = z.object({
// v is a stringified number
v: z.string().regex(/^\d+$/).transform(Number),
})
export const HoppRESTRequest = createVersionedEntity({
latestVersion: 10,
latestVersion: 11,
versionMap: {
0: V0_VERSION,
1: V1_VERSION,
@ -77,6 +79,7 @@ export const HoppRESTRequest = createVersionedEntity({
8: V8_VERSION,
9: V9_VERSION,
10: V10_VERSION,
11: V11_VERSION,
},
getVersion(data) {
// For V1 onwards we have the v string storing the number
@ -119,7 +122,7 @@ const HoppRESTRequestEq = Eq.struct<HoppRESTRequest>({
responses: lodashIsEqualEq,
})
export const RESTReqSchemaVersion = "10"
export const RESTReqSchemaVersion = "11"
export type HoppRESTParam = HoppRESTRequest["params"][number]
export type HoppRESTHeader = HoppRESTRequest["headers"][number]

View file

@ -49,7 +49,6 @@ export default defineVersion({
schema: V10_SCHEMA,
initial: false,
up(old: z.infer<typeof V9_SCHEMA>) {
// no breaking changes
return {
...old,
v: "10" as const,

View file

@ -0,0 +1,146 @@
import {
HoppRESTAuthBasic,
HoppRESTAuthBearer,
HoppRESTAuthInherit,
HoppRESTAuthNone,
} from "./1"
import { HoppRESTAuthAPIKey } from "./4"
import { AuthCodeGrantTypeParams, HoppRESTAuthAWSSignature } from "./7"
import {
ClientCredentialsGrantTypeParams as ClientCredentialsGrantTypeParamsOld,
HoppRESTAuthDigest,
PasswordGrantTypeParams,
} from "./8"
import { ImplicitOauthFlowParams } from "./3"
import { z } from "zod"
import { HoppRESTReqBody, V10_SCHEMA } from "./10"
import { defineVersion } from "verzod"
import {
HoppRESTResponseOriginalRequest as HoppRESTResponseOriginalRequestOld,
HoppRESTRequestResponse as HoppRESTRequestResponseOld,
} from "./9"
export const ClientCredentialsGrantTypeParams =
ClientCredentialsGrantTypeParamsOld.extend({
clientAuthentication: z.enum(["AS_BASIC_AUTH_HEADERS", "IN_BODY"]),
})
export const HoppRESTAuthOAuth2 = z.object({
authType: z.literal("oauth-2"),
grantTypeInfo: z.discriminatedUnion("grantType", [
AuthCodeGrantTypeParams,
ClientCredentialsGrantTypeParams,
PasswordGrantTypeParams,
ImplicitOauthFlowParams,
]),
addTo: z.enum(["HEADERS", "QUERY_PARAMS"]).catch("HEADERS"),
})
export type HoppRESTAuthOAuth2 = z.infer<typeof HoppRESTAuthOAuth2>
export const HoppRESTAuth = z
.discriminatedUnion("authType", [
HoppRESTAuthNone,
HoppRESTAuthInherit,
HoppRESTAuthBasic,
HoppRESTAuthBearer,
HoppRESTAuthOAuth2,
HoppRESTAuthAPIKey,
HoppRESTAuthAWSSignature,
HoppRESTAuthDigest,
])
.and(
z.object({
authActive: z.boolean(),
})
)
export type HoppRESTAuth = z.infer<typeof HoppRESTAuth>
export const HoppRESTResponseOriginalRequest =
HoppRESTResponseOriginalRequestOld.extend({
v: z.literal("3"),
auth: HoppRESTAuth,
body: HoppRESTReqBody,
})
export type HoppRESTResponseOriginalRequest = z.infer<
typeof HoppRESTResponseOriginalRequest
>
export const HoppRESTRequestResponse = HoppRESTRequestResponseOld.extend({
originalRequest: HoppRESTResponseOriginalRequest,
})
export type HoppRESTRequestResponse = z.infer<typeof HoppRESTRequestResponse>
export const HoppRESTRequestResponses = z.record(
z.string(),
HoppRESTRequestResponse
)
export type HoppRESTRequestResponses = z.infer<typeof HoppRESTRequestResponses>
export const V11_SCHEMA = V10_SCHEMA.extend({
v: z.literal("11"),
auth: HoppRESTAuth,
responses: HoppRESTRequestResponses,
})
export default defineVersion({
schema: V11_SCHEMA,
initial: false,
up(old: z.infer<typeof V10_SCHEMA>) {
const auth = old.auth
// update auth for responses
const responses = Object.fromEntries(
Object.entries(old.responses).map(([key, response]) => [
key,
{
...response,
originalRequest: {
...response.originalRequest,
auth:
auth.authType === "oauth-2"
? {
...auth,
grantTypeInfo:
auth.grantTypeInfo.grantType === "CLIENT_CREDENTIALS"
? {
...auth.grantTypeInfo,
clientAuthentication: "IN_BODY" as const,
}
: auth.grantTypeInfo,
}
: auth,
// just following the previous pattern here, but is this a good idea to overwrite the request version ?
v: "3" as const,
},
},
])
)
return {
...old,
v: "11" as const,
auth:
auth.authType === "oauth-2"
? {
...auth,
grantTypeInfo:
auth.grantTypeInfo.grantType === "CLIENT_CREDENTIALS"
? {
...auth.grantTypeInfo,
clientAuthentication: "IN_BODY" as const,
}
: auth.grantTypeInfo,
}
: auth,
responses,
}
},
})

View file

@ -1,12 +1,12 @@
import { z } from "zod"
import { defineVersion } from "verzod"
import {
HoppRESTAuthAPIKey,
HoppRESTAuthBasic,
HoppRESTAuthBearer,
HoppRESTAuthInherit,
HoppRESTAuthNone,
} from "./1"
import { HoppRESTAuthAPIKey } from "./4"
import { V6_SCHEMA } from "./6"
import { AuthCodeGrantTypeParams as AuthCodeGrantTypeParamsOld } from "./5"

View file

@ -2,13 +2,14 @@ import { defineVersion } from "verzod"
import { z } from "zod"
import {
HoppRESTAuthAPIKey,
HoppRESTAuthBasic,
HoppRESTAuthBearer,
HoppRESTAuthInherit,
HoppRESTAuthNone,
} from "./1"
import { HoppRESTAuthAPIKey } from "./4"
import {
ClientCredentialsGrantTypeParams as ClientCredentialsGrantTypeParamsOld,
ImplicitOauthFlowParams,

View file

@ -36,7 +36,7 @@
"tauri": "link:@tauri-apps/api/tauri",
"tauri-plugin-store-api": "0.0.0",
"util": "0.12.5",
"verzod": "0.2.3",
"verzod": "0.2.4",
"vue": "3.3.9",
"workbox-window": "6.6.0",
"zod": "3.22.4"

View file

@ -37,7 +37,7 @@
"rxjs": "7.8.1",
"stream-browserify": "3.0.0",
"util": "0.12.5",
"verzod": "0.2.3",
"verzod": "0.2.4",
"vue": "3.5.12",
"workbox-window": "7.1.0",
"zod": "3.23.8"

View file

@ -140,7 +140,7 @@ function exportedCollectionToHoppCollection(
return {
id: restCollection.id,
_ref_id: data._ref_id ?? generateUniqueRefId("coll"),
v: 5,
v: 6,
name: restCollection.name,
folders: restCollection.folders.map((folder) =>
exportedCollectionToHoppCollection(folder, collectionType)
@ -204,7 +204,7 @@ function exportedCollectionToHoppCollection(
return {
id: gqlCollection.id,
_ref_id: data._ref_id ?? generateUniqueRefId("coll"),
v: 5,
v: 6,
name: gqlCollection.name,
folders: gqlCollection.folders.map((folder) =>
exportedCollectionToHoppCollection(folder, collectionType)
@ -383,7 +383,7 @@ function setupUserCollectionCreatedSubscription() {
name: res.right.userCollectionCreated.title,
folders: [],
requests: [],
v: 5,
v: 6,
_ref_id: data._ref_id,
auth: data.auth,
headers: addDescriptionField(data.headers),
@ -392,7 +392,7 @@ function setupUserCollectionCreatedSubscription() {
name: res.right.userCollectionCreated.title,
folders: [],
requests: [],
v: 5,
v: 6,
_ref_id: data._ref_id,
auth: data.auth,
headers: addDescriptionField(data.headers),
@ -620,7 +620,7 @@ function setupUserCollectionDuplicatedSubscription() {
name,
folders,
requests,
v: 5,
v: 6,
_ref_id,
auth,
headers: addDescriptionField(headers),
@ -1054,7 +1054,7 @@ function transformDuplicatedCollections(
folders,
requests,
_ref_id,
v: 5,
v: 6,
auth,
headers: addDescriptionField(headers),
}

View file

@ -142,10 +142,10 @@ importers:
version: 4.11.0(graphql@16.9.0)
'@nestjs-modules/mailer':
specifier: 2.0.2
version: 2.0.2(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))(nodemailer@6.9.15)(relateurl@0.2.7)(svgo@3.3.2)(terser@5.34.1)(typescript@5.5.4)
version: 2.0.2(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)(nodemailer@6.9.15)(relateurl@0.2.7)(svgo@3.3.2)(terser@5.34.1)(typescript@5.5.4)
'@nestjs/apollo':
specifier: 12.2.0
version: 12.2.0(@apollo/server@4.11.0(graphql@16.9.0))(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/graphql@12.2.0(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.9.0)(reflect-metadata@0.2.2))(graphql@16.9.0)
version: 12.2.0(@apollo/server@4.11.0(graphql@16.9.0))(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)(@nestjs/graphql@12.2.0(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.9.0)(reflect-metadata@0.2.2))(graphql@16.9.0)
'@nestjs/common':
specifier: 10.4.4
version: 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)
@ -157,7 +157,7 @@ importers:
version: 10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@nestjs/graphql':
specifier: 12.2.0
version: 12.2.0(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.9.0)(reflect-metadata@0.2.2)
version: 12.2.0(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.9.0)(reflect-metadata@0.2.2)
'@nestjs/jwt':
specifier: 10.2.0
version: 10.2.0(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))
@ -169,16 +169,16 @@ importers:
version: 10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)
'@nestjs/schedule':
specifier: 4.1.1
version: 4.1.1(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))
version: 4.1.1(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)
'@nestjs/swagger':
specifier: 7.4.2
version: 7.4.2(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)
version: 7.4.2(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)
'@nestjs/terminus':
specifier: 10.2.3
version: 10.2.3(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@prisma/client@5.20.0(prisma@5.20.0))(reflect-metadata@0.2.2)(rxjs@7.8.1)
version: 10.2.3(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)(@prisma/client@5.20.0(prisma@5.20.0))(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@nestjs/throttler':
specifier: 6.2.1
version: 6.2.1(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))(reflect-metadata@0.2.2)
version: 6.2.1(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)(reflect-metadata@0.2.2)
'@prisma/client':
specifier: 5.20.0
version: 5.20.0(prisma@5.20.0)
@ -278,7 +278,7 @@ importers:
version: 10.1.4(chokidar@3.6.0)(typescript@5.5.4)
'@nestjs/testing':
specifier: 10.4.4
version: 10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4))
version: 10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)(@nestjs/platform-express@10.4.4)
'@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))
@ -403,8 +403,8 @@ importers:
specifier: 6.13.0
version: 6.13.0
verzod:
specifier: 0.2.3
version: 0.2.3(zod@3.23.8)
specifier: 0.2.4
version: 0.2.4(zod@3.23.8)
xmlbuilder2:
specifier: 3.1.1
version: 3.1.1
@ -671,8 +671,8 @@ importers:
specifier: 10.0.0
version: 10.0.0
verzod:
specifier: 0.2.3
version: 0.2.3(zod@3.23.8)
specifier: 0.2.4
version: 0.2.4(zod@3.23.8)
vue:
specifier: 3.5.12
version: 3.5.12(typescript@5.3.3)
@ -868,7 +868,7 @@ importers:
version: 5.4.9(@types/node@22.7.6)(sass@1.79.5)(terser@5.34.1)
vite-plugin-checker:
specifier: 0.6.4
version: 0.6.4(eslint@8.57.0)(meow@13.2.0)(optionator@0.9.4)(typescript@5.3.3)(vite@5.4.9(@types/node@22.7.6)(sass@1.79.5)(terser@5.34.1))(vue-tsc@1.8.24(typescript@5.3.3))
version: 0.6.4(eslint@8.57.0)(optionator@0.9.4)(typescript@5.3.3)(vite@5.4.9(@types/node@22.7.6)(sass@1.79.5)(terser@5.34.1))(vue-tsc@1.8.24(typescript@5.3.3))
vite-plugin-fonts:
specifier: 0.7.0
version: 0.7.0(vite@5.4.9(@types/node@22.7.6)(sass@1.79.5)(terser@5.34.1))
@ -912,8 +912,8 @@ importers:
specifier: 10.0.0
version: 10.0.0
verzod:
specifier: 0.2.3
version: 0.2.3(zod@3.23.8)
specifier: 0.2.4
version: 0.2.4(zod@3.23.8)
zod:
specifier: 3.23.8
version: 3.23.8
@ -1070,8 +1070,8 @@ importers:
specifier: 0.12.5
version: 0.12.5
verzod:
specifier: 0.2.3
version: 0.2.3(zod@3.22.4)
specifier: 0.2.4
version: 0.2.4(zod@3.22.4)
vue:
specifier: 3.5.12
version: 3.5.12(typescript@4.9.5)
@ -1171,7 +1171,7 @@ importers:
version: 0.14.9(@vue/compiler-sfc@3.5.12)(vue-template-compiler@2.7.16)
unplugin-vue-components:
specifier: 0.21.0
version: 0.21.0(@babel/parser@7.25.7)(esbuild@0.24.0)(rollup@3.29.4)(vite@4.5.0(@types/node@18.18.8)(sass@1.80.3)(terser@5.34.1))(vue@3.5.12(typescript@4.9.5))(webpack@5.94.0(@swc/core@1.4.2)(esbuild@0.24.0))
version: 0.21.0(@babel/parser@7.25.7)(esbuild@0.24.0)(rollup@2.79.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.80.3)(terser@5.34.1))(vue@3.5.12(typescript@4.9.5))(webpack@5.94.0(@swc/core@1.4.2)(esbuild@0.24.0))
vite:
specifier: 4.5.0
version: 4.5.0(@types/node@18.18.8)(sass@1.80.3)(terser@5.34.1)
@ -1180,7 +1180,7 @@ importers:
version: 1.0.11(vite@4.5.0(@types/node@18.18.8)(sass@1.80.3)(terser@5.34.1))
vite-plugin-inspect:
specifier: 0.7.38
version: 0.7.38(rollup@3.29.4)(vite@4.5.0(@types/node@18.18.8)(sass@1.80.3)(terser@5.34.1))
version: 0.7.38(rollup@2.79.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.80.3)(terser@5.34.1))
vite-plugin-pages:
specifier: 0.26.0
version: 0.26.0(@vue/compiler-sfc@3.5.12)(vite@4.5.0(@types/node@18.18.8)(sass@1.80.3)(terser@5.34.1))
@ -1245,8 +1245,8 @@ importers:
specifier: 0.12.5
version: 0.12.5
verzod:
specifier: 0.2.3
version: 0.2.3(zod@3.23.8)
specifier: 0.2.4
version: 0.2.4(zod@3.23.8)
vue:
specifier: 3.5.12
version: 3.5.12(typescript@5.3.3)
@ -1346,7 +1346,7 @@ importers:
version: 0.19.3(@vue/compiler-sfc@3.5.12)(vue-template-compiler@2.7.16)(webpack-sources@3.2.3)
unplugin-vue-components:
specifier: 0.27.4
version: 0.27.4(@babel/parser@7.25.7)(rollup@3.29.4)(vue@3.5.12(typescript@5.3.3))(webpack-sources@3.2.3)
version: 0.27.4(@babel/parser@7.25.7)(rollup@4.24.0)(vue@3.5.12(typescript@5.3.3))(webpack-sources@3.2.3)
vite:
specifier: 5.4.9
version: 5.4.9(@types/node@22.7.6)(sass@1.80.3)(terser@5.34.1)
@ -1358,7 +1358,7 @@ importers:
version: 2.0.2(vite@5.4.9(@types/node@22.7.6)(sass@1.80.3)(terser@5.34.1))
vite-plugin-inspect:
specifier: 0.8.7
version: 0.8.7(rollup@3.29.4)(vite@5.4.9(@types/node@22.7.6)(sass@1.80.3)(terser@5.34.1))
version: 0.8.7(rollup@4.24.0)(vite@5.4.9(@types/node@22.7.6)(sass@1.80.3)(terser@5.34.1))
vite-plugin-pages:
specifier: 0.32.3
version: 0.32.3(@vue/compiler-sfc@3.5.12)(vite@5.4.9(@types/node@22.7.6)(sass@1.80.3)(terser@5.34.1))(vue-router@4.4.5(vue@3.5.12(typescript@5.3.3)))
@ -1400,7 +1400,7 @@ importers:
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@3.29.4)(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)
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)
'@types/cors':
specifier: 2.8.17
version: 2.8.17
@ -1457,7 +1457,7 @@ importers:
version: 0.19.3(@vue/compiler-sfc@3.5.12)(vue-template-compiler@2.7.16)(webpack-sources@3.2.3)
unplugin-vue-components:
specifier: 0.27.4
version: 0.27.4(@babel/parser@7.25.7)(rollup@3.29.4)(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3)
version: 0.27.4(@babel/parser@7.25.7)(rollup@4.24.0)(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3)
vue:
specifier: 3.5.12
version: 3.5.12(typescript@5.6.3)
@ -11813,8 +11813,8 @@ packages:
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
engines: {node: '>= 0.8'}
verzod@0.2.3:
resolution: {integrity: sha512-fARgs0c/TNNtbo83/5LjriJEb3QMwBN8Ju2+BcVdiI7Y2NOa5Yhq+CrQ8UH43h0BRXcgb2JQABjkgrRCWybEtQ==}
verzod@0.2.4:
resolution: {integrity: sha512-xli0iwB1nxtWiJTjekTuPm9DuHXU8zdu6vKG2QXT0ZYKn9HanS/azJDSvbvT5IQ5HHltoV9h2Jf4Y+dwk8Fa5Q==}
engines: {node: '>=16'}
peerDependencies:
zod: ^3.22.0
@ -15667,13 +15667,13 @@ snapshots:
'@intlify/shared@9.3.0-beta.20': {}
'@intlify/unplugin-vue-i18n@5.2.0(@vue/compiler-dom@3.5.12)(eslint@9.12.0(jiti@2.3.3))(rollup@3.29.4)(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@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)':
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@3.29.4)
'@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
@ -16027,7 +16027,7 @@ snapshots:
'@microsoft/tsdoc@0.15.0': {}
'@nestjs-modules/mailer@2.0.2(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))(nodemailer@6.9.15)(relateurl@0.2.7)(svgo@3.3.2)(terser@5.34.1)(typescript@5.5.4)':
'@nestjs-modules/mailer@2.0.2(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)(nodemailer@6.9.15)(relateurl@0.2.7)(svgo@3.3.2)(terser@5.34.1)(typescript@5.5.4)':
dependencies:
'@css-inline/css-inline': 0.14.1
'@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)
@ -16054,13 +16054,13 @@ snapshots:
- typescript
- uncss
'@nestjs/apollo@12.2.0(@apollo/server@4.11.0(graphql@16.9.0))(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/graphql@12.2.0(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.9.0)(reflect-metadata@0.2.2))(graphql@16.9.0)':
'@nestjs/apollo@12.2.0(@apollo/server@4.11.0(graphql@16.9.0))(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)(@nestjs/graphql@12.2.0(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.9.0)(reflect-metadata@0.2.2))(graphql@16.9.0)':
dependencies:
'@apollo/server': 4.11.0(graphql@16.9.0)
'@apollo/server-plugin-landing-page-graphql-playground': 4.0.0(@apollo/server@4.11.0(graphql@16.9.0))
'@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@nestjs/core': 10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@nestjs/graphql': 12.2.0(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.9.0)(reflect-metadata@0.2.2)
'@nestjs/graphql': 12.2.0(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.9.0)(reflect-metadata@0.2.2)
graphql: 16.9.0
iterall: 1.3.0
lodash.omit: 4.5.0
@ -16129,7 +16129,7 @@ snapshots:
transitivePeerDependencies:
- encoding
'@nestjs/graphql@12.2.0(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.9.0)(reflect-metadata@0.2.2)':
'@nestjs/graphql@12.2.0(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.9.0)(reflect-metadata@0.2.2)':
dependencies:
'@graphql-tools/merge': 9.0.4(graphql@16.9.0)
'@graphql-tools/schema': 10.0.4(graphql@16.9.0)
@ -16187,7 +16187,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@nestjs/schedule@4.1.1(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))':
'@nestjs/schedule@4.1.1(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)':
dependencies:
'@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@nestjs/core': 10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1)
@ -16216,7 +16216,7 @@ snapshots:
transitivePeerDependencies:
- chokidar
'@nestjs/swagger@7.4.2(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)':
'@nestjs/swagger@7.4.2(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)':
dependencies:
'@microsoft/tsdoc': 0.15.0
'@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)
@ -16231,7 +16231,7 @@ snapshots:
class-transformer: 0.5.1
class-validator: 0.14.1
'@nestjs/terminus@10.2.3(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@prisma/client@5.20.0(prisma@5.20.0))(reflect-metadata@0.2.2)(rxjs@7.8.1)':
'@nestjs/terminus@10.2.3(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)(@prisma/client@5.20.0(prisma@5.20.0))(reflect-metadata@0.2.2)(rxjs@7.8.1)':
dependencies:
'@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@nestjs/core': 10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1)
@ -16242,7 +16242,7 @@ snapshots:
optionalDependencies:
'@prisma/client': 5.20.0(prisma@5.20.0)
'@nestjs/testing@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4))':
'@nestjs/testing@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)(@nestjs/platform-express@10.4.4)':
dependencies:
'@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@nestjs/core': 10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1)
@ -16250,7 +16250,7 @@ snapshots:
optionalDependencies:
'@nestjs/platform-express': 10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)
'@nestjs/throttler@6.2.1(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))(reflect-metadata@0.2.2)':
'@nestjs/throttler@6.2.1(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)(reflect-metadata@0.2.2)':
dependencies:
'@nestjs/common': 10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)
'@nestjs/core': 10.4.4(@nestjs/common@10.4.4(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1)
@ -25732,7 +25732,7 @@ snapshots:
- supports-color
- webpack-sources
unplugin-vue-components@0.21.0(@babel/parser@7.25.7)(esbuild@0.24.0)(rollup@3.29.4)(vite@4.5.0(@types/node@18.18.8)(sass@1.80.3)(terser@5.34.1))(vue@3.5.12(typescript@4.9.5))(webpack@5.94.0(@swc/core@1.4.2)(esbuild@0.24.0)):
unplugin-vue-components@0.21.0(@babel/parser@7.25.7)(esbuild@0.24.0)(rollup@2.79.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.80.3)(terser@5.34.1))(vue@3.5.12(typescript@4.9.5))(webpack@5.94.0(@swc/core@1.4.2)(esbuild@0.24.0)):
dependencies:
'@antfu/utils': 0.5.2
'@rollup/pluginutils': 4.2.1
@ -25743,7 +25743,7 @@ snapshots:
magic-string: 0.26.7
minimatch: 5.1.6
resolve: 1.22.8
unplugin: 0.7.2(esbuild@0.24.0)(rollup@3.29.4)(vite@4.5.0(@types/node@18.18.8)(sass@1.80.3)(terser@5.34.1))(webpack@5.94.0(@swc/core@1.4.2)(esbuild@0.24.0))
unplugin: 0.7.2(esbuild@0.24.0)(rollup@2.79.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.80.3)(terser@5.34.1))(webpack@5.94.0(@swc/core@1.4.2)(esbuild@0.24.0))
vue: 3.5.12(typescript@4.9.5)
optionalDependencies:
'@babel/parser': 7.25.7
@ -25754,46 +25754,6 @@ snapshots:
- vite
- webpack
unplugin-vue-components@0.27.4(@babel/parser@7.25.7)(rollup@3.29.4)(vue@3.5.12(typescript@5.3.3))(webpack-sources@3.2.3):
dependencies:
'@antfu/utils': 0.7.10
'@rollup/pluginutils': 5.1.2(rollup@3.29.4)
chokidar: 3.6.0
debug: 4.3.7
fast-glob: 3.3.2
local-pkg: 0.5.0
magic-string: 0.30.11
minimatch: 9.0.5
mlly: 1.7.2
unplugin: 1.14.1(webpack-sources@3.2.3)
vue: 3.5.12(typescript@5.3.3)
optionalDependencies:
'@babel/parser': 7.25.7
transitivePeerDependencies:
- rollup
- supports-color
- webpack-sources
unplugin-vue-components@0.27.4(@babel/parser@7.25.7)(rollup@3.29.4)(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3):
dependencies:
'@antfu/utils': 0.7.10
'@rollup/pluginutils': 5.1.2(rollup@3.29.4)
chokidar: 3.6.0
debug: 4.3.7
fast-glob: 3.3.2
local-pkg: 0.5.0
magic-string: 0.30.11
minimatch: 9.0.5
mlly: 1.7.2
unplugin: 1.14.1(webpack-sources@3.2.3)
vue: 3.5.12(typescript@5.6.3)
optionalDependencies:
'@babel/parser': 7.25.7
transitivePeerDependencies:
- rollup
- supports-color
- webpack-sources
unplugin-vue-components@0.27.4(@babel/parser@7.25.7)(rollup@4.24.0)(vue@3.5.12(typescript@5.3.3))(webpack-sources@3.2.3):
dependencies:
'@antfu/utils': 0.7.10
@ -25814,7 +25774,27 @@ snapshots:
- supports-color
- webpack-sources
unplugin@0.7.2(esbuild@0.24.0)(rollup@3.29.4)(vite@4.5.0(@types/node@18.18.8)(sass@1.80.3)(terser@5.34.1))(webpack@5.94.0(@swc/core@1.4.2)(esbuild@0.24.0)):
unplugin-vue-components@0.27.4(@babel/parser@7.25.7)(rollup@4.24.0)(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3):
dependencies:
'@antfu/utils': 0.7.10
'@rollup/pluginutils': 5.1.2(rollup@4.24.0)
chokidar: 3.6.0
debug: 4.3.7
fast-glob: 3.3.2
local-pkg: 0.5.0
magic-string: 0.30.11
minimatch: 9.0.5
mlly: 1.7.2
unplugin: 1.14.1(webpack-sources@3.2.3)
vue: 3.5.12(typescript@5.6.3)
optionalDependencies:
'@babel/parser': 7.25.7
transitivePeerDependencies:
- rollup
- supports-color
- webpack-sources
unplugin@0.7.2(esbuild@0.24.0)(rollup@2.79.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.80.3)(terser@5.34.1))(webpack@5.94.0(@swc/core@1.4.2)(esbuild@0.24.0)):
dependencies:
acorn: 8.12.1
chokidar: 3.6.0
@ -25822,7 +25802,7 @@ snapshots:
webpack-virtual-modules: 0.4.6
optionalDependencies:
esbuild: 0.24.0
rollup: 3.29.4
rollup: 2.79.2
vite: 4.5.0(@types/node@18.18.8)(sass@1.80.3)(terser@5.34.1)
webpack: 5.94.0(@swc/core@1.4.2)(esbuild@0.24.0)
@ -25926,11 +25906,11 @@ snapshots:
vary@1.1.2: {}
verzod@0.2.3(zod@3.22.4):
verzod@0.2.4(zod@3.22.4):
dependencies:
zod: 3.22.4
verzod@0.2.3(zod@3.23.8):
verzod@0.2.4(zod@3.23.8):
dependencies:
zod: 3.23.8
@ -25985,7 +25965,7 @@ snapshots:
- supports-color
- terser
vite-plugin-checker@0.6.4(eslint@8.57.0)(meow@13.2.0)(optionator@0.9.4)(typescript@5.3.3)(vite@5.4.9(@types/node@22.7.6)(sass@1.79.5)(terser@5.34.1))(vue-tsc@1.8.24(typescript@5.3.3)):
vite-plugin-checker@0.6.4(eslint@8.57.0)(optionator@0.9.4)(typescript@5.3.3)(vite@5.4.9(@types/node@22.7.6)(sass@1.79.5)(terser@5.34.1))(vue-tsc@1.8.24(typescript@5.3.3)):
dependencies:
'@babel/code-frame': 7.25.7
ansi-escapes: 4.3.2
@ -26005,7 +25985,6 @@ snapshots:
vscode-uri: 3.0.8
optionalDependencies:
eslint: 8.57.0
meow: 13.2.0
optionator: 0.9.4
typescript: 5.3.3
vue-tsc: 1.8.24(typescript@5.3.3)
@ -26064,10 +26043,10 @@ snapshots:
dependencies:
vite: 5.4.9(@types/node@22.7.6)(sass@1.80.3)(terser@5.34.1)
vite-plugin-inspect@0.7.38(rollup@3.29.4)(vite@4.5.0(@types/node@18.18.8)(sass@1.80.3)(terser@5.34.1)):
vite-plugin-inspect@0.7.38(rollup@2.79.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.80.3)(terser@5.34.1)):
dependencies:
'@antfu/utils': 0.7.10
'@rollup/pluginutils': 5.1.2(rollup@3.29.4)
'@rollup/pluginutils': 5.1.2(rollup@2.79.2)
debug: 4.3.7
error-stack-parser-es: 0.1.5
fs-extra: 11.2.0
@ -26079,10 +26058,10 @@ snapshots:
- rollup
- supports-color
vite-plugin-inspect@0.8.7(rollup@3.29.4)(vite@5.4.9(@types/node@22.7.6)(sass@1.80.3)(terser@5.34.1)):
vite-plugin-inspect@0.8.7(rollup@4.24.0)(vite@5.4.9(@types/node@22.7.6)(sass@1.80.3)(terser@5.34.1)):
dependencies:
'@antfu/utils': 0.7.10
'@rollup/pluginutils': 5.1.2(rollup@3.29.4)
'@rollup/pluginutils': 5.1.2(rollup@4.24.0)
debug: 4.3.7
error-stack-parser-es: 0.1.5
fs-extra: 11.2.0