@codee-sh/medusa-plugin-automations 1.0.0

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 (78) hide show
  1. package/.medusa/server/src/admin/index.js +9931 -0
  2. package/.medusa/server/src/admin/index.mjs +9929 -0
  3. package/.medusa/server/src/admin/lib/sdk.js +15 -0
  4. package/.medusa/server/src/api/admin/mpn/automations/actions/route.js +78 -0
  5. package/.medusa/server/src/api/admin/mpn/automations/available-actions/route.js +12 -0
  6. package/.medusa/server/src/api/admin/mpn/automations/available-events/route.js +14 -0
  7. package/.medusa/server/src/api/admin/mpn/automations/available-triggers/route.js +12 -0
  8. package/.medusa/server/src/api/admin/mpn/automations/route.js +71 -0
  9. package/.medusa/server/src/api/admin/mpn/automations/rules/route.js +85 -0
  10. package/.medusa/server/src/api/middlewares.js +125 -0
  11. package/.medusa/server/src/emails/example-template.js +68 -0
  12. package/.medusa/server/src/hooks/api/automations/automations.js +74 -0
  13. package/.medusa/server/src/hooks/api/automations/index.js +18 -0
  14. package/.medusa/server/src/hooks/api/automations-actions/automations-actions.js +51 -0
  15. package/.medusa/server/src/hooks/api/automations-actions/index.js +18 -0
  16. package/.medusa/server/src/hooks/api/automations-rules/automations-rules.js +51 -0
  17. package/.medusa/server/src/hooks/api/automations-rules/index.js +18 -0
  18. package/.medusa/server/src/hooks/api/available-actions/actions.js +34 -0
  19. package/.medusa/server/src/hooks/api/available-actions/index.js +18 -0
  20. package/.medusa/server/src/hooks/api/available-events/events.js +34 -0
  21. package/.medusa/server/src/hooks/api/available-events/index.js +18 -0
  22. package/.medusa/server/src/hooks/api/available-triggers/index.js +18 -0
  23. package/.medusa/server/src/hooks/api/available-triggers/triggers.js +34 -0
  24. package/.medusa/server/src/modules/mpn-automation/index.js +10 -0
  25. package/.medusa/server/src/modules/mpn-automation/interfaces.js +3 -0
  26. package/.medusa/server/src/modules/mpn-automation/migrations/Migration20251127115228.js +37 -0
  27. package/.medusa/server/src/modules/mpn-automation/migrations/Migration20251127193345.js +20 -0
  28. package/.medusa/server/src/modules/mpn-automation/migrations/Migration20251127195615.js +19 -0
  29. package/.medusa/server/src/modules/mpn-automation/migrations/Migration20251130144047.js +16 -0
  30. package/.medusa/server/src/modules/mpn-automation/models/index.js +14 -0
  31. package/.medusa/server/src/modules/mpn-automation/models/mpn_automation_rule.js +27 -0
  32. package/.medusa/server/src/modules/mpn-automation/models/mpn_automation_rule_value.js +15 -0
  33. package/.medusa/server/src/modules/mpn-automation/models/mpn_automation_state.js +17 -0
  34. package/.medusa/server/src/modules/mpn-automation/models/mpn_automation_trigger.js +52 -0
  35. package/.medusa/server/src/modules/mpn-automation/models/npm_automation_action.js +23 -0
  36. package/.medusa/server/src/modules/mpn-automation/services/index.js +9 -0
  37. package/.medusa/server/src/modules/mpn-automation/services/service.js +38 -0
  38. package/.medusa/server/src/modules/mpn-automation/types.js +199 -0
  39. package/.medusa/server/src/subscribers/inventory-item-updated.js +22 -0
  40. package/.medusa/server/src/subscribers/inventory-level-updated.js +43 -0
  41. package/.medusa/server/src/subscribers/inventory-reservation-item-updated.js +22 -0
  42. package/.medusa/server/src/subscribers/mpn.automation.action.email.executed.js +45 -0
  43. package/.medusa/server/src/subscribers/order-completed.js +110 -0
  44. package/.medusa/server/src/subscribers/order-placed.js +108 -0
  45. package/.medusa/server/src/subscribers/payment-captured.js +96 -0
  46. package/.medusa/server/src/utils/index.js +20 -0
  47. package/.medusa/server/src/utils/plugins.js +20 -0
  48. package/.medusa/server/src/utils/types/index.js +19 -0
  49. package/.medusa/server/src/utils/validate-rules.js +85 -0
  50. package/.medusa/server/src/workflows/index.js +20 -0
  51. package/.medusa/server/src/workflows/inventory/get-inventory-level-by-id.js +23 -0
  52. package/.medusa/server/src/workflows/inventory/index.js +18 -0
  53. package/.medusa/server/src/workflows/inventory/steps/get-inventory-level-by-id.js +25 -0
  54. package/.medusa/server/src/workflows/inventory/steps/index.js +18 -0
  55. package/.medusa/server/src/workflows/mpn-automation/create-automation.js +14 -0
  56. package/.medusa/server/src/workflows/mpn-automation/edit-automation-actions.js +15 -0
  57. package/.medusa/server/src/workflows/mpn-automation/edit-automation-rules.js +15 -0
  58. package/.medusa/server/src/workflows/mpn-automation/edit-automation.js +14 -0
  59. package/.medusa/server/src/workflows/mpn-automation/index.js +24 -0
  60. package/.medusa/server/src/workflows/mpn-automation/run-automation.js +76 -0
  61. package/.medusa/server/src/workflows/mpn-automation/send-email-action.js +73 -0
  62. package/.medusa/server/src/workflows/mpn-automation/steps/create-automation.js +19 -0
  63. package/.medusa/server/src/workflows/mpn-automation/steps/edit-automation-actions.js +51 -0
  64. package/.medusa/server/src/workflows/mpn-automation/steps/edit-automation-rules.js +87 -0
  65. package/.medusa/server/src/workflows/mpn-automation/steps/edit-automation.js +20 -0
  66. package/.medusa/server/src/workflows/mpn-automation/steps/index.js +24 -0
  67. package/.medusa/server/src/workflows/mpn-automation/steps/retrieve-automation-triggers-by-event.js +62 -0
  68. package/.medusa/server/src/workflows/mpn-automation/steps/run-automation-actions.js +92 -0
  69. package/.medusa/server/src/workflows/mpn-automation/steps/validate-automation-triggers.js +29 -0
  70. package/.medusa/server/src/workflows/mpn-automation/validate-automation-triggers-by-event.js +38 -0
  71. package/.medusa/server/src/workflows/notifications/index.js +18 -0
  72. package/.medusa/server/src/workflows/notifications/send-email.js +51 -0
  73. package/.medusa/server/src/workflows/notifications/steps/index.js +18 -0
  74. package/.medusa/server/src/workflows/notifications/steps/send-email.js +119 -0
  75. package/.medusa/server/src/workflows/steps/log-step.js +16 -0
  76. package/LICENSE +21 -0
  77. package/README.md +104 -0
  78. package/package.json +72 -0
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.editAutomationActionsStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const mpn_automation_1 = require("../../../modules/mpn-automation");
6
+ exports.editAutomationActionsStep = (0, workflows_sdk_1.createStep)("edit-automation-actions", async ({ trigger_id, actions }, { container }) => {
7
+ const mpnAutomationService = container.resolve(mpn_automation_1.MPN_AUTOMATION_MODULE);
8
+ // Get existing actions for this trigger
9
+ const existingActions = await mpnAutomationService.listMpnAutomationActions({
10
+ trigger_id: trigger_id,
11
+ });
12
+ const existingActionIds = existingActions.map((action) => action.id);
13
+ const incomingActionIds = actions.filter((action) => action.id).map((action) => action.id);
14
+ // Find actions to delete (existing but not in new data)
15
+ const actionsToDelete = existingActionIds.filter((id) => !incomingActionIds.includes(id));
16
+ // Delete actions that are no longer in the data
17
+ if (actionsToDelete.length > 0) {
18
+ await mpnAutomationService.deleteMpnAutomationActions(actionsToDelete);
19
+ }
20
+ // Update or create actions
21
+ const updatedActions = await Promise.all(actions.map(async (action) => {
22
+ if (action?.id) {
23
+ // Check if action exists
24
+ const existingAction = existingActions.find((a) => a.id === action.id);
25
+ if (!existingAction) {
26
+ throw new Error(`Action with id ${action.id} does not exist`);
27
+ }
28
+ // Update existing action
29
+ const updatedAction = await mpnAutomationService.updateMpnAutomationActions([
30
+ {
31
+ id: action.id,
32
+ action_type: action.action_type,
33
+ config: action.config,
34
+ },
35
+ ]);
36
+ return updatedAction[0];
37
+ }
38
+ else {
39
+ // Create new action
40
+ const actionData = {
41
+ trigger_id: trigger_id,
42
+ action_type: action.action_type,
43
+ config: action.config,
44
+ };
45
+ const newAction = await mpnAutomationService.createMpnAutomationActions([actionData]);
46
+ return newAction[0];
47
+ }
48
+ }));
49
+ return new workflows_sdk_1.StepResponse(updatedActions, updatedActions);
50
+ });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1hdXRvbWF0aW9uLWFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL21wbi1hdXRvbWF0aW9uL3N0ZXBzL2VkaXQtYXV0b21hdGlvbi1hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE0RTtBQUU1RSxvRUFBdUU7QUFRMUQsUUFBQSx5QkFBeUIsR0FBRyxJQUFBLDBCQUFVLEVBQ2pELHlCQUF5QixFQUN6QixLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFrQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUMvRSxNQUFNLG9CQUFvQixHQUF5QixTQUFTLENBQUMsT0FBTyxDQUFDLHNDQUFxQixDQUFDLENBQUE7SUFFM0Ysd0NBQXdDO0lBQ3hDLE1BQU0sZUFBZSxHQUFHLE1BQU0sb0JBQW9CLENBQUMsd0JBQXdCLENBQ3pFO1FBQ0UsVUFBVSxFQUFFLFVBQVU7S0FDdkIsQ0FDRixDQUFBO0lBRUQsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDekUsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFMUYsd0RBQXdEO0lBQ3hELE1BQU0sZUFBZSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FDOUMsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUNoRCxDQUFBO0lBRUQsZ0RBQWdEO0lBQ2hELElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMvQixNQUFNLG9CQUFvQixDQUFDLDBCQUEwQixDQUFDLGVBQWUsQ0FBQyxDQUFBO0lBQ3hFLENBQUM7SUFFRCwyQkFBMkI7SUFDM0IsTUFBTSxjQUFjLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUMzQixJQUFJLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNmLHlCQUF5QjtZQUN6QixNQUFNLGNBQWMsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUMzRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLE1BQU0sQ0FBQyxFQUFFLGlCQUFpQixDQUFDLENBQUE7WUFDL0QsQ0FBQztZQUVELHlCQUF5QjtZQUN6QixNQUFNLGFBQWEsR0FBRyxNQUFNLG9CQUFvQixDQUFDLDBCQUEwQixDQUFDO2dCQUMxRTtvQkFDRSxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7b0JBQ2IsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO29CQUMvQixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07aUJBQ3RCO2FBQ0YsQ0FBQyxDQUFBO1lBRUYsT0FBTyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDekIsQ0FBQzthQUFNLENBQUM7WUFDTixvQkFBb0I7WUFDcEIsTUFBTSxVQUFVLEdBQUc7Z0JBQ2pCLFVBQVUsRUFBRSxVQUFVO2dCQUN0QixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVc7Z0JBQy9CLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTthQUN0QixDQUFBO1lBQ0QsTUFBTSxTQUFTLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUE7WUFFckYsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDckIsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUNILENBQUE7SUFFRCxPQUFPLElBQUksNEJBQVksQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUE7QUFDekQsQ0FBQyxDQUNGLENBQUEifQ==
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.editAutomationRulesStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const mpn_automation_1 = require("../../../modules/mpn-automation");
6
+ exports.editAutomationRulesStep = (0, workflows_sdk_1.createStep)("edit-automation-rules", async ({ trigger_id, rules }, { container }) => {
7
+ const mpnAutomationService = container.resolve(mpn_automation_1.MPN_AUTOMATION_MODULE);
8
+ // Get existing rules for this trigger
9
+ const existingRules = await mpnAutomationService.listMpnAutomationRules({
10
+ trigger_id: trigger_id,
11
+ }, {
12
+ relations: ["rule_values"],
13
+ });
14
+ const existingRuleIds = existingRules.map((rule) => rule.id);
15
+ const incomingRuleIds = rules.filter((rule) => rule.id).map((rule) => rule.id);
16
+ // Find rules to delete (existing but not in new data)
17
+ const rulesToDelete = existingRuleIds.filter((id) => !incomingRuleIds.includes(id));
18
+ // Delete rules that are no longer in the data
19
+ if (rulesToDelete.length > 0) {
20
+ await mpnAutomationService.deleteMpnAutomationRules(rulesToDelete);
21
+ }
22
+ // Update or create rules
23
+ const updatedRules = await Promise.all(rules.map(async (rule) => {
24
+ if (rule?.id) {
25
+ // Check if rule exists
26
+ const existingRule = existingRules.find((r) => r.id === rule.id);
27
+ if (!existingRule) {
28
+ throw new Error(`Rule with id ${rule.id} does not exist`);
29
+ }
30
+ // Update existing rule
31
+ const updatedRule = await mpnAutomationService.updateMpnAutomationRules([
32
+ {
33
+ id: rule.id,
34
+ attribute: rule.attribute,
35
+ operator: rule.operator,
36
+ },
37
+ ]);
38
+ // Get existing rule values
39
+ const existingValueIds = existingRule?.rule_values?.map((v) => v.id) || [];
40
+ const incomingValueIds = (rule.rule_values || [])
41
+ .filter((v) => v.id)
42
+ .map((v) => v.id);
43
+ // Delete values that are no longer in the data
44
+ const valuesToDelete = existingValueIds.filter((id) => !incomingValueIds.includes(id));
45
+ if (valuesToDelete.length > 0) {
46
+ await mpnAutomationService.deleteMpnAutomationRuleValues(valuesToDelete);
47
+ }
48
+ // Update or create rule values
49
+ if (rule.rule_values && rule.rule_values.length > 0) {
50
+ const valuesToUpdate = rule.rule_values.filter((v) => v.id);
51
+ const valuesToCreate = rule.rule_values.filter((v) => !v.id);
52
+ if (valuesToUpdate.length > 0) {
53
+ await mpnAutomationService.updateMpnAutomationRuleValues(valuesToUpdate.map((value) => ({
54
+ id: value.id,
55
+ value: value.value
56
+ })));
57
+ }
58
+ if (valuesToCreate.length > 0) {
59
+ await mpnAutomationService.createMpnAutomationRuleValues(valuesToCreate.map((value) => ({
60
+ rule_id: rule.id,
61
+ value: value.value
62
+ })));
63
+ }
64
+ }
65
+ return updatedRule[0];
66
+ }
67
+ else {
68
+ // Create new rule
69
+ const ruleData = {
70
+ trigger_id: trigger_id,
71
+ attribute: rule.attribute,
72
+ operator: rule.operator,
73
+ };
74
+ const newRule = await mpnAutomationService.createMpnAutomationRules([ruleData]);
75
+ // Create rule values if they exist
76
+ if (rule?.rule_values && rule?.rule_values.length > 0) {
77
+ await mpnAutomationService.createMpnAutomationRuleValues(rule.rule_values.map((value) => ({
78
+ rule_id: newRule[0].id,
79
+ value: value.value
80
+ })));
81
+ }
82
+ return newRule[0];
83
+ }
84
+ }));
85
+ return new workflows_sdk_1.StepResponse(updatedRules, updatedRules);
86
+ });
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1hdXRvbWF0aW9uLXJ1bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9tcG4tYXV0b21hdGlvbi9zdGVwcy9lZGl0LWF1dG9tYXRpb24tcnVsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQTRFO0FBRTVFLG9FQUF1RTtBQVExRCxRQUFBLHVCQUF1QixHQUFHLElBQUEsMEJBQVUsRUFDL0MsdUJBQXVCLEVBQ3ZCLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQWdDLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQzNFLE1BQU0sb0JBQW9CLEdBQXlCLFNBQVMsQ0FBQyxPQUFPLENBQUMsc0NBQXFCLENBQUMsQ0FBQTtJQUUzRixzQ0FBc0M7SUFDdEMsTUFBTSxhQUFhLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQyxzQkFBc0IsQ0FDckU7UUFDRSxVQUFVLEVBQUUsVUFBVTtLQUN2QixFQUNEO1FBQ0UsU0FBUyxFQUFFLENBQUMsYUFBYSxDQUFDO0tBQzNCLENBQ0YsQ0FBQTtJQUVELE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUNqRSxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFOUUsc0RBQXNEO0lBQ3RELE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQzFDLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQzlDLENBQUE7SUFFRCw4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
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.editAutomationStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const mpn_automation_1 = require("../../../modules/mpn-automation");
6
+ exports.editAutomationStep = (0, workflows_sdk_1.createStep)("edit-automation", async ({ items }, { container }) => {
7
+ const mpnAutomationService = container.resolve(mpn_automation_1.MPN_AUTOMATION_MODULE);
8
+ const automation = await mpnAutomationService.updateMpnAutomationTriggers(items.map((item) => ({
9
+ id: item.id,
10
+ name: item.name,
11
+ description: item.description,
12
+ trigger_type: item.trigger_type,
13
+ event_name: item.event_name,
14
+ interval_minutes: item.interval_minutes,
15
+ active: item.active,
16
+ channels: item.channels
17
+ })));
18
+ return new workflows_sdk_1.StepResponse(automation, automation);
19
+ });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1hdXRvbWF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9tcG4tYXV0b21hdGlvbi9zdGVwcy9lZGl0LWF1dG9tYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQTRFO0FBRTVFLG9FQUF1RTtBQU8xRCxRQUFBLGtCQUFrQixHQUFHLElBQUEsMEJBQVUsRUFDMUMsaUJBQWlCLEVBQ2pCLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBMkIsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDMUQsTUFBTSxvQkFBb0IsR0FBeUIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxzQ0FBcUIsQ0FBQyxDQUFBO0lBRTNGLE1BQU0sVUFBVSxHQUFHLE1BQU0sb0JBQW9CLENBQUMsMkJBQTJCLENBQ3ZFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkIsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1FBQ1gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1FBQ2YsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1FBQzdCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtRQUMvQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7UUFDM0IsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtRQUN2QyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07UUFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO0tBQ3hCLENBQUMsQ0FBQyxDQUNKLENBQUE7SUFFRCxPQUFPLElBQUksNEJBQVksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUE7QUFDakQsQ0FBQyxDQUNGLENBQUEifQ==
@@ -0,0 +1,24 @@
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("./retrieve-automation-triggers-by-event"), exports);
18
+ __exportStar(require("./validate-automation-triggers"), exports);
19
+ __exportStar(require("./run-automation-actions"), exports);
20
+ __exportStar(require("./create-automation"), exports);
21
+ __exportStar(require("./edit-automation"), exports);
22
+ __exportStar(require("./edit-automation-rules"), exports);
23
+ __exportStar(require("./edit-automation-actions"), exports);
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL21wbi1hdXRvbWF0aW9uL3N0ZXBzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwRUFBdUQ7QUFDdkQsaUVBQThDO0FBQzlDLDJEQUF3QztBQUN4QyxzREFBbUM7QUFDbkMsb0RBQWlDO0FBQ2pDLDBEQUF1QztBQUN2Qyw0REFBeUMifQ==
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAutomationTriggersByEventStep = exports.getAutomationTriggersByEventStepId = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const mpn_automation_1 = require("../../../modules/mpn-automation");
6
+ exports.getAutomationTriggersByEventStepId = "get-automation-triggers-by-event";
7
+ /**
8
+ * This step retrieves notification triggers (scenarios) by event name.
9
+ *
10
+ * @example
11
+ * const data = getAutomationTriggersByEventStep({
12
+ * eventName: "inventory.inventory-level.updated",
13
+ * eventType: TriggerType.EVENT
14
+ * })
15
+ */
16
+ exports.getAutomationTriggersByEventStep = (0, workflows_sdk_1.createStep)(exports.getAutomationTriggersByEventStepId, async (input, { container }) => {
17
+ // Use the main module service
18
+ const automationService = container.resolve(mpn_automation_1.MPN_AUTOMATION_MODULE);
19
+ // Retrieve triggers for the given event that are active and have the specified type
20
+ const triggers = await automationService.listMpnAutomationTriggers({
21
+ event_name: input.eventName,
22
+ trigger_type: input.eventType,
23
+ active: true,
24
+ }, {
25
+ relations: [
26
+ "rules",
27
+ "rules.rule_values",
28
+ "actions",
29
+ ],
30
+ });
31
+ const triggersData = triggers.map((trigger) => ({
32
+ id: trigger.id,
33
+ name: trigger.name,
34
+ description: trigger.description,
35
+ trigger_type: trigger.trigger_type,
36
+ event_name: trigger.event_name,
37
+ interval_minutes: trigger.interval_minutes,
38
+ last_run_at: trigger.last_run_at,
39
+ active: trigger.active,
40
+ channels: trigger.channels,
41
+ metadata: trigger.metadata,
42
+ rules: (trigger.rules || []).map((rule) => ({
43
+ id: rule.id,
44
+ attribute: rule.attribute,
45
+ operator: rule.operator,
46
+ description: rule.description,
47
+ metadata: rule.metadata,
48
+ rule_values: (rule.rule_values || []).map((value) => ({
49
+ id: value.id,
50
+ value: value.value,
51
+ metadata: value.metadata,
52
+ })),
53
+ })),
54
+ actions: (trigger.actions || []).map((action) => ({
55
+ id: action.id,
56
+ action_type: action.action_type,
57
+ config: action.config
58
+ })),
59
+ }));
60
+ return new workflows_sdk_1.StepResponse(triggersData, triggersData);
61
+ });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cmlldmUtYXV0b21hdGlvbi10cmlnZ2Vycy1ieS1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvbXBuLWF1dG9tYXRpb24vc3RlcHMvcmV0cmlldmUtYXV0b21hdGlvbi10cmlnZ2Vycy1ieS1ldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNEU7QUFDNUUsb0VBQXVFO0FBUzFELFFBQUEsa0NBQWtDLEdBQUcsa0NBQWtDLENBQUE7QUFFcEY7Ozs7Ozs7O0dBUUc7QUFDVSxRQUFBLGdDQUFnQyxHQUFHLElBQUEsMEJBQVUsRUFDeEQsMENBQWtDLEVBQ2xDLEtBQUssRUFDSCxLQUE0QyxFQUM1QyxFQUFFLFNBQVMsRUFBRSxFQUNpQyxFQUFFO0lBQ2hELDhCQUE4QjtJQUM5QixNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQ3pDLHNDQUFxQixDQUN0QixDQUFBO0lBRUQsb0ZBQW9GO0lBQ3BGLE1BQU0sUUFBUSxHQUFHLE1BQU0saUJBQWlCLENBQUMseUJBQXlCLENBQ2hFO1FBQ0UsVUFBVSxFQUFFLEtBQUssQ0FBQyxTQUFTO1FBQzNCLFlBQVksRUFBRSxLQUFLLENBQUMsU0FBUztRQUM3QixNQUFNLEVBQUUsSUFBSTtLQUNiLEVBQ0Q7UUFDRSxTQUFTLEVBQUU7WUFDVCxPQUFPO1lBQ1AsbUJBQW1CO1lBQ25CLFNBQVM7U0FDVjtLQUNGLENBQ0YsQ0FBQTtJQUVELE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQ2QsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1FBQ2xCLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztRQUNoQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQTJCO1FBQ2pELFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtRQUM5QixnQkFBZ0IsRUFBRSxPQUFPLENBQUMsZ0JBQWdCO1FBQzFDLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztRQUNoQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07UUFDdEIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUEwQztRQUM1RCxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQXNDO1FBQ3hELEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBc0M7WUFDckQsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3BELEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDWixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7Z0JBQ2xCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBc0M7YUFDdkQsQ0FBQyxDQUFDO1NBQ0osQ0FBQyxDQUFDO1FBQ0gsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDaEQsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQ2IsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1lBQy9CLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtTQUN0QixDQUFDLENBQUM7S0FDSixDQUFDLENBQUMsQ0FBQTtJQUVILE9BQU8sSUFBSSw0QkFBWSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQTtBQUNyRCxDQUFDLENBQ0YsQ0FBQSJ9
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runAutomationActionsStep = exports.runAutomationActionsStepId = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ exports.runAutomationActionsStepId = "run-automation-actions";
7
+ /**
8
+ * This step runs automation actions for all validated triggers by emitting events for each action type.
9
+ *
10
+ * @example
11
+ * const data = runAutomationActionsStep({
12
+ * validated: [
13
+ * {
14
+ * isValid: true,
15
+ * trigger: { id: "trigger_123", name: "Low Stock Alert" },
16
+ * actions: [{ actionType: "email", ... }]
17
+ * }
18
+ * ],
19
+ * context: { inventory_level: { ... } }
20
+ * })
21
+ */
22
+ exports.runAutomationActionsStep = (0, workflows_sdk_1.createStep)(exports.runAutomationActionsStepId, async (input, { container }) => {
23
+ const eventBusService = container.resolve(utils_1.Modules.EVENT_BUS);
24
+ const { validated, context } = input;
25
+ if (!validated || validated.length === 0) {
26
+ return new workflows_sdk_1.StepResponse({
27
+ results: [],
28
+ triggersCount: 0,
29
+ totalActionsExecuted: 0,
30
+ });
31
+ }
32
+ const results = await Promise.all(validated.map(async (result) => {
33
+ if (!result.isValid || !result.actions || result.actions.length === 0) {
34
+ return {
35
+ triggerId: result.trigger.id || result.trigger.trigger_id,
36
+ isValid: result.isValid,
37
+ actionsExecuted: 0,
38
+ actions: [],
39
+ };
40
+ }
41
+ const executedActions = await Promise.all(result.actions.map(async (action) => {
42
+ try {
43
+ const actionType = action.action_type;
44
+ if (!actionType) {
45
+ console.warn(`Action ${action.id} has no action_type, skipping`);
46
+ return {
47
+ actionId: action.id,
48
+ actionType: actionType,
49
+ success: false,
50
+ };
51
+ }
52
+ // Emit event based on action type
53
+ const eventName = `mpn.automation.action.${actionType}.executed`;
54
+ await eventBusService.emit({
55
+ name: eventName,
56
+ data: {
57
+ eventName: eventName,
58
+ action: action,
59
+ triggerId: result.trigger.id || result.trigger.trigger_id,
60
+ context: context,
61
+ },
62
+ });
63
+ return {
64
+ actionId: action.id,
65
+ actionType: actionType,
66
+ success: true,
67
+ };
68
+ }
69
+ catch (error) {
70
+ console.error(`Failed to execute action ${action.id}:`, error);
71
+ return {
72
+ actionId: action.id,
73
+ actionType: action.action_type,
74
+ success: false,
75
+ };
76
+ }
77
+ }));
78
+ return {
79
+ triggerId: result.trigger.id || result.trigger.trigger_id,
80
+ isValid: result.isValid,
81
+ actionsExecuted: executedActions.filter(a => a.success).length,
82
+ actions: executedActions,
83
+ };
84
+ }));
85
+ const totalActionsExecuted = results.reduce((sum, r) => sum + r.actionsExecuted, 0);
86
+ return new workflows_sdk_1.StepResponse({
87
+ results,
88
+ triggersCount: validated.length,
89
+ totalActionsExecuted,
90
+ });
91
+ });
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLWF1dG9tYXRpb24tYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvbXBuLWF1dG9tYXRpb24vc3RlcHMvcnVuLWF1dG9tYXRpb24tYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNEU7QUFDNUUscURBQW1EO0FBMkJ0QyxRQUFBLDBCQUEwQixHQUFHLHdCQUF3QixDQUFBO0FBRWxFOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ1UsUUFBQSx3QkFBd0IsR0FBRyxJQUFBLDBCQUFVLEVBQ2hELGtDQUEwQixFQUMxQixLQUFLLEVBQ0gsS0FBb0MsRUFDcEMsRUFBRSxTQUFTLEVBQUUsRUFDMEMsRUFBRTtJQUN6RCxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUM1RCxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUVwQyxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekMsT0FBTyxJQUFJLDRCQUFZLENBQUM7WUFDdEIsT0FBTyxFQUFFLEVBQUU7WUFDWCxhQUFhLEVBQUUsQ0FBQztZQUNoQixvQkFBb0IsRUFBRSxDQUFDO1NBQ3hCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQy9CLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0RSxPQUFPO2dCQUNMLFNBQVMsRUFBRSxNQUFNLENBQUMsT0FB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
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateAutomationTriggersStep = exports.validateAutomationTriggersStepId = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const validate_rules_1 = require("../../../utils/validate-rules");
6
+ exports.validateAutomationTriggersStepId = "validate-automation-triggers";
7
+ /**
8
+ * This step validates multiple automation triggers against context data.
9
+ *
10
+ * @example
11
+ * const data = validateAutomationTriggersStep({
12
+ * triggers: [ ... ],
13
+ * context: { ... }
14
+ * })
15
+ */
16
+ exports.validateAutomationTriggersStep = (0, workflows_sdk_1.createStep)(exports.validateAutomationTriggersStepId, async (input) => {
17
+ const { triggers, context } = input;
18
+ const validated = triggers.map((trigger) => {
19
+ // Validate rules for context
20
+ const isValid = (0, validate_rules_1.validateRulesForContext)(trigger.rules || [], context);
21
+ return {
22
+ isValid,
23
+ trigger,
24
+ actions: trigger.actions,
25
+ };
26
+ }).filter((action) => action.isValid);
27
+ return new workflows_sdk_1.StepResponse(validated, validated);
28
+ });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtYXV0b21hdGlvbi10cmlnZ2Vycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvbXBuLWF1dG9tYXRpb24vc3RlcHMvdmFsaWRhdGUtYXV0b21hdGlvbi10cmlnZ2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNEU7QUFDNUUsa0VBQXVFO0FBUTFELFFBQUEsZ0NBQWdDLEdBQUcsOEJBQThCLENBQUE7QUFFOUU7Ozs7Ozs7O0dBUUc7QUFDVSxRQUFBLDhCQUE4QixHQUFHLElBQUEsMEJBQVUsRUFDdEQsd0NBQWdDLEVBQ2hDLEtBQUssRUFDSCxLQUEwQyxFQUNkLEVBQUU7SUFDOUIsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUE7SUFFbkMsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ3pDLDZCQUE2QjtRQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFBLHdDQUF1QixFQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBRXJFLE9BQU87WUFDTCxPQUFPO1lBQ1AsT0FBTztZQUNQLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztTQUN6QixDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7SUFFMUMsT0FBTyxJQUFJLDRCQUFZLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0FBQy9DLENBQUMsQ0FDRixDQUFBIn0=
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateAutomationTriggersByEventWorkflow = exports.validateAutomationTriggersByEventWorkflowId = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const retrieve_automation_triggers_by_event_1 = require("./steps/retrieve-automation-triggers-by-event");
6
+ const validate_automation_triggers_1 = require("./steps/validate-automation-triggers");
7
+ exports.validateAutomationTriggersByEventWorkflowId = "validate-automation-triggers-by-event";
8
+ /**
9
+ * This workflow retrieves notification triggers for an event and validates them against context data.
10
+ *
11
+ * @example
12
+ * const { result } = await validateAutomationTriggersByEventWorkflow(container).run({
13
+ * input: {
14
+ * eventName: "inventory.inventory-level.updated",
15
+ * eventType: TriggerType.EVENT,
16
+ * context: {
17
+ * inventory_level: { ... }
18
+ * }
19
+ * }
20
+ * })
21
+ */
22
+ exports.validateAutomationTriggersByEventWorkflow = (0, workflows_sdk_1.createWorkflow)(exports.validateAutomationTriggersByEventWorkflowId, (input) => {
23
+ // Retrieve triggers for the event
24
+ const triggers = (0, retrieve_automation_triggers_by_event_1.getAutomationTriggersByEventStep)({
25
+ eventName: input.eventName,
26
+ eventType: input.eventType,
27
+ });
28
+ // Validate all triggers against context
29
+ const validated = (0, validate_automation_triggers_1.validateAutomationTriggersStep)({
30
+ triggers: triggers || [],
31
+ context: input.context,
32
+ });
33
+ return new workflows_sdk_1.WorkflowResponse({
34
+ validated: validated,
35
+ triggers: triggers,
36
+ });
37
+ });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtYXV0b21hdGlvbi10cmlnZ2Vycy1ieS1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvbXBuLWF1dG9tYXRpb24vdmFsaWRhdGUtYXV0b21hdGlvbi10cmlnZ2Vycy1ieS1ldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNkc7QUFDN0cseUdBQWdHO0FBQ2hHLHVGQUFxRjtBQW1CeEUsUUFBQSwyQ0FBMkMsR0FBRyx1Q0FBdUMsQ0FBQTtBQUVsRzs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ1UsUUFBQSx5Q0FBeUMsR0FBRyxJQUFBLDhCQUFjLEVBQ3JFLG1EQUEyQyxFQUMzQyxDQUFDLEtBQW1FLEVBQUUsRUFBRTtJQUN0RSxrQ0FBa0M7SUFDbEMsTUFBTSxRQUFRLEdBQUcsSUFBQSx3RUFBZ0MsRUFBQztRQUNoRCxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDMUIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO0tBQzNCLENBQUMsQ0FBQTtJQUVGLHdDQUF3QztJQUN4QyxNQUFNLFNBQVMsR0FBRyxJQUFBLDZEQUE4QixFQUFDO1FBQy9DLFFBQVEsRUFBRSxRQUFRLElBQUksRUFBRTtRQUN4QixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87S0FDdkIsQ0FBQyxDQUFBO0lBRUYsT0FBTyxJQUFJLGdDQUFnQixDQUFDO1FBQzFCLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLFFBQVEsRUFBRSxRQUFRO0tBQ25CLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FDRixDQUFBIn0=
@@ -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("./send-email"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL25vdGlmaWNhdGlvbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUE0QiJ9
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sendEmailWorkflow = exports.sendEmailWorkflowId = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const send_email_1 = require("./steps/send-email");
6
+ exports.sendEmailWorkflowId = "send-email";
7
+ /**
8
+ * Universal workflow that sends an email notification.
9
+ *
10
+ * This workflow can be used independently or as part of automation workflows.
11
+ * It's not tied to automation system and can be used anywhere in the application.
12
+ *
13
+ * Configuration:
14
+ * - templateName: Required - Name of the email template
15
+ * - to: Required - Recipient email address
16
+ * - locale: Optional - Locale for translations (default: "pl")
17
+ * - customTemplate: Optional - Path to custom template function
18
+ * - subject: Optional - Custom subject (otherwise uses template default)
19
+ * - template: Optional - Template identifier for notification (defaults to templateName)
20
+ * - resourceId: Optional - Resource ID for notification tracking
21
+ * - resourceType: Optional - Resource type for notification tracking
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * // Standalone usage
26
+ * const { result } = await sendEmailWorkflow(container).run({
27
+ * input: {
28
+ * settings: {
29
+ * templateName: "inventory-level",
30
+ * to: "admin@example.com",
31
+ * locale: "pl"
32
+ * },
33
+ * templateData: {
34
+ * inventory_level: {
35
+ * id: "il_123",
36
+ * stocked_quantity: 5
37
+ * }
38
+ * }
39
+ * }
40
+ * })
41
+ * ```
42
+ */
43
+ exports.sendEmailWorkflow = (0, workflows_sdk_1.createWorkflow)(exports.sendEmailWorkflowId, (input) => {
44
+ const result = (0, send_email_1.sendEmailStep)({
45
+ settings: input.settings,
46
+ templateData: input.templateData,
47
+ eventName: input.eventName,
48
+ });
49
+ return new workflows_sdk_1.WorkflowResponse(result);
50
+ });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1lbWFpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvbm90aWZpY2F0aW9ucy9zZW5kLWVtYWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUFrRztBQUNsRyxtREFBa0Q7QUFnQnJDLFFBQUEsbUJBQW1CLEdBQUcsWUFBWSxDQUFBO0FBRS9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1DRztBQUNVLFFBQUEsaUJBQWlCLEdBQUcsSUFBQSw4QkFBYyxFQUM3QywyQkFBbUIsRUFDbkIsQ0FBQyxLQUEyQyxFQUFFLEVBQUU7SUFDOUMsTUFBTSxNQUFNLEdBQUcsSUFBQSwwQkFBYSxFQUFDO1FBQzNCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN4QixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7UUFDaEMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO0tBQzNCLENBQUMsQ0FBQTtJQUVGLE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNyQyxDQUFDLENBQ0YsQ0FBQSJ9
@@ -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("./send-email"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL25vdGlmaWNhdGlvbnMvc3RlcHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUE0QiJ9