@codee-sh/medusa-plugin-automations 1.0.8 → 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 (64) hide show
  1. package/.medusa/server/src/admin/_chunks/{__admin-extensions__-BNGTajTJ → __admin-extensions__-CzXvFkp_} +23 -7
  2. package/.medusa/server/src/admin/_chunks/{__admin-extensions__-DBUaxMhv → __admin-extensions__-FXmyAEGa} +23 -7
  3. package/.medusa/server/src/admin/_chunks/{base-config-ClmYhVFu → base-config-CjqEuEOM} +7 -9
  4. package/.medusa/server/src/admin/_chunks/{base-config-CGvQmkNR → 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/modules/mpn-automation/types/modules/inventory/inventory.js +9 -1
  15. package/.medusa/server/src/modules/mpn-automation/types/modules/order/order.js +2 -1
  16. package/.medusa/server/src/providers/slack/service.js +29 -22
  17. package/.medusa/server/src/subscribers/mpn.automation.action.email.executed.js +9 -3
  18. package/.medusa/server/src/subscribers/mpn.automation.action.slack.executed.js +8 -6
  19. package/.medusa/server/src/subscribers/product-updated.js +1 -2
  20. package/.medusa/server/src/utils/types/index.js +1 -2
  21. package/.medusa/server/src/utils/validate-rules.js +8 -8
  22. package/.medusa/server/src/workflows/mpn-automation/run-automation.js +5 -6
  23. package/.medusa/server/src/workflows/mpn-automation/run-email-action.js +7 -7
  24. package/.medusa/server/src/workflows/mpn-automation/run-slack-action.js +12 -13
  25. package/.medusa/server/src/workflows/notifications/index.js +2 -1
  26. package/.medusa/server/src/workflows/notifications/send-email.js +7 -7
  27. package/.medusa/server/src/workflows/notifications/send-slack.js +7 -7
  28. package/.medusa/server/src/workflows/notifications/steps/index.js +2 -1
  29. package/.medusa/server/src/workflows/notifications/steps/send-email.js +66 -53
  30. package/.medusa/server/src/workflows/notifications/steps/send-slack.js +15 -16
  31. package/.medusa/server/src/workflows/order/steps/get-order-by-id.js +1 -1
  32. package/package.json +4 -3
  33. package/.medusa/server/src/modules/mpn-automation/services/base-action-service.js +0 -98
  34. package/.medusa/server/src/modules/mpn-automation/services/email-action-service.js +0 -81
  35. package/.medusa/server/src/modules/mpn-automation/services/index.js +0 -15
  36. package/.medusa/server/src/modules/mpn-automation/services/service.js +0 -356
  37. package/.medusa/server/src/modules/mpn-automation/services/slack-action-service.js +0 -58
  38. package/.medusa/server/src/templates/slack/inventory-level/index.js +0 -18
  39. package/.medusa/server/src/templates/slack/inventory-level/inventory-level.js +0 -95
  40. package/.medusa/server/src/templates/slack/inventory-level/translations/en.json +0 -18
  41. package/.medusa/server/src/templates/slack/inventory-level/translations/index.js +0 -15
  42. package/.medusa/server/src/templates/slack/inventory-level/translations/pl.json +0 -18
  43. package/.medusa/server/src/templates/slack/order/base-order.js +0 -57
  44. package/.medusa/server/src/templates/slack/order/index.js +0 -23
  45. package/.medusa/server/src/templates/slack/order/order-archived.js +0 -13
  46. package/.medusa/server/src/templates/slack/order/order-canceled.js +0 -13
  47. package/.medusa/server/src/templates/slack/order/order-completed.js +0 -13
  48. package/.medusa/server/src/templates/slack/order/order-placed.js +0 -13
  49. package/.medusa/server/src/templates/slack/order/order-updated.js +0 -13
  50. package/.medusa/server/src/templates/slack/order/order.js +0 -52
  51. package/.medusa/server/src/templates/slack/order/translations/en.json +0 -38
  52. package/.medusa/server/src/templates/slack/order/translations/index.js +0 -15
  53. package/.medusa/server/src/templates/slack/order/translations/pl.json +0 -38
  54. package/.medusa/server/src/templates/slack/product/index.js +0 -18
  55. package/.medusa/server/src/templates/slack/product/product.js +0 -54
  56. package/.medusa/server/src/templates/slack/product/translations/en.json +0 -18
  57. package/.medusa/server/src/templates/slack/product/translations/index.js +0 -15
  58. package/.medusa/server/src/templates/slack/product/translations/pl.json +0 -13
  59. package/.medusa/server/src/templates/slack/product-variant/index.js +0 -18
  60. package/.medusa/server/src/templates/slack/product-variant/product-variant.js +0 -54
  61. package/.medusa/server/src/templates/slack/product-variant/translations/en.json +0 -18
  62. package/.medusa/server/src/templates/slack/product-variant/translations/index.js +0 -15
  63. package/.medusa/server/src/templates/slack/product-variant/translations/pl.json +0 -13
  64. package/.medusa/server/src/templates/slack/types.js +0 -3
@@ -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,
@@ -709,8 +713,14 @@ var NestedClose = (props) => {
709
713
  keyName,
710
714
  parentValue
711
715
  });
