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.
- package/.medusa/server/src/admin/composite.png +0 -0
- package/.medusa/server/src/admin/index.js +10512 -0
- package/.medusa/server/src/admin/index.mjs +10510 -0
- package/.medusa/server/src/admin/params.png +0 -0
- package/.medusa/server/src/admin/view.png +0 -0
- package/.medusa/server/src/admin/visualizations.png +0 -0
- package/.medusa/server/src/api/admin/statistics/alert-logs/[id]/route.d.ts +6 -0
- package/.medusa/server/src/api/admin/statistics/alert-logs/[id]/route.js +18 -0
- package/.medusa/server/src/api/admin/statistics/alert-logs/route.d.ts +6 -0
- package/.medusa/server/src/api/admin/statistics/alert-logs/route.js +33 -0
- package/.medusa/server/src/api/admin/statistics/alerts/[id]/logs/route.d.ts +6 -0
- package/.medusa/server/src/api/admin/statistics/alerts/[id]/logs/route.js +23 -0
- package/.medusa/server/src/api/admin/statistics/alerts/[id]/route.d.ts +17 -0
- package/.medusa/server/src/api/admin/statistics/alerts/[id]/route.js +64 -0
- package/.medusa/server/src/api/admin/statistics/alerts/[id]/toggle/route.d.ts +6 -0
- package/.medusa/server/src/api/admin/statistics/alerts/[id]/toggle/route.js +18 -0
- package/.medusa/server/src/api/admin/statistics/alerts/route.d.ts +12 -0
- package/.medusa/server/src/api/admin/statistics/alerts/route.js +94 -0
- package/.medusa/server/src/api/admin/statistics/charts/[id]/route.d.ts +17 -0
- package/.medusa/server/src/api/admin/statistics/charts/[id]/route.js +50 -0
- package/.medusa/server/src/api/admin/statistics/charts/[id]/statistics/route.d.ts +15 -0
- package/.medusa/server/src/api/admin/statistics/charts/[id]/statistics/route.js +40 -0
- package/.medusa/server/src/api/admin/statistics/charts/route.d.ts +4 -0
- package/.medusa/server/src/api/admin/statistics/charts/route.js +55 -0
- package/.medusa/server/src/api/admin/statistics/options/[id]/calculate/route.d.ts +7 -0
- package/.medusa/server/src/api/admin/statistics/options/[id]/calculate/route.js +23 -0
- package/.medusa/server/src/api/admin/statistics/options/[id]/clone/route.d.ts +7 -0
- package/.medusa/server/src/api/admin/statistics/options/[id]/clone/route.js +15 -0
- package/.medusa/server/src/api/admin/statistics/options/[id]/route.d.ts +17 -0
- package/.medusa/server/src/api/admin/statistics/options/[id]/route.js +69 -0
- package/.medusa/server/src/api/admin/statistics/options/route.d.ts +12 -0
- package/.medusa/server/src/api/admin/statistics/options/route.js +87 -0
- package/.medusa/server/src/api/admin/statistics/providers/[id]/route.d.ts +6 -0
- package/.medusa/server/src/api/admin/statistics/providers/[id]/route.js +18 -0
- package/.medusa/server/src/api/admin/statistics/providers/[id]/statistics/route.d.ts +6 -0
- package/.medusa/server/src/api/admin/statistics/providers/[id]/statistics/route.js +18 -0
- package/.medusa/server/src/api/admin/statistics/providers/route.d.ts +7 -0
- package/.medusa/server/src/api/admin/statistics/providers/route.js +57 -0
- package/.medusa/server/src/api/admin/statistics/utils/option-graph.d.ts +3 -0
- package/.medusa/server/src/api/admin/statistics/utils/option-graph.js +34 -0
- package/.medusa/server/src/api/admin/statistics/views/[id]/calculate/route.d.ts +7 -0
- package/.medusa/server/src/api/admin/statistics/views/[id]/calculate/route.js +21 -0
- package/.medusa/server/src/api/admin/statistics/views/[id]/clone/route.d.ts +7 -0
- package/.medusa/server/src/api/admin/statistics/views/[id]/clone/route.js +21 -0
- package/.medusa/server/src/api/admin/statistics/views/[id]/route.d.ts +17 -0
- package/.medusa/server/src/api/admin/statistics/views/[id]/route.js +71 -0
- package/.medusa/server/src/api/admin/statistics/views/route.d.ts +12 -0
- package/.medusa/server/src/api/admin/statistics/views/route.js +74 -0
- package/.medusa/server/src/api/middlewares.d.ts +2 -0
- package/.medusa/server/src/api/middlewares.js +194 -0
- package/.medusa/server/src/api/validation/statistics/schemas.d.ts +1013 -0
- package/.medusa/server/src/api/validation/statistics/schemas.js +288 -0
- package/.medusa/server/src/index.d.ts +1 -0
- package/.medusa/server/src/index.js +18 -0
- package/.medusa/server/src/jobs/evaluate-statistics-alerts.d.ts +6 -0
- package/.medusa/server/src/jobs/evaluate-statistics-alerts.js +110 -0
- package/.medusa/server/src/links/statistics-alert-user.d.ts +2 -0
- package/.medusa/server/src/links/statistics-alert-user.js +16 -0
- package/.medusa/server/src/links/statistics-option-user.d.ts +2 -0
- package/.medusa/server/src/links/statistics-option-user.js +16 -0
- package/.medusa/server/src/loaders/statistics/index.d.ts +5 -0
- package/.medusa/server/src/loaders/statistics/index.js +47 -0
- package/.medusa/server/src/modules/statistics/index.d.ts +107 -0
- package/.medusa/server/src/modules/statistics/index.js +32 -0
- package/.medusa/server/src/modules/statistics/migrations/Migration20260223131741.d.ts +5 -0
- package/.medusa/server/src/modules/statistics/migrations/Migration20260223131741.js +57 -0
- package/.medusa/server/src/modules/statistics/models/alert-log.d.ts +74 -0
- package/.medusa/server/src/modules/statistics/models/alert-log.js +16 -0
- package/.medusa/server/src/modules/statistics/models/alert.d.ts +74 -0
- package/.medusa/server/src/modules/statistics/models/alert.js +24 -0
- package/.medusa/server/src/modules/statistics/models/chart.d.ts +81 -0
- package/.medusa/server/src/modules/statistics/models/chart.js +28 -0
- package/.medusa/server/src/modules/statistics/models/index.d.ts +7 -0
- package/.medusa/server/src/modules/statistics/models/index.js +24 -0
- package/.medusa/server/src/modules/statistics/models/option-input.d.ts +135 -0
- package/.medusa/server/src/modules/statistics/models/option-input.js +27 -0
- package/.medusa/server/src/modules/statistics/models/option.d.ts +78 -0
- package/.medusa/server/src/modules/statistics/models/option.js +41 -0
- package/.medusa/server/src/modules/statistics/models/provider.d.ts +75 -0
- package/.medusa/server/src/modules/statistics/models/provider.js +15 -0
- package/.medusa/server/src/modules/statistics/models/view.d.ts +79 -0
- package/.medusa/server/src/modules/statistics/models/view.js +30 -0
- package/.medusa/server/src/modules/statistics/providers/index.d.ts +1 -0
- package/.medusa/server/src/modules/statistics/providers/index.js +18 -0
- package/.medusa/server/src/modules/statistics/providers/provider.d.ts +254 -0
- package/.medusa/server/src/modules/statistics/providers/provider.js +307 -0
- package/.medusa/server/src/modules/statistics/service.d.ts +953 -0
- package/.medusa/server/src/modules/statistics/service.js +190 -0
- package/.medusa/server/src/modules/statistics/utils/dependency-option-map.d.ts +13 -0
- package/.medusa/server/src/modules/statistics/utils/dependency-option-map.js +67 -0
- package/.medusa/server/src/modules/statistics/utils/period-utils.d.ts +23 -0
- package/.medusa/server/src/modules/statistics/utils/period-utils.js +78 -0
- package/.medusa/server/src/modules/statistics/utils/time-series-utils.d.ts +6 -0
- package/.medusa/server/src/modules/statistics/utils/time-series-utils.js +8 -0
- package/.medusa/server/src/providers/common/index.d.ts +2 -0
- package/.medusa/server/src/providers/common/index.js +1232 -0
- package/.medusa/server/src/providers/composite/index.d.ts +2 -0
- package/.medusa/server/src/providers/composite/index.js +147 -0
- package/.medusa/server/src/workflows/statistics/calculate-single-statistic.d.ts +15 -0
- package/.medusa/server/src/workflows/statistics/calculate-single-statistic.js +28 -0
- package/.medusa/server/src/workflows/statistics/calculate-statistics.d.ts +20 -0
- package/.medusa/server/src/workflows/statistics/calculate-statistics.js +15 -0
- package/.medusa/server/src/workflows/statistics/calculate-view.d.ts +31 -0
- package/.medusa/server/src/workflows/statistics/calculate-view.js +30 -0
- package/.medusa/server/src/workflows/statistics/clone-view.d.ts +227 -0
- package/.medusa/server/src/workflows/statistics/clone-view.js +10 -0
- package/.medusa/server/src/workflows/statistics/create-alert.d.ts +139 -0
- package/.medusa/server/src/workflows/statistics/create-alert.js +12 -0
- package/.medusa/server/src/workflows/statistics/create-chart.d.ts +122 -0
- package/.medusa/server/src/workflows/statistics/create-chart.js +14 -0
- package/.medusa/server/src/workflows/statistics/create-view-with-options.d.ts +1342 -0
- package/.medusa/server/src/workflows/statistics/create-view-with-options.js +29 -0
- package/.medusa/server/src/workflows/statistics/delete-chart.d.ts +10 -0
- package/.medusa/server/src/workflows/statistics/delete-chart.js +14 -0
- package/.medusa/server/src/workflows/statistics/evaluate-alerts.d.ts +28 -0
- package/.medusa/server/src/workflows/statistics/evaluate-alerts.js +67 -0
- package/.medusa/server/src/workflows/statistics/get-available-statistics.d.ts +5 -0
- package/.medusa/server/src/workflows/statistics/get-available-statistics.js +10 -0
- package/.medusa/server/src/workflows/statistics/index.d.ts +14 -0
- package/.medusa/server/src/workflows/statistics/index.js +31 -0
- package/.medusa/server/src/workflows/statistics/manage-chart-statistics.d.ts +12 -0
- package/.medusa/server/src/workflows/statistics/manage-chart-statistics.js +14 -0
- package/.medusa/server/src/workflows/statistics/steps/calculate-statistics.d.ts +37 -0
- package/.medusa/server/src/workflows/statistics/steps/calculate-statistics.js +222 -0
- package/.medusa/server/src/workflows/statistics/steps/clone-view.d.ts +227 -0
- package/.medusa/server/src/workflows/statistics/steps/clone-view.js +39 -0
- package/.medusa/server/src/workflows/statistics/steps/create-alert-log-entries.d.ts +17 -0
- package/.medusa/server/src/workflows/statistics/steps/create-alert-log-entries.js +50 -0
- package/.medusa/server/src/workflows/statistics/steps/create-alert.d.ts +120 -0
- package/.medusa/server/src/workflows/statistics/steps/create-alert.js +21 -0
- package/.medusa/server/src/workflows/statistics/steps/create-chart.d.ts +118 -0
- package/.medusa/server/src/workflows/statistics/steps/create-chart.js +19 -0
- package/.medusa/server/src/workflows/statistics/steps/create-statistics-options.d.ts +117 -0
- package/.medusa/server/src/workflows/statistics/steps/create-statistics-options.js +16 -0
- package/.medusa/server/src/workflows/statistics/steps/create-statistics-view.d.ts +119 -0
- package/.medusa/server/src/workflows/statistics/steps/create-statistics-view.js +16 -0
- package/.medusa/server/src/workflows/statistics/steps/dedupe-alerts.d.ts +22 -0
- package/.medusa/server/src/workflows/statistics/steps/dedupe-alerts.js +64 -0
- package/.medusa/server/src/workflows/statistics/steps/delete-chart.d.ts +6 -0
- package/.medusa/server/src/workflows/statistics/steps/delete-chart.js +17 -0
- package/.medusa/server/src/workflows/statistics/steps/emit-alert-events.d.ts +17 -0
- package/.medusa/server/src/workflows/statistics/steps/emit-alert-events.js +41 -0
- package/.medusa/server/src/workflows/statistics/steps/evaluate-each-condition.d.ts +15 -0
- package/.medusa/server/src/workflows/statistics/steps/evaluate-each-condition.js +109 -0
- package/.medusa/server/src/workflows/statistics/steps/extract-alert-values.d.ts +12 -0
- package/.medusa/server/src/workflows/statistics/steps/extract-alert-values.js +86 -0
- package/.medusa/server/src/workflows/statistics/steps/fetch-active-alerts-for-option.d.ts +112 -0
- package/.medusa/server/src/workflows/statistics/steps/fetch-active-alerts-for-option.js +16 -0
- package/.medusa/server/src/workflows/statistics/steps/fetch-available-statistics.d.ts +4 -0
- package/.medusa/server/src/workflows/statistics/steps/fetch-available-statistics.js +39 -0
- package/.medusa/server/src/workflows/statistics/steps/fetch-option-with-relations.d.ts +112 -0
- package/.medusa/server/src/workflows/statistics/steps/fetch-option-with-relations.js +11 -0
- package/.medusa/server/src/workflows/statistics/steps/fetch-view-with-options.d.ts +112 -0
- package/.medusa/server/src/workflows/statistics/steps/fetch-view-with-options.js +20 -0
- package/.medusa/server/src/workflows/statistics/steps/manage-chart-statistics.d.ts +8 -0
- package/.medusa/server/src/workflows/statistics/steps/manage-chart-statistics.js +26 -0
- package/.medusa/server/src/workflows/statistics/steps/update-chart.d.ts +117 -0
- package/.medusa/server/src/workflows/statistics/steps/update-chart.js +32 -0
- package/.medusa/server/src/workflows/statistics/steps/update-view.d.ts +120 -0
- package/.medusa/server/src/workflows/statistics/steps/update-view.js +18 -0
- package/.medusa/server/src/workflows/statistics/steps/validate-alert-input.d.ts +1 -0
- package/.medusa/server/src/workflows/statistics/steps/validate-alert-input.js +34 -0
- package/.medusa/server/src/workflows/statistics/steps/validate-option-parameters.d.ts +21 -0
- package/.medusa/server/src/workflows/statistics/steps/validate-option-parameters.js +43 -0
- package/.medusa/server/src/workflows/statistics/steps/validate-view-input.d.ts +10 -0
- package/.medusa/server/src/workflows/statistics/steps/validate-view-input.js +15 -0
- package/.medusa/server/src/workflows/statistics/update-chart.d.ts +120 -0
- package/.medusa/server/src/workflows/statistics/update-chart.js +13 -0
- package/.medusa/server/src/workflows/statistics/update-view-configuration.d.ts +128 -0
- package/.medusa/server/src/workflows/statistics/update-view-configuration.js +18 -0
- package/.medusa/server/src/workflows/statistics/utils/cache-utils.d.ts +60 -0
- package/.medusa/server/src/workflows/statistics/utils/cache-utils.js +66 -0
- package/.medusa/server/src/workflows/statistics/utils/dependency-graph.d.ts +51 -0
- package/.medusa/server/src/workflows/statistics/utils/dependency-graph.js +131 -0
- package/.medusa/server/src/workflows/statistics/utils/parameter-utils.d.ts +54 -0
- package/.medusa/server/src/workflows/statistics/utils/parameter-utils.js +147 -0
- package/.medusa/server/src/workflows/statistics/validate-option-configuration.d.ts +9 -0
- package/.medusa/server/src/workflows/statistics/validate-option-configuration.js +35 -0
- package/README.md +310 -0
- 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,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,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,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
|