medusa-stats 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/.medusa/server/src/admin/composite.png +0 -0
  2. package/.medusa/server/src/admin/index.js +10512 -0
  3. package/.medusa/server/src/admin/index.mjs +10510 -0
  4. package/.medusa/server/src/admin/params.png +0 -0
  5. package/.medusa/server/src/admin/view.png +0 -0
  6. package/.medusa/server/src/admin/visualizations.png +0 -0
  7. package/.medusa/server/src/api/admin/statistics/alert-logs/[id]/route.d.ts +6 -0
  8. package/.medusa/server/src/api/admin/statistics/alert-logs/[id]/route.js +18 -0
  9. package/.medusa/server/src/api/admin/statistics/alert-logs/route.d.ts +6 -0
  10. package/.medusa/server/src/api/admin/statistics/alert-logs/route.js +33 -0
  11. package/.medusa/server/src/api/admin/statistics/alerts/[id]/logs/route.d.ts +6 -0
  12. package/.medusa/server/src/api/admin/statistics/alerts/[id]/logs/route.js +23 -0
  13. package/.medusa/server/src/api/admin/statistics/alerts/[id]/route.d.ts +17 -0
  14. package/.medusa/server/src/api/admin/statistics/alerts/[id]/route.js +64 -0
  15. package/.medusa/server/src/api/admin/statistics/alerts/[id]/toggle/route.d.ts +6 -0
  16. package/.medusa/server/src/api/admin/statistics/alerts/[id]/toggle/route.js +18 -0
  17. package/.medusa/server/src/api/admin/statistics/alerts/route.d.ts +12 -0
  18. package/.medusa/server/src/api/admin/statistics/alerts/route.js +94 -0
  19. package/.medusa/server/src/api/admin/statistics/charts/[id]/route.d.ts +17 -0
  20. package/.medusa/server/src/api/admin/statistics/charts/[id]/route.js +50 -0
  21. package/.medusa/server/src/api/admin/statistics/charts/[id]/statistics/route.d.ts +15 -0
  22. package/.medusa/server/src/api/admin/statistics/charts/[id]/statistics/route.js +40 -0
  23. package/.medusa/server/src/api/admin/statistics/charts/route.d.ts +4 -0
  24. package/.medusa/server/src/api/admin/statistics/charts/route.js +55 -0
  25. package/.medusa/server/src/api/admin/statistics/options/[id]/calculate/route.d.ts +7 -0
  26. package/.medusa/server/src/api/admin/statistics/options/[id]/calculate/route.js +23 -0
  27. package/.medusa/server/src/api/admin/statistics/options/[id]/clone/route.d.ts +7 -0
  28. package/.medusa/server/src/api/admin/statistics/options/[id]/clone/route.js +15 -0
  29. package/.medusa/server/src/api/admin/statistics/options/[id]/route.d.ts +17 -0
  30. package/.medusa/server/src/api/admin/statistics/options/[id]/route.js +69 -0
  31. package/.medusa/server/src/api/admin/statistics/options/route.d.ts +12 -0
  32. package/.medusa/server/src/api/admin/statistics/options/route.js +87 -0
  33. package/.medusa/server/src/api/admin/statistics/providers/[id]/route.d.ts +6 -0
  34. package/.medusa/server/src/api/admin/statistics/providers/[id]/route.js +18 -0
  35. package/.medusa/server/src/api/admin/statistics/providers/[id]/statistics/route.d.ts +6 -0
  36. package/.medusa/server/src/api/admin/statistics/providers/[id]/statistics/route.js +18 -0
  37. package/.medusa/server/src/api/admin/statistics/providers/route.d.ts +7 -0
  38. package/.medusa/server/src/api/admin/statistics/providers/route.js +57 -0
  39. package/.medusa/server/src/api/admin/statistics/utils/option-graph.d.ts +3 -0
  40. package/.medusa/server/src/api/admin/statistics/utils/option-graph.js +34 -0
  41. package/.medusa/server/src/api/admin/statistics/views/[id]/calculate/route.d.ts +7 -0
  42. package/.medusa/server/src/api/admin/statistics/views/[id]/calculate/route.js +21 -0
  43. package/.medusa/server/src/api/admin/statistics/views/[id]/clone/route.d.ts +7 -0
  44. package/.medusa/server/src/api/admin/statistics/views/[id]/clone/route.js +21 -0
  45. package/.medusa/server/src/api/admin/statistics/views/[id]/route.d.ts +17 -0
  46. package/.medusa/server/src/api/admin/statistics/views/[id]/route.js +71 -0
  47. package/.medusa/server/src/api/admin/statistics/views/route.d.ts +12 -0
  48. package/.medusa/server/src/api/admin/statistics/views/route.js +74 -0
  49. package/.medusa/server/src/api/middlewares.d.ts +2 -0
  50. package/.medusa/server/src/api/middlewares.js +194 -0
  51. package/.medusa/server/src/api/validation/statistics/schemas.d.ts +1013 -0
  52. package/.medusa/server/src/api/validation/statistics/schemas.js +288 -0
  53. package/.medusa/server/src/index.d.ts +1 -0
  54. package/.medusa/server/src/index.js +18 -0
  55. package/.medusa/server/src/jobs/evaluate-statistics-alerts.d.ts +6 -0
  56. package/.medusa/server/src/jobs/evaluate-statistics-alerts.js +110 -0
  57. package/.medusa/server/src/links/statistics-alert-user.d.ts +2 -0
  58. package/.medusa/server/src/links/statistics-alert-user.js +16 -0
  59. package/.medusa/server/src/links/statistics-option-user.d.ts +2 -0
  60. package/.medusa/server/src/links/statistics-option-user.js +16 -0
  61. package/.medusa/server/src/loaders/statistics/index.d.ts +5 -0
  62. package/.medusa/server/src/loaders/statistics/index.js +47 -0
  63. package/.medusa/server/src/modules/statistics/index.d.ts +107 -0
  64. package/.medusa/server/src/modules/statistics/index.js +32 -0
  65. package/.medusa/server/src/modules/statistics/migrations/Migration20260223131741.d.ts +5 -0
  66. package/.medusa/server/src/modules/statistics/migrations/Migration20260223131741.js +57 -0
  67. package/.medusa/server/src/modules/statistics/models/alert-log.d.ts +74 -0
  68. package/.medusa/server/src/modules/statistics/models/alert-log.js +16 -0
  69. package/.medusa/server/src/modules/statistics/models/alert.d.ts +74 -0
  70. package/.medusa/server/src/modules/statistics/models/alert.js +24 -0
  71. package/.medusa/server/src/modules/statistics/models/chart.d.ts +81 -0
  72. package/.medusa/server/src/modules/statistics/models/chart.js +28 -0
  73. package/.medusa/server/src/modules/statistics/models/index.d.ts +7 -0
  74. package/.medusa/server/src/modules/statistics/models/index.js +24 -0
  75. package/.medusa/server/src/modules/statistics/models/option-input.d.ts +135 -0
  76. package/.medusa/server/src/modules/statistics/models/option-input.js +27 -0
  77. package/.medusa/server/src/modules/statistics/models/option.d.ts +78 -0
  78. package/.medusa/server/src/modules/statistics/models/option.js +41 -0
  79. package/.medusa/server/src/modules/statistics/models/provider.d.ts +75 -0
  80. package/.medusa/server/src/modules/statistics/models/provider.js +15 -0
  81. package/.medusa/server/src/modules/statistics/models/view.d.ts +79 -0
  82. package/.medusa/server/src/modules/statistics/models/view.js +30 -0
  83. package/.medusa/server/src/modules/statistics/providers/index.d.ts +1 -0
  84. package/.medusa/server/src/modules/statistics/providers/index.js +18 -0
  85. package/.medusa/server/src/modules/statistics/providers/provider.d.ts +254 -0
  86. package/.medusa/server/src/modules/statistics/providers/provider.js +307 -0
  87. package/.medusa/server/src/modules/statistics/service.d.ts +953 -0
  88. package/.medusa/server/src/modules/statistics/service.js +190 -0
  89. package/.medusa/server/src/modules/statistics/utils/dependency-option-map.d.ts +13 -0
  90. package/.medusa/server/src/modules/statistics/utils/dependency-option-map.js +67 -0
  91. package/.medusa/server/src/modules/statistics/utils/period-utils.d.ts +23 -0
  92. package/.medusa/server/src/modules/statistics/utils/period-utils.js +78 -0
  93. package/.medusa/server/src/modules/statistics/utils/time-series-utils.d.ts +6 -0
  94. package/.medusa/server/src/modules/statistics/utils/time-series-utils.js +8 -0
  95. package/.medusa/server/src/providers/common/index.d.ts +2 -0
  96. package/.medusa/server/src/providers/common/index.js +1232 -0
  97. package/.medusa/server/src/providers/composite/index.d.ts +2 -0
  98. package/.medusa/server/src/providers/composite/index.js +147 -0
  99. package/.medusa/server/src/workflows/statistics/calculate-single-statistic.d.ts +15 -0
  100. package/.medusa/server/src/workflows/statistics/calculate-single-statistic.js +28 -0
  101. package/.medusa/server/src/workflows/statistics/calculate-statistics.d.ts +20 -0
  102. package/.medusa/server/src/workflows/statistics/calculate-statistics.js +15 -0
  103. package/.medusa/server/src/workflows/statistics/calculate-view.d.ts +31 -0
  104. package/.medusa/server/src/workflows/statistics/calculate-view.js +30 -0
  105. package/.medusa/server/src/workflows/statistics/clone-view.d.ts +227 -0
  106. package/.medusa/server/src/workflows/statistics/clone-view.js +10 -0
  107. package/.medusa/server/src/workflows/statistics/create-alert.d.ts +139 -0
  108. package/.medusa/server/src/workflows/statistics/create-alert.js +12 -0
  109. package/.medusa/server/src/workflows/statistics/create-chart.d.ts +122 -0
  110. package/.medusa/server/src/workflows/statistics/create-chart.js +14 -0
  111. package/.medusa/server/src/workflows/statistics/create-view-with-options.d.ts +1342 -0
  112. package/.medusa/server/src/workflows/statistics/create-view-with-options.js +29 -0
  113. package/.medusa/server/src/workflows/statistics/delete-chart.d.ts +10 -0
  114. package/.medusa/server/src/workflows/statistics/delete-chart.js +14 -0
  115. package/.medusa/server/src/workflows/statistics/evaluate-alerts.d.ts +28 -0
  116. package/.medusa/server/src/workflows/statistics/evaluate-alerts.js +67 -0
  117. package/.medusa/server/src/workflows/statistics/get-available-statistics.d.ts +5 -0
  118. package/.medusa/server/src/workflows/statistics/get-available-statistics.js +10 -0
  119. package/.medusa/server/src/workflows/statistics/index.d.ts +14 -0
  120. package/.medusa/server/src/workflows/statistics/index.js +31 -0
  121. package/.medusa/server/src/workflows/statistics/manage-chart-statistics.d.ts +12 -0
  122. package/.medusa/server/src/workflows/statistics/manage-chart-statistics.js +14 -0
  123. package/.medusa/server/src/workflows/statistics/steps/calculate-statistics.d.ts +37 -0
  124. package/.medusa/server/src/workflows/statistics/steps/calculate-statistics.js +222 -0
  125. package/.medusa/server/src/workflows/statistics/steps/clone-view.d.ts +227 -0
  126. package/.medusa/server/src/workflows/statistics/steps/clone-view.js +39 -0
  127. package/.medusa/server/src/workflows/statistics/steps/create-alert-log-entries.d.ts +17 -0
  128. package/.medusa/server/src/workflows/statistics/steps/create-alert-log-entries.js +50 -0
  129. package/.medusa/server/src/workflows/statistics/steps/create-alert.d.ts +120 -0
  130. package/.medusa/server/src/workflows/statistics/steps/create-alert.js +21 -0
  131. package/.medusa/server/src/workflows/statistics/steps/create-chart.d.ts +118 -0
  132. package/.medusa/server/src/workflows/statistics/steps/create-chart.js +19 -0
  133. package/.medusa/server/src/workflows/statistics/steps/create-statistics-options.d.ts +117 -0
  134. package/.medusa/server/src/workflows/statistics/steps/create-statistics-options.js +16 -0
  135. package/.medusa/server/src/workflows/statistics/steps/create-statistics-view.d.ts +119 -0
  136. package/.medusa/server/src/workflows/statistics/steps/create-statistics-view.js +16 -0
  137. package/.medusa/server/src/workflows/statistics/steps/dedupe-alerts.d.ts +22 -0
  138. package/.medusa/server/src/workflows/statistics/steps/dedupe-alerts.js +64 -0
  139. package/.medusa/server/src/workflows/statistics/steps/delete-chart.d.ts +6 -0
  140. package/.medusa/server/src/workflows/statistics/steps/delete-chart.js +17 -0
  141. package/.medusa/server/src/workflows/statistics/steps/emit-alert-events.d.ts +17 -0
  142. package/.medusa/server/src/workflows/statistics/steps/emit-alert-events.js +41 -0
  143. package/.medusa/server/src/workflows/statistics/steps/evaluate-each-condition.d.ts +15 -0
  144. package/.medusa/server/src/workflows/statistics/steps/evaluate-each-condition.js +109 -0
  145. package/.medusa/server/src/workflows/statistics/steps/extract-alert-values.d.ts +12 -0
  146. package/.medusa/server/src/workflows/statistics/steps/extract-alert-values.js +86 -0
  147. package/.medusa/server/src/workflows/statistics/steps/fetch-active-alerts-for-option.d.ts +112 -0
  148. package/.medusa/server/src/workflows/statistics/steps/fetch-active-alerts-for-option.js +16 -0
  149. package/.medusa/server/src/workflows/statistics/steps/fetch-available-statistics.d.ts +4 -0
  150. package/.medusa/server/src/workflows/statistics/steps/fetch-available-statistics.js +39 -0
  151. package/.medusa/server/src/workflows/statistics/steps/fetch-option-with-relations.d.ts +112 -0
  152. package/.medusa/server/src/workflows/statistics/steps/fetch-option-with-relations.js +11 -0
  153. package/.medusa/server/src/workflows/statistics/steps/fetch-view-with-options.d.ts +112 -0
  154. package/.medusa/server/src/workflows/statistics/steps/fetch-view-with-options.js +20 -0
  155. package/.medusa/server/src/workflows/statistics/steps/manage-chart-statistics.d.ts +8 -0
  156. package/.medusa/server/src/workflows/statistics/steps/manage-chart-statistics.js +26 -0
  157. package/.medusa/server/src/workflows/statistics/steps/update-chart.d.ts +117 -0
  158. package/.medusa/server/src/workflows/statistics/steps/update-chart.js +32 -0
  159. package/.medusa/server/src/workflows/statistics/steps/update-view.d.ts +120 -0
  160. package/.medusa/server/src/workflows/statistics/steps/update-view.js +18 -0
  161. package/.medusa/server/src/workflows/statistics/steps/validate-alert-input.d.ts +1 -0
  162. package/.medusa/server/src/workflows/statistics/steps/validate-alert-input.js +34 -0
  163. package/.medusa/server/src/workflows/statistics/steps/validate-option-parameters.d.ts +21 -0
  164. package/.medusa/server/src/workflows/statistics/steps/validate-option-parameters.js +43 -0
  165. package/.medusa/server/src/workflows/statistics/steps/validate-view-input.d.ts +10 -0
  166. package/.medusa/server/src/workflows/statistics/steps/validate-view-input.js +15 -0
  167. package/.medusa/server/src/workflows/statistics/update-chart.d.ts +120 -0
  168. package/.medusa/server/src/workflows/statistics/update-chart.js +13 -0
  169. package/.medusa/server/src/workflows/statistics/update-view-configuration.d.ts +128 -0
  170. package/.medusa/server/src/workflows/statistics/update-view-configuration.js +18 -0
  171. package/.medusa/server/src/workflows/statistics/utils/cache-utils.d.ts +60 -0
  172. package/.medusa/server/src/workflows/statistics/utils/cache-utils.js +66 -0
  173. package/.medusa/server/src/workflows/statistics/utils/dependency-graph.d.ts +51 -0
  174. package/.medusa/server/src/workflows/statistics/utils/dependency-graph.js +131 -0
  175. package/.medusa/server/src/workflows/statistics/utils/parameter-utils.d.ts +54 -0
  176. package/.medusa/server/src/workflows/statistics/utils/parameter-utils.js +147 -0
  177. package/.medusa/server/src/workflows/statistics/validate-option-configuration.d.ts +9 -0
  178. package/.medusa/server/src/workflows/statistics/validate-option-configuration.js +35 -0
  179. package/README.md +310 -0
  180. package/package.json +87 -0
