@reactionary/medusa 0.8.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,71 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __decorateClass = (decorators, target, key, kind) => {
4
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
5
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
6
+ if (decorator = decorators[i])
7
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
8
+ if (kind && result)
9
+ __defProp(target, key, result);
10
+ return result;
11
+ };
12
+ import {
13
+ PersonalizationProfileCapability,
14
+ PersonalizationProfileSchema,
15
+ Reactionary,
16
+ PersonalizationProfileQueryGetProfileSchema,
17
+ success
18
+ } from "@reactionary/core";
19
+ import createDebug from "debug";
20
+ import { MedusaAdminAPI } from "../core/client.js";
21
+ const debug = createDebug("reactionary:medusa:personalization-profile");
22
+ class MedusaPersonalizationProfileCapability extends PersonalizationProfileCapability {
23
+ constructor(config, cache, context, medusaApi, factory) {
24
+ super(cache, context);
25
+ this.medusaApi = medusaApi;
26
+ this.config = config;
27
+ this.factory = factory;
28
+ }
29
+ config;
30
+ factory;
31
+ filterGroup(_group) {
32
+ return true;
33
+ }
34
+ async getPersonalizationProfile(payload) {
35
+ const identity = payload.identity;
36
+ debug("getPersonalizationProfile", payload);
37
+ if (identity.type !== "Registered") {
38
+ return success(
39
+ this.factory.parsePersonalizationProfile(this.context, {
40
+ customerId: "anonymous",
41
+ groups: []
42
+ })
43
+ );
44
+ }
45
+ const customerId = identity.id.userId;
46
+ const adminClient = await new MedusaAdminAPI(
47
+ this.config,
48
+ this.context
49
+ ).getClient();
50
+ const customerResponse = await adminClient.admin.customer.retrieve(
51
+ customerId,
52
+ { fields: "+groups,+groups.name" }
53
+ );
54
+ const customer = customerResponse.customer;
55
+ const groups = (customer["groups"] ?? []).filter((g) => this.filterGroup(g));
56
+ const model = this.factory.parsePersonalizationProfile(this.context, {
57
+ customerId,
58
+ groups
59
+ });
60
+ return success(model);
61
+ }
62
+ }
63
+ __decorateClass([
64
+ Reactionary({
65
+ inputSchema: PersonalizationProfileQueryGetProfileSchema,
66
+ outputSchema: PersonalizationProfileSchema
67
+ })
68
+ ], MedusaPersonalizationProfileCapability.prototype, "getPersonalizationProfile", 1);
69
+ export {
70
+ MedusaPersonalizationProfileCapability
71
+ };
package/core/client.js CHANGED
@@ -73,7 +73,7 @@ class MedusaAdminAPI {
73
73
  this.client = new Medusa({
74
74
  baseUrl: this.config.apiUrl,
75
75
  apiKey: this.config.adminApiKey,
76
- debug: true,
76
+ debug: false,
77
77
  globalHeaders: {
78
78
  "x-medusa-locale": this.context.languageContext.locale
79
79
  }
@@ -212,7 +212,7 @@ class MedusaAPI {
212
212
  const authenticatedClient = new Medusa({
213
213
  baseUrl: this.config.apiUrl,
214
214
  publishableKey: this.config.publishable_key,
215
- debug: true,
215
+ debug: false,
216
216
  globalHeaders: {
217
217
  "x-medusa-locale": this.context.languageContext.locale
218
218
  },
@@ -14,6 +14,7 @@ import {
14
14
  ProductSchema,
15
15
  ProductSearchResultSchema,
16
16
  ProfileSchema,
17
+ PersonalizationProfileSchema,
17
18
  ShippingMethodSchema
18
19
  } from "@reactionary/core";
19
20
  import { MedusaCartCapability } from "../capabilities/cart.capability.js";
@@ -29,6 +30,7 @@ import { MedusaProductRecommendationsCapability } from "../capabilities/product-
29
30
  import { MedusaProductCapability } from "../capabilities/product.capability.js";
30
31
  import { MedusaProductAssociationsCapability } from "../capabilities/product-associations.capability.js";
31
32
  import { MedusaProfileCapability } from "../capabilities/profile.capability.js";
33
+ import { MedusaPersonalizationProfileCapability } from "../capabilities/personalization-profile.capability.js";
32
34
  import {
33
35
  MedusaCapabilitiesSchema
34
36
  } from "../schema/capabilities.schema.js";
@@ -47,7 +49,8 @@ import {
47
49
  MedusaProductAssociationsFactory,
48
50
  MedusaProductFactory,
49
51
  MedusaProductSearchFactory,
50
- MedusaProfileFactory
52
+ MedusaProfileFactory,
53
+ MedusaPersonalizationProfileFactory
51
54
  } from "../factories/index.js";
52
55
  import {
53
56
  resolveCapabilityWithFactory,
@@ -287,6 +290,22 @@ function withMedusaCapabilities(configuration, capabilities) {
287
290
  buildCapabilityArgs
288
291
  );
289
292
  }
293
+ if (caps.personalizationProfile?.enabled) {
294
+ client.personalizationProfile = resolveCapabilityWithFactory(
295
+ capabilities.personalizationProfile,
296
+ {
297
+ factory: new MedusaPersonalizationProfileFactory(PersonalizationProfileSchema),
298
+ capability: (args) => new MedusaPersonalizationProfileCapability(
299
+ args.config,
300
+ args.cache,
301
+ args.context,
302
+ args.medusaApi,
303
+ args.factory
304
+ )
305
+ },
306
+ buildCapabilityArgs
307
+ );
308
+ }
290
309
  return client;
291
310
  };
292
311
  }
@@ -10,3 +10,4 @@ export * from "./product/product.factory.js";
10
10
  export * from "./product-associations/product-associations.factory.js";
11
11
  export * from "./product-search/product-search.factory.js";
12
12
  export * from "./profile/profile.factory.js";
13
+ export * from "./personalization-profile/personalization-profile.factory.js";
@@ -0,0 +1,16 @@
1
+ class MedusaPersonalizationProfileFactory {
2
+ personalizationProfileSchema;
3
+ constructor(personalizationProfileSchema) {
4
+ this.personalizationProfileSchema = personalizationProfileSchema;
5
+ }
6
+ parsePersonalizationProfile(_context, data) {
7
+ return this.personalizationProfileSchema.parse({
8
+ identifier: { key: data.customerId },
9
+ segments: data.groups.map((g) => g.name),
10
+ blurb: ""
11
+ });
12
+ }
13
+ }
14
+ export {
15
+ MedusaPersonalizationProfileFactory
16
+ };
package/index.js CHANGED
@@ -18,3 +18,4 @@ export * from "./capabilities/profile.capability.js";
18
18
  export * from "./capabilities/category.capability.js";
19
19
  export * from "./capabilities/checkout.capability.js";
20
20
  export * from "./capabilities/product.capability.js";
21
+ export * from "./capabilities/personalization-profile.capability.js";
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@reactionary/medusa",
3
- "version": "0.8.0",
3
+ "version": "0.9.1",
4
4
  "type": "module",
5
5
  "main": "./index.js",
6
6
  "types": "./src/index.d.ts",
7
7
  "dependencies": {
8
8
  "@medusajs/js-sdk": "^2.13.3",
9
- "@reactionary/core": "0.8.0",
9
+ "@reactionary/core": "0.9.1",
10
10
  "debug": "^4.4.3",
11
11
  "@medusajs/types": "^2.13.3",
12
12
  "zod": "4.1.9",
@@ -22,7 +22,8 @@ const MedusaCapabilitiesSchema = CapabilitiesSchema.pick({
22
22
  inventory: true,
23
23
  identity: true,
24
24
  profile: true,
25
- productAssociations: true
25
+ productAssociations: true,
26
+ personalizationProfile: true
26
27
  }).extend({
27
28
  product: OverridableCapabilitySchema.optional(),
28
29
  productSearch: OverridableCapabilitySchema.optional(),
@@ -36,7 +37,8 @@ const MedusaCapabilitiesSchema = CapabilitiesSchema.pick({
36
37
  identity: DirectCapabilitySchema.optional(),
37
38
  profile: OverridableCapabilitySchema.optional(),
38
39
  productAssociations: OverridableCapabilitySchema.optional(),
39
- productRecommendations: DirectCapabilitySchema.optional()
40
+ productRecommendations: DirectCapabilitySchema.optional(),
41
+ personalizationProfile: OverridableCapabilitySchema.optional()
40
42
  }).partial();
41
43
  export {
42
44
  MedusaCapabilitiesSchema
@@ -0,0 +1,13 @@
1
+ import type { Cache, PersonalizationProfileFactory, PersonalizationProfileFactoryOutput, PersonalizationProfileFactoryWithOutput, PersonalizationProfileQueryGetProfile, NotFoundError, RequestContext, Result } from '@reactionary/core';
2
+ import { PersonalizationProfileCapability } from '@reactionary/core';
3
+ import { type MedusaAPI } from '../core/client.js';
4
+ import type { MedusaPersonalizationProfileFactory, MedusaCustomerGroup } from '../factories/personalization-profile/personalization-profile.factory.js';
5
+ import type { MedusaConfiguration } from '../schema/configuration.schema.js';
6
+ export declare class MedusaPersonalizationProfileCapability<TFactory extends PersonalizationProfileFactory = MedusaPersonalizationProfileFactory> extends PersonalizationProfileCapability<PersonalizationProfileFactoryOutput<TFactory>> {
7
+ medusaApi: MedusaAPI;
8
+ protected config: MedusaConfiguration;
9
+ protected factory: PersonalizationProfileFactoryWithOutput<TFactory>;
10
+ constructor(config: MedusaConfiguration, cache: Cache, context: RequestContext, medusaApi: MedusaAPI, factory: PersonalizationProfileFactoryWithOutput<TFactory>);
11
+ protected filterGroup(_group: MedusaCustomerGroup): boolean;
12
+ getPersonalizationProfile(payload: PersonalizationProfileQueryGetProfile): Promise<Result<PersonalizationProfileFactoryOutput<TFactory>, NotFoundError>>;
13
+ }
@@ -1,4 +1,4 @@
1
- import type { CartFactory, CategoryFactory, CheckoutFactory, ClientFromCapabilities, InventoryFactory, OrderFactory, OrderSearchFactory, PriceFactory, ProductAssociationsFactory, ProductFactory, ProductSearchFactory, ProfileFactory } from '@reactionary/core';
1
+ import type { CartFactory, CategoryFactory, CheckoutFactory, ClientFromCapabilities, InventoryFactory, PersonalizationProfileFactory, OrderFactory, OrderSearchFactory, PriceFactory, ProductAssociationsFactory, ProductFactory, ProductSearchFactory, ProfileFactory } from '@reactionary/core';
2
2
  import type { MedusaCapabilities } from '../schema/capabilities.schema.js';
3
3
  import type { MedusaCartFactory } from '../factories/cart/cart.factory.js';
4
4
  import type { MedusaCategoryFactory } from '../factories/category/category.factory.js';
@@ -11,6 +11,7 @@ import type { MedusaProductAssociationsFactory } from '../factories/product-asso
11
11
  import type { MedusaProductFactory } from '../factories/product/product.factory.js';
12
12
  import type { MedusaProductSearchFactory } from '../factories/product-search/product-search.factory.js';
13
13
  import type { MedusaProfileFactory } from '../factories/profile/profile.factory.js';
14
+ import type { MedusaPersonalizationProfileFactory } from '../factories/personalization-profile/personalization-profile.factory.js';
14
15
  import type { MedusaCartCapability } from '../capabilities/cart.capability.js';
15
16
  import type { MedusaCategoryCapability } from '../capabilities/category.capability.js';
16
17
  import type { MedusaCheckoutCapability } from '../capabilities/checkout.capability.js';
@@ -22,9 +23,10 @@ import type { MedusaProductAssociationsCapability } from '../capabilities/produc
22
23
  import type { MedusaProductCapability } from '../capabilities/product.capability.js';
23
24
  import type { MedusaProductSearchCapability } from '../capabilities/product-search.capability.js';
24
25
  import type { MedusaProfileCapability } from '../capabilities/profile.capability.js';
26
+ import type { MedusaPersonalizationProfileCapability } from '../capabilities/personalization-profile.capability.js';
25
27
  import type { MedusaProductRecommendationsCapability } from '../capabilities/product-recommendations.capability.js';
26
28
  import type { MedusaIdentityCapability } from '../capabilities/identity.capability.js';
27
- type OverridableCapabilityKey = 'product' | 'productSearch' | 'cart' | 'checkout' | 'category' | 'price' | 'order' | 'orderSearch' | 'inventory' | 'profile' | 'productAssociations';
29
+ type OverridableCapabilityKey = 'product' | 'productSearch' | 'cart' | 'checkout' | 'category' | 'price' | 'order' | 'orderSearch' | 'inventory' | 'profile' | 'productAssociations' | 'personalizationProfile';
28
30
  type EnabledCapability<TCapability> = TCapability extends {
29
31
  enabled: true;
30
32
  } ? true : false;
@@ -54,6 +56,7 @@ type FactoryContractMap = {
54
56
  inventory: InventoryFactory;
55
57
  profile: ProfileFactory;
56
58
  productAssociations: ProductAssociationsFactory;
59
+ personalizationProfile: PersonalizationProfileFactory;
57
60
  };
58
61
  type DefaultFactoryMap = {
59
62
  product: MedusaProductFactory;
@@ -67,6 +70,7 @@ type DefaultFactoryMap = {
67
70
  inventory: MedusaInventoryFactory;
68
71
  profile: MedusaProfileFactory;
69
72
  productAssociations: MedusaProductAssociationsFactory;
73
+ personalizationProfile: MedusaPersonalizationProfileFactory;
70
74
  };
71
75
  type ResolvedFactoryMap<T extends MedusaCapabilities> = {
72
76
  [K in OverridableCapabilityKey]: ExtractCapabilityFactory<T[K], FactoryContractMap[K], DefaultFactoryMap[K]>;
@@ -83,6 +87,7 @@ type DefaultCapabilityMap<T extends MedusaCapabilities> = {
83
87
  inventory: MedusaInventoryCapability<ResolvedFactoryMap<T>['inventory']>;
84
88
  profile: MedusaProfileCapability<ResolvedFactoryMap<T>['profile']>;
85
89
  productAssociations: MedusaProductAssociationsCapability<ResolvedFactoryMap<T>['productAssociations']>;
90
+ personalizationProfile: MedusaPersonalizationProfileCapability<ResolvedFactoryMap<T>['personalizationProfile']>;
86
91
  identity: MedusaIdentityCapability;
87
92
  productRecommendations: MedusaProductRecommendationsCapability;
88
93
  };
@@ -10,3 +10,4 @@ export * from './product/product.factory.js';
10
10
  export * from './product-associations/product-associations.factory.js';
11
11
  export * from './product-search/product-search.factory.js';
12
12
  export * from './profile/profile.factory.js';
13
+ export * from './personalization-profile/personalization-profile.factory.js';
@@ -0,0 +1,14 @@
1
+ import type { AnyPersonalizationProfileSchema, PersonalizationProfileFactory, PersonalizationProfileSchema, RequestContext } from '@reactionary/core';
2
+ import type * as z from 'zod';
3
+ export interface MedusaCustomerGroup {
4
+ id: string;
5
+ name: string;
6
+ }
7
+ export declare class MedusaPersonalizationProfileFactory<TPersonalizationProfileSchema extends AnyPersonalizationProfileSchema = typeof PersonalizationProfileSchema> implements PersonalizationProfileFactory<TPersonalizationProfileSchema> {
8
+ readonly personalizationProfileSchema: TPersonalizationProfileSchema;
9
+ constructor(personalizationProfileSchema: TPersonalizationProfileSchema);
10
+ parsePersonalizationProfile(_context: RequestContext, data: {
11
+ customerId: string;
12
+ groups: MedusaCustomerGroup[];
13
+ }): z.output<TPersonalizationProfileSchema>;
14
+ }
package/src/index.d.ts CHANGED
@@ -18,3 +18,4 @@ export * from './capabilities/profile.capability.js';
18
18
  export * from './capabilities/category.capability.js';
19
19
  export * from './capabilities/checkout.capability.js';
20
20
  export * from './capabilities/product.capability.js';
21
+ export * from './capabilities/personalization-profile.capability.js';
@@ -1,4 +1,4 @@
1
- import type { CartFactory, CartFactoryWithOutput, CartCapability, CategoryFactory, CategoryFactoryWithOutput, CategoryCapability, CheckoutFactory, CheckoutFactoryWithOutput, CheckoutCapability, IdentityCapability, InventoryFactory, InventoryFactoryWithOutput, InventoryCapability, OrderFactory, OrderFactoryWithOutput, OrderCapability, OrderSearchFactory, OrderSearchFactoryWithOutput, OrderSearchCapability, PriceFactory, PriceFactoryWithOutput, PriceCapability, ProductAssociationsFactory, ProductAssociationsFactoryWithOutput, ProductAssociationsCapability, ProductFactory, ProductFactoryWithOutput, ProductCapability, ProductRecommendationsCapability, ProductSearchFactory, ProductSearchFactoryWithOutput, ProductSearchCapability, ProfileFactory, ProfileFactoryWithOutput, ProfileCapability, RequestContext, Cache } from '@reactionary/core';
1
+ import type { CartFactory, CartFactoryWithOutput, CartCapability, CategoryFactory, CategoryFactoryWithOutput, CategoryCapability, CheckoutFactory, CheckoutFactoryWithOutput, CheckoutCapability, IdentityCapability, InventoryFactory, InventoryFactoryWithOutput, InventoryCapability, PersonalizationProfileFactory, PersonalizationProfileFactoryWithOutput, PersonalizationProfileCapability, OrderFactory, OrderFactoryWithOutput, OrderCapability, OrderSearchFactory, OrderSearchFactoryWithOutput, OrderSearchCapability, PriceFactory, PriceFactoryWithOutput, PriceCapability, ProductAssociationsFactory, ProductAssociationsFactoryWithOutput, ProductAssociationsCapability, ProductFactory, ProductFactoryWithOutput, ProductCapability, ProductRecommendationsCapability, ProductSearchFactory, ProductSearchFactoryWithOutput, ProductSearchCapability, ProfileFactory, ProfileFactoryWithOutput, ProfileCapability, RequestContext, Cache } from '@reactionary/core';
2
2
  import type { MedusaConfiguration } from './configuration.schema.js';
3
3
  import type { MedusaAPI } from '../core/client.js';
4
4
  import * as z from 'zod';
@@ -66,6 +66,11 @@ export declare const MedusaCapabilitiesSchema: z.ZodObject<{
66
66
  enabled: z.ZodBoolean;
67
67
  capability: z.ZodOptional<z.ZodUnknown>;
68
68
  }, z.core.$loose>>>;
69
+ personalizationProfile: z.ZodOptional<z.ZodOptional<z.ZodObject<{
70
+ enabled: z.ZodBoolean;
71
+ factory: z.ZodOptional<z.ZodUnknown>;
72
+ capability: z.ZodOptional<z.ZodUnknown>;
73
+ }, z.core.$loose>>>;
69
74
  }, z.core.$loose>;
70
75
  export interface MedusaCapabilityFactoryArgs {
71
76
  cache: Cache;
@@ -97,8 +102,9 @@ export type MedusaInventoryCapabilityConfig = MedusaCapabilityConfig<InventoryFa
97
102
  export type MedusaIdentityCapabilityConfig = MedusaDirectCapabilityConfig<IdentityCapability>;
98
103
  export type MedusaProfileCapabilityConfig = MedusaCapabilityConfig<ProfileFactoryWithOutput<ProfileFactory>, ProfileCapability>;
99
104
  export type MedusaProductAssociationsCapabilityConfig = MedusaCapabilityConfig<ProductAssociationsFactoryWithOutput<ProductAssociationsFactory>, ProductAssociationsCapability>;
105
+ export type MedusaPersonalizationProfileCapabilityConfig = MedusaCapabilityConfig<PersonalizationProfileFactoryWithOutput<PersonalizationProfileFactory>, PersonalizationProfileCapability>;
100
106
  export type MedusaProductRecommendationsCapabilityConfig = MedusaDirectCapabilityConfig<ProductRecommendationsCapability>;
101
- export type MedusaCapabilities<TProductFactory extends ProductFactory = ProductFactory, TProductCapability extends ProductCapability = ProductCapability, TProductSearchFactory extends ProductSearchFactory = ProductSearchFactory, TProductSearchCapability extends ProductSearchCapability = ProductSearchCapability, TCartFactory extends CartFactory = CartFactory, TCartCapability extends CartCapability = CartCapability, TCheckoutFactory extends CheckoutFactory = CheckoutFactory, TCheckoutCapability extends CheckoutCapability = CheckoutCapability, TCategoryFactory extends CategoryFactory = CategoryFactory, TCategoryCapability extends CategoryCapability = CategoryCapability, TPriceFactory extends PriceFactory = PriceFactory, TPriceCapability extends PriceCapability = PriceCapability, TOrderFactory extends OrderFactory = OrderFactory, TOrderCapability extends OrderCapability = OrderCapability, TOrderSearchFactory extends OrderSearchFactory = OrderSearchFactory, TOrderSearchCapability extends OrderSearchCapability = OrderSearchCapability, TInventoryFactory extends InventoryFactory = InventoryFactory, TInventoryCapability extends InventoryCapability = InventoryCapability, TIdentityCapability extends IdentityCapability = IdentityCapability, TProfileFactory extends ProfileFactory = ProfileFactory, TProfileCapability extends ProfileCapability = ProfileCapability, TProductAssociationsFactory extends ProductAssociationsFactory = ProductAssociationsFactory, TProductAssociationsCapability extends ProductAssociationsCapability = ProductAssociationsCapability, TProductRecommendationsCapability extends ProductRecommendationsCapability = ProductRecommendationsCapability> = {
107
+ export type MedusaCapabilities<TProductFactory extends ProductFactory = ProductFactory, TProductCapability extends ProductCapability = ProductCapability, TProductSearchFactory extends ProductSearchFactory = ProductSearchFactory, TProductSearchCapability extends ProductSearchCapability = ProductSearchCapability, TCartFactory extends CartFactory = CartFactory, TCartCapability extends CartCapability = CartCapability, TCheckoutFactory extends CheckoutFactory = CheckoutFactory, TCheckoutCapability extends CheckoutCapability = CheckoutCapability, TCategoryFactory extends CategoryFactory = CategoryFactory, TCategoryCapability extends CategoryCapability = CategoryCapability, TPriceFactory extends PriceFactory = PriceFactory, TPriceCapability extends PriceCapability = PriceCapability, TOrderFactory extends OrderFactory = OrderFactory, TOrderCapability extends OrderCapability = OrderCapability, TOrderSearchFactory extends OrderSearchFactory = OrderSearchFactory, TOrderSearchCapability extends OrderSearchCapability = OrderSearchCapability, TInventoryFactory extends InventoryFactory = InventoryFactory, TInventoryCapability extends InventoryCapability = InventoryCapability, TIdentityCapability extends IdentityCapability = IdentityCapability, TProfileFactory extends ProfileFactory = ProfileFactory, TProfileCapability extends ProfileCapability = ProfileCapability, TProductAssociationsFactory extends ProductAssociationsFactory = ProductAssociationsFactory, TProductAssociationsCapability extends ProductAssociationsCapability = ProductAssociationsCapability, TProductRecommendationsCapability extends ProductRecommendationsCapability = ProductRecommendationsCapability, TPersonalizationProfileFactory extends PersonalizationProfileFactory = PersonalizationProfileFactory, TPersonalizationProfileCapability extends PersonalizationProfileCapability = PersonalizationProfileCapability> = {
102
108
  product?: MedusaCapabilityConfig<ProductFactoryWithOutput<TProductFactory>, TProductCapability>;
103
109
  productSearch?: MedusaCapabilityConfig<ProductSearchFactoryWithOutput<TProductSearchFactory>, TProductSearchCapability>;
104
110
  cart?: MedusaCapabilityConfig<CartFactoryWithOutput<TCartFactory>, TCartCapability>;
@@ -112,5 +118,6 @@ export type MedusaCapabilities<TProductFactory extends ProductFactory = ProductF
112
118
  profile?: MedusaCapabilityConfig<ProfileFactoryWithOutput<TProfileFactory>, TProfileCapability>;
113
119
  productAssociations?: MedusaCapabilityConfig<ProductAssociationsFactoryWithOutput<TProductAssociationsFactory>, TProductAssociationsCapability>;
114
120
  productRecommendations?: MedusaDirectCapabilityConfig<TProductRecommendationsCapability>;
121
+ personalizationProfile?: MedusaCapabilityConfig<PersonalizationProfileFactoryWithOutput<TPersonalizationProfileFactory>, TPersonalizationProfileCapability>;
115
122
  };
116
123
  export type ParsedMedusaCapabilities = z.infer<typeof MedusaCapabilitiesSchema>;