diff --git a/.changeset/lemon-bees-wave.md b/.changeset/lemon-bees-wave.md new file mode 100644 index 0000000000..31393aa2c7 --- /dev/null +++ b/.changeset/lemon-bees-wave.md @@ -0,0 +1,5 @@ +--- +"@medusajs/product": patch +--- + +fix: export ProductImage to allow for custom links to add alt text diff --git a/packages/core/utils/src/product/events.ts b/packages/core/utils/src/product/events.ts index 9921a2ff65..64c1ff2a39 100644 --- a/packages/core/utils/src/product/events.ts +++ b/packages/core/utils/src/product/events.ts @@ -9,7 +9,8 @@ const eventBaseNames: [ "productType", "productTag", "productCategory", - "productCollection" + "productCollection", + "productImage" ] = [ "product", "productVariant", @@ -19,6 +20,7 @@ const eventBaseNames: [ "productTag", "productCategory", "productCollection", + "productImage", ] export const ProductEvents = buildEventNamesFromEntityName( diff --git a/packages/modules/product/integration-tests/__tests__/product-module-service/products.spec.ts b/packages/modules/product/integration-tests/__tests__/product-module-service/products.spec.ts index e03b77b078..3b5f77e94f 100644 --- a/packages/modules/product/integration-tests/__tests__/product-module-service/products.spec.ts +++ b/packages/modules/product/integration-tests/__tests__/product-module-service/products.spec.ts @@ -1161,6 +1161,14 @@ moduleIntegrationTestRunner({ source: Modules.PRODUCT, action: CommonEvents.DELETED, }), + composeMessage(ProductEvents.PRODUCT_IMAGE_DELETED, { + data: { + id: [products[0].images[0].id], + }, + object: "product_image", + source: Modules.PRODUCT, + action: CommonEvents.DELETED, + }), composeMessage(ProductEvents.PRODUCT_OPTION_VALUE_DELETED, { data: { id: [products[0].options[0].values[0].id], diff --git a/packages/modules/product/integration-tests/__tests__/product.ts b/packages/modules/product/integration-tests/__tests__/product.ts index 0a6f1547a3..945dbb6c49 100644 --- a/packages/modules/product/integration-tests/__tests__/product.ts +++ b/packages/modules/product/integration-tests/__tests__/product.ts @@ -55,7 +55,7 @@ moduleIntegrationTestRunner({ service: ProductModuleService, }).linkable - expect(Object.keys(linkable)).toHaveLength(8) + expect(Object.keys(linkable)).toHaveLength(9) expect(Object.keys(linkable)).toEqual( expect.arrayContaining([ "product", @@ -66,6 +66,7 @@ moduleIntegrationTestRunner({ "productTag", "productCollection", "productCategory", + "productImage", ]) ) @@ -153,6 +154,15 @@ moduleIntegrationTestRunner({ field: "productCategory", }, }, + productImage: { + id: { + entity: "ProductImage", + field: "productImage", + linkable: "product_image_id", + primaryKey: "id", + serviceName: "product", + }, + }, }) }) diff --git a/packages/modules/product/src/joiner-config.ts b/packages/modules/product/src/joiner-config.ts index 92758d133d..09ed3f9682 100644 --- a/packages/modules/product/src/joiner-config.ts +++ b/packages/modules/product/src/joiner-config.ts @@ -3,6 +3,7 @@ import { Product, ProductCategory, ProductCollection, + ProductImage, ProductOption, ProductOptionValue, ProductTag, @@ -22,6 +23,7 @@ export const joinerConfig = defineJoinerConfig(Modules.PRODUCT, { ProductTag, ProductCollection, ProductCategory, + ProductImage, ], linkableKeys: { // Merged with the autogenerated ones to maintain backward compatibility diff --git a/packages/modules/product/src/services/product-module-service.ts b/packages/modules/product/src/services/product-module-service.ts index 211ad63131..036ebf3849 100644 --- a/packages/modules/product/src/services/product-module-service.ts +++ b/packages/modules/product/src/services/product-module-service.ts @@ -96,6 +96,9 @@ export default class ProductModuleService ProductVariant: { dto: ProductTypes.ProductVariantDTO } + ProductImage: { + dto: ProductTypes.ProductImageDTO + } }>({ Product, ProductCategory, @@ -105,6 +108,7 @@ export default class ProductModuleService ProductTag, ProductType, ProductVariant, + ProductImage, }) implements ProductTypes.IProductModuleService {