medusa-analytics 0.0.10 → 0.0.11
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.
|
@@ -40,19 +40,13 @@ function OrdersOverTimeTooltip({
|
|
|
40
40
|
}
|
|
41
41
|
const STATUS_COLORS = {
|
|
42
42
|
pending: "#F59E0B",
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
shipped: "#06B6D4",
|
|
46
|
-
delivered: "#10B981",
|
|
47
|
-
cancelled: "#EF4444"
|
|
43
|
+
cancelled: "#EF4444",
|
|
44
|
+
delivered: "#10B981"
|
|
48
45
|
};
|
|
49
46
|
const ORDER_CHART_STATUSES = [
|
|
50
47
|
{ key: "pending", label: "Pending", color: STATUS_COLORS.pending },
|
|
51
|
-
{ key: "
|
|
52
|
-
{ key: "
|
|
53
|
-
{ key: "shipped", label: "Shipped", color: STATUS_COLORS.shipped },
|
|
54
|
-
{ key: "delivered", label: "Delivered", color: STATUS_COLORS.delivered },
|
|
55
|
-
{ key: "cancelled", label: "Cancelled", color: STATUS_COLORS.cancelled }
|
|
48
|
+
{ key: "cancelled", label: "Cancelled", color: STATUS_COLORS.cancelled },
|
|
49
|
+
{ key: "delivered", label: "Delivered", color: STATUS_COLORS.delivered }
|
|
56
50
|
];
|
|
57
51
|
function formatCurrency(value) {
|
|
58
52
|
return new Intl.NumberFormat("en-IN", {
|
|
@@ -134,11 +128,10 @@ function OrdersDashboard() {
|
|
|
134
128
|
if (error || !data) {
|
|
135
129
|
return /* @__PURE__ */ jsxRuntime.jsx(ui.Container, { className: "p-6", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-ui-fg-danger", children: error ?? "Failed to load analytics" }) });
|
|
136
130
|
}
|
|
137
|
-
const pieData = ORDER_CHART_STATUSES.map(({ key, label, color }) =>
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
})).filter((d) => d.value > 0);
|
|
131
|
+
const pieData = ORDER_CHART_STATUSES.map(({ key, label, color }) => {
|
|
132
|
+
const value = key === "delivered" ? data.statusCounts.delivered ?? data.deliveredOrders ?? 0 : key === "cancelled" ? data.statusCounts.cancelled ?? data.cancelledOrders ?? 0 : data.statusCounts.pending ?? data.pendingOrders ?? 0;
|
|
133
|
+
return { name: label, value, color };
|
|
134
|
+
}).filter((d) => d.value > 0);
|
|
142
135
|
const returnsExchangesData = [
|
|
143
136
|
{ name: "Return orders", value: data.returnOrders, color: "#EF4444" },
|
|
144
137
|
{ name: "Exchange orders", value: data.exchangeOrders, color: "#F59E0B" }
|
|
@@ -188,7 +181,7 @@ function OrdersDashboard() {
|
|
|
188
181
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h2", children: data.avgFulfillmentTimeHours != null ? `${data.avgFulfillmentTimeHours}h` : "—" })
|
|
189
182
|
] })
|
|
190
183
|
] }),
|
|
191
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-
|
|
184
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4", children: [
|
|
192
185
|
/* @__PURE__ */ jsxRuntime.jsxs(ui.Container, { className: "p-4", children: [
|
|
193
186
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-ui-fg-muted text-sm", children: "Cancelled orders" }),
|
|
194
187
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h2", children: data.cancelledOrders.toLocaleString() })
|
|
@@ -197,10 +190,6 @@ function OrdersDashboard() {
|
|
|
197
190
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-ui-fg-muted text-sm", children: "Delivered orders" }),
|
|
198
191
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h2", children: data.deliveredOrders.toLocaleString() })
|
|
199
192
|
] }),
|
|
200
|
-
/* @__PURE__ */ jsxRuntime.jsxs(ui.Container, { className: "p-4", children: [
|
|
201
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-ui-fg-muted text-sm", children: "Shipped orders" }),
|
|
202
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h2", children: (data.shippedOrders ?? 0).toLocaleString() })
|
|
203
|
-
] }),
|
|
204
193
|
/* @__PURE__ */ jsxRuntime.jsxs(ui.Container, { className: "p-4", children: [
|
|
205
194
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-ui-fg-muted text-sm", children: "Exchange orders" }),
|
|
206
195
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h2", children: data.exchangeOrders.toLocaleString() })
|
|
@@ -210,10 +199,10 @@ function OrdersDashboard() {
|
|
|
210
199
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h2", children: data.returnOrders.toLocaleString() })
|
|
211
200
|
] })
|
|
212
201
|
] }),
|
|
213
|
-
/* @__PURE__ */ jsxRuntime.
|
|
214
|
-
/* @__PURE__ */ jsxRuntime.
|
|
215
|
-
|
|
216
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-[
|
|
202
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Container, { className: "p-6", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col sm:flex-row flex-wrap gap-6 items-stretch", children: [
|
|
203
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0 flex flex-col", style: { minWidth: "280px" }, children: [
|
|
204
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h3", className: "mb-3", children: "Orders by status" }),
|
|
205
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 min-h-[280px] flex items-center justify-center", children: pieData.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(recharts.ResponsiveContainer, { width: "100%", height: 280, children: /* @__PURE__ */ jsxRuntime.jsxs(recharts.PieChart, { margin: { top: 8, right: 8, bottom: 8, left: 8 }, children: [
|
|
217
206
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
218
207
|
recharts.Pie,
|
|
219
208
|
{
|
|
@@ -231,31 +220,31 @@ function OrdersDashboard() {
|
|
|
231
220
|
),
|
|
232
221
|
/* @__PURE__ */ jsxRuntime.jsx(recharts.Tooltip, { formatter: (value) => [value ?? 0, "Orders"] }),
|
|
233
222
|
/* @__PURE__ */ jsxRuntime.jsx(recharts.Legend, { verticalAlign: "bottom", height: 36 })
|
|
234
|
-
] }) }) })
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
] })
|
|
223
|
+
] }) }) : /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-ui-fg-muted text-sm", children: "No orders in this period" }) })
|
|
224
|
+
] }),
|
|
225
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0 flex flex-col", style: { minWidth: "280px" }, children: [
|
|
226
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h3", className: "mb-3", children: "Returns & exchanges" }),
|
|
227
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 min-h-[280px] flex items-center justify-center", children: returnsExchangesData.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(recharts.ResponsiveContainer, { width: "100%", height: 280, children: /* @__PURE__ */ jsxRuntime.jsxs(recharts.PieChart, { margin: { top: 8, right: 8, bottom: 8, left: 8 }, children: [
|
|
228
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
229
|
+
recharts.Pie,
|
|
230
|
+
{
|
|
231
|
+
data: returnsExchangesData,
|
|
232
|
+
cx: "50%",
|
|
233
|
+
cy: "50%",
|
|
234
|
+
innerRadius: 52,
|
|
235
|
+
outerRadius: 78,
|
|
236
|
+
paddingAngle: 2,
|
|
237
|
+
dataKey: "value",
|
|
238
|
+
nameKey: "name",
|
|
239
|
+
isAnimationActive: true,
|
|
240
|
+
children: returnsExchangesData.map((entry, index) => /* @__PURE__ */ jsxRuntime.jsx(recharts.Cell, { fill: entry.color }, `cell-re-${index}`))
|
|
241
|
+
}
|
|
242
|
+
),
|
|
243
|
+
/* @__PURE__ */ jsxRuntime.jsx(recharts.Tooltip, { formatter: (value) => [value ?? 0, "Count"] }),
|
|
244
|
+
/* @__PURE__ */ jsxRuntime.jsx(recharts.Legend, { verticalAlign: "bottom", height: 36 })
|
|
245
|
+
] }) }) : /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-ui-fg-muted text-sm", children: "No returns or exchanges in this period" }) })
|
|
257
246
|
] })
|
|
258
|
-
] }),
|
|
247
|
+
] }) }),
|
|
259
248
|
/* @__PURE__ */ jsxRuntime.jsxs(ui.Container, { className: "p-6", children: [
|
|
260
249
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-4 mb-4", children: [
|
|
261
250
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h3", children: "Orders over time" }),
|
|
@@ -39,19 +39,13 @@ function OrdersOverTimeTooltip({
|
|
|
39
39
|
}
|
|
40
40
|
const STATUS_COLORS = {
|
|
41
41
|
pending: "#F59E0B",
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
shipped: "#06B6D4",
|
|
45
|
-
delivered: "#10B981",
|
|
46
|
-
cancelled: "#EF4444"
|
|
42
|
+
cancelled: "#EF4444",
|
|
43
|
+
delivered: "#10B981"
|
|
47
44
|
};
|
|
48
45
|
const ORDER_CHART_STATUSES = [
|
|
49
46
|
{ key: "pending", label: "Pending", color: STATUS_COLORS.pending },
|
|
50
|
-
{ key: "
|
|
51
|
-
{ key: "
|
|
52
|
-
{ key: "shipped", label: "Shipped", color: STATUS_COLORS.shipped },
|
|
53
|
-
{ key: "delivered", label: "Delivered", color: STATUS_COLORS.delivered },
|
|
54
|
-
{ key: "cancelled", label: "Cancelled", color: STATUS_COLORS.cancelled }
|
|
47
|
+
{ key: "cancelled", label: "Cancelled", color: STATUS_COLORS.cancelled },
|
|
48
|
+
{ key: "delivered", label: "Delivered", color: STATUS_COLORS.delivered }
|
|
55
49
|
];
|
|
56
50
|
function formatCurrency(value) {
|
|
57
51
|
return new Intl.NumberFormat("en-IN", {
|
|
@@ -133,11 +127,10 @@ function OrdersDashboard() {
|
|
|
133
127
|
if (error || !data) {
|
|
134
128
|
return /* @__PURE__ */ jsx(Container, { className: "p-6", children: /* @__PURE__ */ jsx(Text, { className: "text-ui-fg-danger", children: error ?? "Failed to load analytics" }) });
|
|
135
129
|
}
|
|
136
|
-
const pieData = ORDER_CHART_STATUSES.map(({ key, label, color }) =>
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
})).filter((d) => d.value > 0);
|
|
130
|
+
const pieData = ORDER_CHART_STATUSES.map(({ key, label, color }) => {
|
|
131
|
+
const value = key === "delivered" ? data.statusCounts.delivered ?? data.deliveredOrders ?? 0 : key === "cancelled" ? data.statusCounts.cancelled ?? data.cancelledOrders ?? 0 : data.statusCounts.pending ?? data.pendingOrders ?? 0;
|
|
132
|
+
return { name: label, value, color };
|
|
133
|
+
}).filter((d) => d.value > 0);
|
|
141
134
|
const returnsExchangesData = [
|
|
142
135
|
{ name: "Return orders", value: data.returnOrders, color: "#EF4444" },
|
|
143
136
|
{ name: "Exchange orders", value: data.exchangeOrders, color: "#F59E0B" }
|
|
@@ -187,7 +180,7 @@ function OrdersDashboard() {
|
|
|
187
180
|
/* @__PURE__ */ jsx(Heading, { level: "h2", children: data.avgFulfillmentTimeHours != null ? `${data.avgFulfillmentTimeHours}h` : "—" })
|
|
188
181
|
] })
|
|
189
182
|
] }),
|
|
190
|
-
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-
|
|
183
|
+
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4", children: [
|
|
191
184
|
/* @__PURE__ */ jsxs(Container, { className: "p-4", children: [
|
|
192
185
|
/* @__PURE__ */ jsx(Text, { className: "text-ui-fg-muted text-sm", children: "Cancelled orders" }),
|
|
193
186
|
/* @__PURE__ */ jsx(Heading, { level: "h2", children: data.cancelledOrders.toLocaleString() })
|
|
@@ -196,10 +189,6 @@ function OrdersDashboard() {
|
|
|
196
189
|
/* @__PURE__ */ jsx(Text, { className: "text-ui-fg-muted text-sm", children: "Delivered orders" }),
|
|
197
190
|
/* @__PURE__ */ jsx(Heading, { level: "h2", children: data.deliveredOrders.toLocaleString() })
|
|
198
191
|
] }),
|
|
199
|
-
/* @__PURE__ */ jsxs(Container, { className: "p-4", children: [
|
|
200
|
-
/* @__PURE__ */ jsx(Text, { className: "text-ui-fg-muted text-sm", children: "Shipped orders" }),
|
|
201
|
-
/* @__PURE__ */ jsx(Heading, { level: "h2", children: (data.shippedOrders ?? 0).toLocaleString() })
|
|
202
|
-
] }),
|
|
203
192
|
/* @__PURE__ */ jsxs(Container, { className: "p-4", children: [
|
|
204
193
|
/* @__PURE__ */ jsx(Text, { className: "text-ui-fg-muted text-sm", children: "Exchange orders" }),
|
|
205
194
|
/* @__PURE__ */ jsx(Heading, { level: "h2", children: data.exchangeOrders.toLocaleString() })
|
|
@@ -209,10 +198,10 @@ function OrdersDashboard() {
|
|
|
209
198
|
/* @__PURE__ */ jsx(Heading, { level: "h2", children: data.returnOrders.toLocaleString() })
|
|
210
199
|
] })
|
|
211
200
|
] }),
|
|
212
|
-
/* @__PURE__ */
|
|
213
|
-
/* @__PURE__ */
|
|
214
|
-
|
|
215
|
-
/* @__PURE__ */ jsx("div", { className: "min-h-[
|
|
201
|
+
/* @__PURE__ */ jsx(Container, { className: "p-6", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col sm:flex-row flex-wrap gap-6 items-stretch", children: [
|
|
202
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0 flex flex-col", style: { minWidth: "280px" }, children: [
|
|
203
|
+
/* @__PURE__ */ jsx(Heading, { level: "h3", className: "mb-3", children: "Orders by status" }),
|
|
204
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1 min-h-[280px] flex items-center justify-center", children: pieData.length > 0 ? /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", height: 280, children: /* @__PURE__ */ jsxs(PieChart, { margin: { top: 8, right: 8, bottom: 8, left: 8 }, children: [
|
|
216
205
|
/* @__PURE__ */ jsx(
|
|
217
206
|
Pie,
|
|
218
207
|
{
|
|
@@ -230,31 +219,31 @@ function OrdersDashboard() {
|
|
|
230
219
|
),
|
|
231
220
|
/* @__PURE__ */ jsx(Tooltip, { formatter: (value) => [value ?? 0, "Orders"] }),
|
|
232
221
|
/* @__PURE__ */ jsx(Legend, { verticalAlign: "bottom", height: 36 })
|
|
233
|
-
] }) }) })
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
] })
|
|
222
|
+
] }) }) : /* @__PURE__ */ jsx(Text, { className: "text-ui-fg-muted text-sm", children: "No orders in this period" }) })
|
|
223
|
+
] }),
|
|
224
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0 flex flex-col", style: { minWidth: "280px" }, children: [
|
|
225
|
+
/* @__PURE__ */ jsx(Heading, { level: "h3", className: "mb-3", children: "Returns & exchanges" }),
|
|
226
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1 min-h-[280px] flex items-center justify-center", children: returnsExchangesData.length > 0 ? /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", height: 280, children: /* @__PURE__ */ jsxs(PieChart, { margin: { top: 8, right: 8, bottom: 8, left: 8 }, children: [
|
|
227
|
+
/* @__PURE__ */ jsx(
|
|
228
|
+
Pie,
|
|
229
|
+
{
|
|
230
|
+
data: returnsExchangesData,
|
|
231
|
+
cx: "50%",
|
|
232
|
+
cy: "50%",
|
|
233
|
+
innerRadius: 52,
|
|
234
|
+
outerRadius: 78,
|
|
235
|
+
paddingAngle: 2,
|
|
236
|
+
dataKey: "value",
|
|
237
|
+
nameKey: "name",
|
|
238
|
+
isAnimationActive: true,
|
|
239
|
+
children: returnsExchangesData.map((entry, index) => /* @__PURE__ */ jsx(Cell, { fill: entry.color }, `cell-re-${index}`))
|
|
240
|
+
}
|
|
241
|
+
),
|
|
242
|
+
/* @__PURE__ */ jsx(Tooltip, { formatter: (value) => [value ?? 0, "Count"] }),
|
|
243
|
+
/* @__PURE__ */ jsx(Legend, { verticalAlign: "bottom", height: 36 })
|
|
244
|
+
] }) }) : /* @__PURE__ */ jsx(Text, { className: "text-ui-fg-muted text-sm", children: "No returns or exchanges in this period" }) })
|
|
256
245
|
] })
|
|
257
|
-
] }),
|
|
246
|
+
] }) }),
|
|
258
247
|
/* @__PURE__ */ jsxs(Container, { className: "p-6", children: [
|
|
259
248
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-4 mb-4", children: [
|
|
260
249
|
/* @__PURE__ */ jsx(Heading, { level: "h3", children: "Orders over time" }),
|
|
@@ -2,31 +2,21 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GET = GET;
|
|
4
4
|
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
-
/**
|
|
6
|
-
const STATUS_BUCKETS = [
|
|
7
|
-
|
|
8
|
-
"
|
|
9
|
-
"processing",
|
|
10
|
-
"shipped",
|
|
11
|
-
"delivered",
|
|
12
|
-
"cancelled",
|
|
13
|
-
];
|
|
14
|
-
function normalizeStatus(status) {
|
|
15
|
-
if (!status || typeof status !== "string")
|
|
5
|
+
/** Only three status buckets: pending, cancelled, delivered */
|
|
6
|
+
const STATUS_BUCKETS = ["pending", "cancelled", "delivered"];
|
|
7
|
+
function toSimpleStatus(status) {
|
|
8
|
+
if (status === undefined || status === null || typeof status !== "string")
|
|
16
9
|
return "pending";
|
|
17
|
-
const s = status.toLowerCase();
|
|
10
|
+
const s = String(status).trim().toLowerCase();
|
|
18
11
|
if (s === "canceled" || s === "cancelled")
|
|
19
12
|
return "cancelled";
|
|
20
|
-
// Medusa
|
|
21
|
-
if (s === "completed")
|
|
13
|
+
// Medusa "completed" = delivered; also support "fulfilled" / "delivered" if used by custom flows
|
|
14
|
+
if (s === "completed" || s === "fulfilled" || s === "delivered")
|
|
22
15
|
return "delivered";
|
|
23
|
-
if (STATUS_BUCKETS.includes(s))
|
|
24
|
-
return s;
|
|
25
16
|
return "pending";
|
|
26
17
|
}
|
|
27
18
|
function isPendingStatus(status) {
|
|
28
|
-
|
|
29
|
-
return normalized !== "delivered" && normalized !== "cancelled";
|
|
19
|
+
return toSimpleStatus(status) === "pending";
|
|
30
20
|
}
|
|
31
21
|
const MIN_DAYS = 1;
|
|
32
22
|
const MAX_DAYS = 365;
|
|
@@ -108,25 +98,15 @@ async function GET(req, res) {
|
|
|
108
98
|
if (!inRange)
|
|
109
99
|
continue;
|
|
110
100
|
const status = o.status;
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
const hasShippedFulfillment = fulfillments.some((f) => toValidDate(f.shipped_at) !== null);
|
|
114
|
-
// Delivered = completed orders (Medusa counts these). Shipped = has fulfillment.shipped_at but not completed.
|
|
115
|
-
if (normalized === "delivered") {
|
|
116
|
-
statusCounts.delivered = (statusCounts.delivered ?? 0) + 1;
|
|
117
|
-
}
|
|
118
|
-
else if (hasShippedFulfillment) {
|
|
119
|
-
statusCounts.shipped = (statusCounts.shipped ?? 0) + 1;
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
statusCounts[normalized] = (statusCounts[normalized] ?? 0) + 1;
|
|
123
|
-
}
|
|
101
|
+
const simple = toSimpleStatus(status);
|
|
102
|
+
statusCounts[simple] = (statusCounts[simple] ?? 0) + 1;
|
|
124
103
|
totalOrders += 1;
|
|
125
104
|
if (typeof o.id === "string" && o.id) {
|
|
126
105
|
orderIdsInRange.add(o.id);
|
|
127
106
|
}
|
|
107
|
+
const fulfillments = o.fulfillments ?? [];
|
|
128
108
|
// Total revenue and AOV: only include non-cancelled orders
|
|
129
|
-
if (
|
|
109
|
+
if (simple !== "cancelled") {
|
|
130
110
|
const total = typeof o.total === "number" ? o.total : 0;
|
|
131
111
|
totalRevenue += total;
|
|
132
112
|
nonCancelledCount += 1;
|
|
@@ -151,7 +131,13 @@ async function GET(req, res) {
|
|
|
151
131
|
}
|
|
152
132
|
const cancelledOrders = Math.floor(statusCounts.cancelled ?? 0);
|
|
153
133
|
const deliveredOrders = Math.floor(statusCounts.delivered ?? 0);
|
|
154
|
-
const
|
|
134
|
+
const pendingOrdersCount = Math.floor(statusCounts.pending ?? 0);
|
|
135
|
+
// Ensure statusCounts matches KPI values so chart and cards stay in sync
|
|
136
|
+
const finalStatusCounts = {
|
|
137
|
+
pending: pendingOrdersCount,
|
|
138
|
+
cancelled: cancelledOrders,
|
|
139
|
+
delivered: deliveredOrders,
|
|
140
|
+
};
|
|
155
141
|
let exchangeOrders = 0;
|
|
156
142
|
let returnOrders = 0;
|
|
157
143
|
if (orderIdsInRange.size > 0) {
|
|
@@ -192,11 +178,10 @@ async function GET(req, res) {
|
|
|
192
178
|
pendingOrders,
|
|
193
179
|
cancelledOrders,
|
|
194
180
|
deliveredOrders,
|
|
195
|
-
shippedOrders,
|
|
196
181
|
exchangeOrders: Math.floor(exchangeOrders),
|
|
197
182
|
returnOrders: Math.floor(returnOrders),
|
|
198
183
|
avgFulfillmentTimeHours,
|
|
199
|
-
statusCounts,
|
|
184
|
+
statusCounts: finalStatusCounts,
|
|
200
185
|
};
|
|
201
186
|
res.json(body);
|
|
202
187
|
}
|
|
@@ -208,4 +193,4 @@ async function GET(req, res) {
|
|
|
208
193
|
});
|
|
209
194
|
}
|
|
210
195
|
}
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2FuYWx5dGljcy9vcmRlcnMtc3VtbWFyeS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlFQSxrQkF3TUM7QUFuUUQscURBSWtDO0FBSWxDLHlEQUF5RDtBQUN6RCxNQUFNLGNBQWMsR0FBRztJQUNyQixTQUFTO0lBQ1QsV0FBVztJQUNYLFlBQVk7SUFDWixTQUFTO0lBQ1QsV0FBVztJQUNYLFdBQVc7Q0FDSCxDQUFBO0FBRVYsU0FBUyxlQUFlLENBQUMsTUFBMEI7SUFDakQsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRO1FBQUUsT0FBTyxTQUFTLENBQUE7SUFDM0QsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQzlCLElBQUksQ0FBQyxLQUFLLFVBQVUsSUFBSSxDQUFDLEtBQUssV0FBVztRQUFFLE9BQU8sV0FBVyxDQUFBO0lBQzdELDRIQUE0SDtJQUM1SCxJQUFJLENBQUMsS0FBSyxXQUFXO1FBQUUsT0FBTyxXQUFXLENBQUE7SUFDekMsSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLENBQW9DLENBQUM7UUFBRSxPQUFPLENBQW9DLENBQUE7SUFDOUcsT0FBTyxTQUFTLENBQUE7QUFDbEIsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLE1BQTBCO0lBQ2pELE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMxQyxPQUFPLFVBQVUsS0FBSyxXQUFXLElBQUksVUFBVSxLQUFLLFdBQVcsQ0FBQTtBQUNqRSxDQUFDO0FBRUQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFBO0FBQ2xCLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQTtBQUVwQixTQUFTLFNBQVMsQ0FBQyxDQUFPO0lBQ3hCLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFDckMsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLEtBQWM7SUFDcEMsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJO1FBQUUsT0FBTyxDQUFDLENBQUE7SUFDbkQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRO1FBQUUsT0FBTyxRQUFRLENBQUE7SUFDekQsSUFBSSxDQUFDLEdBQUcsUUFBUTtRQUFFLE9BQU8sUUFBUSxDQUFBO0lBQ2pDLE9BQU8sQ0FBQyxDQUFBO0FBQ1YsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLEtBQWM7SUFDakMsSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDMUIsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtJQUNyRCxDQUFDO0lBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDM0QsTUFBTSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDekIsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRU0sS0FBSyxVQUFVLEdBQUcsQ0FDdkIsR0FBa0IsRUFDbEIsR0FBbUI7SUFFbkIsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ25DLGlDQUF5QixDQUFDLFlBQVksQ0FDdkMsQ0FBQTtJQUVELE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBRTVDLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUE7SUFDeEIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM3QixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFakMsdUZBQXVGO0lBQ3ZGLE1BQU0sVUFBVSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2xDLFVBQVUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDM0QsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUVsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBRXJDLElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLHlCQUF5QixDQUFDLENBQUE7UUFDakYsSUFBSSxXQUFXLEdBQUcsSUFBQSxtQ0FBMkIsRUFBQztZQUM1QyxVQUFVLEVBQUUsT0FBTztZQUNuQixNQUFNO1lBQ04sSUFBSSxFQUFFLEtBQUs7U0FDWixDQUFDLENBQUE7UUFFRixJQUFJLFNBQWtCLENBQUE7UUFDdEIsSUFBSSxDQUFDO1lBQ0gsU0FBUyxHQUFHLE1BQU0sV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzVDLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxXQUFXLEdBQUcsSUFBQSxtQ0FBMkIsRUFBQztnQkFDeEMsVUFBVSxFQUFFLE9BQU87Z0JBQ25CLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQztnQkFDL0MsSUFBSSxFQUFFLEtBQUs7YUFDWixDQUFDLENBQUE7WUFDRixTQUFTLEdBQUcsTUFBTSxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDNUMsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFFckYsTUFBTSxZQUFZLEdBQThCLEVBQUUsQ0FBQTtRQUNsRCxLQUFLLE1BQU0sR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ2pDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDdkIsQ0FBQztRQUVELHVGQUF1RjtRQUN2RixJQUFJLFlBQVksR0FBRyxDQUFDLENBQUE7UUFDcEIsSUFBSSxpQkFBaUIsR0FBRyxDQUFDLENBQUE7UUFDekIsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLENBQUE7UUFDeEIsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFBO1FBQ3JCLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQTtRQUNuQixNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFBO1FBQ3pDLE1BQU0sa0JBQWtCLEdBQWEsRUFBRSxDQUFBO1FBRXZDLEtBQUssTUFBTSxLQUFLLElBQUksU0FBUyxFQUFFLENBQUM7WUFDOUIsTUFBTSxDQUFDLEdBQUcsS0FNVCxDQUFBO1lBRUQsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUMzQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1lBRXZELE1BQU0sT0FBTyxHQUNYLFNBQVM7Z0JBQ1QsT0FBTztnQkFDUCxTQUFTLElBQUksVUFBVTtnQkFDdkIsU0FBUyxJQUFJLFFBQVEsQ0FBQTtZQUN2QixJQUFJLENBQUMsT0FBTztnQkFBRSxTQUFRO1lBRXRCLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUE7WUFDdkIsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQzFDLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFBO1lBQ3pDLE1BQU0scUJBQXFCLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQTtZQUUxRiw4R0FBOEc7WUFDOUcsSUFBSSxVQUFVLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQy9CLFlBQVksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxZQUFZLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUM1RCxDQUFDO2lCQUFNLElBQUkscUJBQXFCLEVBQUUsQ0FBQztnQkFDakMsWUFBWSxDQUFDLE9BQU8sR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ3hELENBQUM7aUJBQU0sQ0FBQztnQkFDTixZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ2hFLENBQUM7WUFFRCxXQUFXLElBQUksQ0FBQyxDQUFBO1lBQ2hCLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3JDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQzNCLENBQUM7WUFFRCwyREFBMkQ7WUFDM0QsSUFBSSxVQUFVLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQy9CLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDdkQsWUFBWSxJQUFJLEtBQUssQ0FBQTtnQkFDckIsaUJBQWlCLElBQUksQ0FBQyxDQUFBO1lBQ3hCLENBQUM7WUFFRCxJQUFJLE9BQU8sS0FBSyxRQUFRO2dCQUFFLGdCQUFnQixJQUFJLENBQUMsQ0FBQTtZQUMvQyxJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUM7Z0JBQUUsYUFBYSxJQUFJLENBQUMsQ0FBQTtZQUUvQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUM3QixNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFBO2dCQUMzQyxJQUFJLFNBQVMsSUFBSSxTQUFTLEVBQUUsQ0FBQztvQkFDM0Isa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtvQkFDbEUsTUFBSztnQkFDUCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBRyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRXhFLElBQUksdUJBQXVCLEdBQWtCLElBQUksQ0FBQTtRQUNqRCxJQUFJLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLEtBQUssR0FDVCxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQTtZQUMzRSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUM1RSxDQUFDO1FBRUQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQy9ELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUMvRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUE7UUFFM0QsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFBO1FBQ3RCLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQTtRQUVwQixJQUFJLGVBQWUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0IsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDMUMsZUFBTyxDQUFDLEtBQUssQ0FDZCxDQUFBO1lBRUQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTtZQUU1QyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLE1BQU0sa0JBQWtCLENBQUMsbUJBQW1CLENBQzVELEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBK0QsRUFDbkYsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUMvQyxDQUFBO2dCQUVELFlBQVksR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDMUMsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFFLENBQThCLENBQUMsVUFBVSxDQUFDLENBQUE7b0JBQ3pFLE9BQU8sQ0FDTCxTQUFTLEtBQUssSUFBSTt3QkFDbEIsU0FBUyxJQUFJLFVBQVU7d0JBQ3ZCLFNBQVMsSUFBSSxRQUFRLENBQ3RCLENBQUE7Z0JBQ0gsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFBO1lBQ1gsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQywwQ0FBMEMsRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUM5RCxDQUFDO1lBRUQsSUFBSSxDQUFDO2dCQUNILE1BQU0sT0FBTyxHQUFHLE1BQU0sa0JBQWtCLENBQUMsZ0JBQWdCLENBQ3ZELEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUN0QixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQy9DLENBQUE7Z0JBRUQsY0FBYyxHQUFHLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUM1QyxNQUFNLFVBQVUsR0FBSSxDQUErQixDQUFDLFdBQVcsQ0FBQTtvQkFDL0QsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFFLENBQThCLENBQUMsVUFBVSxDQUFDLENBQUE7b0JBQ3pFLE9BQU8sQ0FDTCxVQUFVLEtBQUssVUFBVTt3QkFDekIsU0FBUyxLQUFLLElBQUk7d0JBQ2xCLFNBQVMsSUFBSSxVQUFVO3dCQUN2QixTQUFTLElBQUksUUFBUSxDQUN0QixDQUFBO2dCQUNILENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQTtZQUNYLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDL0QsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLElBQUksR0FBcUI7WUFDN0IsV0FBVztZQUNYLFlBQVk7WUFDWixHQUFHO1lBQ0gsV0FBVyxFQUFFLGdCQUFnQjtZQUM3QixhQUFhO1lBQ2IsZUFBZTtZQUNmLGVBQWU7WUFDZixhQUFhO1lBQ2IsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQzFDLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUN0Qyx1QkFBdUI7WUFDdkIsWUFBWTtTQUNiLENBQUE7UUFFRCxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2hCLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUNyRCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixLQUFLLEVBQUUsZ0NBQWdDO1lBQ3ZDLE9BQU8sRUFBRSxHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1NBQzFELENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDIn0=
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2FuYWx5dGljcy9vcmRlcnMtc3VtbWFyeS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXdEQSxrQkFxTUM7QUF2UEQscURBSWtDO0FBSWxDLCtEQUErRDtBQUMvRCxNQUFNLGNBQWMsR0FBRyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFVLENBQUE7QUFFckUsU0FBUyxjQUFjLENBQUMsTUFBMEI7SUFDaEQsSUFBSSxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUTtRQUFFLE9BQU8sU0FBUyxDQUFBO0lBQzNGLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUM3QyxJQUFJLENBQUMsS0FBSyxVQUFVLElBQUksQ0FBQyxLQUFLLFdBQVc7UUFBRSxPQUFPLFdBQVcsQ0FBQTtJQUM3RCxpR0FBaUc7SUFDakcsSUFBSSxDQUFDLEtBQUssV0FBVyxJQUFJLENBQUMsS0FBSyxXQUFXLElBQUksQ0FBQyxLQUFLLFdBQVc7UUFBRSxPQUFPLFdBQVcsQ0FBQTtJQUNuRixPQUFPLFNBQVMsQ0FBQTtBQUNsQixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsTUFBMEI7SUFDakQsT0FBTyxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBUyxDQUFBO0FBQzdDLENBQUM7QUFFRCxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUE7QUFDbEIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFBO0FBRXBCLFNBQVMsU0FBUyxDQUFDLENBQU87SUFDeEIsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUNyQyxDQUFDO0FB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
|