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,288 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetChartQuerySchema = exports.ManageChartStatisticsSchema = exports.UpdateChartSchema = exports.CreateChartSchema = exports.InvalidateCacheSchema = exports.GetAlertLogQuerySchema = exports.ListAlertLogsGlobalQuerySchema = exports.ListAlertLogsQuerySchema = exports.GetAlertQuerySchema = exports.UpdateAlertSchema = exports.CreateAlertSchema = exports.ListAlertsQuerySchema = exports.CalculateOptionSchema = exports.GetOptionQuerySchema = exports.CloneOptionSchema = exports.UpdateOptionSchema = exports.CreateOptionSchema = exports.ListOptionsQuerySchema = exports.ParameterConfigSchema = exports.InputDependencySchema = exports.CloneViewSchema = exports.CalculateViewSchema = exports.GetViewQuerySchema = exports.UpdateViewSchema = exports.CreateViewSchema = exports.ListChartsQuerySchema = exports.ListViewsQuerySchema = exports.GetProviderStatisticsQuerySchema = exports.GetProviderQuerySchema = exports.ListProvidersQuerySchema = exports.ExpandSchema = exports.PaginationSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const validators_1 = require("@medusajs/medusa/api/utils/validators");
6
+ /**
7
+ * Common schemas
8
+ */
9
+ exports.PaginationSchema = (0, validators_1.createFindParams)({
10
+ limit: 20,
11
+ offset: 0,
12
+ });
13
+ exports.ExpandSchema = zod_1.z.object({
14
+ fields: zod_1.z.string().optional(),
15
+ });
16
+ /**
17
+ * Provider Validation Schemas
18
+ */
19
+ exports.ListProvidersQuerySchema = exports.PaginationSchema.extend({
20
+ q: zod_1.z.string().optional(),
21
+ order: zod_1.z.string().optional(),
22
+ is_enabled: zod_1.z.preprocess((val) => {
23
+ if (val === "true")
24
+ return true;
25
+ if (val === "false")
26
+ return false;
27
+ return val;
28
+ }, zod_1.z.boolean().optional()),
29
+ }).merge(exports.ExpandSchema);
30
+ exports.GetProviderQuerySchema = exports.ExpandSchema;
31
+ exports.GetProviderStatisticsQuerySchema = zod_1.z.object({
32
+ sales_channel_id: zod_1.z.string().optional(),
33
+ });
34
+ /**
35
+ * View Validation Schemas
36
+ */
37
+ exports.ListViewsQuerySchema = exports.PaginationSchema.extend({
38
+ q: zod_1.z.string().optional(),
39
+ order: zod_1.z.string().optional(),
40
+ }).merge(exports.ExpandSchema);
41
+ exports.ListChartsQuerySchema = exports.PaginationSchema.extend({
42
+ view_id: zod_1.z.string().optional(),
43
+ q: zod_1.z.string().optional(),
44
+ order: zod_1.z.string().optional(),
45
+ }).merge(exports.ExpandSchema);
46
+ exports.CreateViewSchema = zod_1.z.object({
47
+ name: zod_1.z.string().min(1, "Name is required"),
48
+ description: zod_1.z.string().optional().nullable(),
49
+ stats_data: zod_1.z.record(zod_1.z.any()).optional().nullable(),
50
+ layout_config: zod_1.z.record(zod_1.z.any()).optional().nullable(),
51
+ period_type: zod_1.z.enum(["rolling", "calendar", "custom"]).optional(),
52
+ period_config: zod_1.z.record(zod_1.z.any()).optional().nullable(),
53
+ interval: zod_1.z.number().optional(),
54
+ options: zod_1.z.array(zod_1.z.object({
55
+ provider_id: zod_1.z.string().min(1, "Provider ID is required"),
56
+ statistic_key: zod_1.z.string().min(1, "Statistic key is required"),
57
+ data: zod_1.z.record(zod_1.z.any()).optional().nullable(),
58
+ })).optional(),
59
+ });
60
+ exports.UpdateViewSchema = zod_1.z.object({
61
+ name: zod_1.z.string().min(1).optional(),
62
+ description: zod_1.z.string().optional().nullable(),
63
+ stats_data: zod_1.z.record(zod_1.z.any()).optional().nullable(),
64
+ layout_config: zod_1.z.record(zod_1.z.any()).optional().nullable(),
65
+ period_type: zod_1.z.enum(["rolling", "calendar", "custom"]).optional(),
66
+ period_config: zod_1.z.record(zod_1.z.any()).optional().nullable(),
67
+ interval: zod_1.z.number().optional(),
68
+ cache_options: zod_1.z.object({
69
+ enabled: zod_1.z.boolean().optional(),
70
+ ttl: zod_1.z.number().optional(),
71
+ }).optional().nullable(),
72
+ });
73
+ exports.GetViewQuerySchema = exports.ExpandSchema;
74
+ exports.CalculateViewSchema = zod_1.z.object({
75
+ periodStart: zod_1.z.string().datetime("Invalid start date"),
76
+ periodEnd: zod_1.z.string().datetime("Invalid end date"),
77
+ interval: zod_1.z.number(),
78
+ });
79
+ exports.CloneViewSchema = zod_1.z.object({
80
+ new_name: zod_1.z.string().min(1, "New name is required"),
81
+ include_options: zod_1.z.boolean().optional(),
82
+ });
83
+ /**
84
+ * Option Validation Schemas
85
+ */
86
+ exports.InputDependencySchema = zod_1.z.object({
87
+ input_option_id: zod_1.z.string().min(1, "Input option ID is required"),
88
+ parameter_name: zod_1.z.string().min(1, "Parameter name is required").nullable(),
89
+ order: zod_1.z.number().int().optional(),
90
+ metadata: zod_1.z.record(zod_1.z.any()).optional().nullable(),
91
+ });
92
+ exports.ParameterConfigSchema = zod_1.z.record(zod_1.z.object({
93
+ value: zod_1.z.any(),
94
+ locked: zod_1.z.boolean().default(false),
95
+ }));
96
+ exports.ListOptionsQuerySchema = exports.PaginationSchema.extend({
97
+ view_id: zod_1.z.string().optional(),
98
+ provider_id: zod_1.z.string().optional(),
99
+ q: zod_1.z.string().optional(),
100
+ order: zod_1.z.string().optional(),
101
+ preset: zod_1.z.preprocess((val) => {
102
+ if (val === "true")
103
+ return true;
104
+ if (val === "false")
105
+ return false;
106
+ return val;
107
+ }, zod_1.z.boolean().optional()),
108
+ has_dependencies: zod_1.z.preprocess((val) => {
109
+ if (val === "true")
110
+ return true;
111
+ if (val === "false")
112
+ return false;
113
+ return val;
114
+ }, zod_1.z.boolean().optional()),
115
+ }).merge(exports.ExpandSchema);
116
+ exports.CreateOptionSchema = zod_1.z.object({
117
+ view_id: zod_1.z.string().min(1, "View ID is required").optional(),
118
+ provider_id: zod_1.z.string().min(1, "Provider ID is required"),
119
+ provider_option_name: zod_1.z.string().min(1, "Provider option name is required"),
120
+ data: zod_1.z.record(zod_1.z.any()).optional().nullable(),
121
+ local_option_name: zod_1.z.string().optional(),
122
+ parameter_config: exports.ParameterConfigSchema.optional().nullable(),
123
+ preset: zod_1.z.boolean().optional().default(false),
124
+ input_dependencies: zod_1.z.array(exports.InputDependencySchema).optional(),
125
+ });
126
+ exports.UpdateOptionSchema = zod_1.z.object({
127
+ data: zod_1.z.record(zod_1.z.any()).optional().nullable(),
128
+ local_option_name: zod_1.z.string().min(1).optional(),
129
+ visualization_config: zod_1.z.record(zod_1.z.any()).optional().nullable(),
130
+ cache_options: zod_1.z.object({
131
+ enabled: zod_1.z.boolean().optional(),
132
+ ttl: zod_1.z.number().optional(),
133
+ }).optional().nullable(),
134
+ parameter_config: exports.ParameterConfigSchema.optional().nullable(),
135
+ preset: zod_1.z.boolean().optional(),
136
+ input_dependencies: zod_1.z.array(exports.InputDependencySchema).optional(),
137
+ view_id: zod_1.z.string().optional(),
138
+ });
139
+ exports.CloneOptionSchema = zod_1.z.object({
140
+ local_option_name: zod_1.z.string().optional(),
141
+ parameter_config: exports.ParameterConfigSchema.optional().nullable(),
142
+ preset: zod_1.z.boolean().optional().default(false),
143
+ });
144
+ exports.GetOptionQuerySchema = exports.ExpandSchema;
145
+ exports.CalculateOptionSchema = zod_1.z.object({
146
+ periodStart: zod_1.z.string().datetime("Invalid start date"),
147
+ periodEnd: zod_1.z.string().datetime("Invalid end date"),
148
+ interval: zod_1.z.number(),
149
+ onlyCompleteData: zod_1.z.boolean().optional(),
150
+ parameters: zod_1.z.record(zod_1.z.any()).optional().nullable(),
151
+ cache_options_override: zod_1.z.object({
152
+ enabled: zod_1.z.boolean().optional(),
153
+ ttl: zod_1.z.number().optional(),
154
+ }).optional().nullable(),
155
+ });
156
+ /**
157
+ * Snapshot Validation Schemas
158
+ */
159
+ /**
160
+ * Alert Validation Schemas
161
+ */
162
+ exports.ListAlertsQuerySchema = exports.PaginationSchema.extend({
163
+ option_id: zod_1.z.string().optional(),
164
+ severity: zod_1.z.enum(["info", "warning", "error"]).optional(),
165
+ q: zod_1.z.string().optional(),
166
+ order: zod_1.z.string().optional(),
167
+ is_enabled: zod_1.z.preprocess((val) => {
168
+ if (val === "true")
169
+ return true;
170
+ if (val === "false")
171
+ return false;
172
+ return val;
173
+ }, zod_1.z.boolean().optional()),
174
+ }).merge(exports.ExpandSchema);
175
+ exports.CreateAlertSchema = zod_1.z.object({
176
+ option_id: zod_1.z.string().min(1, "Option ID is required"),
177
+ name: zod_1.z.string().min(1, "Name is required"),
178
+ description: zod_1.z.string().optional().nullable(),
179
+ condition: zod_1.z.object({
180
+ operator: zod_1.z.enum(["lt", "gt", "lte", "gte", "eq", "neq", "between"]),
181
+ comparisonType: zod_1.z.enum(["absolute", "relative"]),
182
+ threshold: zod_1.z.union([zod_1.z.number(), zod_1.z.array(zod_1.z.number()).length(2)]).optional(),
183
+ lookbackPositions: zod_1.z.number().positive().int().optional(),
184
+ changeType: zod_1.z.enum(["absolute", "percentage"]).optional()
185
+ }),
186
+ period: zod_1.z.object({
187
+ type: zod_1.z.enum(["calendar", "custom"]),
188
+ config: zod_1.z.union([
189
+ zod_1.z.object({
190
+ reference: zod_1.z.enum(["today", "yesterday", "wtd", "lastweek", "mtd", "lastmonth", "qtd", "lastquarter", "ytd", "lastyear"])
191
+ }),
192
+ zod_1.z.object({
193
+ start: zod_1.z.string().or(zod_1.z.date()),
194
+ end: zod_1.z.string().or(zod_1.z.date())
195
+ })
196
+ ])
197
+ }).optional(),
198
+ interval: zod_1.z.number().positive().optional(),
199
+ severity: zod_1.z.enum(["info", "warning", "error"]),
200
+ is_enabled: zod_1.z.boolean().optional(),
201
+ user_ids: zod_1.z.array(zod_1.z.string()).optional(),
202
+ metadata: zod_1.z.record(zod_1.z.any()).optional(),
203
+ });
204
+ exports.UpdateAlertSchema = zod_1.z.object({
205
+ name: zod_1.z.string().min(1).optional(),
206
+ description: zod_1.z.string().optional().nullable(),
207
+ condition: zod_1.z.object({
208
+ operator: zod_1.z.enum(["lt", "gt", "lte", "gte", "eq", "neq", "between"]).optional(),
209
+ comparisonType: zod_1.z.enum(["absolute", "relative"]).optional(),
210
+ threshold: zod_1.z.union([zod_1.z.number(), zod_1.z.array(zod_1.z.number()).length(2)]).optional(),
211
+ lookbackPositions: zod_1.z.number().positive().int().optional(),
212
+ changeType: zod_1.z.enum(["absolute", "percentage"]).optional()
213
+ }).optional(),
214
+ period: zod_1.z.object({
215
+ type: zod_1.z.enum(["calendar", "custom"]),
216
+ config: zod_1.z.union([
217
+ zod_1.z.object({
218
+ reference: zod_1.z.enum(["today", "yesterday", "wtd", "lastweek", "mtd", "lastmonth", "qtd", "lastquarter", "ytd", "lastyear"])
219
+ }),
220
+ zod_1.z.object({
221
+ start: zod_1.z.string().or(zod_1.z.date()),
222
+ end: zod_1.z.string().or(zod_1.z.date())
223
+ })
224
+ ])
225
+ }).optional(),
226
+ interval: zod_1.z.number().positive().optional(),
227
+ severity: zod_1.z.enum(["info", "warning", "error"]).optional(),
228
+ is_enabled: zod_1.z.boolean().optional(),
229
+ metadata: zod_1.z.record(zod_1.z.any()).optional(),
230
+ });
231
+ exports.GetAlertQuerySchema = exports.ExpandSchema;
232
+ exports.ListAlertLogsQuerySchema = exports.PaginationSchema.extend({
233
+ order: zod_1.z.string().optional(),
234
+ });
235
+ /**
236
+ * Alert Log Validation Schemas
237
+ */
238
+ exports.ListAlertLogsGlobalQuerySchema = exports.PaginationSchema.extend({
239
+ alert_id: zod_1.z.string().optional(),
240
+ severity: zod_1.z.enum(["info", "warning", "critical"]).optional(),
241
+ order: zod_1.z.string().optional(),
242
+ }).merge(exports.ExpandSchema);
243
+ exports.GetAlertLogQuerySchema = exports.ExpandSchema;
244
+ /**
245
+ * Cache Validation Schemas
246
+ */
247
+ exports.InvalidateCacheSchema = zod_1.z.object({
248
+ view_id: zod_1.z.string().optional(),
249
+ option_id: zod_1.z.string().optional(),
250
+ options: zod_1.z.array(zod_1.z.object({
251
+ option_id: zod_1.z.string(),
252
+ parameters: zod_1.z.record(zod_1.z.any())
253
+ })).optional(),
254
+ periodStart: zod_1.z.coerce.date(),
255
+ periodEnd: zod_1.z.coerce.date(),
256
+ interval: zod_1.z.number().int().positive(),
257
+ parameters: zod_1.z.record(zod_1.z.any()).optional(),
258
+ }).refine((data) => {
259
+ const hasOptionTarget = data.option_id && data.parameters;
260
+ const hasViewTarget = data.view_id && data.options;
261
+ return hasOptionTarget || hasViewTarget;
262
+ }, {
263
+ message: "Must provide either (option_id + parameters) or (view_id + options) along with state parameters",
264
+ });
265
+ /**
266
+ * Chart Validation Schemas
267
+ */
268
+ exports.CreateChartSchema = zod_1.z.object({
269
+ name: zod_1.z.string().min(1, "Name is required"),
270
+ description: zod_1.z.string().default(""),
271
+ visualization_config: zod_1.z.record(zod_1.z.any()).default({}),
272
+ layout: zod_1.z.record(zod_1.z.any()).default({}),
273
+ metadata: zod_1.z.record(zod_1.z.any()).default({}),
274
+ statistic_ids: zod_1.z.array(zod_1.z.string()).optional(),
275
+ view_id: zod_1.z.string()
276
+ });
277
+ exports.UpdateChartSchema = zod_1.z.object({
278
+ name: zod_1.z.string().min(1).optional(),
279
+ description: zod_1.z.string().optional().nullable(),
280
+ visualization_config: zod_1.z.record(zod_1.z.any()).optional().nullable(),
281
+ layout: zod_1.z.record(zod_1.z.any()).optional().nullable(),
282
+ metadata: zod_1.z.record(zod_1.z.any()).optional().nullable(),
283
+ });
284
+ exports.ManageChartStatisticsSchema = zod_1.z.object({
285
+ statistic_ids: zod_1.z.array(zod_1.z.string()).min(1, "At least one statistic ID is required"),
286
+ });
287
+ exports.GetChartQuerySchema = exports.ExpandSchema;
288
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvdmFsaWRhdGlvbi9zdGF0aXN0aWNzL3NjaGVtYXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQXdCO0FBQ3hCLHNFQUF5RTtBQUV6RTs7R0FFRztBQUVVLFFBQUEsZ0JBQWdCLEdBQUcsSUFBQSw2QkFBZ0IsRUFBQztJQUM3QyxLQUFLLEVBQUUsRUFBRTtJQUNULE1BQU0sRUFBRSxDQUFDO0NBQ1osQ0FBQyxDQUFDO0FBR1UsUUFBQSxZQUFZLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNqQyxNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUNoQyxDQUFDLENBQUM7QUFFSDs7R0FFRztBQUVVLFFBQUEsd0JBQXdCLEdBQUcsd0JBQWdCLENBQUMsTUFBTSxDQUFDO0lBQzVELENBQUMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3hCLEtBQUssRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzVCLFVBQVUsRUFBRSxPQUFDLENBQUMsVUFBVSxDQUNwQixDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ0osSUFBSSxHQUFHLEtBQUssTUFBTTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ2hDLElBQUksR0FBRyxLQUFLLE9BQU87WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNsQyxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUMsRUFDRCxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQ3pCO0NBQ0osQ0FBQyxDQUFDLEtBQUssQ0FBQyxvQkFBWSxDQUFDLENBQUM7QUFFVixRQUFBLHNCQUFzQixHQUFHLG9CQUFZLENBQUM7QUFFdEMsUUFBQSxnQ0FBZ0MsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3JELGdCQUFnQixF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
@@ -0,0 +1 @@
1
+ export * from "./modules/statistics";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./modules/statistics"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUFvQyJ9
@@ -0,0 +1,6 @@
1
+ import { MedusaContainer } from "@medusajs/framework/types";
2
+ export default function evaluateStatisticsAlertsJob(container: MedusaContainer): Promise<void>;
3
+ export declare const config: {
4
+ name: string;
5
+ schedule: string;
6
+ };
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.config = void 0;
4
+ exports.default = evaluateStatisticsAlertsJob;
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const statistics_1 = require("../workflows/statistics");
7
+ const statistics_2 = require("../modules/statistics");
8
+ const period_utils_1 = require("../modules/statistics/utils/period-utils");
9
+ function getLastCompletedIntervalBoundary(now, intervalSeconds) {
10
+ const intervalMs = intervalSeconds * 1000;
11
+ return new Date(Math.floor(now.getTime() / intervalMs) * intervalMs);
12
+ }
13
+ async function evaluateStatisticsAlertsJob(container) {
14
+ const logger = container.resolve("logger");
15
+ const statisticsService = container.resolve(statistics_2.STATISTICS_MODULE);
16
+ try {
17
+ const alerts = await statisticsService.listStatisticsAlerts({ is_enabled: true }, {
18
+ relations: ["option", "option.provider"],
19
+ });
20
+ if (alerts.length === 0) {
21
+ return;
22
+ }
23
+ const alertsByConfig = new Map();
24
+ for (const alert of alerts) {
25
+ const period = alert.period;
26
+ const interval = alert.interval || 86400;
27
+ const lookback = (alert.condition?.lookbackPositions || 1);
28
+ let periodKey;
29
+ if (period) {
30
+ periodKey = JSON.stringify(period);
31
+ }
32
+ else {
33
+ periodKey = `auto_${(lookback + 1) * interval}`;
34
+ }
35
+ const configKey = `${alert.option.id}|${periodKey}|${interval}`;
36
+ if (!alertsByConfig.has(configKey)) {
37
+ alertsByConfig.set(configKey, []);
38
+ }
39
+ alertsByConfig.get(configKey).push(alert);
40
+ }
41
+ let evaluatedCount = 0;
42
+ let triggeredCount = 0;
43
+ let errorCount = 0;
44
+ for (const [configKey, configAlerts] of alertsByConfig.entries()) {
45
+ try {
46
+ const firstAlert = configAlerts[0];
47
+ const option_id = firstAlert.option.id;
48
+ const period = firstAlert.period;
49
+ const interval = firstAlert.interval || 86400;
50
+ const lookback = firstAlert.condition?.lookbackPositions || 1;
51
+ const now = new Date();
52
+ const lastCompletedBoundary = getLastCompletedIntervalBoundary(now, interval);
53
+ let periodStart, periodEnd;
54
+ if (period) {
55
+ ({ start: periodStart, end: periodEnd } = (0, period_utils_1.calculateDatesFromPeriod)(period));
56
+ if (periodEnd > lastCompletedBoundary) {
57
+ periodEnd = lastCompletedBoundary;
58
+ }
59
+ }
60
+ else {
61
+ periodEnd = lastCompletedBoundary;
62
+ periodStart = new Date(periodEnd.getTime() - (lookback + 1) * interval * 1000);
63
+ }
64
+ if (periodEnd <= periodStart) {
65
+ continue;
66
+ }
67
+ const { result: calculationResult } = await (0, statistics_1.calculateStatisticsWorkflow)(container).run({
68
+ input: {
69
+ options: [{ id: option_id }],
70
+ periodStart,
71
+ periodEnd,
72
+ interval,
73
+ },
74
+ throwOnError: true,
75
+ });
76
+ const calculatedValue = calculationResult.results?.[option_id];
77
+ if (calculatedValue === undefined) {
78
+ const calculationError = calculationResult.errors?.[option_id] || "Unknown calculation error";
79
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Failed to calculate option ${option_id}: ${calculationError}`);
80
+ }
81
+ const { result: evaluationResult } = await (0, statistics_1.evaluateAlertsWorkflow)(container).run({
82
+ input: {
83
+ option_id,
84
+ calculated_value: calculatedValue,
85
+ evaluation_scope: {
86
+ periodStart,
87
+ periodEnd,
88
+ interval,
89
+ },
90
+ }
91
+ });
92
+ evaluatedCount += evaluationResult.alerts_evaluated;
93
+ triggeredCount += evaluationResult.alerts_triggered;
94
+ }
95
+ catch (error) {
96
+ errorCount++;
97
+ logger.error(`[Statistics Alerts Job] Error evaluating alerts for config ${configKey}:`, error.message);
98
+ }
99
+ }
100
+ }
101
+ catch (error) {
102
+ logger.error("[Statistics Alerts Job] Fatal error:", error);
103
+ throw error;
104
+ }
105
+ }
106
+ exports.config = {
107
+ name: "evaluate-statistics-alerts",
108
+ schedule: "*/1 * * * *",
109
+ };
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZhbHVhdGUtc3RhdGlzdGljcy1hbGVydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvam9icy9ldmFsdWF0ZS1zdGF0aXN0aWNzLWFsZXJ0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFhQSw4Q0E0SEM7QUF4SUQscURBQW1GO0FBQ25GLHdEQUE4RjtBQUM5RixzREFBMEQ7QUFFMUQsMkVBQW9GO0FBRXBGLFNBQVMsZ0NBQWdDLENBQUMsR0FBUyxFQUFFLGVBQXVCO0lBQ3hFLE1BQU0sVUFBVSxHQUFHLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDMUMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxVQUFVLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztBQUN6RSxDQUFDO0FBR2MsS0FBSyxVQUFVLDJCQUEyQixDQUFDLFNBQTBCO0lBQ2hGLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0MsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFvQiw4QkFBaUIsQ0FBQyxDQUFDO0lBRWxGLElBQUksQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0saUJBQWlCLENBQUMsb0JBQW9CLENBQ3ZELEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxFQUNwQjtZQUNJLFNBQVMsRUFBRSxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQztTQUMzQyxDQUNKLENBQUM7UUFFRixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEIsT0FBTztRQUNYLENBQUM7UUFJRCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBaUIsQ0FBQztRQUNoRCxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxN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
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@medusajs/framework/utils").DefineLinkExport;
2
+ export default _default;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("@medusajs/framework/utils");
7
+ const statistics_1 = __importDefault(require("../modules/statistics"));
8
+ const user_1 = __importDefault(require("@medusajs/medusa/user"));
9
+ exports.default = (0, utils_1.defineLink)({
10
+ linkable: statistics_1.default.linkable.statisticsAlert,
11
+ isList: true
12
+ }, {
13
+ linkable: user_1.default.linkable.user,
14
+ isList: true
15
+ });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGlzdGljcy1hbGVydC11c2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpbmtzL3N0YXRpc3RpY3MtYWxlcnQtdXNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFEQUF1RDtBQUN2RCx1RUFBcUQ7QUFDckQsaUVBQStDO0FBRS9DLGtCQUFlLElBQUEsa0JBQVUsRUFDckI7SUFDSSxRQUFRLEVBQUUsb0JBQWdCLENBQUMsUUFBUSxDQUFDLGVBQWU7SUFDbkQsTUFBTSxFQUFFLElBQUk7Q0FDZixFQUNEO0lBQ0ksUUFBUSxFQUFFLGNBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSTtJQUNsQyxNQUFNLEVBQUUsSUFBSTtDQUNmLENBQ0osQ0FBQyJ9
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@medusajs/framework/utils").DefineLinkExport;
2
+ export default _default;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("@medusajs/framework/utils");
7
+ const statistics_1 = __importDefault(require("../modules/statistics"));
8
+ const user_1 = __importDefault(require("@medusajs/medusa/user"));
9
+ exports.default = (0, utils_1.defineLink)({
10
+ linkable: statistics_1.default.linkable.statisticsOption,
11
+ isList: true
12
+ }, {
13
+ linkable: user_1.default.linkable.user,
14
+ deleteCascade: true
15
+ });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGlzdGljcy1vcHRpb24tdXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW5rcy9zdGF0aXN0aWNzLW9wdGlvbi11c2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBQXVEO0FBQ3ZELHVFQUFxRDtBQUNyRCxpRUFBK0M7QUFFL0Msa0JBQWUsSUFBQSxrQkFBVSxFQUNyQjtJQUNJLFFBQVEsRUFBRSxvQkFBZ0IsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCO0lBQ3BELE1BQU0sRUFBRSxJQUFJO0NBQ2YsRUFDRDtJQUNJLFFBQVEsRUFBRSxjQUFVLENBQUMsUUFBUSxDQUFDLElBQUk7SUFDbEMsYUFBYSxFQUFFLElBQUk7Q0FDdEIsQ0FDSixDQUFDIn0=
@@ -0,0 +1,5 @@
1
+ import { LoaderOptions, ModuleProvider, ModulesSdkTypes } from "@medusajs/framework/types";
2
+ declare const _default: ({ container, options, }: LoaderOptions<(ModulesSdkTypes.ModuleServiceInitializeOptions | ModulesSdkTypes.ModuleServiceInitializeCustomDataLayerOptions) & {
3
+ providers: ModuleProvider[];
4
+ }>) => Promise<void>;
5
+ export default _default;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const awilix_1 = require("@medusajs/framework/awilix");
4
+ const modules_sdk_1 = require("@medusajs/framework/modules-sdk");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const framework_1 = require("@medusajs/framework");
7
+ const PROVIDER_REGISTRATION_KEY = "stat_providers";
8
+ const registrationFn = async (klass, container, pluginOptions) => {
9
+ if (!klass?.identifier) {
10
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_ARGUMENT, `Trying to register a statistics provider without a provider identifier.`);
11
+ }
12
+ const key = `sp_${klass.identifier}${pluginOptions.id ? `_${pluginOptions.id}` : ""}`;
13
+ container.register({
14
+ [key]: (0, awilix_1.asValue)(klass),
15
+ });
16
+ framework_1.logger.info(`Registered statistics provider: ${klass.identifier} with key: ${key}`);
17
+ container.registerAdd(PROVIDER_REGISTRATION_KEY, (0, awilix_1.asValue)({ id: key, display_name: klass.displayName || klass.identifier }));
18
+ };
19
+ exports.default = async ({ container, options, }) => {
20
+ await (0, modules_sdk_1.moduleProviderLoader)({
21
+ container,
22
+ providers: options?.providers || [],
23
+ registerServiceFn: registrationFn,
24
+ });
25
+ await registerProvidersInDb({ container });
26
+ };
27
+ const registerProvidersInDb = async ({ container, }) => {
28
+ const providersToLoad = container.resolve(PROVIDER_REGISTRATION_KEY, {
29
+ allowUnregistered: true,
30
+ });
31
+ if (!providersToLoad?.length) {
32
+ return;
33
+ }
34
+ const financialSummaryService = container.resolve("statisticsProviderService");
35
+ const existingProviders = await financialSummaryService.list({ id: providersToLoad.map(p => p.id) }, {});
36
+ const upsertData = [];
37
+ for (const { id, display_name } of existingProviders) {
38
+ if (!providersToLoad.some(p => p.id === id)) {
39
+ upsertData.push({ id, is_enabled: false, display_name });
40
+ }
41
+ }
42
+ for (const { id, display_name } of providersToLoad) {
43
+ upsertData.push({ id, is_enabled: true, display_name });
44
+ }
45
+ await financialSummaryService.upsert(upsertData);
46
+ };
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbG9hZGVycy9zdGF0aXN0aWNzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsdURBQW1GO0FBQ25GLGlFQUFzRTtBQVF0RSxxREFBa0Y7QUFLbEYsbURBQTZEO0FBRTdELE1BQU0seUJBQXlCLEdBQUcsZ0JBQWdCLENBQUE7QUFFbEQsTUFBTSxjQUFjLEdBQUcsS0FBSyxFQUFFLEtBQVUsRUFBRSxTQUEwQixFQUFFLGFBQWtCLEVBQUUsRUFBRTtJQUN4RixJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ3JCLE1BQU0sSUFBSSxtQkFBVyxDQUNqQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMseUVBQXlFLENBQzVFLENBQUE7SUFDTCxDQUFDO0lBRUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxLQUFLLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUM3RSxFQUFFLENBQUE7SUFLTixTQUFTLENBQUMsUUFBUSxDQUFDO1FBQ2YsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFBLGdCQUFPLEVBQUMsS0FBSyxDQUFDO0tBQ3hCLENBQUMsQ0FBQztJQUlILGtCQUFNLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxLQUFLLENBQUMsVUFBVSxjQUFjLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEYsU0FBUyxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsRUFBRSxJQUFBLGdCQUFPLEVBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDL0gsQ0FBQyxDQUFBO0FBRUQsa0JBQWUsS0FBSyxFQUFFLEVBQ2xCLFNBQVMsRUFDVCxPQUFPLEdBUVYsRUFBaUIsRUFBRTtJQUNoQixNQUFNLElBQUEsa0NBQW9CLEVBQUM7UUFDdkIsU0FBUztRQUNULFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxJQUFJLEVBQUU7UUFDbkMsaUJBQWlCLEVBQUUsY0FBYztLQUNwQyxDQUFDLENBQUE7SUFFRixNQUFNLHFCQUFxQixDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQTtBQUM5QyxDQUFDLENBQUE7QUFFRCxNQUFNLHFCQUFxQixHQUFHLEtBQUssRUFBRSxFQUNqQyxTQUFTLEdBQ0csRUFBaUIsRUFBRTtJQUMvQixNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUF5Qyx5QkFBeUIsRUFBRTtRQUN6RyxpQkFBaUIsRUFBRSxJQUFJO0tBQzFCLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyxlQUFlLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDM0IsT0FBTTtJQUNWLENBQUM7SUFFRCxNQUFNLHVCQUF1QixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQzdDLDJCQUEyQixDQUM5QixDQUFDO0lBRUYsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLHVCQUF1QixDQUFDLElBQUksQ0FDeEQsRUFBRSxFQUFFLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUN0QyxFQUFFLENBQ0wsQ0FBQTtJQUVELE1BQU0sVUFBVSxHQUFnRSxFQUFFLENBQUE7SUFFbEYsS0FBSyxNQUFNLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDMUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUE7UUFDNUQsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLE1BQU0sRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksZUFBZSxFQUFFLENBQUM7UUFDakQsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUE7SUFDM0QsQ0FBQztJQUVELE1BQU0sdUJBQXVCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0FBQ3BELENBQUMsQ0FBQSJ9