@codee-sh/medusa-plugin-automations 1.0.9 → 1.0.10

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 (33) hide show
  1. package/.medusa/server/src/admin/_chunks/{__admin-extensions__-BZrUHl9N → __admin-extensions__-CzXvFkp_} +5 -1
  2. package/.medusa/server/src/admin/_chunks/{__admin-extensions__-BV7n9V1I → __admin-extensions__-FXmyAEGa} +5 -1
  3. package/.medusa/server/src/admin/_chunks/{base-config-D0IqhDVr → base-config-CjqEuEOM} +7 -9
  4. package/.medusa/server/src/admin/_chunks/{base-config-CbWD1XMk → base-config-fXd1L6SD} +7 -9
  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/actions/route.js +1 -20
  8. package/.medusa/server/src/api/admin/mpn/automations/available-actions/route.js +20 -3
  9. package/.medusa/server/src/modules/mpn-automation/index.js +6 -3
  10. package/.medusa/server/src/modules/mpn-automation/service.js +261 -0
  11. package/.medusa/server/src/modules/mpn-automation/services-local/base-action-service.js +117 -0
  12. package/.medusa/server/src/modules/mpn-automation/services-local/email-action-service.js +130 -0
  13. package/.medusa/server/src/modules/mpn-automation/services-local/slack-action-service.js +84 -0
  14. package/.medusa/server/src/providers/slack/service.js +4 -7
  15. package/.medusa/server/src/subscribers/mpn.automation.action.email.executed.js +9 -2
  16. package/.medusa/server/src/subscribers/mpn.automation.action.slack.executed.js +8 -6
  17. package/.medusa/server/src/subscribers/product-updated.js +1 -2
  18. package/.medusa/server/src/utils/validate-rules.js +8 -8
  19. package/.medusa/server/src/workflows/mpn-automation/run-automation.js +5 -6
  20. package/.medusa/server/src/workflows/mpn-automation/run-email-action.js +7 -7
  21. package/.medusa/server/src/workflows/mpn-automation/run-slack-action.js +12 -13
  22. package/.medusa/server/src/workflows/notifications/index.js +2 -1
  23. package/.medusa/server/src/workflows/notifications/send-email.js +7 -7
  24. package/.medusa/server/src/workflows/notifications/send-slack.js +7 -7
  25. package/.medusa/server/src/workflows/notifications/steps/index.js +2 -1
  26. package/.medusa/server/src/workflows/notifications/steps/send-email.js +66 -53
  27. package/.medusa/server/src/workflows/notifications/steps/send-slack.js +15 -16
  28. package/package.json +4 -3
  29. package/.medusa/server/src/modules/mpn-automation/services/base-action-service.js +0 -98
  30. package/.medusa/server/src/modules/mpn-automation/services/email-action-service.js +0 -94
  31. package/.medusa/server/src/modules/mpn-automation/services/index.js +0 -15
  32. package/.medusa/server/src/modules/mpn-automation/services/service.js +0 -356
  33. package/.medusa/server/src/modules/mpn-automation/services/slack-action-service.js +0 -57
@@ -517,6 +517,10 @@ var Quote$1 = (props) => {
517
517
  } = Comp, reset = _objectWithoutPropertiesLoose(Comp, _excluded2$5);
518
518
  var Elm = as || "span";
519
519
  var elmProps = _extends({}, other, reset);
520
+ if (typeof elmProps.children === "string") {
521
+ var trimmed = elmProps.children.trim();
522
+ elmProps.children = trimmed || void 0;
523
+ }
520
524
  var result = {
521
525
  value,
522
526
  parentValue,
@@ -17324,7 +17328,7 @@ function AutomationsRulesForm({
17324
17328
  ] }) }) });
17325
17329
  }
17326
17330
  const templateLoaders = {
17327
- BaseConfigComponent: () => import("./base-config-D0IqhDVr")
17331
+ BaseConfigComponent: () => import("./base-config-CjqEuEOM")
17328
17332
  };
17329
17333
  async function loadTemplateComponent(key) {
17330
17334
  const loader = templateLoaders[key];
@@ -537,6 +537,10 @@ var Quote$1 = (props) => {
537
537
  } = Comp, reset = _objectWithoutPropertiesLoose(Comp, _excluded2$5);
538
538
  var Elm = as || "span";
539
539
  var elmProps = _extends({}, other, reset);
540
+ if (typeof elmProps.children === "string") {
541
+ var trimmed = elmProps.children.trim();
542
+ elmProps.children = trimmed || void 0;
543
+ }
540
544
  var result = {
541
545
  value,
542
546
  parentValue,
@@ -17344,7 +17348,7 @@ function AutomationsRulesForm({
17344
17348
  ] }) }) });