@@ -0,0 +1,117 @@
1
+ export interface CreateStatisticsOptionsInput {
2
+ options: Array<{
3
+ provider_option_name: string;
4
+ local_option_name: string;
5
+ data: Record<string, any>;
6
+ provider_id: string;
7
+ }>;
8
+ }
9
+ export declare const createStatisticsOptionsStep: import("@medusajs/framework/workflows-sdk").StepFunction<CreateStatisticsOptionsInput, {
10
+ id: string;
11
+ provider_option_name: string;
12
+ local_option_name: string;
13
+ data: Record<string, unknown>;
14
+ visualization_config: Record<string, unknown> | null;
15
+ cache_options: Record<string, unknown> | null;
16
+ parameter_config: Record<string, unknown> | null;
17
+ preset: boolean;
18
+ provider: {
19
+ id: string;
20
+ display_name: string;
21
+ is_enabled: boolean;
22
+ options: /*elided*/ any[];
23
+ created_at: Date;
24
+ updated_at: Date;
25
+ deleted_at: Date | null;
26
+ };
27
+ alerts: {
28
+ id: string;
29
+ name: string;
30
+ description: string | null;
31
+ option: /*elided*/ any;
32
+ condition: Record<string, unknown>;
33
+ period: Record<string, unknown> | null;
34
+ interval: number;
35
+ severity: "info" | "warning" | "critical";
36
+ is_enabled: boolean;
37
+ metadata: Record<string, unknown> | null;
38
+ logs: {
39
+ id: string;
40
+ alert: /*elided*/ any;
41
+ triggered_at: Date;
42
+ evaluation_data: Record<string, unknown>;
43
+ evaluation_hash: string;
44
+ metadata: Record<string, unknown> | null;
45
+ created_at: Date;
46
+ updated_at: Date;
47
+ deleted_at: Date | null;
48
+ alert_id: string;
49
+ }[];
50
+ created_at: Date;
51
+ updated_at: Date;
52
+ deleted_at: Date | null;
53
+ option_id: string;
54
+ }[];
55
+ charts: {
56
+ id: string;
57
+ name: string;
58
+ description: string | null;
59
+ visualization_config: Record<string, unknown> | null;
60
+ layout: Record<string, unknown> | null;
61
+ view: {
62
+ id: string;
63
+ name: string;
64
+ description: string | null;
65
+ charts: /*elided*/ any[];
66
+ stats_data: Record<string, unknown> | null;
67
+ period_type: "rolling" | "calendar" | "custom" | null;
68
+ period_config: Record<string, unknown> | null;
69
+ interval: number | null;
70
+ cache_options: Record<string, unknown> | null;
71
+ layout_config: Record<string, unknown>;
72
+ metadata: Record<string, unknown>;
73
+ raw_interval: Record<string, unknown> | null;
74
+ created_at: Date;
75
+ updated_at: Date;
76
+ deleted_at: Date | null;
77
+ };
78
+ statistics: /*elided*/ any[];
79
+ metadata: Record<string, unknown>;
80
+ created_at: Date;
81
+ updated_at: Date;
82
+ deleted_at: Date | null;
83
+ view_id: string;
84
+ }[];
85
+ input_dependencies: {
86
+ id: string;
87
+ composite_option: /*elided*/ any;
88
+ input_option: /*elided*/ any;
89
+ parameter_name: string | null;
90
+ order: number | null;
91
+ metadata: Record<string, unknown> | null;
92
+ raw_order: Record<string, unknown> | null;
93
+ created_at: Date;
94
+ updated_at: Date;
95
+ deleted_at: Date | null;
96
+ composite_option_id: string;
97
+ input_option_id: string;
98
+ }[];
99
+ dependent_composites: {
100
+ id: string;
101
+ composite_option: /*elided*/ any;
102
+ input_option: /*elided*/ any;
103
+ parameter_name: string | null;
104
+ order: number | null;
105
+ metadata: Record<string, unknown> | null;
106
+ raw_order: Record<string, unknown> | null;
107
+ created_at: Date;
108
+ updated_at: Date;
109
+ deleted_at: Date | null;
110
+ composite_option_id: string;
111
+ input_option_id: string;
112
+ }[];
113
+ created_at: Date;
114
+ updated_at: Date;
115
+ deleted_at: Date | null;
116
+ provider_id: string;
117
+ }[]>;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createStatisticsOptionsStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const statistics_1 = require("../../../modules/statistics");
6
+ exports.createStatisticsOptionsStep = (0, workflows_sdk_1.createStep)("create-statistics-options", async (input, { container }) => {
7
+ const statisticsService = container.resolve(statistics_1.STATISTICS_MODULE);
8
+ const createdOptions = await statisticsService.createStatisticsOptions(input.options);
9
+ return new workflows_sdk_1.StepResponse(createdOptions, createdOptions.map((opt) => opt.id));
10
+ }, async (optionIds, { container }) => {
11
+ if (!optionIds || optionIds.length === 0)
12
+ return;
13
+ const statisticsService = container.resolve(statistics_1.STATISTICS_MODULE);
14
+ await statisticsService.deleteStatisticsOptions(optionIds);
15
+ });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXN0YXRpc3RpY3Mtb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RhdGlzdGljcy9zdGVwcy9jcmVhdGUtc3RhdGlzdGljcy1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE2RTtBQUM3RSw0REFBZ0U7QUFZbkQsUUFBQSwyQkFBMkIsR0FBRyxJQUFBLDBCQUFVLEVBQ2pELDJCQUEyQixFQUMzQixLQUFLLEVBQUUsS0FBbUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDekQsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFvQiw4QkFBaUIsQ0FBQyxDQUFDO0lBRWxGLE1BQU0sY0FBYyxHQUFHLE1BQU0saUJBQWlCLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXRGLE9BQU8sSUFBSSw0QkFBWSxDQUNuQixjQUFjLEVBQ2QsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUMzQyxDQUFDO0FBQ04sQ0FBQyxFQUNELEtBQUssRUFBRSxTQUFtQixFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUN6QyxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU87SUFFakQsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFvQiw4QkFBaUIsQ0FBQyxDQUFDO0lBQ2xGLE1BQU0saUJBQWlCLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDL0QsQ0FBQyxDQUNKLENBQUMifQ==
@@ -0,0 +1,119 @@
1
+ export interface CreateStatisticsViewInput {
2
+ name: string;
3
+ description?: string;
4
+ stats_data?: Record<string, any>;
5
+ layout_config?: Record<string, any>;
6
+ metadata?: Record<string, any>;
7
+ period_type?: "rolling" | "calendar" | "custom";
8
+ period_config?: Record<string, any>;
9
+ interval?: number;
10
+ }
11
+ export declare const createStatisticsViewStep: import("@medusajs/framework/workflows-sdk").StepFunction<CreateStatisticsViewInput, {
12
+ id: string;
13
+ name: string;
14
+ description: string | null;
15
+ charts: {
16
+ id: string;
17
+ name: string;
18
+ description: string | null;
19
+ visualization_config: Record<string, unknown> | null;
20
+ layout: Record<string, unknown> | null;
21
+ view: /*elided*/ any;
22
+ statistics: {
23
+ id: string;
24
+ provider_option_name: string;
25
+ local_option_name: string;
26
+ data: Record<string, unknown>;
27
+ visualization_config: Record<string, unknown> | null;
28
+ cache_options: Record<string, unknown> | null;
29
+ parameter_config: Record<string, unknown> | null;
30
+ preset: boolean;
31
+ provider: {
32
+ id: string;
33
+ display_name: string;
34
+ is_enabled: boolean;
35
+ options: /*elided*/ any[];
36
+ created_at: Date;
37
+ updated_at: Date;
38
+ deleted_at: Date | null;
39
+ };
40
+ alerts: {
41
+ id: string;
42
+ name: string;
43
+ description: string | null;
44
+ option: /*elided*/ any;
45
+ condition: Record<string, unknown>;
46
+ period: Record<string, unknown> | null;
47
+ interval: number;
48
+ severity: "info" | "warning" | "critical";
49
+ is_enabled: boolean;
50
+ metadata: Record<string, unknown> | null;
51
+ logs: {
52
+ id: string;
53
+ alert: /*elided*/ any;
54
+ triggered_at: Date;
55
+ evaluation_data: Record<string, unknown>;
56
+ evaluation_hash: string;
57
+ metadata: Record<string, unknown> | null;
58
+ created_at: Date;
59
+ updated_at: Date;
60
+ deleted_at: Date | null;
61
+ alert_id: string;
62
+ }[];
63
+ created_at: Date;
64
+ updated_at: Date;
65
+ deleted_at: Date | null;
66
+ option_id: string;
67
+ }[];
68
+ charts: /*elided*/ any[];
69
+ input_dependencies: {
70
+ id: string;
71
+ composite_option: /*elided*/ any;
72
+ input_option: /*elided*/ any;
73
+ parameter_name: string | null;
74
+ order: number | null;
75
+ metadata: Record<string, unknown> | null;
76
+ raw_order: Record<string, unknown> | null;
77
+ created_at: Date;
78
+ updated_at: Date;
79
+ deleted_at: Date | null;
80
+ composite_option_id: string;
81
+ input_option_id: string;
82
+ }[];
83
+ dependent_composites: {
84
+ id: string;
85
+ composite_option: /*elided*/ any;
86
+ input_option: /*elided*/ any;
87
+ parameter_name: string | null;
88
+ order: number | null;
89
+ metadata: Record<string, unknown> | null;
90
+ raw_order: Record<string, unknown> | null;
91
+ created_at: Date;
92
+ updated_at: Date;
93
+ deleted_at: Date | null;
94
+ composite_option_id: string;
95
+ input_option_id: string;
96
+ }[];
97
+ created_at: Date;
98
+ updated_at: Date;
99
+ deleted_at: Date | null;
100
+ provider_id: string;
101
+ }[];
102
+ metadata: Record<string, unknown>;
103
+ created_at: Date;
104
+ updated_at: Date;
105
+ deleted_at: Date | null;
106
+ view_id: string;
107
+ }[];
108
+ stats_data: Record<string, unknown> | null;
109
+ period_type: "rolling" | "calendar" | "custom" | null;
110
+ period_config: Record<string, unknown> | null;
111
+ interval: number | null;
112
+ cache_options: Record<string, unknown> | null;
113
+ layout_config: Record<string, unknown>;
114
+ metadata: Record<string, unknown>;
115
+ raw_interval: Record<string, unknown> | null;
116
+ created_at: Date;
117
+ updated_at: Date;
118
+ deleted_at: Date | null;
119
+ }>;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createStatisticsViewStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const statistics_1 = require("../../../modules/statistics");
6
+ exports.createStatisticsViewStep = (0, workflows_sdk_1.createStep)("create-statistics-view", async (input, { container }) => {
7
+ const statisticsService = container.resolve(statistics_1.STATISTICS_MODULE);
8
+ const view = await statisticsService.createStatisticsViews(input);
9
+ return new workflows_sdk_1.StepResponse(view, view.id);
10
+ }, async (viewId, { container }) => {
11
+ if (!viewId)
12
+ return;
13
+ const statisticsService = container.resolve(statistics_1.STATISTICS_MODULE);
14
+ await statisticsService.deleteStatisticsViews(viewId);
15
+ });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXN0YXRpc3RpY3Mtdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RhdGlzdGljcy9zdGVwcy9jcmVhdGUtc3RhdGlzdGljcy12aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE2RTtBQUM3RSw0REFBZ0U7QUFjbkQsUUFBQSx3QkFBd0IsR0FBRyxJQUFBLDBCQUFVLEVBQzlDLHdCQUF3QixFQUN4QixLQUFLLEVBQUUsS0FBZ0MsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDdEQsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFvQiw4QkFBaUIsQ0FBQyxDQUFDO0lBRWxGLE1BQU0sSUFBSSxHQUFHLE1BQU0saUJBQWlCLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFbEUsT0FBTyxJQUFJLDRCQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMzQyxDQUFDLEVBQ0QsS0FBSyxFQUFFLE1BQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDcEMsSUFBSSxDQUFDLE1BQU07UUFBRSxPQUFPO0lBRXBCLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBb0IsOEJBQWlCLENBQUMsQ0FBQztJQUNsRixNQUFNLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFELENBQUMsQ0FDSixDQUFDIn0=
@@ -0,0 +1,22 @@
1
+ export interface DedupeAlertsInput {
2
+ alerts: any[];
3
+ evaluation_results: Array<{
4
+ alert_id: string;
5
+ triggered: boolean;
6
+ current_value: number;
7
+ reference_value: number | null;
8
+ compare_value: number | [number, number];
9
+ operator: string;
10
+ comparison_type: string;
11
+ }>;
12
+ evaluation_scope?: {
13
+ periodStart?: Date;
14
+ periodEnd?: Date;
15
+ interval?: number;
16
+ };
17
+ }
18
+ export interface AllowedAlertEvaluation {
19
+ alert_id: string;
20
+ evaluation_hash: string;
21
+ }
22
+ export declare const dedupeAlertsStep: import("@medusajs/framework/workflows-sdk").StepFunction<DedupeAlertsInput, AllowedAlertEvaluation[]>;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dedupeAlertsStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const statistics_1 = require("../../../modules/statistics");
6
+ const framework_1 = require("@medusajs/framework");
7
+ exports.dedupeAlertsStep = (0, workflows_sdk_1.createStep)("check-cooldown-period", async (input, { container }) => {
8
+ const statisticsService = container.resolve(statistics_1.STATISTICS_MODULE);
9
+ const allowedAlerts = [];
10
+ for (const result of input.evaluation_results) {
11
+ if (!result.triggered) {
12
+ continue;
13
+ }
14
+ const alert = input.alerts.find(a => a.id === result.alert_id);
15
+ if (!alert) {
16
+ continue;
17
+ }
18
+ const evaluationData = {
19
+ current_value: result.current_value,
20
+ reference_value: result.reference_value,
21
+ compare_value: result.compare_value,
22
+ threshold: alert.condition?.threshold ?? null,
23
+ operator: result.operator,
24
+ comparison_type: result.comparison_type,
25
+ condition: alert.condition,
26
+ };
27
+ const evaluationScope = {
28
+ periodStart: input.evaluation_scope?.periodStart
29
+ ? new Date(input.evaluation_scope.periodStart).toISOString()
30
+ : null,
31
+ periodEnd: input.evaluation_scope?.periodEnd
32
+ ? new Date(input.evaluation_scope.periodEnd).toISOString()
33
+ : null,
34
+ interval: input.evaluation_scope?.interval ?? null,
35
+ };
36
+ const evaluationHash = JSON.stringify({
37
+ alert_id: alert.id,
38
+ evaluationScope,
39
+ evaluationData,
40
+ });
41
+ try {
42
+ const existingLogs = await statisticsService.listStatisticsAlertLogs({
43
+ alert_id: alert.id,
44
+ evaluation_hash: evaluationHash,
45
+ }, {
46
+ select: ["id"],
47
+ take: 1,
48
+ });
49
+ if (existingLogs.length > 0) {
50
+ continue;
51
+ }
52
+ }
53
+ catch (error) {
54
+ framework_1.logger.error(`Error checking duplicate evaluation hash for alert ${alert.id}: ${error}`);
55
+ continue;
56
+ }
57
+ allowedAlerts.push({
58
+ alert_id: result.alert_id,
59
+ evaluation_hash: evaluationHash,
60
+ });
61
+ }
62
+ return new workflows_sdk_1.StepResponse(allowedAlerts);
63
+ });
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVkdXBlLWFsZXJ0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RhdGlzdGljcy9zdGVwcy9kZWR1cGUtYWxlcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE2RTtBQUM3RSw0REFBZ0U7QUFFaEUsbURBQTZDO0FBeUJoQyxRQUFBLGdCQUFnQixHQUFHLElBQUEsMEJBQVUsRUFDdEMsdUJBQXVCLEVBQ3ZCLEtBQUssRUFBRSxLQUF3QixFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUM5QyxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQW9CLDhCQUFpQixDQUFDLENBQUM7SUFDbEYsTUFBTSxhQUFhLEdBQTZCLEVBQUUsQ0FBQztJQUVuRCxLQUFLLE1BQU0sTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsU0FBUztRQUNiLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNULFNBQVM7UUFDYixDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUc7WUFDbkIsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhO1lBQ25DLGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZTtZQUN2QyxhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWE7WUFDbkMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLEVBQUUsU0FBUyxJQUFJLElBQUk7WUFDN0MsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO1lBQ3pCLGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZTtZQUN2QyxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7U0FDN0IsQ0FBQztRQUVGLE1BQU0sZUFBZSxHQUFHO1lBQ3BCLFdBQVcsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsV0FBVztnQkFDNUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLEVBQUU7Z0JBQzVELENBQUMsQ0FBQyxJQUFJO1lBQ1YsU0FBUyxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTO2dCQUN4QyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRTtnQkFDMUQsQ0FBQyxDQUFDLElBQUk7WUFDVixRQUFRLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixFQUFFLFFBQVEsSUFBSSxJQUFJO1NBQ3JELENBQUM7UUFFRixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2xDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUNsQixlQUFlO1lBQ2YsY0FBYztTQUNqQixDQUFDLENBQUM7UUFHSCxJQUFJLENBQUM7WUFDRCxNQUFNLFlBQVksR0FBRyxNQUFNLGlCQUFpQixDQUFDLHVCQUF1QixDQUNoRTtnQkFDSSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ2xCLGVBQWUsRUFBRSxjQUFjO2FBQ2xDLEVBQ0Q7Z0JBQ0ksTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDO2dCQUNkLElBQUksRUFBRSxDQUFDO2FBQ1YsQ0FDSixDQUFDO1lBRUYsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQixTQUFTO1lBQ2IsQ0FBQztRQUNMLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2Isa0JBQU0sQ0FBQyxLQUFLLENBQUMsc0RBQXNELEtBQUssQ0FBQyxFQUFFLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQztZQUN6RixTQUFTO1FBQ2IsQ0FBQztRQUVELGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDZixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7WUFDekIsZUFBZSxFQUFFLGNBQWM7U0FDbEMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE9BQU8sSUFBSSw0QkFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzNDLENBQUMsQ0FDSixDQUFDIn0=
@@ -0,0 +1,6 @@
1
+ export interface DeleteChartInput {
2
+ id: string;
3
+ }
4
+ export declare const deleteChartStep: import("@medusajs/framework/workflows-sdk").StepFunction<DeleteChartInput, {
5
+ success: boolean;
6
+ }>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deleteChartStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const statistics_1 = require("../../../modules/statistics");
6
+ exports.deleteChartStep = (0, workflows_sdk_1.createStep)("delete-chart", async (input, { container }) => {
7
+ const statisticsService = container.resolve(statistics_1.STATISTICS_MODULE);
8
+ const [chart] = await statisticsService.listStatisticsCharts({ id: input.id });
9
+ await statisticsService.deleteStatisticsCharts(input.id);
10
+ return new workflows_sdk_1.StepResponse({ success: true }, chart);
11
+ }, async (originalChart, { container }) => {
12
+ if (!originalChart)
13
+ return;
14
+ const statisticsService = container.resolve(statistics_1.STATISTICS_MODULE);
15
+ await statisticsService.createStatisticsCharts(originalChart);
16
+ });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWNoYXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGF0aXN0aWNzL3N0ZXBzL2RlbGV0ZS1jaGFydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNkU7QUFDN0UsNERBQWdFO0FBT25ELFFBQUEsZUFBZSxHQUFHLElBQUEsMEJBQVUsRUFDckMsY0FBYyxFQUNkLEtBQUssRUFBRSxLQUF1QixFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUM3QyxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQW9CLDhCQUFpQixDQUFDLENBQUM7SUFHbEYsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0saUJBQWlCLENBQUMsb0JBQW9CLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFL0UsTUFBTSxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFekQsT0FBTyxJQUFJLDRCQUFZLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdEQsQ0FBQyxFQUNELEtBQUssRUFBRSxhQUFrQixFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUN4QyxJQUFJLENBQUMsYUFBYTtRQUFFLE9BQU87SUFFM0IsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFvQiw4QkFBaUIsQ0FBQyxDQUFDO0lBQ2xGLE1BQU0saUJBQWlCLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDbEUsQ0FBQyxDQUNKLENBQUMifQ==
@@ -0,0 +1,17 @@
1
+ import type { ExtractedAlertValues } from "./extract-alert-values";
2
+ import type { AllowedAlertEvaluation } from "./dedupe-alerts";
3
+ export interface EmitAlertEventsInput {
4
+ alerts: any[];
5
+ evaluation_results: Array<{
6
+ alert_id: string;
7
+ triggered: boolean;
8
+ current_value: number;
9
+ reference_value: number | null;
10
+ compare_value: number | [number, number];
11
+ operator: string;
12
+ comparison_type: string;
13
+ }>;
14
+ allowed_alerts: AllowedAlertEvaluation[];
15
+ extracted_values: Record<string, ExtractedAlertValues>;
16
+ }
17
+ export declare const emitAlertEventsStep: import("@medusajs/framework/workflows-sdk").StepFunction<EmitAlertEventsInput, string[]>;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.emitAlertEventsStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ exports.emitAlertEventsStep = (0, workflows_sdk_1.createStep)("emit-alert-events", async (input, { container }) => {
7
+ const eventBus = container.resolve(utils_1.Modules.EVENT_BUS);
8
+ const emittedEventIds = [];
9
+ for (const allowed of input.allowed_alerts) {
10
+ const alert_id = allowed.alert_id;
11
+ const alert = input.alerts.find(a => a.id === alert_id);
12
+ const evaluation = input.evaluation_results.find(e => e.alert_id === alert_id);
13
+ const extracted = input.extracted_values[alert_id];
14
+ if (!alert || !evaluation || !extracted) {
15
+ continue;
16
+ }
17
+ const channels = Array.isArray(alert.metadata?.channels)
18
+ ? alert.metadata.channels
19
+ : [];
20
+ await eventBus.emit([
21
+ {
22
+ name: "statistics.alert",
23
+ data: {
24
+ alert_id: alert.id,
25
+ alert_name: alert.name,
26
+ severity: alert.severity,
27
+ option_id: alert.option_id,
28
+ option_name: alert.option?.local_option_name,
29
+ current_value: evaluation.current_value,
30
+ reference_value: evaluation.reference_value,
31
+ compare_value: evaluation.compare_value,
32
+ operator: evaluation.operator,
33
+ comparison_type: evaluation.comparison_type,
34
+ }
35
+ }
36
+ ]);
37
+ emittedEventIds.push(alert_id);
38
+ }
39
+ return new workflows_sdk_1.StepResponse(emittedEventIds);
40
+ });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdC1hbGVydC1ldmVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0YXRpc3RpY3Mvc3RlcHMvZW1pdC1hbGVydC1ldmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQTZFO0FBQzdFLHFEQUFvRDtBQW1CdkMsUUFBQSxtQkFBbUIsR0FBRyxJQUFBLDBCQUFVLEVBQ3pDLG1CQUFtQixFQUNuQixLQUFLLEVBQUUsS0FBMkIsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDakQsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEQsTUFBTSxlQUFlLEdBQWEsRUFBRSxDQUFDO0lBRXJDLEtBQUssTUFBTSxPQUFPLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDbEMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVuRCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEMsU0FBUztRQUNiLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO1lBQ3BELENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVE7WUFDekIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVULE1BQU0sUUFBUSxDQUFDLElBQUksQ0FBQztZQUNoQjtnQkFDSSxJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QixJQUFJLEVBQUU7b0JBQ0YsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFO29CQUNsQixVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUk7b0JBQ3RCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtvQkFDeEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO29CQUMxQixXQUFXLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxpQkFBaUI7b0JBQzVDLGFBQWEsRUFBRSxVQUFVLENBQUMsYUFBYTtvQkFDdkMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxlQUFlO29CQUMzQyxhQUFhLEVBQUUsVUFBVSxDQUFDLGFBQWE7b0JBQ3ZDLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUTtvQkFDN0IsZUFBZSxFQUFFLFVBQVUsQ0FBQyxlQUFlO2lCQUM5QzthQUNKO1NBQ0osQ0FBQyxDQUFDO1FBRUgsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsT0FBTyxJQUFJLDRCQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDN0MsQ0FBQyxDQUNKLENBQUMifQ==
@@ -0,0 +1,15 @@
1
+ import type { ExtractedAlertValues } from "./extract-alert-values";
2
+ export interface EvaluateConditionsInput {
3
+ alerts: any[];
4
+ extracted_values: Record<string, ExtractedAlertValues>;
5
+ }
6
+ export interface AlertEvaluationResult {
7
+ alert_id: string;
8
+ triggered: boolean;
9
+ current_value: number;
10
+ reference_value: number | null;
11
+ compare_value: number | [number, number];
12
+ operator: string;
13
+ comparison_type: string;
14
+ }
15
+ export declare const evaluateEachConditionStep: import("@medusajs/framework/workflows-sdk").StepFunction<EvaluateConditionsInput, AlertEvaluationResult[]>;
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.evaluateEachConditionStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ exports.evaluateEachConditionStep = (0, workflows_sdk_1.createStep)("evaluate-each-condition", async (input, { container }) => {
6
+ const logger = container.resolve("logger");
7
+ const evaluationResults = [];
8
+ for (const alert of input.alerts) {
9
+ const { condition } = alert;
10
+ const extracted = input.extracted_values[alert.id];
11
+ if (!extracted) {
12
+ logger.warn(`[Alert ${alert.id}] No extracted values, skipping evaluation`);
13
+ continue;
14
+ }
15
+ const current = extracted.current;
16
+ let compareValue;
17
+ let triggered = false;
18
+ if (condition.comparisonType === 'absolute') {
19
+ compareValue = condition.threshold;
20
+ }
21
+ else if (condition.comparisonType === 'relative') {
22
+ if (!extracted.canDoRelative || extracted.reference === null) {
23
+ logger.warn(`[Alert ${alert.id}] Cannot perform relative comparison. ` +
24
+ `Skipping evaluation.`);
25
+ continue;
26
+ }
27
+ const changeType = condition.changeType || 'absolute';
28
+ if (changeType === 'percentage') {
29
+ if (extracted.reference === 0) {
30
+ logger.warn(`[Alert ${alert.id}] Cannot calculate percentage change with reference value of 0`);
31
+ continue;
32
+ }
33
+ const percentageChange = ((current - extracted.reference) / extracted.reference) * 100;
34
+ compareValue = condition.threshold || 0;
35
+ triggered = evaluateOperator(percentageChange, compareValue, condition.operator);
36
+ evaluationResults.push({
37
+ alert_id: alert.id,
38
+ triggered,
39
+ current_value: current,
40
+ reference_value: extracted.reference,
41
+ compare_value: percentageChange,
42
+ operator: condition.operator,
43
+ comparison_type: 'relative_percentage'
44
+ });
45
+ continue;
46
+ }
47
+ else {
48
+ compareValue = extracted.reference;
49
+ }
50
+ }
51
+ else {
52
+ logger.error(`[Alert ${alert.id}] Invalid comparisonType: ${condition.comparisonType}`);
53
+ continue;
54
+ }
55
+ triggered = evaluateOperator(current, compareValue, condition.operator);
56
+ evaluationResults.push({
57
+ alert_id: alert.id,
58
+ triggered,
59
+ current_value: current,
60
+ reference_value: extracted.reference,
61
+ compare_value: compareValue,
62
+ operator: condition.operator,
63
+ comparison_type: condition.comparisonType
64
+ });
65
+ }
66
+ return new workflows_sdk_1.StepResponse(evaluationResults);
67
+ });
68
+ function evaluateOperator(value, compareValue, operator) {
69
+ switch (operator) {
70
+ case "gt":
71
+ if (Array.isArray(compareValue)) {
72
+ return false;
73
+ }
74
+ return value > compareValue;
75
+ case "lt":
76
+ if (Array.isArray(compareValue)) {
77
+ return false;
78
+ }
79
+ return value < compareValue;
80
+ case "gte":
81
+ if (Array.isArray(compareValue)) {
82
+ return false;
83
+ }
84
+ return value >= compareValue;
85
+ case "lte":
86
+ if (Array.isArray(compareValue)) {
87
+ return false;
88
+ }
89
+ return value <= compareValue;
90
+ case "eq":
91
+ if (Array.isArray(compareValue)) {
92
+ return false;
93
+ }
94
+ return value === compareValue;
95
+ case "neq":
96
+ if (Array.isArray(compareValue)) {
97
+ return false;
98
+ }
99
+ return value !== compareValue;
100
+ case "between":
101
+ if (!Array.isArray(compareValue) || compareValue.length !== 2) {
102
+ return false;
103
+ }
104
+ return value >= compareValue[0] && value <= compareValue[1];
105
+ default:
106
+ return false;
107
+ }
108
+ }
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZhbHVhdGUtZWFjaC1jb25kaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0YXRpc3RpY3Mvc3RlcHMvZXZhbHVhdGUtZWFjaC1jb25kaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQTZFO0FBa0JoRSxRQUFBLHlCQUF5QixHQUFHLElBQUEsMEJBQVUsRUFDL0MseUJBQXlCLEVBQ3pCLEtBQUssRUFBRSxLQUE4QixFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUNwRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLE1BQU0saUJBQWlCLEdBQTRCLEVBQUUsQ0FBQztJQUV0RCxLQUFLLE1BQU0sS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMvQixNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQzVCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFHbkQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssQ0FBQyxFQUFFLDRDQUE0QyxDQUFDLENBQUM7WUFDNUUsU0FBUztRQUNiLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO1FBQ2xDLElBQUksWUFBdUMsQ0FBQztRQUM1QyxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFHdEIsSUFBSSxTQUFTLENBQUMsY0FBYyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBRTFDLFlBQVksR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDO1FBRXZDLENBQUM7YUFBTSxJQUFJLFNBQVMsQ0FBQyxjQUFjLEtBQUssVUFBVSxFQUFFLENBQUM7WUFFakQsSUFBSSxD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
@@ -0,0 +1,12 @@
1
+ export interface ExtractAlertValuesInput {
2
+ alerts: any[];
3
+ current_values: Record<string, any>;
4
+ }
5
+ export interface ExtractedAlertValues {
6
+ alert_id: string;
7
+ current: number;
8
+ reference: number | null;
9
+ valueType: 'timeseries' | 'single';
10
+ canDoRelative: boolean;
11
+ }
12
+ export declare const extractAlertValuesStep: import("@medusajs/framework/workflows-sdk").StepFunction<ExtractAlertValuesInput, Record<string, ExtractedAlertValues>>;