@codee-sh/medusa-plugin-automations 1.0.3 → 1.0.5

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.
Files changed (83) hide show
  1. package/.medusa/server/src/admin/_chunks/{__admin-extensions__-rqdPN7M1 → __admin-extensions__-BD2AvjDH} +76 -66
  2. package/.medusa/server/src/admin/_chunks/{__admin-extensions__-DIB2k6nJ → __admin-extensions__-BxUQA9oD} +76 -66
  3. package/.medusa/server/src/admin/_chunks/{base-config-DbRWuXsL → base-config-ON0ZG0Je} +2 -3
  4. package/.medusa/server/src/admin/_chunks/{base-config-ro-vFPBg → base-config-XI6iR6Jp} +2 -3
  5. package/.medusa/server/src/admin/index.js +1 -1
  6. package/.medusa/server/src/admin/index.mjs +1 -1
  7. package/.medusa/server/src/api/admin/mpn/automations/available-actions/route.js +4 -2
  8. package/.medusa/server/src/api/admin/mpn/automations/rules/route.js +1 -1
  9. package/.medusa/server/src/hooks/api/automations-actions/automations-actions.js +1 -3
  10. package/.medusa/server/src/hooks/api/automations-rules/automations-rules.js +1 -3
  11. package/.medusa/server/src/hooks/api/available-actions/actions.js +5 -2
  12. package/.medusa/server/src/hooks/api/available-events/events.js +1 -1
  13. package/.medusa/server/src/modules/mpn-automation/services/base-action-service.js +98 -0
  14. package/.medusa/server/src/modules/mpn-automation/services/email-action-service.js +81 -0
  15. package/.medusa/server/src/modules/mpn-automation/services/index.js +8 -2
  16. package/.medusa/server/src/modules/mpn-automation/services/service.js +288 -42
  17. package/.medusa/server/src/modules/mpn-automation/services/slack-action-service.js +48 -0
  18. package/.medusa/server/src/modules/mpn-automation/types/index.js +2 -1
  19. package/.medusa/server/src/modules/mpn-automation/types/modules/index.js +96 -0
  20. package/.medusa/server/src/modules/mpn-automation/types/modules/inventory/index.js +18 -0
  21. package/.medusa/server/src/modules/mpn-automation/types/modules/inventory/inventory.js +56 -0
  22. package/.medusa/server/src/modules/mpn-automation/types/modules/product/index.js +18 -0
  23. package/.medusa/server/src/modules/mpn-automation/types/modules/product/product.js +50 -0
  24. package/.medusa/server/src/modules/mpn-automation/types/modules/product-variant/index.js +18 -0
  25. package/.medusa/server/src/modules/mpn-automation/types/modules/product-variant/product-variant.js +30 -0
  26. package/.medusa/server/src/modules/mpn-automation/types/types.js +2 -136
  27. package/.medusa/server/src/providers/slack/service.js +6 -58
  28. package/.medusa/server/src/subscribers/inventory-level-updated.js +2 -1
  29. package/.medusa/server/src/subscribers/inventory-reservation-item-updated.js +3 -3
  30. package/.medusa/server/src/subscribers/mpn.automation.action.email.executed.js +6 -5
  31. package/.medusa/server/src/subscribers/mpn.automation.action.slack.executed.js +13 -9
  32. package/.medusa/server/src/subscribers/order-placed.js +9 -106
  33. package/.medusa/server/src/subscribers/product-updated.js +45 -0
  34. package/.medusa/server/src/subscribers/product-variant-updated.js +45 -0
  35. package/.medusa/server/src/templates/slack/inventory-level/index.js +18 -0
  36. package/.medusa/server/src/templates/slack/inventory-level/inventory-level.js +95 -0
  37. package/.medusa/server/src/templates/slack/inventory-level/translations/en.json +18 -0
  38. package/.medusa/server/src/templates/slack/inventory-level/translations/index.js +15 -0
  39. package/.medusa/server/src/templates/slack/inventory-level/translations/pl.json +18 -0
  40. package/.medusa/server/src/templates/slack/product/index.js +18 -0
  41. package/.medusa/server/src/templates/slack/product/product.js +55 -0
  42. package/.medusa/server/src/templates/slack/product/translations/en.json +18 -0
  43. package/.medusa/server/src/templates/slack/product/translations/index.js +15 -0
  44. package/.medusa/server/src/templates/slack/product/translations/pl.json +13 -0
  45. package/.medusa/server/src/templates/slack/product-variant/index.js +18 -0
  46. package/.medusa/server/src/templates/slack/product-variant/product-variant.js +55 -0
  47. package/.medusa/server/src/templates/slack/product-variant/translations/en.json +18 -0
  48. package/.medusa/server/src/templates/slack/product-variant/translations/index.js +15 -0
  49. package/.medusa/server/src/templates/slack/product-variant/translations/pl.json +13 -0
  50. package/.medusa/server/src/templates/slack/types.js +3 -0
  51. package/.medusa/server/src/utils/i18n/i18n.js +127 -0
  52. package/.medusa/server/src/utils/i18n/index.js +18 -0
  53. package/.medusa/server/src/utils/index.js +2 -1
  54. package/.medusa/server/src/utils/types/index.js +3 -3
  55. package/.medusa/server/src/utils/validate-rules.js +1 -1
  56. package/.medusa/server/src/workflows/index.js +3 -1
  57. package/.medusa/server/src/workflows/inventory/steps/get-inventory-level-by-id.js +26 -6
  58. package/.medusa/server/src/workflows/mpn-automation/index.js +3 -2
  59. package/.medusa/server/src/workflows/mpn-automation/run-automation.js +2 -1
  60. package/.medusa/server/src/workflows/mpn-automation/{send-email-action.js → run-email-action.js} +8 -7
  61. package/.medusa/server/src/workflows/mpn-automation/run-slack-action.js +67 -0
  62. package/.medusa/server/src/workflows/mpn-automation/steps/edit-automation-actions.js +16 -5
  63. package/.medusa/server/src/workflows/mpn-automation/steps/retrieve-automation-triggers-by-event.js +1 -1
  64. package/.medusa/server/src/workflows/mpn-automation/steps/run-automation-actions.js +3 -2
  65. package/.medusa/server/src/workflows/notifications/send-email.js +2 -1
  66. package/.medusa/server/src/workflows/notifications/send-slack.js +2 -1
  67. package/.medusa/server/src/workflows/notifications/steps/send-email.js +21 -8
  68. package/.medusa/server/src/workflows/notifications/steps/send-slack.js +25 -5
  69. package/.medusa/server/src/workflows/product/get-product-by-id.js +23 -0
  70. package/.medusa/server/src/workflows/product/index.js +18 -0
  71. package/.medusa/server/src/workflows/product/steps/get-product-by-id.js +80 -0
  72. package/.medusa/server/src/workflows/product/steps/index.js +18 -0
  73. package/.medusa/server/src/workflows/product-variant/get-product-variant-by-id.js +23 -0
  74. package/.medusa/server/src/workflows/product-variant/index.js +18 -0
  75. package/.medusa/server/src/workflows/product-variant/steps/get-product-variant-by-id.js +63 -0
  76. package/.medusa/server/src/workflows/product-variant/steps/index.js +18 -0
  77. package/README.md +7 -0
  78. package/package.json +8 -4
  79. package/.medusa/server/src/modules/mpn-automation/actions-handlers/base-action-handler.js +0 -32
  80. package/.medusa/server/src/modules/mpn-automation/actions-handlers/email-action-handler.js +0 -71
  81. package/.medusa/server/src/modules/mpn-automation/actions-handlers/index.js +0 -10
  82. package/.medusa/server/src/modules/mpn-automation/actions-handlers/slack-action-handler.js +0 -43
  83. package/.medusa/server/src/workflows/mpn-automation/send-slack-action.js +0 -69
