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.
@@ -0,0 +1,418 @@
1
+ "use strict";
2
+ /**
3
+ * Zone Resolver
4
+ *
5
+ * Resolves entity types from widget zones and vice versa.
6
+ * Supports pattern matching and custom zone configurations.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.registerZoneMapping = registerZoneMapping;
10
+ exports.clearCustomZoneMappings = clearCustomZoneMappings;
11
+ exports.resolveEntityTypeFromZone = resolveEntityTypeFromZone;
12
+ exports.resolveZoneFromEntityType = resolveZoneFromEntityType;
13
+ exports.getZonesForEntityType = getZonesForEntityType;
14
+ const entity_registry_1 = require("./entity-registry");
15
+ /**
16
+ * Zone pattern mappings for common Medusa admin zones
17
+ * Maps zone patterns to entity types
18
+ */
19
+ const ZONE_PATTERNS = [
20
+ // Product zones
21
+ { pattern: /^product\.details\./, entityType: "products" },
22
+ { pattern: /^product\./, entityType: "products" },
23
+ // Order zones
24
+ { pattern: /^order\.details\./, entityType: "orders" },
25
+ { pattern: /^order\./, entityType: "orders" },
26
+ // Category zones
27
+ { pattern: /^product_category\.details\./, entityType: "categories" },
28
+ { pattern: /^product_category\./, entityType: "categories" },
29
+ { pattern: /^category\.details\./, entityType: "categories" },
30
+ { pattern: /^category\./, entityType: "categories" },
31
+ // Collection zones
32
+ { pattern: /^product_collection\.details\./, entityType: "collections" },
33
+ { pattern: /^product_collection\./, entityType: "collections" },
34
+ { pattern: /^collection\.details\./, entityType: "collections" },
35
+ { pattern: /^collection\./, entityType: "collections" },
36
+ // Customer zones
37
+ { pattern: /^customer\.details\./, entityType: "customers" },
38
+ { pattern: /^customer\./, entityType: "customers" },
39
+ // Region zones
40
+ { pattern: /^region\.details\./, entityType: "regions" },
41
+ { pattern: /^region\./, entityType: "regions" },
42
+ // Sales Channel zones
43
+ { pattern: /^sales_channel\.details\./, entityType: "sales_channels" },
44
+ { pattern: /^sales_channel\./, entityType: "sales_channels" },
45
+ // Store zones
46
+ { pattern: /^store\.details\./, entityType: "stores" },
47
+ { pattern: /^store\./, entityType: "stores" },
48
+ // Promotion zones
49
+ { pattern: /^promotion\.details\./, entityType: "promotions" },
50
+ { pattern: /^promotion\./, entityType: "promotions" },
51
+ // Campaign zones
52
+ { pattern: /^campaign\.details\./, entityType: "campaigns" },
53
+ { pattern: /^campaign\./, entityType: "campaigns" },
54
+ // Price List zones
55
+ { pattern: /^price_list\.details\./, entityType: "price_lists" },
56
+ { pattern: /^price_list\./, entityType: "price_lists" },
57
+ // Shipping Profile zones
58
+ { pattern: /^shipping_profile\.details\./, entityType: "shipping_profiles" },
59
+ { pattern: /^shipping_profile\./, entityType: "shipping_profiles" },
60
+ // Return Reason zones
61
+ { pattern: /^return_reason\.details\./, entityType: "return_reasons" },
62
+ { pattern: /^return_reason\./, entityType: "return_reasons" },
63
+ // Inventory Item zones
64
+ { pattern: /^inventory_item\.details\./, entityType: "inventory_items" },
65
+ { pattern: /^inventory_item\./, entityType: "inventory_items" },
66
+ // Product Variant zones
67
+ { pattern: /^product_variant\.details\./, entityType: "product_variants" },
68
+ { pattern: /^product_variant\./, entityType: "product_variants" },
69
+ // Account Holder zones
70
+ { pattern: /^account_holder\.details\./, entityType: "account_holders" },
71
+ { pattern: /^account_holder\./, entityType: "account_holders" },
72
+ // Capture zones
73
+ { pattern: /^capture\.details\./, entityType: "captures" },
74
+ { pattern: /^capture\./, entityType: "captures" },
75
+ // Cart zones
76
+ { pattern: /^cart\.details\./, entityType: "carts" },
77
+ { pattern: /^cart\./, entityType: "carts" },
78
+ // Cart Address zones
79
+ { pattern: /^cart_address\.details\./, entityType: "cart_addresses" },
80
+ { pattern: /^cart_address\./, entityType: "cart_addresses" },
81
+ // Cart Line Item zones
82
+ { pattern: /^cart_line_item\.details\./, entityType: "cart_line_items" },
83
+ { pattern: /^cart_line_item\./, entityType: "cart_line_items" },
84
+ // Cart Line Item Adjustment zones
85
+ { pattern: /^cart_line_item_adjustment\.details\./, entityType: "cart_line_item_adjustments" },
86
+ { pattern: /^cart_line_item_adjustment\./, entityType: "cart_line_item_adjustments" },
87
+ // Cart Line Item Tax Line zones
88
+ { pattern: /^cart_line_item_tax_line\.details\./, entityType: "cart_line_item_tax_lines" },
89
+ { pattern: /^cart_line_item_tax_line\./, entityType: "cart_line_item_tax_lines" },
90
+ // Cart Shipping Method zones
91
+ { pattern: /^cart_shipping_method\.details\./, entityType: "cart_shipping_methods" },
92
+ { pattern: /^cart_shipping_method\./, entityType: "cart_shipping_methods" },
93
+ // Cart Shipping Method Adjustment zones
94
+ { pattern: /^cart_shipping_method_adjustment\.details\./, entityType: "cart_shipping_method_adjustments" },
95
+ { pattern: /^cart_shipping_method_adjustment\./, entityType: "cart_shipping_method_adjustments" },
96
+ // Cart Shipping Method Tax Line zones
97
+ { pattern: /^cart_shipping_method_tax_line\.details\./, entityType: "cart_shipping_method_tax_lines" },
98
+ { pattern: /^cart_shipping_method_tax_line\./, entityType: "cart_shipping_method_tax_lines" },
99
+ // Contact Email Subscription zones
100
+ { pattern: /^contact_email_subscription\.details\./, entityType: "contact_email_subscriptions" },
101
+ { pattern: /^contact_email_subscription\./, entityType: "contact_email_subscriptions" },
102
+ // Contact Request zones
103
+ { pattern: /^contact_request\.details\./, entityType: "contact_requests" },
104
+ { pattern: /^contact_request\./, entityType: "contact_requests" },
105
+ // Credit Line zones
106
+ { pattern: /^credit_line\.details\./, entityType: "credit_lines" },
107
+ { pattern: /^credit_line\./, entityType: "credit_lines" },
108
+ // Customer Address zones
109
+ { pattern: /^customer_address\.details\./, entityType: "customer_addresses" },
110
+ { pattern: /^customer_address\./, entityType: "customer_addresses" },
111
+ // Customer Group zones
112
+ { pattern: /^customer_group\.details\./, entityType: "customer_groups" },
113
+ { pattern: /^customer_group\./, entityType: "customer_groups" },
114
+ // Customer Group Customer zones
115
+ { pattern: /^customer_group_customer\.details\./, entityType: "customer_group_customers" },
116
+ { pattern: /^customer_group_customer\./, entityType: "customer_group_customers" },
117
+ // Fulfillment zones
118
+ { pattern: /^fulfillment\.details\./, entityType: "fulfillments" },
119
+ { pattern: /^fulfillment\./, entityType: "fulfillments" },
120
+ // Fulfillment Address zones
121
+ { pattern: /^fulfillment_address\.details\./, entityType: "fulfillment_addresses" },
122
+ { pattern: /^fulfillment_address\./, entityType: "fulfillment_addresses" },
123
+ // Fulfillment Set zones
124
+ { pattern: /^fulfillment_set\.details\./, entityType: "fulfillment_sets" },
125
+ { pattern: /^fulfillment_set\./, entityType: "fulfillment_sets" },
126
+ // Geo Zone zones
127
+ { pattern: /^geo_zone\.details\./, entityType: "geo_zones" },
128
+ { pattern: /^geo_zone\./, entityType: "geo_zones" },
129
+ // Image zones
130
+ { pattern: /^image\.details\./, entityType: "images" },
131
+ { pattern: /^image\./, entityType: "images" },
132
+ // Inventory Level zones
133
+ { pattern: /^inventory_level\.details\./, entityType: "inventory_levels" },
134
+ { pattern: /^inventory_level\./, entityType: "inventory_levels" },
135
+ // Invite zones
136
+ { pattern: /^invite\.details\./, entityType: "invites" },
137
+ { pattern: /^invite\./, entityType: "invites" },
138
+ // Order Address zones
139
+ { pattern: /^order_address\.details\./, entityType: "order_addresses" },
140
+ { pattern: /^order_address\./, entityType: "order_addresses" },
141
+ // Order Change zones
142
+ { pattern: /^order_change\.details\./, entityType: "order_changes" },
143
+ { pattern: /^order_change\./, entityType: "order_changes" },
144
+ // Order Claim zones
145
+ { pattern: /^order_claim\.details\./, entityType: "order_claims" },
146
+ { pattern: /^order_claim\./, entityType: "order_claims" },
147
+ // Order Claim Item zones
148
+ { pattern: /^order_claim_item\.details\./, entityType: "order_claim_items" },
149
+ { pattern: /^order_claim_item\./, entityType: "order_claim_items" },
150
+ // Order Claim Item Image zones
151
+ { pattern: /^order_claim_item_image\.details\./, entityType: "order_claim_item_images" },
152
+ { pattern: /^order_claim_item_image\./, entityType: "order_claim_item_images" },
153
+ // Order Credit Line zones
154
+ { pattern: /^order_credit_line\.details\./, entityType: "order_credit_lines" },
155
+ { pattern: /^order_credit_line\./, entityType: "order_credit_lines" },
156
+ // Order Exchange zones
157
+ { pattern: /^order_exchange\.details\./, entityType: "order_exchanges" },
158
+ { pattern: /^order_exchange\./, entityType: "order_exchanges" },
159
+ // Order Exchange Item zones
160
+ { pattern: /^order_exchange_item\.details\./, entityType: "order_exchange_items" },
161
+ { pattern: /^order_exchange_item\./, entityType: "order_exchange_items" },
162
+ // Order Item zones
163
+ { pattern: /^order_item\.details\./, entityType: "order_items" },
164
+ { pattern: /^order_item\./, entityType: "order_items" },
165
+ // Order Line Item zones
166
+ { pattern: /^order_line_item\.details\./, entityType: "order_line_items" },
167
+ { pattern: /^order_line_item\./, entityType: "order_line_items" },
168
+ // Order Shipping Method zones
169
+ { pattern: /^order_shipping_method\.details\./, entityType: "order_shipping_methods" },
170
+ { pattern: /^order_shipping_method\./, entityType: "order_shipping_methods" },
171
+ // Payment zones
172
+ { pattern: /^payment\.details\./, entityType: "payments" },
173
+ { pattern: /^payment\./, entityType: "payments" },
174
+ // Payment Collection zones
175
+ { pattern: /^payment_collection\.details\./, entityType: "payment_collections" },
176
+ { pattern: /^payment_collection\./, entityType: "payment_collections" },
177
+ // Payment Session zones
178
+ { pattern: /^payment_session\.details\./, entityType: "payment_sessions" },
179
+ { pattern: /^payment_session\./, entityType: "payment_sessions" },
180
+ // Product Option zones
181
+ { pattern: /^product_option\.details\./, entityType: "product_options" },
182
+ { pattern: /^product_option\./, entityType: "product_options" },
183
+ // Product Option Value zones
184
+ { pattern: /^product_option_value\.details\./, entityType: "product_option_values" },
185
+ { pattern: /^product_option_value\./, entityType: "product_option_values" },
186
+ // Product Tag zones
187
+ { pattern: /^product_tag\.details\./, entityType: "product_tags" },
188
+ { pattern: /^product_tag\./, entityType: "product_tags" },
189
+ // Product Type zones
190
+ { pattern: /^product_type\.details\./, entityType: "product_types" },
191
+ { pattern: /^product_type\./, entityType: "product_types" },
192
+ // Refund zones
193
+ { pattern: /^refund\.details\./, entityType: "refunds" },
194
+ { pattern: /^refund\./, entityType: "refunds" },
195
+ // Refund Reason zones
196
+ { pattern: /^refund_reason\.details\./, entityType: "refund_reasons" },
197
+ { pattern: /^refund_reason\./, entityType: "refund_reasons" },
198
+ // Region Country zones
199
+ { pattern: /^region_country\.details\./, entityType: "region_countries" },
200
+ { pattern: /^region_country\./, entityType: "region_countries" },
201
+ // Reservation Item zones
202
+ { pattern: /^reservation_item\.details\./, entityType: "reservation_items" },
203
+ { pattern: /^reservation_item\./, entityType: "reservation_items" },
204
+ // Return zones
205
+ { pattern: /^return\.details\./, entityType: "returns" },
206
+ { pattern: /^return\./, entityType: "returns" },
207
+ // Return Item zones
208
+ { pattern: /^return_item\.details\./, entityType: "return_items" },
209
+ { pattern: /^return_item\./, entityType: "return_items" },
210
+ // Service Zone zones
211
+ { pattern: /^service_zone\.details\./, entityType: "service_zones" },
212
+ { pattern: /^service_zone\./, entityType: "service_zones" },
213
+ // Shipping Option zones
214
+ { pattern: /^shipping_option\.details\./, entityType: "shipping_options" },
215
+ { pattern: /^shipping_option\./, entityType: "shipping_options" },
216
+ // Stock Location zones
217
+ { pattern: /^stock_location\.details\./, entityType: "stock_locations" },
218
+ { pattern: /^stock_location\./, entityType: "stock_locations" },
219
+ // Stock Location Address zones
220
+ { pattern: /^stock_location_address\.details\./, entityType: "stock_location_addresses" },
221
+ { pattern: /^stock_location_address\./, entityType: "stock_location_addresses" },
222
+ // Tax Rate zones
223
+ { pattern: /^tax_rate\.details\./, entityType: "tax_rates" },
224
+ { pattern: /^tax_rate\./, entityType: "tax_rates" },
225
+ // Tax Rate Rule zones
226
+ { pattern: /^tax_rate_rule\.details\./, entityType: "tax_rate_rules" },
227
+ { pattern: /^tax_rate_rule\./, entityType: "tax_rate_rules" },
228
+ // Tax Region zones
229
+ { pattern: /^tax_region\.details\./, entityType: "tax_regions" },
230
+ { pattern: /^tax_region\./, entityType: "tax_regions" },
231
+ // User zones
232
+ { pattern: /^user\.details\./, entityType: "users" },
233
+ { pattern: /^user\./, entityType: "users" },
234
+ // Generic pattern: {entity}.details.{position}
235
+ { pattern: /^(\w+)\.details\./, entityType: "" }, // Will extract from match
236
+ ];
237
+ /**
238
+ * Custom zone-to-entity mappings from configuration
239
+ */
240
+ let customZoneMappings = {};
241
+ /**
242
+ * Register a custom zone-to-entity mapping
243
+ */
244
+ function registerZoneMapping(zone, entityType) {
245
+ customZoneMappings[zone] = entityType;
246
+ }
247
+ /**
248
+ * Clear all custom zone mappings (useful for testing)
249
+ */
250
+ function clearCustomZoneMappings() {
251
+ customZoneMappings = {};
252
+ }
253
+ /**
254
+ * Resolve entity type from widget zone
255
+ *
256
+ * Resolution order:
257
+ * 1. Check custom zone mappings
258
+ * 2. Check entity registry (reverse lookup)
259
+ * 3. Pattern matching
260
+ * 4. Extract from zone pattern
261
+ *
262
+ * @param zone - Widget zone (e.g., "product.details.after")
263
+ * @returns Entity type (e.g., "products") or undefined if not found
264
+ */
265
+ function resolveEntityTypeFromZone(zone) {
266
+ // 1. Check custom mappings first
267
+ if (customZoneMappings[zone]) {
268
+ return customZoneMappings[zone];
269
+ }
270
+ // 2. Check entity registry (reverse lookup)
271
+ const entityTypes = [
272
+ "products",
273
+ "orders",
274
+ "categories",
275
+ "collections",
276
+ "customers",
277
+ "regions",
278
+ "sales_channels",
279
+ "stores",
280
+ "promotions",
281
+ "campaigns",
282
+ "price_lists",
283
+ "shipping_profiles",
284
+ "return_reasons",
285
+ "inventory_items",
286
+ "product_variants",
287
+ "account_holders",
288
+ "captures",
289
+ "carts",
290
+ "cart_addresses",
291
+ "cart_line_items",
292
+ "cart_line_item_adjustments",
293
+ "cart_line_item_tax_lines",
294
+ "cart_shipping_methods",
295
+ "cart_shipping_method_adjustments",
296
+ "cart_shipping_method_tax_lines",
297
+ "contact_email_subscriptions",
298
+ "contact_requests",
299
+ "credit_lines",
300
+ "customer_addresses",
301
+ "customer_groups",
302
+ "customer_group_customers",
303
+ "fulfillments",
304
+ "fulfillment_addresses",
305
+ "fulfillment_sets",
306
+ "geo_zones",
307
+ "images",
308
+ "inventory_levels",
309
+ "invites",
310
+ "order_addresses",
311
+ "order_changes",
312
+ "order_claims",
313
+ "order_claim_items",
314
+ "order_claim_item_images",
315
+ "order_credit_lines",
316
+ "order_exchanges",
317
+ "order_exchange_items",
318
+ "order_items",
319
+ "order_line_items",
320
+ "order_shipping_methods",
321
+ "payments",
322
+ "payment_collections",
323
+ "payment_sessions",
324
+ "product_options",
325
+ "product_option_values",
326
+ "product_tags",
327
+ "product_types",
328
+ "refunds",
329
+ "refund_reasons",
330
+ "region_countries",
331
+ "reservation_items",
332
+ "returns",
333
+ "return_items",
334
+ "service_zones",
335
+ "shipping_options",
336
+ "stock_locations",
337
+ "stock_location_addresses",
338
+ "tax_rates",
339
+ "tax_rate_rules",
340
+ "tax_regions",
341
+ "users",
342
+ ];
343
+ for (const entityType of entityTypes) {
344
+ const mapping = (0, entity_registry_1.getEntityMapping)(entityType);
345
+ if (mapping?.widgetZone === zone) {
346
+ return entityType;
347
+ }
348
+ }
349
+ // 3. Pattern matching
350
+ for (const { pattern, entityType } of ZONE_PATTERNS) {
351
+ const match = zone.match(pattern);
352
+ if (match) {
353
+ // If entityType is empty, extract from the match
354
+ if (entityType === "" && match[1]) {
355
+ // Convert singular to plural (e.g., "product" -> "products")
356
+ const singular = match[1];
357
+ return `${singular}s`;
358
+ }
359
+ return entityType;
360
+ }
361
+ }
362
+ // 4. Try to extract from zone directly (fallback)
363
+ // e.g., "product.details.after" -> "product" -> "products"
364
+ const parts = zone.split(".");
365
+ if (parts.length > 0) {
366
+ const firstPart = parts[0];
367
+ // Convert to plural if needed
368
+ if (firstPart && !firstPart.endsWith("s")) {
369
+ return `${firstPart}s`;
370
+ }
371
+ return firstPart;
372
+ }
373
+ return undefined;
374
+ }
375
+ /**
376
+ * Resolve widget zone from entity type
377
+ * Uses entity registry or generates default pattern
378
+ *
379
+ * @param entityType - Entity type (e.g., "products")
380
+ * @param customZone - Optional custom zone from configuration
381
+ * @returns Widget zone (e.g., "product.details.after")
382
+ */
383
+ function resolveZoneFromEntityType(entityType, customZone) {
384
+ // Use custom zone if provided
385
+ if (customZone) {
386
+ return customZone;
387
+ }
388
+ // Check entity registry
389
+ const mapping = (0, entity_registry_1.getEntityMapping)(entityType);
390
+ if (mapping?.widgetZone) {
391
+ return mapping.widgetZone;
392
+ }
393
+ // Generate default pattern: {entity}.details.after
394
+ // Convert plural to singular (e.g., "products" -> "product")
395
+ const singular = entityType.endsWith("s")
396
+ ? entityType.slice(0, -1)
397
+ : entityType;
398
+ return `${singular}.details.after`;
399
+ }
400
+ /**
401
+ * Get all registered zones for a given entity type
402
+ */
403
+ function getZonesForEntityType(entityType) {
404
+ const zones = [];
405
+ // Check entity registry
406
+ const mapping = (0, entity_registry_1.getEntityMapping)(entityType);
407
+ if (mapping?.widgetZone) {
408
+ zones.push(mapping.widgetZone);
409
+ }
410
+ // Check custom mappings
411
+ for (const [zone, mappedEntityType] of Object.entries(customZoneMappings)) {
412
+ if (mappedEntityType === entityType) {
413
+ zones.push(zone);
414
+ }
415
+ }
416
+ return zones;
417
+ }
418
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS1yZXNvbHZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb25maWcvem9uZS1yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7O0dBS0c7O0FBaVRILGtEQUVDO0FBS0QsMERBRUM7QUFjRCw4REFpSEM7QUFVRCw4REFzQkM7QUFLRCxzREFpQkM7QUE3ZUQsdURBQW9EO0FBRXBEOzs7R0FHRztBQUNILE1BQU0sYUFBYSxHQUFtRDtJQUNwRSxnQkFBZ0I7SUFDaEIsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRTtJQUMxRCxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRTtJQUVqRCxjQUFjO0lBQ2QsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRTtJQUN0RCxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRTtJQUU3QyxpQkFBaUI7SUFDakIsRUFBRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRTtJQUNyRSxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFO0lBQzVELEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUU7SUFDN0QsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUU7SUFFcEQsbUJBQW1CO0lBQ25CLEVBQUUsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUU7SUFDeEUsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRTtJQUMvRCxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFO0lBQ2hFLEVBQUUsT0FBTyxFQUFF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
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ /**
3
+ * Medusa Dynamic Metadata Plugin Entry Point
4
+ *
5
+ * This plugin provides a flexible, configuration-driven system for managing
6
+ * metadata across any Medusa entity type (products, orders, customers, etc.).
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.getZonesForEntityType = exports.resolveZoneFromEntityType = exports.resolveEntityTypeFromZone = exports.clearCustomZoneMappings = exports.registerZoneMapping = exports.getAllRegisteredZones = exports.getEntityTypeFromZone = exports.getRegisteredEntityTypes = exports.clearCustomMappings = exports.resolveApiEndpoint = exports.getResponseKey = exports.getApiEndpoint = exports.getWidgetZone = exports.getEntityMapping = exports.registerEntityMapping = exports.DEFAULT_DYNAMIC_METADATA_OPTIONS = exports.resolveDynamicMetadataOptions = exports.normalizeDynamicMetadataOptions = exports.validateValueForDescriptor = exports.hasMetadataChanges = exports.buildMetadataPayload = exports.buildInitialFormState = exports.getDescriptorMap = exports.normalizeMetadataDescriptors = exports.METADATA_FIELD_TYPES = void 0;
10
+ var types_1 = require("./shared/metadata/types");
11
+ Object.defineProperty(exports, "METADATA_FIELD_TYPES", { enumerable: true, get: function () { return types_1.METADATA_FIELD_TYPES; } });
12
+ var utils_1 = require("./shared/metadata/utils");
13
+ Object.defineProperty(exports, "normalizeMetadataDescriptors", { enumerable: true, get: function () { return utils_1.normalizeMetadataDescriptors; } });
14
+ Object.defineProperty(exports, "getDescriptorMap", { enumerable: true, get: function () { return utils_1.getDescriptorMap; } });
15
+ Object.defineProperty(exports, "buildInitialFormState", { enumerable: true, get: function () { return utils_1.buildInitialFormState; } });
16
+ Object.defineProperty(exports, "buildMetadataPayload", { enumerable: true, get: function () { return utils_1.buildMetadataPayload; } });
17
+ Object.defineProperty(exports, "hasMetadataChanges", { enumerable: true, get: function () { return utils_1.hasMetadataChanges; } });
18
+ Object.defineProperty(exports, "validateValueForDescriptor", { enumerable: true, get: function () { return utils_1.validateValueForDescriptor; } });
19
+ var metadata_options_1 = require("./config/metadata-options");
20
+ Object.defineProperty(exports, "normalizeDynamicMetadataOptions", { enumerable: true, get: function () { return metadata_options_1.normalizeDynamicMetadataOptions; } });
21
+ Object.defineProperty(exports, "resolveDynamicMetadataOptions", { enumerable: true, get: function () { return metadata_options_1.resolveDynamicMetadataOptions; } });
22
+ Object.defineProperty(exports, "DEFAULT_DYNAMIC_METADATA_OPTIONS", { enumerable: true, get: function () { return metadata_options_1.DEFAULT_DYNAMIC_METADATA_OPTIONS; } });
23
+ var entity_registry_1 = require("./config/entity-registry");
24
+ Object.defineProperty(exports, "registerEntityMapping", { enumerable: true, get: function () { return entity_registry_1.registerEntityMapping; } });
25
+ Object.defineProperty(exports, "getEntityMapping", { enumerable: true, get: function () { return entity_registry_1.getEntityMapping; } });
26
+ Object.defineProperty(exports, "getWidgetZone", { enumerable: true, get: function () { return entity_registry_1.getWidgetZone; } });
27
+ Object.defineProperty(exports, "getApiEndpoint", { enumerable: true, get: function () { return entity_registry_1.getApiEndpoint; } });
28
+ Object.defineProperty(exports, "getResponseKey", { enumerable: true, get: function () { return entity_registry_1.getResponseKey; } });
29
+ Object.defineProperty(exports, "resolveApiEndpoint", { enumerable: true, get: function () { return entity_registry_1.resolveApiEndpoint; } });
30
+ Object.defineProperty(exports, "clearCustomMappings", { enumerable: true, get: function () { return entity_registry_1.clearCustomMappings; } });
31
+ Object.defineProperty(exports, "getRegisteredEntityTypes", { enumerable: true, get: function () { return entity_registry_1.getRegisteredEntityTypes; } });
32
+ Object.defineProperty(exports, "getEntityTypeFromZone", { enumerable: true, get: function () { return entity_registry_1.getEntityTypeFromZone; } });
33
+ Object.defineProperty(exports, "getAllRegisteredZones", { enumerable: true, get: function () { return entity_registry_1.getAllRegisteredZones; } });
34
+ // Export zone resolver utilities
35
+ var zone_resolver_1 = require("./config/zone-resolver");
36
+ Object.defineProperty(exports, "registerZoneMapping", { enumerable: true, get: function () { return zone_resolver_1.registerZoneMapping; } });
37
+ Object.defineProperty(exports, "clearCustomZoneMappings", { enumerable: true, get: function () { return zone_resolver_1.clearCustomZoneMappings; } });
38
+ Object.defineProperty(exports, "resolveEntityTypeFromZone", { enumerable: true, get: function () { return zone_resolver_1.resolveEntityTypeFromZone; } });
39
+ Object.defineProperty(exports, "resolveZoneFromEntityType", { enumerable: true, get: function () { return zone_resolver_1.resolveZoneFromEntityType; } });
40
+ Object.defineProperty(exports, "getZonesForEntityType", { enumerable: true, get: function () { return zone_resolver_1.getZonesForEntityType; } });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7OztHQUtHOzs7QUFVSCxpREFBOEQ7QUFBckQsNkdBQUEsb0JBQW9CLE9BQUE7QUFRN0IsaURBT2dDO0FBTjlCLHFIQUFBLDRCQUE0QixPQUFBO0FBQzVCLHlHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDhHQUFBLHFCQUFxQixPQUFBO0FBQ3JCLDZHQUFBLG9CQUFvQixPQUFBO0FBQ3BCLDJHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLG1IQUFBLDBCQUEwQixPQUFBO0FBVTVCLDhEQUlrQztBQUhoQyxtSUFBQSwrQkFBK0IsT0FBQTtBQUMvQixpSUFBQSw2QkFBNkIsT0FBQTtBQUM3QixvSUFBQSxnQ0FBZ0MsT0FBQTtBQU1sQyw0REFXaUM7QUFWL0Isd0hBQUEscUJBQXFCLE9BQUE7QUFDckIsbUhBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsZ0hBQUEsYUFBYSxPQUFBO0FBQ2IsaUhBQUEsY0FBYyxPQUFBO0FBQ2QsaUhBQUEsY0FBYyxPQUFBO0FBQ2QscUhBQUEsa0JBQWtCLE9BQUE7QUFDbEIsc0hBQUEsbUJBQW1CLE9BQUE7QUFDbkIsMkhBQUEsd0JBQXdCLE9BQUE7QUFDeEIsd0hBQUEscUJBQXFCLE9BQUE7QUFDckIsd0hBQUEscUJBQXFCLE9BQUE7QUFHdkIsaUNBQWlDO0FBQ2pDLHdEQU0rQjtBQUw3QixvSEFBQSxtQkFBbUIsT0FBQTtBQUNuQix3SEFBQSx1QkFBdUIsT0FBQTtBQUN2QiwwSEFBQSx5QkFBeUIsT0FBQTtBQUN6QiwwSEFBQSx5QkFBeUIsT0FBQTtBQUN6QixzSEFBQSxxQkFBcUIsT0FBQSJ9
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.METADATA_FIELD_TYPES = void 0;
4
+ exports.METADATA_FIELD_TYPES = ["number", "text", "file", "bool"];
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2hhcmVkL21ldGFkYXRhL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEsb0JBQW9CLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQVUsQ0FBQSJ9