Skip to content
Open
Show file tree
Hide file tree
Changes from all 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
31 changes: 22 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,19 @@ 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 ? Record<string, any> : BodyOrQueryFields
> {
validatedBody: {} extends QueryFields
? Record<string, any>
: 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 +206,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 ? Record<string, any> : 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, any> = Record<string, any>
> 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