@codee-sh/medusa-plugin-automations 1.0.6 → 1.0.7

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 (56) hide show
  1. package/.medusa/server/src/admin/_chunks/{__admin-extensions__-BD2AvjDH → __admin-extensions__-BgrPyL-G} +7917 -322
  2. package/.medusa/server/src/admin/_chunks/{__admin-extensions__-BxUQA9oD → __admin-extensions__-Cc5RhzDh} +7992 -381
  3. package/.medusa/server/src/admin/_chunks/base-config-D8uDn9uc +414 -0
  4. package/.medusa/server/src/admin/_chunks/base-config-zK3z6k14 +414 -0
  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 +1 -1
  8. package/.medusa/server/src/api/admin/mpn/automations/rules/route.js +11 -2
  9. package/.medusa/server/src/modules/mpn-automation/migrations/Migration20251217190839.js +14 -0
  10. package/.medusa/server/src/modules/mpn-automation/models/mpn_automation_rule_value.js +3 -2
  11. package/.medusa/server/src/modules/mpn-automation/services/base-action-service.js +1 -1
  12. package/.medusa/server/src/modules/mpn-automation/services/email-action-service.js +2 -2
  13. package/.medusa/server/src/modules/mpn-automation/services/service.js +20 -9
  14. package/.medusa/server/src/modules/mpn-automation/services/slack-action-service.js +2 -2
  15. package/.medusa/server/src/modules/mpn-automation/types/modules/index.js +35 -5
  16. package/.medusa/server/src/modules/mpn-automation/types/modules/inventory/inventory.js +15 -1
  17. package/.medusa/server/src/modules/mpn-automation/types/modules/product/product.js +140 -1
  18. package/.medusa/server/src/modules/mpn-automation/types/modules/product-category/index.js +18 -0
  19. package/.medusa/server/src/modules/mpn-automation/types/modules/product-category/product-category.js +46 -0
  20. package/.medusa/server/src/modules/mpn-automation/types/modules/product-tag/index.js +18 -0
  21. package/.medusa/server/src/modules/mpn-automation/types/modules/product-tag/product-tag.js +22 -0
  22. package/.medusa/server/src/modules/mpn-automation/types/modules/product-type/index.js +18 -0
  23. package/.medusa/server/src/modules/mpn-automation/types/modules/product-type/product-type.js +22 -0
  24. package/.medusa/server/src/modules/mpn-automation/types/modules/product-variant/product-variant.js +61 -1
  25. package/.medusa/server/src/modules/mpn-automation/types/types.js +32 -2
  26. package/.medusa/server/src/providers/slack/service.js +1 -1
  27. package/.medusa/server/src/subscribers/inventory-reservation-item-updated.js +1 -1
  28. package/.medusa/server/src/subscribers/mpn.automation.action.email.executed.js +3 -3
  29. package/.medusa/server/src/subscribers/mpn.automation.action.slack.executed.js +4 -4
  30. package/.medusa/server/src/subscribers/order-placed.js +1 -1
  31. package/.medusa/server/src/subscribers/product-updated.js +2 -1
  32. package/.medusa/server/src/templates/slack/inventory-level/inventory-level.js +1 -1
  33. package/.medusa/server/src/templates/slack/inventory-level/translations/index.js +1 -1
  34. package/.medusa/server/src/templates/slack/product/product.js +2 -3
  35. package/.medusa/server/src/templates/slack/product/translations/index.js +1 -1
  36. package/.medusa/server/src/templates/slack/product-variant/product-variant.js +2 -3
  37. package/.medusa/server/src/templates/slack/product-variant/translations/index.js +1 -1
  38. package/.medusa/server/src/utils/attribute-helpers.js +17 -0
  39. package/.medusa/server/src/utils/i18n/i18n.js +13 -8
  40. package/.medusa/server/src/utils/index.js +2 -1
  41. package/.medusa/server/src/utils/validate-rules.js +40 -3
  42. package/.medusa/server/src/workflows/inventory/steps/get-inventory-level-by-id.js +6 -14
  43. package/.medusa/server/src/workflows/mpn-automation/run-email-action.js +6 -2
  44. package/.medusa/server/src/workflows/mpn-automation/run-slack-action.js +6 -2
  45. package/.medusa/server/src/workflows/mpn-automation/steps/edit-automation-actions.js +3 -2
  46. package/.medusa/server/src/workflows/mpn-automation/steps/edit-automation-rules.js +1 -1
  47. package/.medusa/server/src/workflows/mpn-automation/steps/retrieve-automation-triggers-by-event.js +1 -1
  48. package/.medusa/server/src/workflows/mpn-automation/steps/run-automation-actions.js +1 -1
  49. package/.medusa/server/src/workflows/notifications/steps/send-email.js +2 -2
  50. package/.medusa/server/src/workflows/notifications/steps/send-slack.js +1 -1
  51. package/.medusa/server/src/workflows/product/steps/get-product-by-id.js +6 -46
  52. package/.medusa/server/src/workflows/product-variant/steps/get-product-variant-by-id.js +2 -10
  53. package/README.md +18 -15
  54. package/package.json +12 -3
  55. package/.medusa/server/src/admin/_chunks/base-config-ON0ZG0Je +0 -7890
  56. package/.medusa/server/src/admin/_chunks/base-config-XI6iR6Jp +0 -7907
