Skip to content
Open
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/yellow-wings-design.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@medusajs/medusa": patch
---

fix(medusa): Correct MedusaRequest query type
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ describe("validateAndTransformBody", () => {
body: {
additional_data: {},
},
} as MedusaRequest
} as unknown as MedusaRequest

const mockResponse = {} as MedusaResponse
const nextFunction = jest.fn()
Expand Down Expand Up @@ -57,7 +57,7 @@ describe("validateAndTransformBody", () => {
let mockRequest = {
query: {},
body: {},
} as MedusaRequest
} as unknown as MedusaRequest

const mockResponse = {} as MedusaResponse
const nextFunction = jest.fn()
Expand Down Expand Up @@ -90,7 +90,7 @@ describe("validateAndTransformBody", () => {
body: {
additional_data: {},
},
} as MedusaRequest
} as unknown as MedusaRequest

const mockResponse = {} as MedusaResponse
const nextFunction = jest.fn()
Expand Down
29 changes: 20 additions & 9 deletions packages/core/framework/src/http/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -115,11 +115,17 @@ export type GlobalMiddlewareDescriptor = {
}

export interface MedusaRequest<
Body = unknown,
QueryFields = Record<string, unknown>
> extends Request<{ [key: string]: string }, any, Body> {
validatedBody: Body
validatedQuery: RequestQueryFields & QueryFields
BodyOrQueryFields = unknown,
QueryFields extends Record<string, unknown> = {}
> extends Request<
{ [key: string]: string },
any,
{} extends QueryFields ? undefined : BodyOrQueryFields
> {
validatedBody: {} extends QueryFields ? undefined : BodyOrQueryFields
validatedQuery: {} extends QueryFields
? RequestQueryFields & BodyOrQueryFields
: RequestQueryFields & QueryFields
/**
* TODO: shouldn't this correspond to returnable fields instead of allowed fields? also it is used by the cleanResponseData util
*/
Expand Down Expand Up @@ -198,16 +204,21 @@ export interface PublishableKeyContext {
}

export interface AuthenticatedMedusaRequest<
Body = unknown,
QueryFields = Record<string, unknown>
> extends MedusaRequest<Body, QueryFields> {
BodyOrQueryFields = unknown,
QueryFields extends Record<string, unknown> = {}
> extends MedusaRequest<
{} extends QueryFields ? undefined : BodyOrQueryFields,
{} extends QueryFields
? BodyOrQueryFields & Record<string, unknown>
: QueryFields
> {
auth_context: AuthContext
publishable_key_context?: PublishableKeyContext
}

export interface MedusaStoreRequest<
Body = unknown,
QueryFields = Record<string, unknown>
QueryFields extends Record<string, unknown> = Record<string, unknown>
> extends MedusaRequest<Body, QueryFields> {
auth_context?: AuthContext
publishable_key_context: PublishableKeyContext
Expand Down
2 changes: 1 addition & 1 deletion packages/medusa/src/api/admin/api-keys/[id]/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { MedusaError } from "@medusajs/framework/utils"
import { HttpTypes } from "@medusajs/framework/types"

export const GET = async (
req: AuthenticatedMedusaRequest<HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminApiKeyResponse>
) => {
const apiKey = await refetchApiKey(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ export const POST = async (
}

export const DELETE = async (
req: AuthenticatedMedusaRequest<{}, HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminClaimPreviewResponse>
) => {
const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ export const POST = async (
}

export const DELETE = async (
req: AuthenticatedMedusaRequest<{}, HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminClaimReturnPreviewResponse>
) => {
const { id, action_id } = req.params
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ export const POST = async (
}

export const DELETE = async (
req: AuthenticatedMedusaRequest<{}, HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminClaimReturnPreviewResponse>
) => {
const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ export const POST = async (
}

export const DELETE = async (
req: AuthenticatedMedusaRequest<{}, HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminClaimPreviewResponse>
) => {
const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ export const POST = async (
}

export const DELETE = async (
req: AuthenticatedMedusaRequest<{}, HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminClaimPreviewResponse>
) => {
const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY)
Expand Down
2 changes: 1 addition & 1 deletion packages/medusa/src/api/admin/claims/[id]/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { MedusaError } from "@medusajs/framework/utils"
import { AdminClaimResponse, HttpTypes } from "@medusajs/framework/types"

export const GET = async (
req: AuthenticatedMedusaRequest<{}, HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<AdminClaimResponse>
) => {
const claim = await refetchEntity({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { refetchCustomerGroup } from "../helpers"
import { HttpTypes } from "@medusajs/framework/types"

export const GET = async (
req: AuthenticatedMedusaRequest<HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminCustomerGroupResponse>
) => {
const customerGroup = await refetchCustomerGroup(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import { refetchCustomer } from "../../../helpers"
import { AdditionalData, HttpTypes } from "@medusajs/framework/types"

export const GET = async (
req: AuthenticatedMedusaRequest<HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminCustomerAddressResponse>
) => {
const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY)
Expand Down Expand Up @@ -61,7 +61,7 @@ export const POST = async (
}

export const DELETE = async (
req: AuthenticatedMedusaRequest<{}, HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminCustomerAddressDeleteResponse>
) => {
const id = req.params.address_id
Expand Down
2 changes: 1 addition & 1 deletion packages/medusa/src/api/admin/customers/[id]/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { refetchCustomer } from "../helpers"
import { AdminUpdateCustomerType } from "../validators"

export const GET = async (
req: AuthenticatedMedusaRequest<{}, HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminCustomerResponse>
) => {
const customer = await refetchCustomer(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ export const POST = async (
}

export const DELETE = async (
req: AuthenticatedMedusaRequest<{}, HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminExchangeReturnResponse>
) => {
const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ export const POST = async (
}

export const DELETE = async (
req: AuthenticatedMedusaRequest<{}, HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminExchangeReturnResponse>
) => {
const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ export const POST = async (
}

export const DELETE = async (
req: AuthenticatedMedusaRequest<{}, HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminExchangePreviewResponse>
) => {
const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ export const POST = async (
}

export const DELETE = async (
req: AuthenticatedMedusaRequest<{}, HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminExchangePreviewResponse>
) => {
const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import {
import { defaultAdminDetailsReturnFields } from "../../../returns/query-config"

export const POST = async (
req: AuthenticatedMedusaRequest<{}, HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminExchangeRequestResponse>
) => {
const { id } = req.params
Expand Down
2 changes: 1 addition & 1 deletion packages/medusa/src/api/admin/exchanges/[id]/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
} from "@medusajs/framework/http"

export const GET = async (
req: AuthenticatedMedusaRequest<HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminExchangeResponse>
) => {
const exchange = await refetchEntity({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import {
} from "@medusajs/framework/http"

export const GET = async (
req: AuthenticatedMedusaRequest<HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<AdminServiceZoneResponse>
) => {
const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { refetchFulfillment } from "../../helpers"
import { HttpTypes } from "@medusajs/framework/types"

export const POST = async (
req: AuthenticatedMedusaRequest<{}, HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminFulfillmentResponse>
) => {
const { id } = req.params
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { HttpTypes } from "@medusajs/framework/types"
import { refetchInventoryItem } from "../../../helpers"

export const DELETE = async (
req: MedusaRequest<{}, HttpTypes.SelectParams>,
req: MedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminInventoryLevelDeleteResponse>
) => {
const { id, location_id } = req.params
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { refetchInventoryItem } from "../helpers"
import { HttpTypes } from "@medusajs/framework/types"

export const GET = async (
req: MedusaRequest<HttpTypes.SelectParams>,
req: MedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminInventoryItemResponse>
) => {
const { id } = req.params
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { refetchInvite } from "../../helpers"
import { HttpTypes } from "@medusajs/framework/types"

export const POST = async (
req: MedusaRequest<{}, HttpTypes.SelectParams>,
req: MedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminInviteResponse>
) => {
const workflow = refreshInviteTokensWorkflow(req.scope)
Expand Down
2 changes: 1 addition & 1 deletion packages/medusa/src/api/admin/invites/[id]/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { refetchInvite } from "../helpers"
import { HttpTypes } from "@medusajs/framework/types"

export const GET = async (
req: AuthenticatedMedusaRequest<HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminInviteResponse>
) => {
const { id } = req.params
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { remapKeysForProduct, remapProductResponse } from "../../../helpers"
import { AdditionalData, HttpTypes } from "@medusajs/framework/types"

export const GET = async (
req: AuthenticatedMedusaRequest<HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminProductOptionResponse>
) => {
const productId = req.params.id
Expand Down Expand Up @@ -57,7 +57,7 @@ export const POST = async (
}

export const DELETE = async (
req: AuthenticatedMedusaRequest<{}, HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminProductOptionDeleteResponse>
) => {
const productId = req.params.id
Expand Down
2 changes: 1 addition & 1 deletion packages/medusa/src/api/admin/products/[id]/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { AdditionalData, HttpTypes } from "@medusajs/framework/types"
import { refetchEntity } from "@medusajs/framework/http"

export const GET = async (
req: AuthenticatedMedusaRequest<HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminProductResponse>
) => {
const selectFields = remapKeysForProduct(req.queryConfig.fields ?? [])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export const POST = async (
}

export const DELETE = async (
req: AuthenticatedMedusaRequest<{}, HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminProductVariantInventoryLinkDeleteResponse>
) => {
const variantId = req.params.variant_id
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import {
} from "../../../helpers"

export const GET = async (
req: AuthenticatedMedusaRequest<HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminProductVariantResponse>
) => {
const productId = req.params.id
Expand Down Expand Up @@ -64,7 +64,7 @@ export const POST = async (
}

export const DELETE = async (
req: AuthenticatedMedusaRequest<{}, HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminProductVariantDeleteResponse>
) => {
const productId = req.params.id
Expand Down
2 changes: 1 addition & 1 deletion packages/medusa/src/api/admin/returns/[id]/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {
import { HttpTypes } from "@medusajs/framework/types"

export const GET = async (
req: AuthenticatedMedusaRequest<HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminReturnResponse>
) => {
const { id } = req.params
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { refetchSalesChannel } from "../helpers"
import { HttpTypes } from "@medusajs/framework/types"

export const GET = async (
req: AuthenticatedMedusaRequest<HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminSalesChannelResponse>
) => {
const salesChannel = await refetchSalesChannel(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { refetchShippingOption } from "../helpers"
import { MedusaError } from "@medusajs/framework/utils"

export const GET = async (
req: AuthenticatedMedusaRequest<HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminShippingOptionResponse>
) => {
const shippingOption = await refetchShippingOption(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {
import { refetchShippingProfile } from "../helpers"

export const GET = async (
req: AuthenticatedMedusaRequest<HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminShippingProfileResponse>
) => {
const shippingProfile = await refetchShippingProfile(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { refetchTaxRate } from "../../../helpers"
import { HttpTypes } from "@medusajs/framework/types"

export const DELETE = async (
req: AuthenticatedMedusaRequest<{}, HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminTaxRateRuleDeleteResponse>
) => {
await deleteTaxRateRulesWorkflow(req.scope).run({
Expand Down
2 changes: 1 addition & 1 deletion packages/medusa/src/api/admin/uploads/[id]/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {
} from "@medusajs/framework/utils"

export const GET = async (
req: AuthenticatedMedusaRequest<HttpTypes.SelectParams>,
req: AuthenticatedMedusaRequest<undefined, HttpTypes.SelectParams>,
res: MedusaResponse<HttpTypes.AdminFileResponse>
) => {
const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY)
Expand Down
Loading
Loading