medusa-dynamic-metadata 0.0.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.
- package/.medusa/server/src/admin/index.js +1729 -0
- package/.medusa/server/src/admin/index.mjs +1730 -0
- package/.medusa/server/src/api/admin/metadata-config/route.js +22 -0
- package/.medusa/server/src/config/entity-registry.js +469 -0
- package/.medusa/server/src/config/metadata-options.js +83 -0
- package/.medusa/server/src/config/zone-resolver.js +418 -0
- package/.medusa/server/src/index.js +41 -0
- package/.medusa/server/src/shared/metadata/types.js +5 -0
- package/.medusa/server/src/shared/metadata/utils.js +153 -0
- package/README.md +292 -0
- package/package.json +71 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const metadata_options_1 = require("../../../config/metadata-options");
|
|
6
|
+
async function GET(req, res) {
|
|
7
|
+
const configModule = req.scope.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
|
|
8
|
+
const options = (0, metadata_options_1.resolveDynamicMetadataOptions)(configModule);
|
|
9
|
+
const entity = req.query?.entity || "products";
|
|
10
|
+
// Get metadata descriptors for the requested entity
|
|
11
|
+
const entityConfig = options.entities[entity];
|
|
12
|
+
if (!entityConfig) {
|
|
13
|
+
res.status(404).json({
|
|
14
|
+
message: `No metadata configuration found for entity type: ${entity}`,
|
|
15
|
+
});
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
res.json({
|
|
19
|
+
metadataDescriptors: entityConfig.descriptors,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL21ldGFkYXRhLWNvbmZpZy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUtBLGtCQXFCQztBQXpCRCxxREFBcUU7QUFFckUsdUVBQWdGO0FBRXpFLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUMvRCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDcEMsaUNBQXlCLENBQUMsYUFBYSxDQUN4QyxDQUFBO0lBRUQsTUFBTSxPQUFPLEdBQUcsSUFBQSxnREFBNkIsRUFBQyxZQUFZLENBQUMsQ0FBQTtJQUMzRCxNQUFNLE1BQU0sR0FBSSxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQWlCLElBQUksVUFBVSxDQUFBO0lBRTFELG9EQUFvRDtJQUNwRCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBRTdDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsb0RBQW9ELE1BQU0sRUFBRTtTQUN0RSxDQUFDLENBQUE7UUFDRixPQUFNO0lBQ1IsQ0FBQztJQUVELEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDUCxtQkFBbUIsRUFBRSxZQUFZLENBQUMsV0FBVztLQUM5QyxDQUFDLENBQUE7QUFDSixDQUFDIn0=
|
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Entity Registry
|
|
4
|
+
*
|
|
5
|
+
* Maps entity types to their corresponding widget zones and API endpoints.
|
|
6
|
+
* Provides default mappings for common Medusa entities and allows custom overrides.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.registerEntityMapping = registerEntityMapping;
|
|
10
|
+
exports.getEntityMapping = getEntityMapping;
|
|
11
|
+
exports.getWidgetZone = getWidgetZone;
|
|
12
|
+
exports.getApiEndpoint = getApiEndpoint;
|
|
13
|
+
exports.getResponseKey = getResponseKey;
|
|
14
|
+
exports.resolveApiEndpoint = resolveApiEndpoint;
|
|
15
|
+
exports.clearCustomMappings = clearCustomMappings;
|
|
16
|
+
exports.getRegisteredEntityTypes = getRegisteredEntityTypes;
|
|
17
|
+
exports.getEntityTypeFromZone = getEntityTypeFromZone;
|
|
18
|
+
exports.getAllRegisteredZones = getAllRegisteredZones;
|
|
19
|
+
/**
|
|
20
|
+
* Default entity type mappings for common Medusa entities
|
|
21
|
+
*/
|
|
22
|
+
const DEFAULT_ENTITY_MAPPINGS = {
|
|
23
|
+
products: {
|
|
24
|
+
widgetZone: "product.details.after",
|
|
25
|
+
apiEndpoint: "/admin/products/{id}",
|
|
26
|
+
responseKey: "product",
|
|
27
|
+
},
|
|
28
|
+
orders: {
|
|
29
|
+
widgetZone: "order.details.after",
|
|
30
|
+
apiEndpoint: "/admin/orders/{id}",
|
|
31
|
+
responseKey: "order",
|
|
32
|
+
},
|
|
33
|
+
categories: {
|
|
34
|
+
widgetZone: "product_category.details.after",
|
|
35
|
+
apiEndpoint: "/admin/product-categories/{id}",
|
|
36
|
+
responseKey: "product_category",
|
|
37
|
+
},
|
|
38
|
+
collections: {
|
|
39
|
+
widgetZone: "product_collection.details.after",
|
|
40
|
+
apiEndpoint: "/admin/collections/{id}",
|
|
41
|
+
responseKey: "collection",
|
|
42
|
+
},
|
|
43
|
+
customers: {
|
|
44
|
+
widgetZone: "customer.details.after",
|
|
45
|
+
apiEndpoint: "/admin/customers/{id}",
|
|
46
|
+
responseKey: "customer",
|
|
47
|
+
},
|
|
48
|
+
regions: {
|
|
49
|
+
widgetZone: "region.details.after",
|
|
50
|
+
apiEndpoint: "/admin/regions/{id}",
|
|
51
|
+
responseKey: "region",
|
|
52
|
+
},
|
|
53
|
+
sales_channels: {
|
|
54
|
+
widgetZone: "sales_channel.details.after",
|
|
55
|
+
apiEndpoint: "/admin/sales-channels/{id}",
|
|
56
|
+
responseKey: "sales_channel",
|
|
57
|
+
},
|
|
58
|
+
stores: {
|
|
59
|
+
widgetZone: "store.details.after",
|
|
60
|
+
apiEndpoint: "/admin/stores/{id}",
|
|
61
|
+
responseKey: "store",
|
|
62
|
+
},
|
|
63
|
+
promotions: {
|
|
64
|
+
widgetZone: "promotion.details.after",
|
|
65
|
+
apiEndpoint: "/admin/promotions/{id}",
|
|
66
|
+
responseKey: "promotion",
|
|
67
|
+
},
|
|
68
|
+
campaigns: {
|
|
69
|
+
widgetZone: "campaign.details.after",
|
|
70
|
+
apiEndpoint: "/admin/campaigns/{id}",
|
|
71
|
+
responseKey: "campaign",
|
|
72
|
+
},
|
|
73
|
+
price_lists: {
|
|
74
|
+
widgetZone: "price_list.details.after",
|
|
75
|
+
apiEndpoint: "/admin/price-lists/{id}",
|
|
76
|
+
responseKey: "price_list",
|
|
77
|
+
},
|
|
78
|
+
shipping_profiles: {
|
|
79
|
+
widgetZone: "shipping_profile.details.after",
|
|
80
|
+
apiEndpoint: "/admin/shipping-profiles/{id}",
|
|
81
|
+
responseKey: "shipping_profile",
|
|
82
|
+
},
|
|
83
|
+
return_reasons: {
|
|
84
|
+
widgetZone: "return_reason.details.after",
|
|
85
|
+
apiEndpoint: "/admin/return-reasons/{id}",
|
|
86
|
+
responseKey: "return_reason",
|
|
87
|
+
},
|
|
88
|
+
inventory_items: {
|
|
89
|
+
widgetZone: "inventory_item.details.after",
|
|
90
|
+
apiEndpoint: "/admin/inventory-items/{id}",
|
|
91
|
+
responseKey: "inventory_item",
|
|
92
|
+
},
|
|
93
|
+
product_variants: {
|
|
94
|
+
widgetZone: "product_variant.details.after",
|
|
95
|
+
apiEndpoint: "/admin/product-variants/{id}",
|
|
96
|
+
responseKey: "product_variant",
|
|
97
|
+
},
|
|
98
|
+
account_holders: {
|
|
99
|
+
widgetZone: "account_holder.details.after",
|
|
100
|
+
apiEndpoint: "/admin/account-holders/{id}",
|
|
101
|
+
responseKey: "account_holder",
|
|
102
|
+
},
|
|
103
|
+
captures: {
|
|
104
|
+
widgetZone: "capture.details.after",
|
|
105
|
+
apiEndpoint: "/admin/captures/{id}",
|
|
106
|
+
responseKey: "capture",
|
|
107
|
+
},
|
|
108
|
+
carts: {
|
|
109
|
+
widgetZone: "cart.details.after",
|
|
110
|
+
apiEndpoint: "/admin/carts/{id}",
|
|
111
|
+
responseKey: "cart",
|
|
112
|
+
},
|
|
113
|
+
cart_addresses: {
|
|
114
|
+
widgetZone: "cart_address.details.after",
|
|
115
|
+
apiEndpoint: "/admin/cart-addresses/{id}",
|
|
116
|
+
responseKey: "cart_address",
|
|
117
|
+
},
|
|
118
|
+
cart_line_items: {
|
|
119
|
+
widgetZone: "cart_line_item.details.after",
|
|
120
|
+
apiEndpoint: "/admin/cart-line-items/{id}",
|
|
121
|
+
responseKey: "cart_line_item",
|
|
122
|
+
},
|
|
123
|
+
cart_line_item_adjustments: {
|
|
124
|
+
widgetZone: "cart_line_item_adjustment.details.after",
|
|
125
|
+
apiEndpoint: "/admin/cart-line-item-adjustments/{id}",
|
|
126
|
+
responseKey: "cart_line_item_adjustment",
|
|
127
|
+
},
|
|
128
|
+
cart_line_item_tax_lines: {
|
|
129
|
+
widgetZone: "cart_line_item_tax_line.details.after",
|
|
130
|
+
apiEndpoint: "/admin/cart-line-item-tax-lines/{id}",
|
|
131
|
+
responseKey: "cart_line_item_tax_line",
|
|
132
|
+
},
|
|
133
|
+
cart_shipping_methods: {
|
|
134
|
+
widgetZone: "cart_shipping_method.details.after",
|
|
135
|
+
apiEndpoint: "/admin/cart-shipping-methods/{id}",
|
|
136
|
+
responseKey: "cart_shipping_method",
|
|
137
|
+
},
|
|
138
|
+
cart_shipping_method_adjustments: {
|
|
139
|
+
widgetZone: "cart_shipping_method_adjustment.details.after",
|
|
140
|
+
apiEndpoint: "/admin/cart-shipping-method-adjustments/{id}",
|
|
141
|
+
responseKey: "cart_shipping_method_adjustment",
|
|
142
|
+
},
|
|
143
|
+
cart_shipping_method_tax_lines: {
|
|
144
|
+
widgetZone: "cart_shipping_method_tax_line.details.after",
|
|
145
|
+
apiEndpoint: "/admin/cart-shipping-method-tax-lines/{id}",
|
|
146
|
+
responseKey: "cart_shipping_method_tax_line",
|
|
147
|
+
},
|
|
148
|
+
contact_email_subscriptions: {
|
|
149
|
+
widgetZone: "contact_email_subscription.details.after",
|
|
150
|
+
apiEndpoint: "/admin/contact-email-subscriptions/{id}",
|
|
151
|
+
responseKey: "contact_email_subscription",
|
|
152
|
+
},
|
|
153
|
+
contact_requests: {
|
|
154
|
+
widgetZone: "contact_request.details.after",
|
|
155
|
+
apiEndpoint: "/admin/contact-requests/{id}",
|
|
156
|
+
responseKey: "contact_request",
|
|
157
|
+
},
|
|
158
|
+
credit_lines: {
|
|
159
|
+
widgetZone: "credit_line.details.after",
|
|
160
|
+
apiEndpoint: "/admin/credit-lines/{id}",
|
|
161
|
+
responseKey: "credit_line",
|
|
162
|
+
},
|
|
163
|
+
customer_addresses: {
|
|
164
|
+
widgetZone: "customer_address.details.after",
|
|
165
|
+
apiEndpoint: "/admin/customer-addresses/{id}",
|
|
166
|
+
responseKey: "customer_address",
|
|
167
|
+
},
|
|
168
|
+
customer_groups: {
|
|
169
|
+
widgetZone: "customer_group.details.after",
|
|
170
|
+
apiEndpoint: "/admin/customer-groups/{id}",
|
|
171
|
+
responseKey: "customer_group",
|
|
172
|
+
},
|
|
173
|
+
customer_group_customers: {
|
|
174
|
+
widgetZone: "customer_group_customer.details.after",
|
|
175
|
+
apiEndpoint: "/admin/customer-group-customers/{id}",
|
|
176
|
+
responseKey: "customer_group_customer",
|
|
177
|
+
},
|
|
178
|
+
fulfillments: {
|
|
179
|
+
widgetZone: "fulfillment.details.after",
|
|
180
|
+
apiEndpoint: "/admin/fulfillments/{id}",
|
|
181
|
+
responseKey: "fulfillment",
|
|
182
|
+
},
|
|
183
|
+
fulfillment_addresses: {
|
|
184
|
+
widgetZone: "fulfillment_address.details.after",
|
|
185
|
+
apiEndpoint: "/admin/fulfillment-addresses/{id}",
|
|
186
|
+
responseKey: "fulfillment_address",
|
|
187
|
+
},
|
|
188
|
+
fulfillment_sets: {
|
|
189
|
+
widgetZone: "fulfillment_set.details.after",
|
|
190
|
+
apiEndpoint: "/admin/fulfillment-sets/{id}",
|
|
191
|
+
responseKey: "fulfillment_set",
|
|
192
|
+
},
|
|
193
|
+
geo_zones: {
|
|
194
|
+
widgetZone: "geo_zone.details.after",
|
|
195
|
+
apiEndpoint: "/admin/geo-zones/{id}",
|
|
196
|
+
responseKey: "geo_zone",
|
|
197
|
+
},
|
|
198
|
+
images: {
|
|
199
|
+
widgetZone: "image.details.after",
|
|
200
|
+
apiEndpoint: "/admin/images/{id}",
|
|
201
|
+
responseKey: "image",
|
|
202
|
+
},
|
|
203
|
+
inventory_levels: {
|
|
204
|
+
widgetZone: "inventory_level.details.after",
|
|
205
|
+
apiEndpoint: "/admin/inventory-levels/{id}",
|
|
206
|
+
responseKey: "inventory_level",
|
|
207
|
+
},
|
|
208
|
+
invites: {
|
|
209
|
+
widgetZone: "invite.details.after",
|
|
210
|
+
apiEndpoint: "/admin/invites/{id}",
|
|
211
|
+
responseKey: "invite",
|
|
212
|
+
},
|
|
213
|
+
order_addresses: {
|
|
214
|
+
widgetZone: "order_address.details.after",
|
|
215
|
+
apiEndpoint: "/admin/order-addresses/{id}",
|
|
216
|
+
responseKey: "order_address",
|
|
217
|
+
},
|
|
218
|
+
order_changes: {
|
|
219
|
+
widgetZone: "order_change.details.after",
|
|
220
|
+
apiEndpoint: "/admin/order-changes/{id}",
|
|
221
|
+
responseKey: "order_change",
|
|
222
|
+
},
|
|
223
|
+
order_claims: {
|
|
224
|
+
widgetZone: "order_claim.details.after",
|
|
225
|
+
apiEndpoint: "/admin/order-claims/{id}",
|
|
226
|
+
responseKey: "order_claim",
|
|
227
|
+
},
|
|
228
|
+
order_claim_items: {
|
|
229
|
+
widgetZone: "order_claim_item.details.after",
|
|
230
|
+
apiEndpoint: "/admin/order-claim-items/{id}",
|
|
231
|
+
responseKey: "order_claim_item",
|
|
232
|
+
},
|
|
233
|
+
order_claim_item_images: {
|
|
234
|
+
widgetZone: "order_claim_item_image.details.after",
|
|
235
|
+
apiEndpoint: "/admin/order-claim-item-images/{id}",
|
|
236
|
+
responseKey: "order_claim_item_image",
|
|
237
|
+
},
|
|
238
|
+
order_credit_lines: {
|
|
239
|
+
widgetZone: "order_credit_line.details.after",
|
|
240
|
+
apiEndpoint: "/admin/order-credit-lines/{id}",
|
|
241
|
+
responseKey: "order_credit_line",
|
|
242
|
+
},
|
|
243
|
+
order_exchanges: {
|
|
244
|
+
widgetZone: "order_exchange.details.after",
|
|
245
|
+
apiEndpoint: "/admin/order-exchanges/{id}",
|
|
246
|
+
responseKey: "order_exchange",
|
|
247
|
+
},
|
|
248
|
+
order_exchange_items: {
|
|
249
|
+
widgetZone: "order_exchange_item.details.after",
|
|
250
|
+
apiEndpoint: "/admin/order-exchange-items/{id}",
|
|
251
|
+
responseKey: "order_exchange_item",
|
|
252
|
+
},
|
|
253
|
+
order_items: {
|
|
254
|
+
widgetZone: "order_item.details.after",
|
|
255
|
+
apiEndpoint: "/admin/order-items/{id}",
|
|
256
|
+
responseKey: "order_item",
|
|
257
|
+
},
|
|
258
|
+
order_line_items: {
|
|
259
|
+
widgetZone: "order_line_item.details.after",
|
|
260
|
+
apiEndpoint: "/admin/order-line-items/{id}",
|
|
261
|
+
responseKey: "order_line_item",
|
|
262
|
+
},
|
|
263
|
+
order_shipping_methods: {
|
|
264
|
+
widgetZone: "order_shipping_method.details.after",
|
|
265
|
+
apiEndpoint: "/admin/order-shipping-methods/{id}",
|
|
266
|
+
responseKey: "order_shipping_method",
|
|
267
|
+
},
|
|
268
|
+
payments: {
|
|
269
|
+
widgetZone: "payment.details.after",
|
|
270
|
+
apiEndpoint: "/admin/payments/{id}",
|
|
271
|
+
responseKey: "payment",
|
|
272
|
+
},
|
|
273
|
+
payment_collections: {
|
|
274
|
+
widgetZone: "payment_collection.details.after",
|
|
275
|
+
apiEndpoint: "/admin/payment-collections/{id}",
|
|
276
|
+
responseKey: "payment_collection",
|
|
277
|
+
},
|
|
278
|
+
payment_sessions: {
|
|
279
|
+
widgetZone: "payment_session.details.after",
|
|
280
|
+
apiEndpoint: "/admin/payment-sessions/{id}",
|
|
281
|
+
responseKey: "payment_session",
|
|
282
|
+
},
|
|
283
|
+
product_options: {
|
|
284
|
+
widgetZone: "product_option.details.after",
|
|
285
|
+
apiEndpoint: "/admin/product-options/{id}",
|
|
286
|
+
responseKey: "product_option",
|
|
287
|
+
},
|
|
288
|
+
product_option_values: {
|
|
289
|
+
widgetZone: "product_option_value.details.after",
|
|
290
|
+
apiEndpoint: "/admin/product-option-values/{id}",
|
|
291
|
+
responseKey: "product_option_value",
|
|
292
|
+
},
|
|
293
|
+
product_tags: {
|
|
294
|
+
widgetZone: "product_tag.details.after",
|
|
295
|
+
apiEndpoint: "/admin/product-tags/{id}",
|
|
296
|
+
responseKey: "product_tag",
|
|
297
|
+
},
|
|
298
|
+
product_types: {
|
|
299
|
+
widgetZone: "product_type.details.after",
|
|
300
|
+
apiEndpoint: "/admin/product-types/{id}",
|
|
301
|
+
responseKey: "product_type",
|
|
302
|
+
},
|
|
303
|
+
refunds: {
|
|
304
|
+
widgetZone: "refund.details.after",
|
|
305
|
+
apiEndpoint: "/admin/refunds/{id}",
|
|
306
|
+
responseKey: "refund",
|
|
307
|
+
},
|
|
308
|
+
refund_reasons: {
|
|
309
|
+
widgetZone: "refund_reason.details.after",
|
|
310
|
+
apiEndpoint: "/admin/refund-reasons/{id}",
|
|
311
|
+
responseKey: "refund_reason",
|
|
312
|
+
},
|
|
313
|
+
region_countries: {
|
|
314
|
+
widgetZone: "region_country.details.after",
|
|
315
|
+
apiEndpoint: "/admin/region-countries/{id}",
|
|
316
|
+
responseKey: "region_country",
|
|
317
|
+
},
|
|
318
|
+
reservation_items: {
|
|
319
|
+
widgetZone: "reservation_item.details.after",
|
|
320
|
+
apiEndpoint: "/admin/reservation-items/{id}",
|
|
321
|
+
responseKey: "reservation_item",
|
|
322
|
+
},
|
|
323
|
+
returns: {
|
|
324
|
+
widgetZone: "return.details.after",
|
|
325
|
+
apiEndpoint: "/admin/returns/{id}",
|
|
326
|
+
responseKey: "return",
|
|
327
|
+
},
|
|
328
|
+
return_items: {
|
|
329
|
+
widgetZone: "return_item.details.after",
|
|
330
|
+
apiEndpoint: "/admin/return-items/{id}",
|
|
331
|
+
responseKey: "return_item",
|
|
332
|
+
},
|
|
333
|
+
service_zones: {
|
|
334
|
+
widgetZone: "service_zone.details.after",
|
|
335
|
+
apiEndpoint: "/admin/service-zones/{id}",
|
|
336
|
+
responseKey: "service_zone",
|
|
337
|
+
},
|
|
338
|
+
shipping_options: {
|
|
339
|
+
widgetZone: "shipping_option.details.after",
|
|
340
|
+
apiEndpoint: "/admin/shipping-options/{id}",
|
|
341
|
+
responseKey: "shipping_option",
|
|
342
|
+
},
|
|
343
|
+
stock_locations: {
|
|
344
|
+
widgetZone: "stock_location.details.after",
|
|
345
|
+
apiEndpoint: "/admin/stock-locations/{id}",
|
|
346
|
+
responseKey: "stock_location",
|
|
347
|
+
},
|
|
348
|
+
stock_location_addresses: {
|
|
349
|
+
widgetZone: "stock_location_address.details.after",
|
|
350
|
+
apiEndpoint: "/admin/stock-location-addresses/{id}",
|
|
351
|
+
responseKey: "stock_location_address",
|
|
352
|
+
},
|
|
353
|
+
tax_rates: {
|
|
354
|
+
widgetZone: "tax_rate.details.after",
|
|
355
|
+
apiEndpoint: "/admin/tax-rates/{id}",
|
|
356
|
+
responseKey: "tax_rate",
|
|
357
|
+
},
|
|
358
|
+
tax_rate_rules: {
|
|
359
|
+
widgetZone: "tax_rate_rule.details.after",
|
|
360
|
+
apiEndpoint: "/admin/tax-rate-rules/{id}",
|
|
361
|
+
responseKey: "tax_rate_rule",
|
|
362
|
+
},
|
|
363
|
+
tax_regions: {
|
|
364
|
+
widgetZone: "tax_region.details.after",
|
|
365
|
+
apiEndpoint: "/admin/tax-regions/{id}",
|
|
366
|
+
responseKey: "tax_region",
|
|
367
|
+
},
|
|
368
|
+
users: {
|
|
369
|
+
widgetZone: "user.details.after",
|
|
370
|
+
apiEndpoint: "/admin/users/{id}",
|
|
371
|
+
responseKey: "user",
|
|
372
|
+
},
|
|
373
|
+
};
|
|
374
|
+
/**
|
|
375
|
+
* Custom entity mappings provided via configuration
|
|
376
|
+
*/
|
|
377
|
+
let customMappings = {};
|
|
378
|
+
/**
|
|
379
|
+
* Register a custom entity type mapping
|
|
380
|
+
*/
|
|
381
|
+
function registerEntityMapping(entityType, mapping) {
|
|
382
|
+
customMappings[entityType] = mapping;
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Get entity mapping for a given entity type
|
|
386
|
+
* Returns custom mapping if available, otherwise falls back to default
|
|
387
|
+
*/
|
|
388
|
+
function getEntityMapping(entityType) {
|
|
389
|
+
return customMappings[entityType] || DEFAULT_ENTITY_MAPPINGS[entityType];
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Get widget zone for an entity type
|
|
393
|
+
*/
|
|
394
|
+
function getWidgetZone(entityType) {
|
|
395
|
+
const mapping = getEntityMapping(entityType);
|
|
396
|
+
return mapping?.widgetZone;
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Get API endpoint for an entity type
|
|
400
|
+
*/
|
|
401
|
+
function getApiEndpoint(entityType) {
|
|
402
|
+
const mapping = getEntityMapping(entityType);
|
|
403
|
+
return mapping?.apiEndpoint;
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Get response key for an entity type
|
|
407
|
+
*/
|
|
408
|
+
function getResponseKey(entityType) {
|
|
409
|
+
const mapping = getEntityMapping(entityType);
|
|
410
|
+
return mapping?.responseKey;
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Resolve API endpoint with entity ID
|
|
414
|
+
*/
|
|
415
|
+
function resolveApiEndpoint(entityType, entityId) {
|
|
416
|
+
const endpoint = getApiEndpoint(entityType);
|
|
417
|
+
if (!endpoint)
|
|
418
|
+
return undefined;
|
|
419
|
+
return endpoint.replace("{id}", entityId);
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Clear all custom mappings (useful for testing)
|
|
423
|
+
*/
|
|
424
|
+
function clearCustomMappings() {
|
|
425
|
+
customMappings = {};
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* Get all registered entity types (defaults + customs)
|
|
429
|
+
*/
|
|
430
|
+
function getRegisteredEntityTypes() {
|
|
431
|
+
const defaultTypes = Object.keys(DEFAULT_ENTITY_MAPPINGS);
|
|
432
|
+
const customTypes = Object.keys(customMappings);
|
|
433
|
+
return [...new Set([...defaultTypes, ...customTypes])];
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Reverse lookup: Get entity type from widget zone
|
|
437
|
+
* Checks both default and custom mappings
|
|
438
|
+
*/
|
|
439
|
+
function getEntityTypeFromZone(zone) {
|
|
440
|
+
// Check custom mappings first
|
|
441
|
+
for (const [entityType, mapping] of Object.entries(customMappings)) {
|
|
442
|
+
if (mapping.widgetZone === zone) {
|
|
443
|
+
return entityType;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
// Check default mappings
|
|
447
|
+
for (const [entityType, mapping] of Object.entries(DEFAULT_ENTITY_MAPPINGS)) {
|
|
448
|
+
if (mapping.widgetZone === zone) {
|
|
449
|
+
return entityType;
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
return undefined;
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* Get all zones registered for any entity type
|
|
456
|
+
*/
|
|
457
|
+
function getAllRegisteredZones() {
|
|
458
|
+
const zones = new Set();
|
|
459
|
+
// Add zones from default mappings
|
|
460
|
+
for (const mapping of Object.values(DEFAULT_ENTITY_MAPPINGS)) {
|
|
461
|
+
zones.add(mapping.widgetZone);
|
|
462
|
+
}
|
|
463
|
+
// Add zones from custom mappings
|
|
464
|
+
for (const mapping of Object.values(customMappings)) {
|
|
465
|
+
zones.add(mapping.widgetZone);
|
|
466
|
+
}
|
|
467
|
+
return Array.from(zones);
|
|
468
|
+
}
|
|
469
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbmZpZy9lbnRpdHktcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7OztHQUtHOztBQWlZSCxzREFLQztBQU1ELDRDQUVDO0FBS0Qsc0NBR0M7QUFLRCx3Q0FHQztBQUtELHdDQUdDO0FBS0QsZ0RBT0M7QUFLRCxrREFFQztBQUtELDREQUlDO0FBTUQsc0RBZ0JDO0FBS0Qsc0RBY0M7QUF0ZEQ7O0dBRUc7QUFDSCxNQUFNLHVCQUF1QixHQUFrQztJQUM3RCxRQUFRLEVBQUU7UUFDUixVQUFVLEVBQUUsdUJBQXVCO1FBQ25DLFdBQVcsRUFBRSxzQkFBc0I7UUFDbkMsV0FBVyxFQUFFLFNBQVM7S0FDdkI7SUFDRCxNQUFNLEVBQUU7UUFDTixVQUFVLEVBQUUscUJBQXFCO1FBQ2pDLFdBQVcsRUFBRSxvQkFBb0I7UUFDakMsV0FBVyxFQUFFLE9BQU87S0FDckI7SUFDRCxVQUFVLEVBQUU7UUFDVixVQUFVLEVBQUUsZ0NBQWdDO1FBQzVDLFdBQVcsRUFBRSxnQ0FBZ0M7UUFDN0MsV0FBVyxFQUFFLGtCQUFrQjtLQUNoQztJQUNELFdBQVcsRUFBRTtRQUNYLFVBQVUsRUFBRSxrQ0FBa0M7UUFDOUMsV0FBVyxFQUFFLHlCQUF5QjtRQUN0QyxXQUFXLEVBQUUsWUFBWTtLQUMxQjtJQUNELFNBQVMsRUFBRTtRQUNULFVBQVUsRUFBRSx3QkFBd0I7UUFDcEMsV0FBVyxFQUFFLHVCQUF1QjtRQUNwQyxXQUFXLEVBQUUsVUFBVTtLQUN4QjtJQUNELE9BQU8sRUFBRTtRQUNQLFVBQVUsRUFBRSxzQkFBc0I7UUFDbEMsV0FBVyxFQUFFLHFCQUFxQjtRQUNsQyxXQUFXLEVBQUUsUUFBUTtLQUN0QjtJQUNELGNBQWMsRUFBRTtRQUNkLFVBQVUsRUFBRSw2QkFBNkI7UUFDekMsV0FBVyxFQUFFLDRCQUE0QjtRQUN6QyxXQUFXLEVBQUUs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
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_DYNAMIC_METADATA_OPTIONS = void 0;
|
|
4
|
+
exports.normalizeDynamicMetadataOptions = normalizeDynamicMetadataOptions;
|
|
5
|
+
exports.resolveDynamicMetadataOptions = resolveDynamicMetadataOptions;
|
|
6
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
+
const zod_1 = require("zod");
|
|
8
|
+
const types_1 = require("../shared/metadata/types");
|
|
9
|
+
const utils_2 = require("../shared/metadata/utils");
|
|
10
|
+
const zone_resolver_1 = require("./zone-resolver");
|
|
11
|
+
const entity_registry_1 = require("./entity-registry");
|
|
12
|
+
const MetadataDescriptorSchema = zod_1.z.object({
|
|
13
|
+
key: zod_1.z.string().min(1),
|
|
14
|
+
label: zod_1.z
|
|
15
|
+
.string()
|
|
16
|
+
.trim()
|
|
17
|
+
.transform((value) => (value.length ? value : undefined))
|
|
18
|
+
.optional(),
|
|
19
|
+
type: zod_1.z.enum(types_1.METADATA_FIELD_TYPES),
|
|
20
|
+
filterable: zod_1.z.boolean().default(false),
|
|
21
|
+
});
|
|
22
|
+
const EntityMetadataConfigSchema = zod_1.z.object({
|
|
23
|
+
descriptors: zod_1.z.array(MetadataDescriptorSchema).default([]),
|
|
24
|
+
expose_client_helpers: zod_1.z.boolean().default(false),
|
|
25
|
+
filterable: zod_1.z.boolean().default(false),
|
|
26
|
+
widget_zone: zod_1.z.string().optional(),
|
|
27
|
+
api_endpoint: zod_1.z.string().optional(),
|
|
28
|
+
});
|
|
29
|
+
const DynamicMetadataOptionsSchema = zod_1.z.object({
|
|
30
|
+
entities: zod_1.z.record(zod_1.z.string(), EntityMetadataConfigSchema).default({}),
|
|
31
|
+
});
|
|
32
|
+
exports.DEFAULT_DYNAMIC_METADATA_OPTIONS = {
|
|
33
|
+
entities: {},
|
|
34
|
+
};
|
|
35
|
+
const PLUGIN_NAME = "medusa-dynamic-metadata";
|
|
36
|
+
function normalizeDynamicMetadataOptions(input) {
|
|
37
|
+
const parsed = DynamicMetadataOptionsSchema.parse(input ?? {});
|
|
38
|
+
const normalizedEntities = {};
|
|
39
|
+
for (const [entityType, entityConfig] of Object.entries(parsed.entities)) {
|
|
40
|
+
// Resolve widget zone: use from config, or fall back to entity registry/default
|
|
41
|
+
const widgetZone = (0, zone_resolver_1.resolveZoneFromEntityType)(entityType, entityConfig.widget_zone);
|
|
42
|
+
// Register zone mapping for reverse lookup
|
|
43
|
+
if (widgetZone) {
|
|
44
|
+
(0, zone_resolver_1.registerZoneMapping)(widgetZone, entityType);
|
|
45
|
+
}
|
|
46
|
+
// Register entity mapping if api_endpoint is provided
|
|
47
|
+
if (entityConfig.api_endpoint && widgetZone) {
|
|
48
|
+
// Extract response key from entity type (e.g., "products" -> "product")
|
|
49
|
+
const responseKey = entityType.endsWith("s")
|
|
50
|
+
? entityType.slice(0, -1)
|
|
51
|
+
: entityType;
|
|
52
|
+
(0, entity_registry_1.registerEntityMapping)(entityType, {
|
|
53
|
+
widgetZone,
|
|
54
|
+
apiEndpoint: entityConfig.api_endpoint,
|
|
55
|
+
responseKey,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
normalizedEntities[entityType] = {
|
|
59
|
+
...entityConfig,
|
|
60
|
+
descriptors: (0, utils_2.normalizeMetadataDescriptors)(entityConfig.descriptors),
|
|
61
|
+
widget_zone: widgetZone, // Store resolved zone
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
entities: normalizedEntities,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function resolveDynamicMetadataOptions(configModule) {
|
|
69
|
+
const plugins = configModule?.plugins ?? [];
|
|
70
|
+
for (const plugin of plugins) {
|
|
71
|
+
if ((0, utils_1.isString)(plugin)) {
|
|
72
|
+
if (plugin === PLUGIN_NAME) {
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
if (plugin?.resolve === PLUGIN_NAME) {
|
|
78
|
+
return normalizeDynamicMetadataOptions(plugin.options);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return exports.DEFAULT_DYNAMIC_METADATA_OPTIONS;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb25maWcvbWV0YWRhdGEtb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFrRUEsMEVBMkNDO0FBRUQsc0VBbUJDO0FBbElELHFEQUFvRDtBQUNwRCw2QkFBdUI7QUFFdkIsb0RBR2lDO0FBQ2pDLG9EQUF1RTtBQUN2RSxtREFBZ0Y7QUFDaEYsdURBQXlEO0FBRXpELE1BQU0sd0JBQXdCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN4QyxHQUFHLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEIsS0FBSyxFQUFFLE9BQUM7U0FDTCxNQUFNLEVBQUU7U0FDUixJQUFJLEVBQUU7U0FDTixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN4RCxRQUFRLEVBQUU7SUFDYixJQUFJLEVBQUUsT0FBQyxDQUFDLElBQUksQ0FBQyw0QkFBb0IsQ0FBQztJQUNsQyxVQUFVLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Q0FDdkMsQ0FBQyxDQUFBO0FBRUYsTUFBTSwwQkFBMEIsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQzFDLFdBQVcsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUMxRCxxQkFBcUIsRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUNqRCxVQUFVLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDdEMsV0FBVyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDbEMsWUFBWSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDcEMsQ0FBQyxDQUFBO0FBRUYsTUFBTSw0QkFBNEIsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQzVDLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Q0FDdkUsQ0FBQyxDQUFBO0FBaUJXLFFBQUEsZ0NBQWdDLEdBQTJCO0lBQ3RFLFFBQVEsRUFBRSxFQUFFO0NBQ2IsQ0FBQTtBQUVELE1BQU0sV0FBVyxHQUFHLHlCQUF5QixDQUFBO0FBYTdDLFNBQWdCLCtCQUErQixDQUM3QyxLQUF3QztJQUV4QyxNQUFNLE1BQU0sR0FBRyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRTlELE1BQU0sa0JBQWtCLEdBQXVDLEVBQUUsQ0FBQTtJQUVqRSxLQUFLLE1BQU0sQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUN6RSxnRkFBZ0Y7UUFDaEYsTUFBTSxVQUFVLEdBQUcsSUFBQSx5Q0FBeUIsRUFDMUMsVUFBVSxFQUNWLFlBQVksQ0FBQyxXQUFXLENBQ3pCLENBQUE7UUFFRCwyQ0FBMkM7UUFDM0MsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLElBQUEsbUNBQW1CLEVBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBQzdDLENBQUM7UUFFRCxzREFBc0Q7UUFDdEQsSUFBSSxZQUFZLENBQUMsWUFBWSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQzVDLHdFQUF3RTtZQUN4RSxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztnQkFDMUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN6QixDQUFDLENBQUMsVUFBVSxDQUFBO1lBRWQsSUFBQSx1Q0FBcUIsRUFBQyxVQUFVLEVBQUU7Z0JBQ2hDLFVBQVU7Z0JBQ1YsV0FBVyxFQUFFLFlBQVksQ0FBQyxZQUFZO2dCQUN0QyxXQUFXO2FBQ1osQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUVELGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxHQUFHO1lBQy9CLEdBQUcsWUFBWTtZQUNmLFdBQVcsRUFBRSxJQUFBLG9DQUE0QixFQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7WUFDbkUsV0FBVyxFQUFFLFVBQVUsRUFBRSxzQkFBc0I7U0FDaEQsQ0FBQTtJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsUUFBUSxFQUFFLGtCQUFrQjtLQUM3QixDQUFBO0FBQ0gsQ0FBQztBQUVELFNBQWdCLDZCQUE2QixDQUMzQyxZQUFnQztJQUVoQyxNQUFNLE9BQU8sR0FBRyxZQUFZLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQTtJQUUzQyxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzdCLElBQUksSUFBQSxnQkFBUSxFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDckIsSUFBSSxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQzNCLE1BQUs7WUFDUCxDQUFDO1lBQ0QsU0FBUTtRQUNWLENBQUM7UUFFRCxJQUFJLE1BQU0sRUFBRSxPQUFPLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDcEMsT0FBTywrQkFBK0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDeEQsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLHdDQUFnQyxDQUFBO0FBQ3pDLENBQUMifQ==
|