@@ -0,0 +1,414 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const __adminExtensions__ = require("./__admin-extensions__-Cc5RhzDh");
5
+ const ui = require("@medusajs/ui");
6
+ const TextField = ({
7
+ label,
8
+ value,
9
+ onChange,
10
+ placeholder = "",
11
+ required = false,
12
+ disabled = false
13
+ }) => {
14
+ return /* @__PURE__ */ jsxRuntime.jsx(
15
+ ui.Input,
16
+ {
17
+ type: "text",
18
+ value,
19
+ onChange: (e) => onChange(e.target.value),
20
+ placeholder,
21
+ disabled
22
+ }
23
+ );
24
+ };
25
+ const TextAreaField = ({
26
+ label,
27
+ value,
28
+ onChange,
29
+ placeholder = "",
30
+ required = false,
31
+ disabled = false,
32
+ rows = 3
33
+ }) => {
34
+ return /* @__PURE__ */ jsxRuntime.jsx(
35
+ ui.Textarea,
36
+ {
37
+ value,
38
+ onChange: (e) => onChange(e.target.value),
39
+ placeholder,
40
+ disabled,
41
+ rows
42
+ }
43
+ );
44
+ };
45
+ const NumberField = ({
46
+ label,
47
+ value,
48
+ onChange,
49
+ placeholder = "",
50
+ required = false,
51
+ disabled = false,
52
+ min,
53
+ max,
54
+ step = null
55
+ }) => {
56
+ return /* @__PURE__ */ jsxRuntime.jsx(
57
+ ui.Input,
58
+ {
59
+ type: "number",
60
+ value,
61
+ onChange: (e) => onChange(Number(e.target.value)),
62
+ placeholder,
63
+ disabled,
64
+ min: min || void 0,
65
+ max: max || void 0,
66
+ step: step || void 0
67
+ }
68
+ );
69
+ };
70
+ const SelectField = ({
71
+ label,
72
+ value,
73
+ onChange,
74
+ options,
75
+ required = false,
76
+ disabled = false
77
+ }) => {
78
+ return /* @__PURE__ */ jsxRuntime.jsxs(
79
+ ui.Select,
80
+ {
81
+ value,
82
+ onValueChange: onChange,
83
+ disabled,
84
+ children: [
85
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Value, { placeholder: "Select an option" }) }),
86
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Content, { children: options.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
87
+ ui.Select.Item,
88
+ {
89
+ value: option.value,
90
+ children: option.name
91
+ },
92
+ option.value
93
+ )) })
94
+ ]
95
+ }
96
+ );
97
+ };
98
+ const CheckboxField = ({
99
+ label,
100
+ checked,
101
+ onChange,
102
+ required = false,
103
+ disabled = false
104
+ }) => {
105
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
106
+ /* @__PURE__ */ jsxRuntime.jsx(
107
+ ui.Checkbox,
108
+ {
109
+ checked,
110
+ onCheckedChange: onChange,
111
+ disabled,
112
+ id: `checkbox-${label}`
113
+ }
114
+ ),
115
+ /* @__PURE__ */ jsxRuntime.jsxs(
116
+ ui.Label,
117
+ {
118
+ htmlFor: `checkbox-${label}`,
119
+ className: "text-sm font-medium cursor-pointer",
120
+ children: [
121
+ label,
122
+ required && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-500 ml-1", children: "*" })
123
+ ]
124
+ }
125
+ )
126
+ ] });
127
+ };
128
+ const FormField = ({
129
+ label,
130
+ required,
131
+ children
132
+ }) => {
133
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
134
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-2", children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Label, { className: "text-sm font-medium", children: [
135
+ label,
136
+ required && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-500 ml-1", children: "*" })
137
+ ] }) }),
138
+ children
139
+ ] });
140
+ };
141
+ const ManagerFields = ({
142
+ fields,
143
+ name,
144
+ form,
145
+ errors
146
+ }) => {
147
+ const renderField = (groupField) => {
148
+ switch (groupField.type) {
149
+ case "text":
150
+ return /* @__PURE__ */ jsxRuntime.jsx(
151
+ __adminExtensions__.Controller,
152
+ {
153
+ name: `${name}.${groupField.name}`,
154
+ control: form.control,
155
+ defaultValue: groupField.defaultValue || "",
156
+ shouldUnregister: false,
157
+ render: ({ field, fieldState }) => {
158
+ return /* @__PURE__ */ jsxRuntime.jsxs(
159
+ FormField,
160
+ {
161
+ label: groupField.label,
162
+ required: groupField.required,
163
+ children: [
164
+ /* @__PURE__ */ jsxRuntime.jsx(
165
+ TextField,
166
+ {
167
+ label: groupField.label,
168
+ value: field.value || "",
169
+ onChange: (value) => field.onChange(value),
170
+ placeholder: groupField.placeholder,
171
+ required: groupField.required
172
+ }
173
+ ),
174
+ fieldState.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-500 text-sm", children: fieldState.error.message }),
175
+ (errors == null ? void 0 : errors[groupField.name]) && !fieldState.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-500 text-sm", children: errors[groupField.name] })
176
+ ]
177
+ }
178
+ );
179
+ }
180
+ },
181
+ groupField.name || groupField.key
182
+ );
183
+ case "email":
184
+ return /* @__PURE__ */ jsxRuntime.jsx(
185
+ __adminExtensions__.Controller,
186
+ {
187
+ name: `${name}.${groupField.name}`,
188
+ control: form.control,
189
+ defaultValue: groupField.defaultValue || "",
190
+ shouldUnregister: false,
191
+ render: ({ field, fieldState }) => {
192
+ return /* @__PURE__ */ jsxRuntime.jsxs(
193
+ FormField,
194
+ {
195
+ label: groupField.label,
196
+ required: groupField.required,
197
+ children: [
198
+ /* @__PURE__ */ jsxRuntime.jsx(
199
+ TextField,
200
+ {
201
+ label: groupField.label,
202
+ value: field.value || "",
203
+ onChange: (value) => field.onChange(value),
204
+ placeholder: groupField.placeholder,
205
+ required: groupField.required
206
+ }
207
+ ),
208
+ fieldState.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-500 text-sm", children: fieldState.error.message }),
209
+ (errors == null ? void 0 : errors[groupField.name]) && !fieldState.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-500 text-sm", children: errors[groupField.name] })
210
+ ]
211
+ }
212
+ );
213
+ }
214
+ },
215
+ groupField.name || groupField.key
216
+ );
217
+ case "textarea":
218
+ return /* @__PURE__ */ jsxRuntime.jsx(
219
+ __adminExtensions__.Controller,
220
+ {
221
+ name: `${name}.${groupField.name}`,
222
+ control: form.control,
223
+ defaultValue: "",
224
+ shouldUnregister: false,
225
+ render: ({ field, fieldState }) => {
226
+ return /* @__PURE__ */ jsxRuntime.jsxs(
227
+ FormField,
228
+ {
229
+ label: groupField.label,
230
+ required: groupField.required,
231
+ children: [
232
+ /* @__PURE__ */ jsxRuntime.jsx(
233
+ TextAreaField,
234
+ {
235
+ label: groupField.label,
236
+ value: field.value || "",
237
+ onChange: (value) => field.onChange(value),
238
+ placeholder: groupField.placeholder,
239
+ required: groupField.required
240
+ }
241
+ ),
242
+ fieldState.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-500 text-sm", children: fieldState.error.message }),
243
+ (errors == null ? void 0 : errors[groupField.name]) && !fieldState.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-500 text-sm", children: errors[groupField.name] })
244
+ ]
245
+ }
246
+ );
247
+ }
248
+ },
249
+ groupField.name || groupField.key
250
+ );
251
+ case "number":
252
+ return /* @__PURE__ */ jsxRuntime.jsx(
253
+ __adminExtensions__.Controller,
254
+ {
255
+ name: `${name}.${groupField.name}`,
256
+ control: form.control,
257
+ defaultValue: groupField.defaultValue || 0,
258
+ shouldUnregister: false,
259
+ render: ({ field, fieldState }) => {
260
+ return /* @__PURE__ */ jsxRuntime.jsxs(
261
+ FormField,
262
+ {
263
+ label: groupField.label,
264
+ required: groupField.required,
265
+ children: [
266
+ /* @__PURE__ */ jsxRuntime.jsx(
267
+ NumberField,
268
+ {
269
+ label: groupField.label,
270
+ value: field.value || 0,
271
+ onChange: (value) => field.onChange(value),
272
+ placeholder: groupField.placeholder,
273
+ required: groupField.required,
274
+ min: groupField.min || null,
275
+ max: groupField.max || null,
276
+ step: groupField.step || null
277
+ }
278
+ ),
279
+ fieldState.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-500 text-sm", children: fieldState.error.message }),
280
+ (errors == null ? void 0 : errors[groupField.name]) && !fieldState.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-500 text-sm", children: errors[groupField.name] })
281
+ ]
282
+ }
283
+ );
284
+ }
285
+ },
286
+ groupField.name || groupField.key
287
+ );
288
+ case "select":
289
+ return /* @__PURE__ */ jsxRuntime.jsx(
290
+ __adminExtensions__.Controller,
291
+ {
292
+ name: `${name}.${groupField.name}`,
293
+ control: form.control,
294
+ defaultValue: groupField.defaultValue || "",
295
+ shouldUnregister: false,
296
+ render: ({ field, fieldState }) => {
297
+ return /* @__PURE__ */ jsxRuntime.jsxs(
298
+ FormField,
299
+ {
300
+ label: groupField.label,
301
+ required: groupField.required,
302
+ children: [
303
+ /* @__PURE__ */ jsxRuntime.jsx(
304
+ SelectField,
305
+ {
306
+ label: groupField.label,
307
+ value: field.value || "",
308
+ onChange: (value) => field.onChange(value),
309
+ options: groupField.options || [],
310
+ required: groupField.required
311
+ }
312
+ ),
313
+ fieldState.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-500 text-sm", children: fieldState.error.message }),
314
+ (errors == null ? void 0 : errors[groupField.name]) && !fieldState.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-500 text-sm", children: errors[groupField.name] })
315
+ ]
316
+ }
317
+ );
318
+ }
319
+ },
320
+ groupField.name || groupField.key
321
+ );
322
+ case "chip-input":
323
+ return /* @__PURE__ */ jsxRuntime.jsx(
324
+ __adminExtensions__.Controller,
325
+ {
326
+ name: `${name}.${groupField.name}`,
327
+ control: form.control,
328
+ defaultValue: groupField.defaultValue || false,
329
+ shouldUnregister: false,
330
+ render: ({ field, fieldState }) => {
331
+ return /* @__PURE__ */ jsxRuntime.jsxs(
332
+ FormField,
333
+ {
334
+ label: groupField.label,
335
+ required: groupField.required,
336
+ children: [
337
+ /* @__PURE__ */ jsxRuntime.jsx(
338
+ __adminExtensions__.ChipInput,
339
+ {
340
+ name: groupField.name,
341
+ value: field.value || [],
342
+ onChange: (value) => field.onChange(value),
343
+ placeholder: groupField.placeholder,
344
+ allowDuplicates: false,
345
+ showRemove: true,
346
+ variant: "base"
347
+ }
348
+ ),
349
+ fieldState.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-500 text-sm", children: fieldState.error.message }),
350
+ (errors == null ? void 0 : errors[groupField.name]) && !fieldState.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-500 text-sm", children: errors[groupField.name] })
351
+ ]
352
+ }
353
+ );
354
+ }
355
+ },
356
+ groupField.name || groupField.key
357
+ );
358
+ case "checkbox":
359
+ return /* @__PURE__ */ jsxRuntime.jsx(
360
+ __adminExtensions__.Controller,
361
+ {
362
+ name: `${name}.${groupField.name}`,
363
+ control: form.control,
364
+ defaultValue: groupField.defaultValue || false,
365
+ shouldUnregister: false,
366
+ render: ({ field, fieldState }) => {
367
+ return /* @__PURE__ */ jsxRuntime.jsxs(
368
+ FormField,
369
+ {
370
+ label: groupField.label,
371
+ required: groupField.required,
372
+ children: [
373
+ /* @__PURE__ */ jsxRuntime.jsx(
374
+ CheckboxField,
375
+ {
376
+ label: groupField.label,
377
+ checked: field.value || false,
378
+ onChange: (checked) => field.onChange(checked),
379
+ required: groupField.required
380
+ }
381
+ ),
382
+ fieldState.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-500 text-sm", children: fieldState.error.message }),
383
+ (errors == null ? void 0 : errors[groupField.name]) && !fieldState.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-500 text-sm", children: errors[groupField.name] })
384
+ ]
385
+ }
386
+ );
387
+ }
388
+ },
389
+ groupField.name || groupField.key
390
+ );
391
+ default:
392
+ return null;
393
+ }
394
+ };
395
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-2", children: fields.map((field) => /* @__PURE__ */ jsxRuntime.jsx("div", { children: renderField(field) }, field.key)) });
396
+ };
397
+ function BaseConfigComponent({
398
+ form,
399
+ fields,
400
+ name,
401
+ errors
402
+ }) {
403
+ return /* @__PURE__ */ jsxRuntime.jsx(
404
+ ManagerFields,
405
+ {
406
+ name,
407
+ form,
408
+ fields,
409
+ errors
410
+ }
411
+ );
412
+ }
413
+ exports.BaseConfigComponent = BaseConfigComponent;
414
+ exports.default = BaseConfigComponent;