@@ -3,7 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const utils_1 = require("@medusajs/framework/utils");
4
4
  const models_1 = require("../models");
5
5
  const types_1 = require("../types");
6
- const actions_handlers_1 = require("../actions-handlers");
6
+ const email_action_service_1 = require("./email-action-service");
7
+ const slack_action_service_1 = require("./slack-action-service");
8
+ const utils_2 = require("@medusajs/framework/utils");
9
+ const modules_1 = require("../types/modules");
7
10
  class MpnAutomationService extends (0, utils_1.MedusaService)({
8
11
  MpnAutomationTrigger: models_1.MpnAutomationTrigger,
9
12
  MpnAutomationState: models_1.MpnAutomationState,
@@ -17,22 +20,177 @@ class MpnAutomationService extends (0, utils_1.MedusaService)({
17
20
  this.logger_ = logger;
18
21
  this.options_ = options || {};
19
22
  this.events_ =
20
- this.options_.automations?.customEvents || [];
23
+ this.options_.automations?.extend?.events || [];
21
24
  this.actionsEnabled_ = this.options_.automations
22
25
  ?.actionsEnabled || {
23
26
  slack: false,
24
27
  email: true,
25
28
  };
26
29
  // Initialize default action handlers
27
- this.init();
30
+ this.initializeActionHandlers();
31
+ // Initialize extended actions (custom handlers and templates)
32
+ // Note: templates with import paths will be loaded asynchronously
33
+ this.initializeExtendedActions().catch((error) => {
34
+ this.logger_.error(`Failed to initialize extended actions: ${error?.message || "Unknown error"}`);
35
+ });
36
+ }
37
+ /**
38
+ * Get available triggers for the admin panel form
39
+ *
40
+ * @returns Array of triggers
41
+ */
42
+ getAvailableTriggers() {
43
+ return [...types_1.TRIGGER_TYPES];
44
+ }
45
+ /**
46
+ * Get action handlers map
47
+ *
48
+ * @returns Map of action handlers
49
+ */
50
+ getActionHandlers() {
51
+ return this.actionHandlers_;
52
+ }
53
+ /**
54
+ * Build events list using central metadata registry
55
+ * Supports both Medusa events and custom events
56
+ *
57
+ * @returns Array of events
58
+ */
59
+ buildAvailableEvents() {
60
+ const events = [
61
+ // Service Events (automatic CRUD events)
62
+ {
63
+ name: "Inventory",
64
+ events: this.buildEvents(utils_2.InventoryEvents) || [],
65
+ },
66
+ {
67
+ name: "Cart",
68
+ events: this.buildEvents(utils_2.CartWorkflowEvents),
69
+ },
70
+ {
71
+ name: "Customer",
72
+ events: this.buildEvents(utils_2.CustomerWorkflowEvents),
73
+ },
74
+ {
75
+ name: "Order",
76
+ events: this.buildEvents(utils_2.OrderWorkflowEvents),
77
+ },
78
+ {
79
+ name: "Order Edit",
80
+ events: this.buildEvents(utils_2.OrderEditWorkflowEvents),
81
+ },
82
+ {
83
+ name: "User",
84
+ events: this.buildEvents(utils_2.UserWorkflowEvents),
85
+ },
86
+ {
87
+ name: "Auth",
88
+ events: this.buildEvents(utils_2.AuthWorkflowEvents),
89
+ },
90
+ {
91
+ name: "Sales Channel",
92
+ events: this.buildEvents(utils_2.SalesChannelWorkflowEvents),
93
+ },
94
+ {
95
+ name: "Product Category",
96
+ events: this.buildEvents(utils_2.ProductCategoryWorkflowEvents),
97
+ },
98
+ {
99
+ name: "Product Collection",
100
+ events: this.buildEvents(utils_2.ProductCollectionWorkflowEvents),
101
+ },
102
+ {
103
+ name: "Product Variant",
104
+ events: this.buildEvents(utils_2.ProductVariantWorkflowEvents),
105
+ },
106
+ {
107
+ name: "Product",
108
+ events: this.buildEvents(utils_2.ProductWorkflowEvents),
109
+ },
110
+ {
111
+ name: "Product Type",
112
+ events: this.buildEvents(utils_2.ProductTypeWorkflowEvents),
113
+ },
114
+ {
115
+ name: "Product Tag",
116
+ events: this.buildEvents(utils_2.ProductTagWorkflowEvents),
117
+ },
118
+ {
119
+ name: "Product Option",
120
+ events: this.buildEvents(utils_2.ProductOptionWorkflowEvents),
121
+ },
122
+ {
123
+ name: "Invite",
124
+ events: this.buildEvents(utils_2.InviteWorkflowEvents),
125
+ },
126
+ {
127
+ name: "Region",
128
+ events: this.buildEvents(utils_2.RegionWorkflowEvents),
129
+ },
130
+ {
131
+ name: "Fulfillment",
132
+ events: this.buildEvents(utils_2.FulfillmentWorkflowEvents),
133
+ },
134
+ {
135
+ name: "Payment Events",
136
+ events: this.buildEvents(utils_2.PaymentEvents) || [],
137
+ },
138
+ ];
139
+ // Filter out empty groups and ensure all groups have events array
140
+ return events
141
+ .filter((group) => group && group.events && Array.isArray(group.events) && group.events.length > 0)
142
+ .map((group) => ({
143
+ name: String(group.name || ''),
144
+ events: group.events || [],
145
+ }));
146
+ }
147
+ /**
148
+ * Get available events for the admin panel form
149
+ * Combines Medusa events with custom events
150
+ *
151
+ * @returns Array of events
152
+ */
153
+ getAvailableEvents() {
154
+ const medusaEvents = this.buildAvailableEvents();
155
+ if (!this.events_ || this.events_.length === 0) {
156
+ return medusaEvents;
157
+ }
158
+ // If there are custom events, add them to the result
159
+ if (this.events_.length > 0) {
160
+ return [...medusaEvents, ...this.events_];
161
+ }
162
+ return medusaEvents;
163
+ }
164
+ /**
165
+ * Get available templates for a given event name
166
+ * Uses getAvailableEvents() to find the event and extract template
167
+ *
168
+ * @param eventName - Event name to search for
169
+ * @returns Array of template options
170
+ */
171
+ getTemplatesForEvent(eventName) {
172
+ if (!eventName) {
173
+ return [];
174
+ }
175
+ const allEvents = this.getAvailableEvents();
176
+ // Search through all event groups
177
+ for (const group of allEvents) {
178
+ const event = group.events?.find((e) => e.value === eventName);
179
+ if (event?.templates && event.templates.length > 0) {
180
+ return event.templates;
181
+ }
182
+ }
183
+ return [];
28
184
  }
29
185
  /**
30
186
  * Initialize action handlers from defaults and options
187
+ *
188
+ * @returns void
31
189
  */
32
- init() {
190
+ initializeActionHandlers() {
33
191
  const defaultActions = [
34
- new actions_handlers_1.EmailActionHandler(),
35
- new actions_handlers_1.SlackActionHandler(),
192
+ new email_action_service_1.EmailActionService(),
193
+ new slack_action_service_1.SlackActionService(),
36
194
  ];
37
195
  defaultActions.forEach((action) => {
38
196
  const isEnabled = this.actionsEnabled_[action.id];
@@ -42,58 +200,146 @@ class MpnAutomationService extends (0, utils_1.MedusaService)({
42
200
  });
43
201
  this.logger_.info(`Action handler for ${action.id} registered - ${isEnabled ? "enabled" : "disabled"} in config`);
44
202
  });
45
- const customHandlers = this.options_.automations?.actionHandlers || [];
46
- customHandlers.forEach((action) => {
47
- if (!this.actionHandlers_.has(action.id)) {
48
- const isEnabled = this.actionsEnabled_[action.id];
49
- this.actionHandlers_.set(action.id, {
50
- handler: action,
51
- enabled: isEnabled,
52
- });
53
- this.logger_.info(`Action handler for ${action.id} registered - ${isEnabled ? "enabled" : "disabled"} in config`);
54
- }
55
- });
56
203
  }
57
204
  /**
58
- * Get action handlers map
205
+ * Initialize extended actions (custom handlers and templates)
206
+ * Handles both custom handler registration and template loading
207
+ *
208
+ * @returns Promise<void>
59
209
  */
60
- getActionHandlers() {
61
- return this.actionHandlers_;
210
+ async initializeExtendedActions() {
211
+ const extendedActions = this.options_.automations?.extend?.actions || [];
212
+ await Promise.all(extendedActions.map(async (actionConfig) => {
213
+ // 1. Register custom handler if provided
214
+ if (actionConfig.handler) {
215
+ if (!this.actionHandlers_.has(actionConfig.id)) {
216
+ const isEnabled = this.actionsEnabled_[actionConfig.id];
217
+ this.actionHandlers_.set(actionConfig.id, {
218
+ handler: actionConfig.handler,
219
+ enabled: isEnabled,
220
+ });
221
+ this.logger_.info(`Custom action handler "${actionConfig.id}" registered - ${isEnabled ? "enabled" : "disabled"}`);
222
+ }
223
+ else {
224
+ this.logger_.warn(`Action handler "${actionConfig.id}" already exists, skipping custom handler registration`);
225
+ }
226
+ }
227
+ // 2. Register templates (for existing or newly registered handler)
228
+ if (actionConfig.templates && Array.isArray(actionConfig.templates)) {
229
+ const handlerData = this.getActionHandler(actionConfig.id);
230
+ if (!handlerData) {
231
+ this.logger_.warn(`Cannot register templates for "${actionConfig.id}" - handler not found`);
232
+ return;
233
+ }
234
+ const { handler } = handlerData;
235
+ if (!handler.registerTemplate) {
236
+ this.logger_.warn(`Handler "${actionConfig.id}" does not support template registration`);
237
+ return;
238
+ }
239
+ await Promise.all(actionConfig.templates.map(async (template) => {
240
+ const templateName = template.name;
241
+ const templateValue = template.path;
242
+ let renderer = templateValue;
243
+ try {
244
+ const templateModule = await import(templateValue);
245
+ const name = `render${templateName.charAt(0).toUpperCase() + templateName.slice(1)}`;
246
+ renderer = templateModule[name] || templateModule.default;
247
+ if (!renderer) {
248
+ this.logger_.warn(`Template module from "${templateValue}" does not export a default function or expected named export`);
249
+ return;
250
+ }
251
+ }
252
+ catch (error) {
253
+ this.logger_.warn(`Failed to load template from "${templateValue}": ${error?.message || "Unknown error"}`);
254
+ return;
255
+ }
256
+ if (templateName) {
257
+ handler.registerTemplate(templateName, renderer);
258
+ this.logger_.info(`Custom template "${templateName}" registered for handler "${actionConfig.id}"`);
259
+ }
260
+ }));
261
+ }
262
+ }));
62
263
  }
63
264
  /**
64
- * Get available events for the admin panel form
265
+ * Get available actions for the admin panel form
266
+ * If Handler has fields, we can push templateName field to fields array, then in the admin panel form we can render the templateName field as a select field with the templates options.
267
+ *
268
+ * @param eventName - Optional event name to filter templates dynamically
269
+ * @returns Array of actions
65
270
  */
66
- getAvailableEvents() {
67
- return [...types_1.ALL_EVENTS, ...this.events_];
271
+ getAvailableActions(eventName) {
272
+ const handlers = this.getActionHandlers();
273
+ return Array.from(handlers.values()).map((handler) => {
274
+ // Get fields, potentially with dynamic template options
275
+ let fields = handler.handler.fields || [];
276
+ // If eventName is provided, update templateName fields dynamically
277
+ if (eventName && fields.length > 0) {
278
+ const templates = this.getTemplatesForEvent(eventName);
279
+ fields = fields.map((field) => {
280
+ // If this is a templateName field, update its options
281
+ if (field.key === "templateName" && field.type === "select") {
282
+ return {
283
+ ...field,
284
+ options: templates.length > 0 ? templates : field.options || [],
285
+ defaultValue: templates.length > 0 ? templates[0]?.value : field.defaultValue,
286
+ };
287
+ }
288
+ return field;
289
+ });
290
+ }
291
+ return {
292
+ value: handler.handler.id,
293
+ label: handler.handler.label,
294
+ description: handler.handler.description,
295
+ configComponentKey: handler.handler.configComponentKey,
296
+ templateLoaders: handler.handler.templateLoaders,
297
+ fields: fields,
298
+ enabled: handler.enabled,
299
+ };
300
+ });
68
301
  }
69
302
  /**
70
- * Get available actions for the admin panel form
303
+ * Build events list from Medusa events
304
+ * Supports both Medusa events and custom events
305
+ *
306
+ * @param events - Medusa events object
307
+ * @returns Array of events
71
308
  */
72
- getAvailableActions() {
73
- const handlers = this.getActionHandlers();
74
- return Array.from(handlers.values()).map((handler) => ({
75
- value: handler.handler.id,
76
- label: handler.handler.label,
77
- description: handler.handler.description,
78
- configComponentKey: handler.handler.configComponentKey,
79
- templateLoaders: handler.handler.templateLoaders,
80
- fields: handler.handler.fields,
81
- enabled: handler.enabled,
82
- }));
309
+ buildEvents(events) {
310
+ if (!events || typeof events !== 'object') {
311
+ return [];
312
+ }
313
+ return Object.values(events)
314
+ .filter((event) => event != null) // Filter out null/undefined
315
+ .map((event) => {
316
+ const eventName = String(event);
317
+ // Skip invalid event names
318
+ if (!eventName || eventName === 'undefined' || eventName === 'null') {
319
+ return null;
320
+ }
321
+ const metadata = (0, modules_1.getEventMetadata)(eventName);
322
+ return {
323
+ value: eventName,
324
+ label: eventName,
325
+ attributes: metadata.attributes || event.attributes || [],
326
+ templates: metadata.templates || event.templates || [],
327
+ contextType: event.contextType || null, // Only from custom events, not from registry
328
+ };
329
+ })
330
+ .filter((event) => event != null); // Filter out null results
83
331
  }
84
332
  /**
85
333
  * Get action handler by ID for the admin panel form
334
+ * Used to get the action handler by ID in the Run Automation Actions workflow step
335
+ *
336
+ * @param actionId - Action ID
337
+ * @returns Action handler
86
338
  */
87
339
  getActionHandler(actionId) {
88
340
  const handlers = this.getActionHandlers();
89
341
  return handlers.get(actionId);
90
342
  }
91
- /**
92
- * Get available triggers for the admin panel form
93
- */
94
- getAvailableTriggers() {
95
- return [...types_1.TRIGGER_TYPES];
96
- }
97
343
  }
98
344
  exports.default = MpnAutomationService;
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL21wbi1hdXRvbWF0aW9uL3NlcnZpY2VzL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxREFHa0M7QUFDbEMsc0NBTWtCO0FBQ2xCLG9DQU1pQjtBQUNqQiwwREFHNEI7QUFPNUIsTUFBTSxvQkFBcUIsU0FBUSxJQUFBLHFCQUFhLEVBQUM7SUFDL0Msb0JBQW9CLEVBQXBCLDZCQUFvQjtJQUNwQixrQkFBa0IsRUFBbEIsMkJBQWtCO0lBQ2xCLGlCQUFpQixFQUFqQiwwQkFBaUI7SUFDakIsc0JBQXNCLEVBQXRCLCtCQUFzQjtJQUN0QixtQkFBbUIsRUFBbkIsNEJBQW1CO0NBQ3BCLENBQUM7SUFVQSxZQUNFLEVBQUUsTUFBTSxFQUF3QixFQUNoQyxPQUF1QjtRQUV2QixLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQTtRQVRiLG9CQUFlLEdBR25CLElBQUksR0FBRyxFQUFFLENBQUE7UUFRWCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQTtRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUE7UUFDN0IsSUFBSSxDQUFDLE9BQU87WUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxZQUFZLElBQUksRUFBRSxDQUFBO1FBQy9DLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXO1lBQzlDLEVBQUUsY0FBYyxJQUFJO1lBQ3BCLEtBQUssRUFBRSxLQUFLO1lBQ1osS0FBSyxFQUFFLElBQUk7U0FDWixDQUFBO1FBRUQscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUNiLENBQUM7SUFFRDs7T0FFRztJQUNLLElBQUk7UUFDVixNQUFNLGNBQWMsR0FBb0I7WUFDdEMsSUFBSSxxQ0FBa0IsRUFBRTtZQUN4QixJ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
345
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL21wbi1hdXRvbWF0aW9uL3NlcnZpY2VzL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxREFHa0M7QUFDbEMsc0NBTWtCO0FBQ2xCLG9DQUtpQjtBQUNqQixpRUFBMkQ7QUFDM0QsaUVBQTJEO0FBRTNELHFEQW9Ca0M7QUFDbEMsOENBQW1EO0FBTW5ELE1BQU0sb0JBQXFCLFNBQVEsSUFBQSxxQkFBYSxFQUFDO0lBQy9DLG9CQUFvQixFQUFwQiw2QkFBb0I7SUFDcEIsa0JBQWtCLEVBQWxCLDJCQUFrQjtJQUNsQixpQkFBaUIsRUFBakIsMEJBQWlCO0lBQ2pCLHNCQUFzQixFQUF0QiwrQkFBc0I7SUFDdEIsbUJBQW1CLEVBQW5CLDRCQUFtQjtDQUNwQixDQUFDO0lBT0EsWUFDRSxFQUFFLE1BQU0sRUFBd0IsRUFDaEMsT0FBdUI7UUFFdkIsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUE7UUFOYixvQkFBZSxHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFBO1FBUW5ELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFBO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQTtRQUM3QixJQUFJLENBQUMsT0FBTztZQUNWLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksRUFBRSxDQUFBO1FBQ2pELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXO1lBQzlDLEVBQUUsY0FBYyxJQUFJO1lBQ3BCLEtBQUssRUFBRSxLQUFLO1lBQ1osS0FBSyxFQUFFLElBQUk7U0FDWixDQUFBO1FBRUQscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFBO1FBRS9CLDhEQUE4RDtRQUM5RCxrRUFBa0U7UUFD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
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SlackActionService = void 0;
4
+ const base_action_service_1 = require("./base-action-service");
5
+ const inventory_level_1 = require("../../../templates/slack/inventory-level");
6
+ const product_variant_1 = require("../../../templates/slack/product-variant/product-variant");
7
+ const product_1 = require("../../../templates/slack/product/product");
8
+ class SlackActionService extends base_action_service_1.BaseActionService {
9
+ constructor() {
10
+ super();
11
+ this.id = "slack";
12
+ this.label = "Slack";
13
+ this.fields = [
14
+ // Add templateName field - options will be populated dynamically by service based on eventName
15
+ this.addTemplateNameField()
16
+ ];
17
+ this.initializeTemplates();
18
+ }
19
+ /**
20
+ * Initialize default Slack templates
21
+ */
22
+ initializeTemplates() {
23
+ // Register default templates
24
+ this.registerTemplate("inventory-level", inventory_level_1.renderInventoryLevel);
25
+ this.registerTemplate("product-variant", product_variant_1.renderProductVariant);
26
+ this.registerTemplate("product", product_1.renderProduct);
27
+ }
28
+ /**
29
+ * Render Slack template
30
+ * @param params - Template rendering parameters
31
+ * @returns Rendered Slack template with text and blocks
32
+ */
33
+ async renderTemplate(params) {
34
+ const renderer = this.getTemplate(params.templateName);
35
+ if (!renderer) {
36
+ throw new Error(`Slack template "${params.templateName}" not found. Available templates: ${Array.from(this.templates_.keys()).join(", ")}`);
37
+ }
38
+ const result = renderer({
39
+ context: params.context,
40
+ contextType: params.contextType,
41
+ options: params.options || {},
42
+ });
43
+ // Handle both sync and async renderers
44
+ return result instanceof Promise ? await result : result;
45
+ }
46
+ }
47
+ exports.SlackActionService = SlackActionService;
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xhY2stYWN0aW9uLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tcG4tYXV0b21hdGlvbi9zZXJ2aWNlcy9zbGFjay1hY3Rpb24tc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrREFBeUQ7QUFFekQsOEVBQStFO0FBQy9FLDhGQUErRjtBQUMvRixzRUFBd0U7QUFFeEUsTUFBYSxrQkFBbUIsU0FBUSx1Q0FBaUI7SUFJdkQ7UUFDRSxLQUFLLEVBQUUsQ0FBQTtRQUpULE9BQUUsR0FBRyxPQUFPLENBQUE7UUFDWixVQUFLLEdBQUcsT0FBTyxDQUFBO1FBT2YsV0FBTSxHQUFHO1lBQ1AsK0ZBQStGO1lBQy9GLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtTQUM1QixDQUFBO1FBTkMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUE7SUFDNUIsQ0FBQztJQU9EOztPQUVHO0lBQ08sbUJBQW1CO1FBQzNCLDZCQUE2QjtRQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsc0NBQTJCLENBQUMsQ0FBQTtRQUNyRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsc0NBQTJCLENBQUMsQ0FBQTtRQUNyRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLHVCQUFvQixDQUFDLENBQUE7SUFDeEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsY0FBYyxDQUFDLE1BS3BCO1FBQ0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFzQyxDQUFBO1FBRTNGLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQ2IsbUJBQW1CLE1BQU0sQ0FBQyxZQUFZLHFDQUFxQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDM0gsQ0FBQTtRQUNILENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7WUFDdEIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1lBQ3ZCLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztZQUMvQixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFO1NBQzlCLENBQUMsQ0FBQTtRQUVGLHVDQUF1QztRQUN2QyxPQUFPLE1BQU0sWUFBWSxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUE7SUFDMUQsQ0FBQztDQUNGO0FBcERELGdEQW9EQyJ9
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./types"), exports);
18
18
  __exportStar(require("./interfaces"), exports);
19
19
  __exportStar(require("./action-handler"), exports);
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tcG4tYXV0b21hdGlvbi90eXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQXVCO0FBQ3ZCLCtDQUE0QjtBQUM1QixtREFBZ0MifQ==
20
+ __exportStar(require("./modules"), exports);
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tcG4tYXV0b21hdGlvbi90eXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQXVCO0FBQ3ZCLCtDQUE0QjtBQUM1QixtREFBZ0M7QUFDaEMsNENBQXlCIn0=
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getEventMetadata = getEventMetadata;
4
+ const inventory_1 = require("./inventory");
5
+ const product_1 = require("./product");
6
+ const product_variant_1 = require("./product-variant");
7
+ /**
8
+ * Get metadata for an event (attributes and template names)
9
+ * Templates must be explicitly set in EVENT_METADATA_REGISTRY or in custom events
10
+ */
11
+ function getEventMetadata(eventName) {
12
+ return EVENT_METADATA_REGISTRY[eventName] || {};
13
+ }
14
+ /**
15
+ * Central registry mapping event names to their metadata
16
+ * This allows us to:
17
+ * - Define attributes for rules
18
+ * - Map events to template names (multiple templates per event)
19
+ * - Support both Medusa events and custom events
20
+ */
21
+ const EVENT_METADATA_REGISTRY = {
22
+ // Inventory Events
23
+ "inventory.inventory-level.created": {
24
+ attributes: inventory_1.INVENTORY_LEVEL_ATTRIBUTES,
25
+ templates: [
26
+ {
27
+ value: "inventory-level",
28
+ name: "Inventory Level",
29
+ },
30
+ ],
31
+ },
32
+ "inventory.inventory-level.updated": {
33
+ attributes: inventory_1.INVENTORY_LEVEL_ATTRIBUTES,
34
+ templates: [
35
+ {
36
+ value: "inventory-level",
37
+ name: "Inventory Level",
38
+ },
39
+ ],
40
+ },
41
+ "inventory.inventory-level.deleted": {
42
+ attributes: inventory_1.INVENTORY_LEVEL_ATTRIBUTES,
43
+ templates: [
44
+ {
45
+ value: "inventory-level",
46
+ name: "Inventory Level",
47
+ },
48
+ ],
49
+ },
50
+ "inventory.inventory-item.created": {
51
+ attributes: inventory_1.INVENTORY_ITEM_ATTRIBUTES,
52
+ templates: [
53
+ {
54
+ value: "inventory-item",
55
+ name: "Inventory Item",
56
+ },
57
+ ],
58
+ },
59
+ "inventory.inventory-item.updated": {
60
+ attributes: inventory_1.INVENTORY_ITEM_ATTRIBUTES,
61
+ templates: [
62
+ {
63
+ value: "inventory-item",
64
+ name: "Inventory Item",
65
+ },
66
+ ],
67
+ },
68
+ "inventory.inventory-item.deleted": {
69
+ attributes: inventory_1.INVENTORY_ITEM_ATTRIBUTES,
70
+ templates: [
71
+ {
72
+ value: "inventory-item",
73
+ name: "Inventory Item",
74
+ },
75
+ ],
76
+ },
77
+ "product-variant.updated": {
78
+ attributes: product_variant_1.PRODUCT_VARIANT_ATTRIBUTES,
79
+ templates: [
80
+ {
81
+ value: "product-variant",
82
+ name: "Product Variant",
83
+ },
84
+ ],
85
+ },
86
+ "product.updated": {
87
+ attributes: product_1.PRODUCT_ATTRIBUTES,
88
+ templates: [
89
+ {
90
+ value: "product",
91
+ name: "Product",
92
+ },
93
+ ],
94
+ },
95
+ };
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tcG4tYXV0b21hdGlvbi90eXBlcy9tb2R1bGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBcUJBLDRDQUlDO0FBekJELDJDQUdvQjtBQUNwQix1Q0FBOEM7QUFDOUMsdURBQThEO0FBWTlEOzs7R0FHRztBQUNILFNBQWdCLGdCQUFnQixDQUM5QixTQUFpQjtJQUVqQixPQUFPLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtBQUNqRCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSx1QkFBdUIsR0FHekI7SUFDRixtQkFBbUI7SUFDbkIsbUNBQW1DLEVBQUU7UUFDbkMsVUFBVSxFQUFFLHNDQUEwQjtRQUN0QyxTQUFTLEVBQUU7WUFDVDtnQkFDRSxLQUFLLEVBQUUsaUJBQWlCO2dCQUN4QixJQUFJLEVBQUUsaUJBQWlCO2FBQ3hCO1NBQ0Y7S0FDRjtJQUNELG1DQUFtQyxFQUFFO1FBQ25DLFVBQVUsRUFBRSxzQ0FBMEI7UUFDdEMsU0FBUyxFQUFFO1lBQ1Q7Z0JBQ0UsS0FBSyxFQUFFLGlCQUFpQjtnQkFDeEIsSUFBSSxFQUFFLGlCQUFpQjthQUN4QjtTQUNGO0tBQ0Y7SUFDRCxtQ0FBbUMsRUFBRTtRQUNuQyxVQUFVLEVBQUUsc0NBQTBCO1FBQ3RDLFNBQVMsRUFBRTtZQUNUO2dCQUNFLEtBQUssRUFBRSxpQkFBaUI7Z0JBQ3hCLElBQUksRUFBRSxpQkFBaUI7YUFDeEI7U0FDRjtLQUNGO0lBQ0Qsa0NBQWtDLEVBQUU7UUFDbEMsVUFBVSxFQUFFLHFDQUF5QjtRQUNyQyxTQUFTLEVBQUU7WUFDVDtnQkFDRSxLQUFLLEVBQUUsZ0JBQWdCO2dCQUN2QixJQUFJLEVBQUUsZ0JBQWdCO2FBQ3ZCO1NBQ0Y7S0FDRjtJQUNELGtDQUFrQyxFQUFFO1FBQ2xDLFVBQVUsRUFBRSxxQ0FBeUI7UUFDckMsU0FBUyxFQUFFO1lBQ1Q7Z0JBQ0UsS0FBSyxFQUFFLGdCQUFnQjtnQkFDdkIsSUFBSSxFQUFFLGdCQUFnQjthQUN2QjtTQUNGO0tBQ0Y7SUFDRCxrQ0FBa0MsRUFBRTtRQUNsQyxVQUFVLEVBQUUscUNBQXlCO1FBQ3JDLFNBQVMsRUFBRTtZQUNUO2dCQUNFLEtBQUssRUFBRSxnQkFBZ0I7Z0JBQ3ZCLElBQUksRUFBRSxnQkFBZ0I7YUFDdkI7U0FDRjtLQUNGO0lBQ0QseUJBQXlCLEVBQUU7UUFDekIsVUFBVSxFQUFFLDRDQUEwQjtRQUN0QyxTQUFTLEVBQUU7WUFDVDtnQkFDRSxLQUFLLEVBQUUsaUJBQWlCO2dCQUN4QixJQUFJLEVBQUUsaUJBQWlCO2FBQ3hCO1NBQ0Y7S0FDRjtJQUNELGlCQUFpQixFQUFFO1FBQ2pCLFVBQVUsRUFBRSw0QkFBa0I7UUFDOUIsU0FBUyxFQUFFO1lBQ1Q7Z0JBQ0UsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLElBQUksRUFBRSxTQUFTO2FBQ2hCO1NBQ0Y7S0FDRjtDQUNGLENBQUEifQ==
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./inventory"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tcG4tYXV0b21hdGlvbi90eXBlcy9tb2R1bGVzL2ludmVudG9yeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOENBQTJCIn0=
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.INVENTORY_LEVEL_ATTRIBUTES = exports.INVENTORY_ITEM_ATTRIBUTES = void 0;
4
+ exports.INVENTORY_ITEM_ATTRIBUTES = [
5
+ {
6
+ value: "inventory_item.stocked_quantity",
7
+ label: "Stocked Quantity",
8
+ },
9
+ {
10
+ value: "inventory_item.reserved_quantity",
11
+ label: "Reserved Quantity",
12
+ },
13
+ {
14
+ value: "inventory_item.available_quantity",
15
+ label: "Available Quantity",
16
+ },
17
+ {
18
+ value: "inventory_item.incoming_quantity",
19
+ label: "Incoming Quantity",
20
+ },
21
+ {
22
+ value: "inventory_item.location_id",
23
+ label: "Location ID",
24
+ },
25
+ ];
26
+ exports.INVENTORY_LEVEL_ATTRIBUTES = [
27
+ {
28
+ value: "inventory_level.id",
29
+ label: "ID",
30
+ },
31
+ {
32
+ value: "inventory_level.inventory_item_id",
33
+ label: "Inventory Item ID",
34
+ },
35
+ {
36
+ value: "inventory_level.stocked_quantity",
37
+ label: "Stocked Quantity",
38
+ },
39
+ {
40
+ value: "inventory_level.reserved_quantity",
41
+ label: "Reserved Quantity",
42
+ },
43
+ {
44
+ value: "inventory_level.available_quantity",
45
+ label: "Available Quantity",
46
+ },
47
+ {
48
+ value: "inventory_level.incoming_quantity",
49
+ label: "Incoming Quantity",
50
+ },
51
+ {
52
+ value: "inventory_level.location_id",
53
+ label: "Location ID",
54
+ },
55
+ ];
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52ZW50b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvbXBuLWF1dG9tYXRpb24vdHlwZXMvbW9kdWxlcy9pbnZlbnRvcnkvaW52ZW50b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNhLFFBQUEseUJBQXlCLEdBQUc7SUFDdkM7UUFDRSxLQUFLLEVBQUUsaUNBQWlDO1FBQ3hDLEtBQUssRUFBRSxrQkFBa0I7S0FDMUI7SUFDRDtRQUNFLEtBQUssRUFBRSxrQ0FBa0M7UUFDekMsS0FBSyxFQUFFLG1CQUFtQjtLQUMzQjtJQUNEO1FBQ0UsS0FBSyxFQUFFLG1DQUFtQztRQUMxQyxLQUFLLEVBQUUsb0JBQW9CO0tBQzVCO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsa0NBQWtDO1FBQ3pDLEtBQUssRUFBRSxtQkFBbUI7S0FDM0I7SUFDRDtRQUNFLEtBQUssRUFBRSw0QkFBNEI7UUFDbkMsS0FBSyxFQUFFLGFBQWE7S0FDckI7Q0FDRixDQUFBO0FBRVksUUFBQSwwQkFBMEIsR0FBRztJQUN4QztRQUNFLEtBQUssRUFBRSxvQkFBb0I7UUFDM0IsS0FBSyxFQUFFLElBQUk7S0FDWjtJQUNEO1FBQ0UsS0FBSyxFQUFFLG1DQUFtQztRQUMxQyxLQUFLLEVBQUUsbUJBQW1CO0tBQzNCO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsa0NBQWtDO1FBQ3pDLEtBQUssRUFBRSxrQkFBa0I7S0FDMUI7SUFDRDtRQUNFLEtBQUssRUFBRSxtQ0FBbUM7UUFDMUMsS0FBSyxFQUFFLG1CQUFtQjtLQUMzQjtJQUNEO1FBQ0UsS0FBSyxFQUFFLG9DQUFvQztRQUMzQyxLQUFLLEVBQUUsb0JBQW9CO0tBQzVCO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsbUNBQW1DO1FBQzFDLEtBQUssRUFBRSxtQkFBbUI7S0FDM0I7SUFDRDtRQUNFLEtBQUssRUFBRSw2QkFBNkI7UUFDcEMsS0FBSyxFQUFFLGFBQWE7S0FDckI7Q0FDRixDQUFBIn0=
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./product"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tcG4tYXV0b21hdGlvbi90eXBlcy9tb2R1bGVzL3Byb2R1Y3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRDQUF5QiJ9