17345
17349
  }
17346
17350
  const templateLoaders = {
17347
- BaseConfigComponent: () => Promise.resolve().then(() => require("./base-config-CbWD1XMk"))
17351
+ BaseConfigComponent: () => Promise.resolve().then(() => require("./base-config-fXd1L6SD"))
17348
17352
  };
17349
17353
  async function loadTemplateComponent(key) {
17350
17354
  const loader = templateLoaders[key];
@@ -1,5 +1,5 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { C as Controller, a as ChipInput } from "./__admin-extensions__-BZrUHl9N";
2
+ import { C as Controller, a as ChipInput } from "./__admin-extensions__-CzXvFkp_";
3
3
  import { Input, Textarea, Select, Checkbox, Label } from "@medusajs/ui";
4
4
  const TextField = ({
5
5
  label,
@@ -73,6 +73,8 @@ const SelectField = ({
73
73
  required = false,
74
74
  disabled = false
75
75
  }) => {
76
+ var _a, _b;
77
+ const isGrouped = options.length > 0 && ((_a = options[0]) == null ? void 0 : _a.groupName) && ((_b = options[0]) == null ? void 0 : _b.options);
76
78
  return /* @__PURE__ */ jsxs(
77
79
  Select,
78
80
  {
@@ -81,14 +83,10 @@ const SelectField = ({
81
83
  disabled,
82
84
  children: [
83
85
  /* @__PURE__ */ jsx(Select.Trigger, { children: /* @__PURE__ */ jsx(Select.Value, { placeholder: "Select an option" }) }),
84
- /* @__PURE__ */ jsx(Select.Content, { children: options.map((option) => /* @__PURE__ */ jsx(
85
- Select.Item,
86
- {
87
- value: option.value,
88
- children: option.name
89
- },
90
- option.value
91
- )) })
86
+ /* @__PURE__ */ jsx(Select.Content, { children: isGrouped ? options.map((option) => /* @__PURE__ */ jsxs(Select.Group, { children: [
87
+ /* @__PURE__ */ jsx(Select.Label, { children: option == null ? void 0 : option.groupName }),
88
+ option.options.map((option2) => /* @__PURE__ */ jsx(Select.Item, { value: option2.value, children: option2.name }, option2.value))
89
+ ] }, option == null ? void 0 : option.groupName)) : options.map((option) => /* @__PURE__ */ jsx(Select.Item, { value: option.value, children: option.name }, option.value)) })
92
90
  ]
93
91
  }
94
92
  );
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
- const __adminExtensions__ = require("./__admin-extensions__-BV7n9V1I");
4
+ const __adminExtensions__ = require("./__admin-extensions__-FXmyAEGa");
5
5
  const ui = require("@medusajs/ui");
6
6
  const TextField = ({
7
7
  label,
@@ -75,6 +75,8 @@ const SelectField = ({
75
75
  required = false,
76
76
  disabled = false
77
77
  }) => {
78
+ var _a, _b;
79
+ const isGrouped = options.length > 0 && ((_a = options[0]) == null ? void 0 : _a.groupName) && ((_b = options[0]) == null ? void 0 : _b.options);
78
80
  return /* @__PURE__ */ jsxRuntime.jsxs(
79
81
  ui.Select,
80
82
  {
@@ -83,14 +85,10 @@ const SelectField = ({
83
85
  disabled,
84
86
  children: [
85
87
  /* @__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
- )) })
88
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Content, { children: isGrouped ? options.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(ui.Select.Group, { children: [
89
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Label, { children: option == null ? void 0 : option.groupName }),
90
+ option.options.map((option2) => /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: option2.value, children: option2.name }, option2.value))
91
+ ] }, option == null ? void 0 : option.groupName)) : options.map((option) => /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: option.value, children: option.name }, option.value)) })
94
92
  ]
95
93
  }
96
94
  );
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
- const __adminExtensions__ = require("./_chunks/__admin-extensions__-BV7n9V1I");
2
+ const __adminExtensions__ = require("./_chunks/__admin-extensions__-FXmyAEGa");
3
3
  module.exports = __adminExtensions__.plugin;
@@ -1,4 +1,4 @@
1
- import { p } from "./_chunks/__admin-extensions__-BZrUHl9N";
1
+ import { p } from "./_chunks/__admin-extensions__-CzXvFkp_";
2
2
  export {
3
3
  p as default
4
4
  };
@@ -56,23 +56,4 @@ async function GET(req, res) {
56
56
  offset: skip || 0,
57
57
  });
58
58
  }
59
- // export const DeleteAutomationSchema = z.object({
60
- // id: z.string(),
61
- // });
62
- // type DeleteAutomationSchema = z.infer<typeof DeleteAutomationSchema>;
63
- // export async function DELETE(
64
- // req: MedusaStoreRequest<DeleteAutomationSchema>,
65
- // res: MedusaResponse
66
- // ) {
67
- // // const { result: automation } = await deleteAutomationWorkflow(
68
- // // req.scope
69
- // // ).run({
70
- // // input: {
71
- // // id: req.body.id as string
72
- // // },
73
- // // });
74
- // // res.json({
75
- // // automation: automation,
76
- // // });
77
- // }
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL21wbi9hdXRvbWF0aW9ucy9hY3Rpb25zL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTBCQSxvQkF1QkM7QUFFRCxrQkFxQ0M7QUFwRkQscURBR2tDO0FBQ2xDLDZCQUF1QjtBQUN2Qiw0RUFBdUY7QUFFMUUsUUFBQSwyQkFBMkIsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2xELFVBQVUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO0lBQ3RCLE9BQU8sRUFBRSxPQUFDLENBQUMsS0FBSyxDQUNkLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDUCxFQUFFLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtRQUN6QixXQUFXLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtRQUNsQyxNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7S0FDaEQsQ0FBQyxDQUNIO0NBQ0YsQ0FBQyxDQUFBO0FBTUssS0FBSyxVQUFVLElBQUksQ0FDeEIsR0FBb0QsRUFDcEQsR0FBbUI7SUFFbkIsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUEsOENBQTZCLEVBQ3BELEdBQUcsQ0FBQyxLQUFLLENBQ1YsQ0FBQyxHQUFHLENBQUM7WUFDSixLQUFLLEVBQUU7Z0JBQ0wsU0FBUyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVTtnQkFDOUIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUU7YUFDaEM7U0FDRixDQUFDLENBQUE7UUFFRixHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ1AsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1NBQ3hCLENBQUMsQ0FBQTtJQUNKLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsd0JBQXdCLENBQ3pCLENBQUE7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVNLEtBQUssVUFBVSxHQUFHLENBQ3ZCLEdBQXVCLEVBQ3ZCLEdBQW1CO0lBRW5CLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUM3QixpQ0FBeUIsQ0FBQyxLQUFLLENBQ2hDLENBQUE7SUFDRCxNQUFNLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUE7SUFDcEMsTUFBTSxPQUFPLEdBQVEsRUFBRSxDQUFBO0lBRXZCLElBQUksRUFBRSxFQUFFLENBQUM7UUFDUCxPQUFPLENBQUMsRUFBRSxHQUFHO1lBQ1gsR0FBRyxFQUFFLEVBQUU7U0FDUixDQUFBO0lBQ0gsQ0FBQztJQUVELElBQUksVUFBVSxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsVUFBVSxHQUFHO1lBQ25CLEdBQUcsRUFBRSxVQUFVO1NBQ2hCLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxFQUNKLElBQUksRUFBRSxPQUFPLEVBQ2IsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQ3JDLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3BCLE1BQU0sRUFBRSx1QkFBdUI7UUFDL0IsT0FBTyxFQUFFLE9BQU87UUFDaEIsR0FBRyxHQUFHLENBQUMsV0FBVztLQUNuQixDQUFDLENBQUE7SUFFRixHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ1AsT0FBTyxFQUFFLE9BQU87UUFDaEIsS0FBSyxFQUFFLEtBQUssSUFBSSxDQUFDO1FBQ2pCLEtBQUssRUFBRSxJQUFJLElBQUksRUFBRTtRQUNqQixNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUM7S0FDbEIsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVELG1EQUFtRDtBQUNuRCxvQkFBb0I7QUFDcEIsTUFBTTtBQUVOLHdFQUF3RTtBQUV4RSxnQ0FBZ0M7QUFDaEMscURBQXFEO0FBQ3JELHdCQUF3QjtBQUN4QixNQUFNO0FBQ04sc0VBQXNFO0FBQ3RFLG1CQUFtQjtBQUNuQixlQUFlO0FBQ2Ysa0JBQWtCO0FBQ2xCLHFDQUFxQztBQUNyQyxZQUFZO0FBQ1osV0FBVztBQUVYLGtCQUFrQjtBQUNsQixpQ0FBaUM7QUFDakMsV0FBVztBQUNYLElBQUkifQ==
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL21wbi9hdXRvbWF0aW9ucy9hY3Rpb25zL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTBCQSxvQkF1QkM7QUFFRCxrQkFxQ0M7QUFwRkQscURBR2tDO0FBQ2xDLDZCQUF1QjtBQUN2Qiw0RUFBdUY7QUFFMUUsUUFBQSwyQkFBMkIsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2xELFVBQVUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO0lBQ3RCLE9BQU8sRUFBRSxPQUFDLENBQUMsS0FBSyxDQUNkLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDUCxFQUFFLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtRQUN6QixXQUFXLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtRQUNsQyxNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7S0FDaEQsQ0FBQyxDQUNIO0NBQ0YsQ0FBQyxDQUFBO0FBTUssS0FBSyxVQUFVLElBQUksQ0FDeEIsR0FBb0QsRUFDcEQsR0FBbUI7SUFFbkIsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUEsOENBQTZCLEVBQ3BELEdBQUcsQ0FBQyxLQUFLLENBQ1YsQ0FBQyxHQUFHLENBQUM7WUFDSixLQUFLLEVBQUU7Z0JBQ0wsU0FBUyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVTtnQkFDOUIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUU7YUFDaEM7U0FDRixDQUFDLENBQUE7UUFFRixHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ1AsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1NBQ3hCLENBQUMsQ0FBQTtJQUNKLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsd0JBQXdCLENBQ3pCLENBQUE7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVNLEtBQUssVUFBVSxHQUFHLENBQ3ZCLEdBQXVCLEVBQ3ZCLEdBQW1CO0lBRW5CLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUM3QixpQ0FBeUIsQ0FBQyxLQUFLLENBQ2hDLENBQUE7SUFDRCxNQUFNLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUE7SUFDcEMsTUFBTSxPQUFPLEdBQVEsRUFBRSxDQUFBO0lBRXZCLElBQUksRUFBRSxFQUFFLENBQUM7UUFDUCxPQUFPLENBQUMsRUFBRSxHQUFHO1lBQ1gsR0FBRyxFQUFFLEVBQUU7U0FDUixDQUFBO0lBQ0gsQ0FBQztJQUVELElBQUksVUFBVSxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsVUFBVSxHQUFHO1lBQ25CLEdBQUcsRUFBRSxVQUFVO1NBQ2hCLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxFQUNKLElBQUksRUFBRSxPQUFPLEVBQ2IsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQ3JDLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3BCLE1BQU0sRUFBRSx1QkFBdUI7UUFDL0IsT0FBTyxFQUFFLE9BQU87UUFDaEIsR0FBRyxHQUFHLENBQUMsV0FBVztLQUNuQixDQUFDLENBQUE7SUFFRixHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ1AsT0FBTyxFQUFFLE9BQU87UUFDaEIsS0FBSyxFQUFFLEtBQUssSUFBSSxDQUFDO1FBQ2pCLEtBQUssRUFBRSxJQUFJLElBQUksRUFBRTtRQUNqQixNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUM7S0FDbEIsQ0FBQyxDQUFBO0FBQ0osQ0FBQyJ9
@@ -6,9 +6,26 @@ async function GET(req, res) {
6
6
  const automationService = req.scope.resolve(mpn_automation_1.MPN_AUTOMATION_MODULE);
7
7
  // Get eventName from query params if provided
8
8
  const eventName = req.query.eventName;
9
- const actions = automationService.getAvailableActions(eventName);
9
+ const getActionHandlers = automationService.getActionHandlers();
10
+ const getActionHandlersMapped = await Promise.all(Array.from(getActionHandlers.entries()).map(async ([key, value]) => {
11
+ {
12
+ const action = value.handler;
13
+ const enabled = value.enabled;
14
+ let data = {};
15
+ if (action?.fetchData) {
16
+ data = await action?.fetchData({
17
+ container: req.scope,
18
+ eventName: eventName,
19
+ });
20
+ }
21
+ return {
22
+ ...data,
23
+ enabled: enabled,
24
+ };
25
+ }
26
+ }));
10
27
  res.json({
11
- actions: actions,
28
+ actions: getActionHandlersMapped,
12
29
  });
13
30
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL21wbi9hdXRvbWF0aW9ucy9hdmFpbGFibGUtYWN0aW9ucy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU9BLGtCQW1CQztBQXRCRCwwRUFBNkU7QUFHdEUsS0FBSyxVQUFVLEdBQUcsQ0FDdkIsR0FBdUIsRUFDdkIsR0FBbUI7SUFFbkIsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDekMsc0NBQXFCLENBQ0UsQ0FBQTtJQUV6Qiw4Q0FBOEM7SUFDOUMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUVmLENBQUE7SUFFYixNQUFNLE9BQU8sR0FDWCxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUVsRCxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ1AsT0FBTyxFQUFFLE9BQU87S0FDakIsQ0FBQyxDQUFBO0FBQ0osQ0FBQyJ9
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL21wbi9hdXRvbWF0aW9ucy9hdmFpbGFibGUtYWN0aW9ucy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU9BLGtCQTJDQztBQTlDRCwwRUFBNkU7QUFHdEUsS0FBSyxVQUFVLEdBQUcsQ0FDdkIsR0FBdUIsRUFDdkIsR0FBbUI7SUFFbkIsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDekMsc0NBQXFCLENBQ0UsQ0FBQTtJQUV6Qiw4Q0FBOEM7SUFDOUMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUVmLENBQUE7SUFFYixNQUFNLGlCQUFpQixHQUNyQixpQkFBaUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO0lBRXZDLE1BQU0sdUJBQXVCLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUMvQyxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUN6QyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtRQUNyQixDQUFDO1lBQ0MsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQTtZQUM1QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFBO1lBQzdCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQTtZQUViLElBQUssTUFBYyxFQUFFLFNBQVMsRUFBRSxDQUFDO2dCQUMvQixJQUFJLEdBQUcsTUFBTyxNQUFjLEVBQUUsU0FBUyxDQUFDO29CQUN0QyxTQUFTLEVBQUUsR0FBRyxDQUFDLEtBQUs7b0JBQ3BCLFNBQVMsRUFBRSxTQUFTO2lCQUNyQixDQUFDLENBQUE7WUFDSixDQUFDO1lBRUQsT0FBTztnQkFDTCxHQUFHLElBQUk7Z0JBQ1AsT0FBTyxFQUFFLE9BQU87YUFDakIsQ0FBQTtRQUNILENBQUM7SUFDSCxDQUFDLENBQ0YsQ0FDRixDQUFBO0lBRUQsR0FBRyxDQUFDLElBQUksQ0FBQztRQUNQLE9BQU8sRUFBRSx1QkFBdUI7S0FDakMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyJ9
@@ -1,10 +1,13 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.MPN_AUTOMATION_MODULE = void 0;
4
7
  const utils_1 = require("@medusajs/framework/utils");
5
- const services_1 = require("./services");
8
+ const service_1 = __importDefault(require("./service"));
6
9
  exports.MPN_AUTOMATION_MODULE = "mpnAutomation";
7
10
  exports.default = (0, utils_1.Module)(exports.MPN_AUTOMATION_MODULE, {
8
- service: services_1.MpnAutomationService,
11
+ service: service_1.default,
9
12
  });
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tcG4tYXV0b21hdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBa0Q7QUFDbEQseUNBQWlEO0FBRXBDLFFBQUEscUJBQXFCLEdBQUcsZUFBZSxDQUFBO0FBRXBELGtCQUFlLElBQUEsY0FBTSxFQUFDLDZCQUFxQixFQUFFO0lBQzNDLE9BQU8sRUFBRSwrQkFBb0I7Q0FDOUIsQ0FBQyxDQUFBIn0=
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tcG4tYXV0b21hdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxxREFBa0Q7QUFDbEQsd0RBQTRDO0FBRS9CLFFBQUEscUJBQXFCLEdBQUcsZUFBZSxDQUFBO0FBRXBELGtCQUFlLElBQUEsY0FBTSxFQUFDLDZCQUFxQixFQUFFO0lBQzNDLE9BQU8sRUFBRSxpQkFBb0I7Q0FDOUIsQ0FBQyxDQUFBIn0=
@@ -0,0 +1,261 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("@medusajs/framework/utils");
4
+ const models_1 = require("./models");
5
+ const types_1 = require("./types");
6
+ const email_action_service_1 = require("./services-local/email-action-service");
7
+ const slack_action_service_1 = require("./services-local/slack-action-service");
8
+ const utils_2 = require("@medusajs/framework/utils");
9
+ const modules_1 = require("./types/modules");
10
+ class MpnAutomationService extends (0, utils_1.MedusaService)({
11
+ MpnAutomationTrigger: models_1.MpnAutomationTrigger,
12
+ MpnAutomationState: models_1.MpnAutomationState,
13
+ MpnAutomationRule: models_1.MpnAutomationRule,
14
+ MpnAutomationRuleValue: models_1.MpnAutomationRuleValue,
15
+ MpnAutomationAction: models_1.MpnAutomationAction,
16
+ }) {
17
+ constructor({ logger }, options) {
18
+ super(...arguments);
19
+ this.actionHandlers_ = new Map();
20
+ this.logger_ = logger;
21
+ this.options_ = options || {};
22
+ this.events_ =
23
+ this.options_.automations?.extend?.events || [];
24
+ this.actionsEnabled_ = this.options_.automations
25
+ ?.actionsEnabled || {
26
+ slack: false,
27
+ email: true,
28
+ };
29
+ // Initialize default action handlers
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 &&
142
+ group.events &&
143
+ Array.isArray(group.events) &&
144
+ group.events.length > 0)
145
+ .map((group) => ({
146
+ name: String(group.name || ""),
147
+ events: group.events || [],
148
+ }));
149
+ }
150
+ /**
151
+ * Get available events for the admin panel form
152
+ * Combines Medusa events with custom events
153
+ *
154
+ * @returns Array of events
155
+ */
156
+ getAvailableEvents() {
157
+ const medusaEvents = this.buildAvailableEvents();
158
+ if (!this.events_ || this.events_.length === 0) {
159
+ return medusaEvents;
160
+ }
161
+ // If there are custom events, add them to the result
162
+ if (this.events_.length > 0) {
163
+ return [...medusaEvents, ...this.events_];
164
+ }
165
+ return medusaEvents;
166
+ }
167
+ /**
168
+ * Initialize action handlers from defaults and options
169
+ *
170
+ * @returns void
171
+ */
172
+ initializeActionHandlers() {
173
+ const defaultActions = [
174
+ new email_action_service_1.EmailActionService({
175
+ events: this.getAvailableEvents(),
176
+ }),
177
+ new slack_action_service_1.SlackActionService({
178
+ events: this.getAvailableEvents(),
179
+ }),
180
+ ];
181
+ defaultActions.forEach((action) => {
182
+ const isEnabled = this.actionsEnabled_[action.id];
183
+ action.enabled = isEnabled;
184
+ this.actionHandlers_.set(action.id, {
185
+ handler: action,
186
+ enabled: isEnabled,
187
+ });
188
+ this.logger_.info(`Action handler for ${action.id} registered - ${isEnabled ? "enabled" : "disabled"} in config`);
189
+ });
190
+ }
191
+ /**
192
+ * Initialize extended actions (custom handlers and templates)
193
+ * Handles both custom handler registration and template loading
194
+ *
195
+ * @returns Promise<void>
196
+ */
197
+ async initializeExtendedActions() {
198
+ const extendedActions = this.options_.automations?.extend?.actions || [];
199
+ await Promise.all(extendedActions.map(async (actionConfig) => {
200
+ // 1. Register custom handler if provided
201
+ if (actionConfig.handler) {
202
+ if (!this.actionHandlers_.has(actionConfig.id)) {
203
+ const isEnabled = this.actionsEnabled_[actionConfig.id];
204
+ this.actionHandlers_.set(actionConfig.id, {
205
+ handler: actionConfig.handler,
206
+ enabled: isEnabled,
207
+ });
208
+ this.logger_.info(`Custom action handler "${actionConfig.id}" registered - ${isEnabled ? "enabled" : "disabled"}`);
209
+ }
210
+ else {
211
+ this.logger_.warn(`Action handler "${actionConfig.id}" already exists, skipping custom handler registration`);
212
+ }
213
+ }
214
+ }));
215
+ }
216
+ /**
217
+ * Build events list from Medusa events
218
+ * Supports both Medusa events and custom events
219
+ *
220
+ * @param events - Medusa events object
221
+ * @returns Array of events
222
+ */
223
+ buildEvents(events) {
224
+ if (!events || typeof events !== "object") {
225
+ return [];
226
+ }
227
+ return Object.values(events)
228
+ .filter((event) => event != null) // Filter out null/undefined
229
+ .map((event) => {
230
+ const eventName = String(event);
231
+ // Skip invalid event names
232
+ if (!eventName ||
233
+ eventName === "undefined" ||
234
+ eventName === "null") {
235
+ return null;
236
+ }
237
+ const metadata = (0, modules_1.getEventMetadata)(eventName);
238
+ return {
239
+ value: eventName,
240
+ label: eventName,
241
+ attributes: metadata.attributes || event.attributes || [],
242
+ templates: metadata.templates || event.templates || [],
243
+ contextType: event.contextType || null, // Only from custom events, not from registry
244
+ };
245
+ })
246
+ .filter((event) => event != null); // Filter out null results
247
+ }
248
+ /**
249
+ * Get action handler by ID for the admin panel form
250
+ * Used to get the action handler by ID in the Run Automation Actions workflow step
251
+ *
252
+ * @param actionId - Action ID
253
+ * @returns Action handler
254
+ */
255
+ getActionHandler(actionId) {
256
+ const handlers = this.getActionHandlers();
257
+ return handlers.get(actionId);
258
+ }
259
+ }
260
+ exports.default = MpnAutomationService;
261
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL21wbi1hdXRvbWF0aW9uL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxREFHa0M7QUFDbEMscUNBTWlCO0FBQ2pCLG1DQUtnQjtBQUNoQixnRkFBMEU7QUFDMUUsZ0ZBQTBFO0FBRTFFLHFEQW9Ca0M7QUFDbEMsNkNBQWtEO0FBT2xELE1BQU0sb0JBQXFCLFNBQVEsSUFBQSxxQkFBYSxFQUFDO0lBQy9DLG9CQUFvQixFQUFwQiw2QkFBb0I7SUFDcEIsa0JBQWtCLEVBQWxCLDJCQUFrQjtJQUNsQixpQkFBaUIsRUFBakIsMEJBQWlCO0lBQ2pCLHNCQUFzQixFQUF0QiwrQkFBc0I7SUFDdEIsbUJBQW1CLEVBQW5CLDRCQUFtQjtDQUNwQixDQUFDO0lBT0EsWUFDRSxFQUFFLE1BQU0sRUFBd0IsRUFDaEMsT0FBdUI7UUFFdkIsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUE7UUFOYixvQkFBZSxHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFBO1FBUW5ELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFBO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQTtRQUM3QixJQUFJLENBQUMsT0FBTztZQUNWLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksRUFBRSxDQUFBO1FBQ2pELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXO1lBQzlDLEVBQUUsY0FBYyxJQUFJO1lBQ3BCLEtBQUssRUFBRSxLQUFLO1lBQ1osS0FBSyxFQUFFLElBQUk7U0FDWixDQUFBO1FBRUQscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFBO1FBRS9CLDhEQUE4RDtRQUM5RCxrRUFBa0U7UUFDbEUsSUFBSSxDQUFD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
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseActionService = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ /**
6
+ * Base action service class
7
+ *
8
+ * @param id - Action ID (default: "base")
9
+ * @param label - Action label (default: "Base")
10
+ * @param description - Action description (default: "")
11
+ * @param configComponentKey - Action config component key (default: "BaseConfigComponent")
12
+ * @param fields - Action fields (default: [])
13
+ */
14
+ class BaseActionService {
15
+ constructor() {
16
+ this.id = "base";
17
+ this.label = "Base";
18
+ this.description = "";
19
+ this.configComponentKey = "BaseConfigComponent";
20
+ // Fields for the action configuration rendered in the admin panel then saved in the action config
21
+ this.fields = [];
22
+ }
23
+ /**
24
+ * Helper method to add templateName field to fields array
25
+ * Call this in constructor or fields initialization if you need template selection
26
+ *
27
+ * @param options - Template options array (will be populated dynamically by service if eventName is provided)
28
+ * @param defaultValue - Default template value
29
+ * @returns FieldConfig for template
30
+ */
31
+ addTemplateNameField(options = [], defaultValue) {
32
+ return {
33
+ name: "templateName",
34
+ key: "templateName",
35
+ label: "Template Name",
36
+ type: "select",
37
+ required: true,
38
+ options: options,
39
+ defaultValue: defaultValue,
40
+ };
41
+ }
42
+ /**
43
+ * Fill template name field with options
44
+ * @param field - Field config
45
+ * @param templates - Templates array
46
+ * @returns Field config with options filled
47
+ */
48
+ fillTemplateNameFieldWithOptions(fields, templates = []) {
49
+ return fields.map((field) => {
50
+ if (field.key === "templateName" &&
51
+ field.type === "select") {
52
+ return {
53
+ ...field,
54
+ options: templates.length > 0
55
+ ? templates
56
+ : field.options || [],
57
+ defaultValue: templates.length > 0
58
+ ? templates[0]?.value
59
+ : field.defaultValue,
60
+ };
61
+ }
62
+ return field;
63
+ });
64
+ }
65
+ /**
66
+ * Get available templates for a given event name
67
+ * Uses getAvailableEvents() to find the event and extract template
68
+ *
69
+ * @param eventName - Event name to search for
70
+ * @returns Array of template options
71
+ */
72
+ getTemplatesForEvent({ eventName, events, }) {
73
+ if (!eventName) {
74
+ return [];
75
+ }
76
+ const allEvents = events || [];
77
+ // Search through all event groups
78
+ for (const group of allEvents) {
79
+ const event = group.events?.find((e) => e.value === eventName);
80
+ if (event?.templates && event.templates.length > 0) {
81
+ return event.templates;
82
+ }
83
+ }
84
+ return [];
85
+ }
86
+ /**
87
+ * Function that executes the action in the workflow actions
88
+ *
89
+ * @param trigger - Trigger object
90
+ * @param action - Action object
91
+ * @param context - Context object
92
+ * @param container - Container object
93
+ * @param eventName - Event name
94
+ * @param contextType - Context type determining structure of data in context
95
+ * @returns object with actionId, actionType and success status
96
+ */
97
+ async executeAction({ trigger, action, context, container, eventName, contextType, }) {
98
+ const eventBusService = container.resolve(utils_1.Modules.EVENT_BUS);
99
+ await eventBusService.emit({
100
+ name: eventName,
101
+ data: {
102
+ eventName: eventName,
103
+ action: action,
104
+ trigger: trigger.id,
105
+ context: context,
106
+ contextType: contextType,
107
+ },
108
+ });
109
+ return {
110
+ actionId: action.id,
111
+ actionType: action.action_type,
112
+ success: true,
113
+ };
114
+ }
115
+ }
116
+ exports.BaseActionService = BaseActionService;
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1hY3Rpb24tc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL21wbi1hdXRvbWF0aW9uL3NlcnZpY2VzLWxvY2FsL2Jhc2UtYWN0aW9uLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEscURBQW1EO0FBRW5EOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSxpQkFBaUI7SUFBOUI7UUFDRSxPQUFFLEdBQUcsTUFBTSxDQUFBO1FBQ1gsVUFBSyxHQUFHLE1BQU0sQ0FBQTtRQUNkLGdCQUFXLEdBQUcsRUFBRSxDQUFBO1FBRWhCLHVCQUFrQixHQUFHLHFCQUFxQixDQUFBO1FBRTFDLGtHQUFrRztRQUNsRyxXQUFNLEdBQWtCLEVBQUUsQ0FBQTtJQXVJNUIsQ0FBQztJQXRJQzs7Ozs7OztPQU9HO0lBQ08sb0JBQW9CLENBQzVCLFVBQXNCLEVBQUUsRUFDeEIsWUFBcUI7UUFFckIsT0FBTztZQUNMLElBQUksRUFBRSxjQUFjO1lBQ3BCLEdBQUcsRUFBRSxjQUFjO1lBQ25CLEtBQUssRUFBRSxlQUFlO1lBQ3RCLElBQUksRUFBRSxRQUFpQjtZQUN2QixRQUFRLEVBQUUsSUFBSTtZQUNkLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLFlBQVksRUFBRSxZQUFZO1NBQzNCLENBQUE7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDTyxnQ0FBZ0MsQ0FDeEMsTUFBcUIsRUFDckIsWUFBd0IsRUFBRTtRQUUxQixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFrQixFQUFFLEVBQUU7WUFDdkMsSUFDRSxLQUFLLENBQUMsR0FBRyxLQUFLLGNBQWM7Z0JBQzVCLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUN2QixDQUFDO2dCQUNELE9BQU87b0JBQ0wsR0FBRyxLQUFLO29CQUNSLE9BQU8sRUFDTCxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUM7d0JBQ2xCLENBQUMsQ0FBQyxTQUFTO3dCQUNYLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEVBQUU7b0JBQ3pCLFlBQVksRUFDVixTQUFTLENBQUMsTUFBTSxHQUFHLENBQUM7d0JBQ2xCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSzt3QkFDckIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZO2lCQUN6QixDQUFBO1lBQ0gsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFBO1FBQ2QsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsb0JBQW9CLENBQUMsRUFDbkIsU0FBUyxFQUNULE1BQU0sR0FJUDtRQUNDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE9BQU8sRUFBRSxDQUFBO1FBQ1gsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUE7UUFFOUIsa0NBQWtDO1FBQ2xDLEtBQUssTUFBTSxLQUFLLElBQUksU0FBUyxFQUFFLENBQUM7WUFDOUIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQzlCLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FDbEMsQ0FBQTtZQUNELElBQUksS0FBSyxFQUFFLFNBQVMsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbkQsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFBO1lBQ3hCLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsRUFDbEIsT0FBTyxFQUNQLE1BQU0sRUFDTixPQUFPLEVBQ1AsU0FBUyxFQUNULFNBQVMsRUFDVCxXQUFXLEdBUVo7UUFDQyxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUN2QyxlQUFPLENBQUMsU0FBUyxDQUNsQixDQUFBO1FBRUQsTUFBTSxlQUFlLENBQUMsSUFBSSxDQUFDO1lBQ3pCLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFO2dCQUNKLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixNQUFNLEVBQUUsTUFBTTtnQkFDZCxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUU7Z0JBQ25CLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixXQUFXLEVBQUUsV0FBVzthQUN6QjtTQUNGLENBQUMsQ0FBQTtRQUVGLE9BQU87WUFDTCxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7WUFDbkIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxXQUFXO1lBQzlCLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQTtJQUNILENBQUM7Q0FDRjtBQS9JRCw4Q0ErSUMifQ==