712
- if (expands[expandKey] === void 0 && !shouldExpand) {
713
- return null;
716
+ if (shouldExpandNodeInitially && collapsed === false) {
717
+ if (expands[expandKey] === void 0 && !shouldExpand) {
718
+ return null;
719
+ }
720
+ } else {
721
+ if (expands[expandKey] === void 0 && shouldExpand) {
722
+ return null;
723
+ }
714
724
  }
715
725
  var len = Object.keys(value).length;
716
726
  if (isExpanded || len === 0) {
@@ -1681,8 +1691,14 @@ var KeyValues = (props) => {
1681
1691
  keyName,
1682
1692
  parentValue
1683
1693
  });
1684
- if (expands[expandKey] === void 0 && !shouldExpand) {
1685
- return null;
1694
+ if (shouldExpandNodeInitially && collapsed === false) {
1695
+ if (expands[expandKey] === void 0 && !shouldExpand) {
1696
+ return null;
1697
+ }
1698
+ } else {
1699
+ if (expands[expandKey] === void 0 && shouldExpand) {
1700
+ return null;
1701
+ }
1686
1702
  }
1687
1703
  if (isExpanded) {
1688
1704
  return null;
@@ -2270,7 +2286,7 @@ var JsonView = /* @__PURE__ */ forwardRef((props, ref) => {
2270
2286
  value,
2271
2287
  children,
2272
2288
  collapsed = false,
2273
- shouldExpandNodeInitially = () => true,
2289
+ shouldExpandNodeInitially,
2274
2290
  indentWidth = 15,
2275
2291
  displayObjectSize = true,
2276
2292
  shortenTextAfterLength = 30,
@@ -2296,7 +2312,7 @@ var JsonView = /* @__PURE__ */ forwardRef((props, ref) => {
2296
2312
  value,
2297
2313
  objectSortKeys,
2298
2314
  indentWidth,
2299
- shouldExpandNodeInitially: collapsed === false ? shouldExpandNodeInitially : () => false,
2315
+ shouldExpandNodeInitially: collapsed === false ? shouldExpandNodeInitially : void 0,
2300
2316
  displayObjectSize,
2301
2317
  collapsed,
2302
2318
  enableClipboard,
@@ -17312,7 +17328,7 @@ function AutomationsRulesForm({
17312
17328
  ] }) }) });
17313
17329
  }
17314
17330
  const templateLoaders = {
17315
- BaseConfigComponent: () => import("./base-config-ClmYhVFu")
17331
+ BaseConfigComponent: () => import("./base-config-CjqEuEOM")
17316
17332
  };
17317
17333
  async function loadTemplateComponent(key) {
17318
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,
@@ -729,8 +733,14 @@ var NestedClose = (props) => {
729
733
  keyName,
730
734
  parentValue
731
735
  });
732
- if (expands[expandKey] === void 0 && !shouldExpand) {
733
- return null;
736
+ if (shouldExpandNodeInitially && collapsed === false) {
737
+ if (expands[expandKey] === void 0 && !shouldExpand) {
738
+ return null;
739
+ }
740
+ } else {
741
+ if (expands[expandKey] === void 0 && shouldExpand) {
742
+ return null;
743
+ }
734
744
  }
735
745
  var len = Object.keys(value).length;
736
746
  if (isExpanded || len === 0) {
@@ -1701,8 +1711,14 @@ var KeyValues = (props) => {
1701
1711
  keyName,
1702
1712
  parentValue
1703
1713
  });
1704
- if (expands[expandKey] === void 0 && !shouldExpand) {
1705
- return null;
1714
+ if (shouldExpandNodeInitially && collapsed === false) {
1715
+ if (expands[expandKey] === void 0 && !shouldExpand) {
1716
+ return null;
1717
+ }
1718
+ } else {
1719
+ if (expands[expandKey] === void 0 && shouldExpand) {
1720
+ return null;
1721
+ }
1706
1722
  }
1707
1723
  if (isExpanded) {
1708
1724
  return null;
@@ -2290,7 +2306,7 @@ var JsonView = /* @__PURE__ */ React.forwardRef((props, ref) => {
2290
2306
  value,
2291
2307
  children,
2292
2308
  collapsed = false,
2293
- shouldExpandNodeInitially = () => true,
2309
+ shouldExpandNodeInitially,
2294
2310
  indentWidth = 15,
2295
2311
  displayObjectSize = true,
2296
2312
  shortenTextAfterLength = 30,
@@ -2316,7 +2332,7 @@ var JsonView = /* @__PURE__ */ React.forwardRef((props, ref) => {
2316
2332
  value,
2317
2333
  objectSortKeys,
2318
2334
  indentWidth,
2319
- shouldExpandNodeInitially: collapsed === false ? shouldExpandNodeInitially : () => false,
2335
+ shouldExpandNodeInitially: collapsed === false ? shouldExpandNodeInitially : void 0,
2320
2336
  displayObjectSize,
2321
2337
  collapsed,
2322
2338
  enableClipboard,
@@ -17332,7 +17348,7 @@ function AutomationsRulesForm({
17332
17348
  ] }) }) });
17333
17349
  }
17334
17350
  const templateLoaders = {
17335
- BaseConfigComponent: () => Promise.resolve().then(() => require("./base-config-CGvQmkNR"))
17351
+ BaseConfigComponent: () => Promise.resolve().then(() => require("./base-config-fXd1L6SD"))
17336
17352
  };
17337
17353
  async function loadTemplateComponent(key) {
17338
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__-BNGTajTJ";
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__-DBUaxMhv");
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__-DBUaxMhv");
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__-BNGTajTJ";
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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