diff --git a/.changeset/empty-peaches-crash.md b/.changeset/empty-peaches-crash.md new file mode 100644 index 0000000000..5efaad512f --- /dev/null +++ b/.changeset/empty-peaches-crash.md @@ -0,0 +1,6 @@ +--- +"@medusajs/types": patch +"@medusajs/medusa": patch +--- + +chore(types,medusa): clean up HTTP and request type arguments diff --git a/packages/core/types/src/http/product/admin/payloads.ts b/packages/core/types/src/http/product/admin/payloads.ts index 578d62fa7f..1867e6dda8 100644 --- a/packages/core/types/src/http/product/admin/payloads.ts +++ b/packages/core/types/src/http/product/admin/payloads.ts @@ -404,6 +404,11 @@ export interface AdminUpdateProduct { * The product's images. */ images?: { + /** + * The ID of the image to update + * or set for existing images. + */ + id?: string /** * The image's URL. */ @@ -532,6 +537,12 @@ export interface AdminUpdateProductOption { values?: string[] } +/** + * @privateRemarks + * These types don't match the validators, however, they're used by the admin + * dashboard. We should update the admin dashboard to use different types that it + * needs instead. + */ interface AdminCreateProductVariantInventoryItem { /** * The number of units a single quantity is equivalent to. For example, if a customer orders one quantity of the variant, Medusa checks the availability of the quantity multiplied by the @@ -548,6 +559,12 @@ interface AdminCreateProductVariantInventoryItem { variant_id: string } +/** + * @privateRemarks + * These types don't match the validators, however, they're used by the admin + * dashboard. We should update the admin dashboard to use different types that it + * needs instead. + */ interface AdminUpdateProductVariantInventoryItem { /** * The number of units a single quantity is equivalent to. For example, if a customer orders one quantity of the variant, Medusa checks the availability of the quantity multiplied by the diff --git a/packages/core/types/src/http/product/admin/queries.ts b/packages/core/types/src/http/product/admin/queries.ts index ab7520ff99..db6f8b7566 100644 --- a/packages/core/types/src/http/product/admin/queries.ts +++ b/packages/core/types/src/http/product/admin/queries.ts @@ -60,3 +60,16 @@ export interface AdminProductListParams */ variants?: Omit } + +export interface AdminProductExportParams extends Omit { + tags?: { + id?: string[] + } + variants?: { + options?: { + value?: string + option_id?: string + option?: Record + } + } +} \ No newline at end of file diff --git a/packages/medusa/src/api/admin/collections/[id]/products/route.ts b/packages/medusa/src/api/admin/collections/[id]/products/route.ts index 0c0645f7af..3b27820712 100644 --- a/packages/medusa/src/api/admin/collections/[id]/products/route.ts +++ b/packages/medusa/src/api/admin/collections/[id]/products/route.ts @@ -1,5 +1,5 @@ import { batchLinkProductsToCollectionWorkflow } from "@medusajs/core-flows" -import { HttpTypes, LinkMethodRequest } from "@medusajs/framework/types" +import { HttpTypes } from "@medusajs/framework/types" import { AuthenticatedMedusaRequest, MedusaResponse, @@ -7,7 +7,10 @@ import { import { refetchCollection } from "../../helpers" export const POST = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest< + HttpTypes.AdminBatchLink, + HttpTypes.AdminCollectionParams + >, res: MedusaResponse ) => { const id = req.params.id diff --git a/packages/medusa/src/api/admin/collections/[id]/route.ts b/packages/medusa/src/api/admin/collections/[id]/route.ts index b9b0eede8e..fff8f4570a 100644 --- a/packages/medusa/src/api/admin/collections/[id]/route.ts +++ b/packages/medusa/src/api/admin/collections/[id]/route.ts @@ -13,7 +13,7 @@ import { refetchCollection } from "../helpers" import { AdminUpdateCollectionType } from "../validators" export const GET = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest, res: MedusaResponse ) => { const collection = await refetchCollection( @@ -26,7 +26,10 @@ export const GET = async ( } export const POST = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest< + AdminUpdateCollectionType & AdditionalData, + HttpTypes.AdminCollectionParams + >, res: MedusaResponse ) => { const existingCollection = await refetchCollection(req.params.id, req.scope, [ diff --git a/packages/medusa/src/api/admin/collections/route.ts b/packages/medusa/src/api/admin/collections/route.ts index 8279402bec..6aef2da7bb 100644 --- a/packages/medusa/src/api/admin/collections/route.ts +++ b/packages/medusa/src/api/admin/collections/route.ts @@ -37,7 +37,10 @@ export const GET = async ( } export const POST = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest< + AdminCreateCollectionType & AdditionalData, + HttpTypes.AdminCollectionParams + >, res: MedusaResponse ) => { const { additional_data, ...rest } = req.validatedBody diff --git a/packages/medusa/src/api/admin/product-categories/[id]/products/route.ts b/packages/medusa/src/api/admin/product-categories/[id]/products/route.ts index 774eff6243..6966fe578c 100644 --- a/packages/medusa/src/api/admin/product-categories/[id]/products/route.ts +++ b/packages/medusa/src/api/admin/product-categories/[id]/products/route.ts @@ -1,7 +1,7 @@ import { batchLinkProductsToCategoryWorkflow } from "@medusajs/core-flows" import { AdminProductCategoryResponse, - LinkMethodRequest, + HttpTypes, } from "@medusajs/framework/types" import { AuthenticatedMedusaRequest, @@ -10,7 +10,10 @@ import { } from "@medusajs/framework/http" export const POST = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest< + HttpTypes.AdminBatchLink, + HttpTypes.AdminProductCategoryParams + >, res: MedusaResponse ) => { const { id } = req.params diff --git a/packages/medusa/src/api/admin/product-categories/[id]/route.ts b/packages/medusa/src/api/admin/product-categories/[id]/route.ts index 4c7f8122be..95ef5e3db2 100644 --- a/packages/medusa/src/api/admin/product-categories/[id]/route.ts +++ b/packages/medusa/src/api/admin/product-categories/[id]/route.ts @@ -11,14 +11,12 @@ import { MedusaResponse, refetchEntities, } from "@medusajs/framework/http" -import { - AdminProductCategoryParamsType, - AdminUpdateProductCategoryType, -} from "../validators" import { MedusaError } from "@medusajs/framework/utils" export const GET = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest< + HttpTypes.AdminProductCategoryListParams + >, res: MedusaResponse ) => { const { @@ -42,7 +40,10 @@ export const GET = async ( } export const POST = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest< + HttpTypes.AdminUpdateProductCategory, + HttpTypes.AdminProductCategoryParams + >, res: MedusaResponse ) => { const { id } = req.params diff --git a/packages/medusa/src/api/admin/product-categories/route.ts b/packages/medusa/src/api/admin/product-categories/route.ts index 1f90757f4a..f644840e21 100644 --- a/packages/medusa/src/api/admin/product-categories/route.ts +++ b/packages/medusa/src/api/admin/product-categories/route.ts @@ -27,7 +27,10 @@ export const GET = async ( } export const POST = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest< + HttpTypes.AdminCreateProductCategory, + HttpTypes.AdminProductCategoryParams + >, res: MedusaResponse ) => { const { result } = await createProductCategoriesWorkflow(req.scope).run({ diff --git a/packages/medusa/src/api/admin/product-tags/[id]/route.ts b/packages/medusa/src/api/admin/product-tags/[id]/route.ts index d264c08010..f8a6ae531d 100644 --- a/packages/medusa/src/api/admin/product-tags/[id]/route.ts +++ b/packages/medusa/src/api/admin/product-tags/[id]/route.ts @@ -7,16 +7,13 @@ import { MedusaResponse, refetchEntity, } from "@medusajs/framework/http" - -import { - AdminGetProductTagParamsType, - AdminUpdateProductTagType, -} from "../validators" import { HttpTypes } from "@medusajs/framework/types" import { MedusaError } from "@medusajs/framework/utils" export const GET = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest< + HttpTypes.AdminProductTagParams + >, res: MedusaResponse ) => { const productTag = await refetchEntity({ @@ -30,7 +27,10 @@ export const GET = async ( } export const POST = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest< + HttpTypes.AdminUpdateProductTag, + HttpTypes.AdminProductTagParams + >, res: MedusaResponse ) => { const existingProductTag = await refetchEntity({ diff --git a/packages/medusa/src/api/admin/product-tags/route.ts b/packages/medusa/src/api/admin/product-tags/route.ts index 1caaafae60..c71342cf0f 100644 --- a/packages/medusa/src/api/admin/product-tags/route.ts +++ b/packages/medusa/src/api/admin/product-tags/route.ts @@ -29,7 +29,10 @@ export const GET = async ( } export const POST = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest< + HttpTypes.AdminCreateProductTag, + HttpTypes.AdminProductTagParams + >, res: MedusaResponse ) => { const input = [req.validatedBody] diff --git a/packages/medusa/src/api/admin/product-types/[id]/route.ts b/packages/medusa/src/api/admin/product-types/[id]/route.ts index ef96996533..feebe40c3e 100644 --- a/packages/medusa/src/api/admin/product-types/[id]/route.ts +++ b/packages/medusa/src/api/admin/product-types/[id]/route.ts @@ -8,15 +8,13 @@ import { } from "@medusajs/framework/http" import { refetchProductType } from "../helpers" -import { - AdminGetProductTypeParamsType, - AdminUpdateProductTypeType, -} from "../validators" import { HttpTypes } from "@medusajs/framework/types" import { MedusaError } from "@medusajs/framework/utils" export const GET = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest< + HttpTypes.AdminProductTypeParams + >, res: MedusaResponse ) => { const productType = await refetchProductType( @@ -29,7 +27,10 @@ export const GET = async ( } export const POST = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest< + HttpTypes.AdminUpdateProductType, + HttpTypes.AdminProductTypeParams + >, res: MedusaResponse ) => { const existingProductType = await refetchProductType( diff --git a/packages/medusa/src/api/admin/product-types/route.ts b/packages/medusa/src/api/admin/product-types/route.ts index 000651398c..ca26e43738 100644 --- a/packages/medusa/src/api/admin/product-types/route.ts +++ b/packages/medusa/src/api/admin/product-types/route.ts @@ -36,7 +36,10 @@ export const GET = async ( } export const POST = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest< + HttpTypes.AdminCreateProductType, + HttpTypes.AdminProductTypeParams + >, res: MedusaResponse ) => { const input = [req.validatedBody] diff --git a/packages/medusa/src/api/admin/products/[id]/options/[option_id]/route.ts b/packages/medusa/src/api/admin/products/[id]/options/[option_id]/route.ts index acfb3cbc24..ea893302b3 100644 --- a/packages/medusa/src/api/admin/products/[id]/options/[option_id]/route.ts +++ b/packages/medusa/src/api/admin/products/[id]/options/[option_id]/route.ts @@ -12,7 +12,7 @@ import { remapKeysForProduct, remapProductResponse } from "../../../helpers" import { AdditionalData, HttpTypes } from "@medusajs/framework/types" export const GET = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest, res: MedusaResponse ) => { const productId = req.params.id @@ -29,7 +29,8 @@ export const GET = async ( export const POST = async ( req: AuthenticatedMedusaRequest< - HttpTypes.AdminUpdateProductOption & AdditionalData + HttpTypes.AdminUpdateProductOption & AdditionalData, + HttpTypes.SelectParams >, res: MedusaResponse ) => { @@ -56,7 +57,7 @@ export const POST = async ( } export const DELETE = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest<{}, HttpTypes.SelectParams>, res: MedusaResponse ) => { const productId = req.params.id diff --git a/packages/medusa/src/api/admin/products/[id]/options/route.ts b/packages/medusa/src/api/admin/products/[id]/options/route.ts index f0ff19de0b..102f2f4e80 100644 --- a/packages/medusa/src/api/admin/products/[id]/options/route.ts +++ b/packages/medusa/src/api/admin/products/[id]/options/route.ts @@ -32,7 +32,8 @@ export const GET = async ( export const POST = async ( req: AuthenticatedMedusaRequest< - HttpTypes.AdminCreateProductOption & AdditionalData + HttpTypes.AdminCreateProductOption & AdditionalData, + HttpTypes.SelectParams >, res: MedusaResponse ) => { diff --git a/packages/medusa/src/api/admin/products/[id]/route.ts b/packages/medusa/src/api/admin/products/[id]/route.ts index c7afa11410..e277df2a08 100644 --- a/packages/medusa/src/api/admin/products/[id]/route.ts +++ b/packages/medusa/src/api/admin/products/[id]/route.ts @@ -12,7 +12,7 @@ import { AdditionalData, HttpTypes } from "@medusajs/framework/types" import { refetchEntity } from "@medusajs/framework/http" export const GET = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest, res: MedusaResponse ) => { const selectFields = remapKeysForProduct(req.queryConfig.fields ?? []) @@ -32,7 +32,8 @@ export const GET = async ( export const POST = async ( req: AuthenticatedMedusaRequest< - HttpTypes.AdminUpdateProduct & AdditionalData + HttpTypes.AdminUpdateProduct & AdditionalData, + HttpTypes.SelectParams >, res: MedusaResponse ) => { diff --git a/packages/medusa/src/api/admin/products/[id]/variants/[variant_id]/inventory-items/[inventory_item_id]/route.ts b/packages/medusa/src/api/admin/products/[id]/variants/[variant_id]/inventory-items/[inventory_item_id]/route.ts index a6ef34c1a4..757c28672a 100644 --- a/packages/medusa/src/api/admin/products/[id]/variants/[variant_id]/inventory-items/[inventory_item_id]/route.ts +++ b/packages/medusa/src/api/admin/products/[id]/variants/[variant_id]/inventory-items/[inventory_item_id]/route.ts @@ -9,7 +9,10 @@ import { AdminUpdateVariantInventoryItemType } from "../../../../../validators" import { HttpTypes } from "@medusajs/framework/types" export const POST = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest< + AdminUpdateVariantInventoryItemType, + HttpTypes.SelectParams + >, res: MedusaResponse ) => { const variantId = req.params.variant_id @@ -35,7 +38,7 @@ export const POST = async ( } export const DELETE = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest<{}, HttpTypes.SelectParams>, res: MedusaResponse ) => { const variantId = req.params.variant_id diff --git a/packages/medusa/src/api/admin/products/[id]/variants/[variant_id]/inventory-items/route.ts b/packages/medusa/src/api/admin/products/[id]/variants/[variant_id]/inventory-items/route.ts index ceea06f689..56621cab5a 100644 --- a/packages/medusa/src/api/admin/products/[id]/variants/[variant_id]/inventory-items/route.ts +++ b/packages/medusa/src/api/admin/products/[id]/variants/[variant_id]/inventory-items/route.ts @@ -9,7 +9,10 @@ import { AdminCreateVariantInventoryItemType } from "../../../../validators" import { HttpTypes } from "@medusajs/framework/types" export const POST = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest< + AdminCreateVariantInventoryItemType, + HttpTypes.SelectParams + >, res: MedusaResponse ) => { const variantId = req.params.variant_id diff --git a/packages/medusa/src/api/admin/products/[id]/variants/[variant_id]/route.ts b/packages/medusa/src/api/admin/products/[id]/variants/[variant_id]/route.ts index a4f9ac399b..c4a33feadd 100644 --- a/packages/medusa/src/api/admin/products/[id]/variants/[variant_id]/route.ts +++ b/packages/medusa/src/api/admin/products/[id]/variants/[variant_id]/route.ts @@ -17,7 +17,7 @@ import { } from "../../../helpers" export const GET = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest, res: MedusaResponse ) => { const productId = req.params.id @@ -36,7 +36,8 @@ export const GET = async ( export const POST = async ( req: AuthenticatedMedusaRequest< - HttpTypes.AdminUpdateProductVariant & AdditionalData + HttpTypes.AdminUpdateProductVariant & AdditionalData, + HttpTypes.SelectParams >, res: MedusaResponse ) => { @@ -63,7 +64,7 @@ export const POST = async ( } export const DELETE = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest<{}, HttpTypes.SelectParams>, res: MedusaResponse ) => { const productId = req.params.id diff --git a/packages/medusa/src/api/admin/products/[id]/variants/batch/route.ts b/packages/medusa/src/api/admin/products/[id]/variants/batch/route.ts index 3c92c135b5..61e9493f39 100644 --- a/packages/medusa/src/api/admin/products/[id]/variants/batch/route.ts +++ b/packages/medusa/src/api/admin/products/[id]/variants/batch/route.ts @@ -7,7 +7,10 @@ import { refetchBatchVariants, remapVariantResponse } from "../../../helpers" import { HttpTypes } from "@medusajs/framework/types" export const POST = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest< + HttpTypes.AdminBatchProductVariantRequest, + HttpTypes.SelectParams + >, res: MedusaResponse ) => { const productId = req.params.id diff --git a/packages/medusa/src/api/admin/products/[id]/variants/route.ts b/packages/medusa/src/api/admin/products/[id]/variants/route.ts index e2411f74a4..e75efa9a21 100644 --- a/packages/medusa/src/api/admin/products/[id]/variants/route.ts +++ b/packages/medusa/src/api/admin/products/[id]/variants/route.ts @@ -51,7 +51,8 @@ export const GET = async ( export const POST = async ( req: AuthenticatedMedusaRequest< - HttpTypes.AdminCreateProductVariant & AdditionalData + HttpTypes.AdminCreateProductVariant & AdditionalData, + HttpTypes.SelectParams >, res: MedusaResponse ) => { diff --git a/packages/medusa/src/api/admin/products/batch/route.ts b/packages/medusa/src/api/admin/products/batch/route.ts index 7067463373..fda6d7739d 100644 --- a/packages/medusa/src/api/admin/products/batch/route.ts +++ b/packages/medusa/src/api/admin/products/batch/route.ts @@ -7,7 +7,10 @@ import { refetchBatchProducts, remapProductResponse } from "../helpers" import { HttpTypes } from "@medusajs/framework/types" export const POST = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest< + HttpTypes.AdminBatchProductRequest, + HttpTypes.SelectParams + >, res: MedusaResponse ) => { const { result } = await batchProductsWorkflow(req.scope).run({ diff --git a/packages/medusa/src/api/admin/products/export/route.ts b/packages/medusa/src/api/admin/products/export/route.ts index e245649eed..ae10e67691 100644 --- a/packages/medusa/src/api/admin/products/export/route.ts +++ b/packages/medusa/src/api/admin/products/export/route.ts @@ -7,7 +7,7 @@ import { remapKeysForProduct } from "../helpers" import { exportProductsWorkflow } from "@medusajs/core-flows" export const POST = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest<{}, HttpTypes.AdminProductExportParams>, res: MedusaResponse ) => { const selectFields = remapKeysForProduct(req.queryConfig.fields ?? []) diff --git a/packages/medusa/src/api/admin/products/route.ts b/packages/medusa/src/api/admin/products/route.ts index 127f79d299..9011a751c8 100644 --- a/packages/medusa/src/api/admin/products/route.ts +++ b/packages/medusa/src/api/admin/products/route.ts @@ -93,7 +93,8 @@ async function getProductsWithIndexEngine( export const POST = async ( req: AuthenticatedMedusaRequest< - HttpTypes.AdminCreateProduct & AdditionalData + HttpTypes.AdminCreateProduct & AdditionalData, + HttpTypes.SelectParams >, res: MedusaResponse ) => { diff --git a/packages/medusa/src/api/store/collections/[id]/route.ts b/packages/medusa/src/api/store/collections/[id]/route.ts index c8ace04efc..1ed26a7f16 100644 --- a/packages/medusa/src/api/store/collections/[id]/route.ts +++ b/packages/medusa/src/api/store/collections/[id]/route.ts @@ -6,7 +6,7 @@ import { import { refetchCollection } from "../helpers" export const GET = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest, res: MedusaResponse ) => { const collection = await refetchCollection(