@talkpilot/core-db 1.3.0 → 1.3.3

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 (149) hide show
  1. package/README.md +0 -30
  2. package/dist/connection.d.ts.map +1 -1
  3. package/dist/connection.js +10 -0
  4. package/dist/connection.js.map +1 -1
  5. package/dist/index.d.ts +3 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +7 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/municipal/tickets/index.d.ts +1 -2
  10. package/dist/municipal/tickets/index.d.ts.map +1 -1
  11. package/dist/municipal/tickets/index.js +0 -1
  12. package/dist/municipal/tickets/index.js.map +1 -1
  13. package/dist/municipal/tickets/tickets.getters.d.ts +11 -0
  14. package/dist/municipal/tickets/tickets.getters.d.ts.map +1 -1
  15. package/dist/municipal/tickets/tickets.getters.js +128 -0
  16. package/dist/municipal/tickets/tickets.getters.js.map +1 -1
  17. package/dist/municipal/tickets/tickets.types.d.ts +5 -10
  18. package/dist/municipal/tickets/tickets.types.d.ts.map +1 -1
  19. package/dist/talkpilot/calls/calls.types.d.ts +2 -1
  20. package/dist/talkpilot/calls/calls.types.d.ts.map +1 -1
  21. package/dist/talkpilot/calls/calls.types.js +3 -0
  22. package/dist/talkpilot/calls/calls.types.js.map +1 -1
  23. package/dist/talkpilot/calls/dashboard/calls.dashboard.d.ts +1 -33
  24. package/dist/talkpilot/calls/dashboard/calls.dashboard.d.ts.map +1 -1
  25. package/dist/talkpilot/calls/dashboard/calls.dashboard.js +146 -131
  26. package/dist/talkpilot/calls/dashboard/calls.dashboard.js.map +1 -1
  27. package/dist/talkpilot/calls/dashboard/calls.dashboard.types.d.ts +6 -27
  28. package/dist/talkpilot/calls/dashboard/calls.dashboard.types.d.ts.map +1 -1
  29. package/dist/talkpilot/calls/index.d.ts +0 -3
  30. package/dist/talkpilot/calls/index.d.ts.map +1 -1
  31. package/dist/talkpilot/calls/index.js +0 -3
  32. package/dist/talkpilot/calls/index.js.map +1 -1
  33. package/dist/test-utils/db-utils.d.ts.map +1 -1
  34. package/dist/test-utils/db-utils.js +2 -0
  35. package/dist/test-utils/db-utils.js.map +1 -1
  36. package/dist/test-utils/factories/index.d.ts +1 -0
  37. package/dist/test-utils/factories/index.d.ts.map +1 -1
  38. package/dist/test-utils/factories/index.js +1 -0
  39. package/dist/test-utils/factories/index.js.map +1 -1
  40. package/dist/test-utils/factories/websitalk/scans.d.ts +5 -0
  41. package/dist/test-utils/factories/websitalk/scans.d.ts.map +1 -0
  42. package/dist/test-utils/factories/websitalk/scans.js +25 -0
  43. package/dist/test-utils/factories/websitalk/scans.js.map +1 -0
  44. package/dist/websitalk/index.d.ts +7 -0
  45. package/dist/websitalk/index.d.ts.map +1 -0
  46. package/dist/websitalk/index.js +34 -0
  47. package/dist/websitalk/index.js.map +1 -0
  48. package/dist/websitalk/mongodb-client.d.ts +13 -0
  49. package/dist/websitalk/mongodb-client.d.ts.map +1 -0
  50. package/dist/websitalk/mongodb-client.js +56 -0
  51. package/dist/websitalk/mongodb-client.js.map +1 -0
  52. package/dist/websitalk/scans/index.d.ts +3 -0
  53. package/dist/websitalk/scans/index.d.ts.map +1 -0
  54. package/dist/websitalk/scans/index.js +19 -0
  55. package/dist/websitalk/scans/index.js.map +1 -0
  56. package/dist/websitalk/scans/scans.getters.d.ts +12 -0
  57. package/dist/websitalk/scans/scans.getters.d.ts.map +1 -0
  58. package/dist/websitalk/scans/scans.getters.js +74 -0
  59. package/dist/websitalk/scans/scans.getters.js.map +1 -0
  60. package/dist/websitalk/scans/scans.types.d.ts +45 -0
  61. package/dist/websitalk/scans/scans.types.d.ts.map +1 -0
  62. package/dist/{talkpilot/calls/calls.statistics.types.js → websitalk/scans/scans.types.js} +1 -1
  63. package/dist/websitalk/scans/scans.types.js.map +1 -0
  64. package/package.json +1 -1
  65. package/src/connection.ts +12 -0
  66. package/src/index.ts +9 -0
  67. package/src/municipal/tickets/__tests__/tickets.getters.spec.ts +37 -1
  68. package/src/municipal/tickets/index.ts +1 -2
  69. package/src/municipal/tickets/tickets.getters.ts +140 -0
  70. package/src/municipal/tickets/tickets.types.ts +9 -14
  71. package/src/talkpilot/calls/__tests__/calls.dashboard.spec.ts +111 -8
  72. package/src/talkpilot/calls/calls.types.ts +2 -4
  73. package/src/talkpilot/calls/dashboard/calls.dashboard.ts +197 -148
  74. package/src/talkpilot/calls/dashboard/calls.dashboard.types.ts +12 -25
  75. package/src/talkpilot/calls/index.ts +0 -3
  76. package/src/talkpilot/clientsConfig/__tests__/clientsConfig.spec.ts +0 -7
  77. package/src/test-utils/db-utils.ts +3 -1
  78. package/src/test-utils/factories/index.ts +1 -0
  79. package/src/test-utils/factories/websitalk/scans.ts +23 -0
  80. package/src/websitalk/index.ts +15 -0
  81. package/src/websitalk/mongodb-client.ts +61 -0
  82. package/src/websitalk/scans/__tests__/scans.spec.ts +218 -0
  83. package/src/websitalk/scans/index.ts +2 -0
  84. package/src/websitalk/scans/scans.getters.ts +113 -0
  85. package/src/websitalk/scans/scans.types.ts +53 -0
  86. package/dist/municipal/tickets/tickets.constants.d.ts +0 -7
  87. package/dist/municipal/tickets/tickets.constants.d.ts.map +0 -1
  88. package/dist/municipal/tickets/tickets.constants.js +0 -10
  89. package/dist/municipal/tickets/tickets.constants.js.map +0 -1
  90. package/dist/municipal/tickets/tickets.deprecated.getters.d.ts +0 -12
  91. package/dist/municipal/tickets/tickets.deprecated.getters.d.ts.map +0 -1
  92. package/dist/municipal/tickets/tickets.deprecated.getters.js +0 -131
  93. package/dist/municipal/tickets/tickets.deprecated.getters.js.map +0 -1
  94. package/dist/municipal/tickets/tickets.statistics.aggregation.d.ts +0 -45
  95. package/dist/municipal/tickets/tickets.statistics.aggregation.d.ts.map +0 -1
  96. package/dist/municipal/tickets/tickets.statistics.aggregation.js +0 -98
  97. package/dist/municipal/tickets/tickets.statistics.aggregation.js.map +0 -1
  98. package/dist/municipal/tickets/tickets.statistics.dates.d.ts +0 -7
  99. package/dist/municipal/tickets/tickets.statistics.dates.d.ts.map +0 -1
  100. package/dist/municipal/tickets/tickets.statistics.dates.js +0 -40
  101. package/dist/municipal/tickets/tickets.statistics.dates.js.map +0 -1
  102. package/dist/municipal/tickets/tickets.statistics.getters.d.ts +0 -9
  103. package/dist/municipal/tickets/tickets.statistics.getters.d.ts.map +0 -1
  104. package/dist/municipal/tickets/tickets.statistics.getters.js +0 -55
  105. package/dist/municipal/tickets/tickets.statistics.getters.js.map +0 -1
  106. package/dist/municipal/tickets/tickets.statistics.pipeline.d.ts +0 -53
  107. package/dist/municipal/tickets/tickets.statistics.pipeline.d.ts.map +0 -1
  108. package/dist/municipal/tickets/tickets.statistics.pipeline.js +0 -112
  109. package/dist/municipal/tickets/tickets.statistics.pipeline.js.map +0 -1
  110. package/dist/municipal/tickets/tickets.statistics.utils.d.ts +0 -7
  111. package/dist/municipal/tickets/tickets.statistics.utils.d.ts.map +0 -1
  112. package/dist/municipal/tickets/tickets.statistics.utils.js +0 -40
  113. package/dist/municipal/tickets/tickets.statistics.utils.js.map +0 -1
  114. package/dist/talkpilot/calls/calls.constants.d.ts +0 -17
  115. package/dist/talkpilot/calls/calls.constants.d.ts.map +0 -1
  116. package/dist/talkpilot/calls/calls.constants.js +0 -20
  117. package/dist/talkpilot/calls/calls.constants.js.map +0 -1
  118. package/dist/talkpilot/calls/calls.statistics.getters.d.ts +0 -19
  119. package/dist/talkpilot/calls/calls.statistics.getters.d.ts.map +0 -1
  120. package/dist/talkpilot/calls/calls.statistics.getters.js +0 -375
  121. package/dist/talkpilot/calls/calls.statistics.getters.js.map +0 -1
  122. package/dist/talkpilot/calls/calls.statistics.ticketScope.d.ts +0 -12
  123. package/dist/talkpilot/calls/calls.statistics.ticketScope.d.ts.map +0 -1
  124. package/dist/talkpilot/calls/calls.statistics.ticketScope.js +0 -37
  125. package/dist/talkpilot/calls/calls.statistics.ticketScope.js.map +0 -1
  126. package/dist/talkpilot/calls/calls.statistics.tickets.d.ts +0 -17
  127. package/dist/talkpilot/calls/calls.statistics.tickets.d.ts.map +0 -1
  128. package/dist/talkpilot/calls/calls.statistics.tickets.js +0 -33
  129. package/dist/talkpilot/calls/calls.statistics.tickets.js.map +0 -1
  130. package/dist/talkpilot/calls/calls.statistics.types.d.ts +0 -39
  131. package/dist/talkpilot/calls/calls.statistics.types.d.ts.map +0 -1
  132. package/dist/talkpilot/calls/calls.statistics.types.js.map +0 -1
  133. package/dist/utils/date.utils.d.ts +0 -49
  134. package/dist/utils/date.utils.d.ts.map +0 -1
  135. package/dist/utils/date.utils.js +0 -103
  136. package/dist/utils/date.utils.js.map +0 -1
  137. package/dist/utils/statistics.aggregation.d.ts +0 -20
  138. package/dist/utils/statistics.aggregation.d.ts.map +0 -1
  139. package/dist/utils/statistics.aggregation.js +0 -43
  140. package/dist/utils/statistics.aggregation.js.map +0 -1
  141. package/src/municipal/tickets/__tests__/tickets.statistics.spec.ts +0 -104
  142. package/src/municipal/tickets/tickets.constants.ts +0 -8
  143. package/src/municipal/tickets/tickets.statistics.aggregation.ts +0 -113
  144. package/src/municipal/tickets/tickets.statistics.getters.ts +0 -93
  145. package/src/talkpilot/calls/__tests__/calls.statistics.spec.ts +0 -281
  146. package/src/talkpilot/calls/calls.constants.ts +0 -20
  147. package/src/talkpilot/calls/calls.statistics.getters.ts +0 -525
  148. package/src/talkpilot/calls/calls.statistics.types.ts +0 -44
  149. package/src/utils/date.utils.ts +0 -116
@@ -3,58 +3,168 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.buildCallLengthBucketsPipeline = buildCallLengthBucketsPipeline;
7
6
  exports.getDashboardStats = getDashboardStats;
8
7
  const dayjs_1 = __importDefault(require("dayjs"));
9
8
  const calls_getters_1 = require("../calls.getters");
10
9
  const clientsConfig_1 = require("../../clientsConfig");
11
10
  const utc_1 = __importDefault(require("dayjs/plugin/utc"));
12
11
  const timezone_1 = __importDefault(require("dayjs/plugin/timezone"));
12
+ const isoWeek_1 = __importDefault(require("dayjs/plugin/isoWeek"));
13
+ const quarterOfYear_1 = __importDefault(require("dayjs/plugin/quarterOfYear"));
13
14
  const DEFAULT_KPI_DATA = {
14
- totalCalls: 0,
15
- totalDuration: 0,
16
15
  completedCount: 0,
17
- failedCount: 0,
18
- noAnswerCount: 0,
19
16
  busyCount: 0,
17
+ answeredDuration: 0,
20
18
  };
21
19
  dayjs_1.default.extend(utc_1.default);
22
20
  dayjs_1.default.extend(timezone_1.default);
21
+ dayjs_1.default.extend(isoWeek_1.default);
22
+ dayjs_1.default.extend(quarterOfYear_1.default);
23
+ const BUCKET_UNIT = {
24
+ hour: "hour",
25
+ day: "day",
26
+ week: "isoWeek",
27
+ month: "month",
28
+ quarter: "quarter",
29
+ year: "year",
30
+ };
31
+ function formatBucketKey(bucketStart, granularity) {
32
+ switch (granularity) {
33
+ case "hour":
34
+ return bucketStart.format("YYYY-MM-DDTHH:00");
35
+ case "day":
36
+ case "week":
37
+ return bucketStart.format("YYYY-MM-DD");
38
+ case "month":
39
+ return bucketStart.format("YYYY-MM");
40
+ case "quarter":
41
+ return `${bucketStart.format("YYYY")}-Q${bucketStart.quarter()}`;
42
+ case "year":
43
+ return bucketStart.format("YYYY");
44
+ }
45
+ }
46
+ function generateBucketKeys(startDateObj, endDateObj, granularity, timezone) {
47
+ const unitName = BUCKET_UNIT[granularity];
48
+ const startOfUnit = unitName;
49
+ const stepUnit = (unitName === "isoWeek" ? "week" : unitName);
50
+ const end = (0, dayjs_1.default)(endDateObj).tz(timezone);
51
+ let cursor = (0, dayjs_1.default)(startDateObj).tz(timezone).startOf(startOfUnit);
52
+ const keys = [];
53
+ while (cursor.isBefore(end) || cursor.isSame(end, startOfUnit)) {
54
+ keys.push(formatBucketKey(cursor, granularity));
55
+ cursor = cursor.add(1, stepUnit);
56
+ }
57
+ return keys;
58
+ }
59
+ function fillVolumeGaps(bucketKeys, volumeDataRaw) {
60
+ const completedByKey = new Map(volumeDataRaw.map((d) => [d.date, d.completed]));
61
+ return bucketKeys.map((date) => ({
62
+ date,
63
+ completed: completedByKey.get(date) ?? 0,
64
+ }));
65
+ }
66
+ function resolveVolumeGranularity(startDateObj, endDateObj) {
67
+ const spanDays = (0, dayjs_1.default)(endDateObj).diff((0, dayjs_1.default)(startDateObj), "day");
68
+ if (spanDays <= 2)
69
+ return "hour";
70
+ if (spanDays <= 60)
71
+ return "day";
72
+ if (spanDays <= 365)
73
+ return "week";
74
+ if (spanDays <= 730)
75
+ return "month";
76
+ if (spanDays <= 1460)
77
+ return "quarter";
78
+ return "year";
79
+ }
80
+ const VOLUME_DATE_FORMATS = {
81
+ hour: "%Y-%m-%dT%H:00",
82
+ day: "%Y-%m-%d",
83
+ month: "%Y-%m",
84
+ year: "%Y",
85
+ };
86
+ function buildVolumeBucketIdExpression(timezone, granularity) {
87
+ if (granularity === "week") {
88
+ return {
89
+ $dateToString: {
90
+ format: "%Y-%m-%d",
91
+ date: {
92
+ $dateTrunc: {
93
+ date: "$createdAt",
94
+ unit: "week",
95
+ timezone,
96
+ startOfWeek: "monday",
97
+ },
98
+ },
99
+ timezone,
100
+ },
101
+ };
102
+ }
103
+ if (granularity === "quarter") {
104
+ return {
105
+ $concat: [
106
+ { $toString: { $year: { date: "$createdAt", timezone } } },
107
+ "-Q",
108
+ {
109
+ $toString: {
110
+ $add: [
111
+ {
112
+ $trunc: {
113
+ $divide: [
114
+ {
115
+ $subtract: [
116
+ { $month: { date: "$createdAt", timezone } },
117
+ 1,
118
+ ],
119
+ },
120
+ 3,
121
+ ],
122
+ },
123
+ },
124
+ 1,
125
+ ],
126
+ },
127
+ },
128
+ ],
129
+ };
130
+ }
131
+ return {
132
+ $dateToString: {
133
+ format: VOLUME_DATE_FORMATS[granularity],
134
+ date: "$createdAt",
135
+ timezone,
136
+ },
137
+ };
138
+ }
23
139
  function buildKpisPipeline() {
24
140
  return [
25
141
  {
26
142
  $group: {
27
143
  _id: null,
28
- totalCalls: { $sum: 1 },
29
- totalDuration: { $sum: "$callLength" },
30
144
  completedCount: {
31
145
  $sum: { $cond: [{ $eq: ["$status", "completed"] }, 1, 0] },
32
146
  },
33
- failedCount: {
34
- $sum: { $cond: [{ $eq: ["$status", "failed"] }, 1, 0] },
35
- },
36
- noAnswerCount: {
37
- $sum: { $cond: [{ $eq: ["$status", "no-answer"] }, 1, 0] },
38
- },
39
147
  busyCount: {
40
148
  $sum: { $cond: [{ $eq: ["$status", "busy"] }, 1, 0] },
41
149
  },
150
+ answeredDuration: {
151
+ $sum: {
152
+ $cond: [
153
+ { $in: ["$status", ["completed", "busy"]] },
154
+ "$callLength",
155
+ 0,
156
+ ],
157
+ },
158
+ },
42
159
  },
43
160
  },
44
161
  ];
45
162
  }
46
- function buildDailyDataPipeline(timezone) {
163
+ function buildVolumeDataPipeline(timezone, granularity) {
47
164
  return [
48
165
  {
49
166
  $group: {
50
- _id: {
51
- $dateToString: {
52
- format: "%Y-%m-%d",
53
- date: "$createdAt",
54
- timezone: timezone,
55
- },
56
- },
57
- count: { $sum: 1 },
167
+ _id: buildVolumeBucketIdExpression(timezone, granularity),
58
168
  completed: {
59
169
  $sum: { $cond: [{ $eq: ["$status", "completed"] }, 1, 0] },
60
170
  },
@@ -63,86 +173,13 @@ function buildDailyDataPipeline(timezone) {
63
173
  { $sort: { _id: 1 } },
64
174
  ];
65
175
  }
66
- function buildHourlyDataPipeline(timezone) {
67
- return [
68
- {
69
- $group: {
70
- _id: {
71
- day: {
72
- $dateToString: {
73
- format: "%Y-%m-%d",
74
- date: "$createdAt",
75
- timezone: timezone,
76
- },
77
- },
78
- hour: { $hour: { date: "$createdAt", timezone: timezone } },
79
- },
80
- count: { $sum: 1 },
81
- },
82
- },
83
- ];
84
- }
85
- function buildCallLengthBucketsPipeline(thresholds) {
86
- const { shortThreshold, mediumThreshold } = thresholds;
87
- return [
88
- {
89
- $group: {
90
- _id: null,
91
- short: {
92
- $sum: { $cond: [{ $lt: ["$callLength", shortThreshold] }, 1, 0] },
93
- },
94
- medium: {
95
- $sum: {
96
- $cond: [
97
- {
98
- $and: [
99
- { $gte: ["$callLength", shortThreshold] },
100
- { $lte: ["$callLength", mediumThreshold] },
101
- ],
102
- },
103
- 1,
104
- 0,
105
- ],
106
- },
107
- },
108
- long: {
109
- $sum: { $cond: [{ $gt: ["$callLength", mediumThreshold] }, 1, 0] },
110
- },
111
- },
112
- },
113
- ];
114
- }
115
- function buildHeatmapData(hourlyDataRaw) {
116
- const heatmapMap = new Map();
117
- for (const bucket of hourlyDataRaw) {
118
- const dayKey = bucket._id.day;
119
- const hour = bucket._id.hour;
120
- if (!heatmapMap.has(dayKey))
121
- heatmapMap.set(dayKey, new Map());
122
- heatmapMap.get(dayKey).set(hour, bucket.count);
123
- }
124
- const toSortedBuckets = (map) => Array.from(map.entries())
125
- .sort(([a], [b]) => a - b)
126
- .map(([h, c]) => ({
127
- hour: h,
128
- calls: c,
129
- }));
130
- const heatmap = {};
131
- for (const [day, hourMap] of Array.from(heatmapMap.entries()).sort()) {
132
- heatmap[day] = toSortedBuckets(hourMap);
133
- }
134
- return heatmap;
135
- }
136
176
  async function getDashboardStats(params) {
137
- const { clientId, startDate, endDate } = params;
177
+ const { clientId, startDate, endDate, granularity: requestedGranularity, } = params;
138
178
  const clientConfig = await (0, clientsConfig_1.getClientConfig)(clientId);
139
179
  const timezone = clientConfig?.timezone ?? "UTC";
140
- const startDateObj = dayjs_1.default.tz(startDate, timezone).startOf("day").toDate();
141
- const endDateObj = dayjs_1.default.tz(endDate, timezone).endOf("day").toDate();
142
- const thresholds = {
143
- shortThreshold: clientConfig?.callLengthThresholds?.shortThreshold ?? 60,
144
- mediumThreshold: clientConfig?.callLengthThresholds?.mediumThreshold ?? 180,
145
- };
180
+ const startDateObj = (0, dayjs_1.default)(startDate).tz(timezone).startOf("day").toDate();
181
+ const endDateObj = (0, dayjs_1.default)(endDate).tz(timezone).endOf("day").toDate();
182
+ const granularity = requestedGranularity ?? resolveVolumeGranularity(startDateObj, endDateObj);
146
183
  const pipeline = [
147
184
  {
148
185
  $match: {
@@ -153,9 +190,7 @@ async function getDashboardStats(params) {
153
190
  {
154
191
  $facet: {
155
192
  kpis: buildKpisPipeline(),
156
- dailyData: buildDailyDataPipeline(timezone),
157
- hourlyData: buildHourlyDataPipeline(timezone),
158
- callLengthBuckets: buildCallLengthBucketsPipeline(thresholds),
193
+ volumeData: buildVolumeDataPipeline(timezone, granularity),
159
194
  },
160
195
  },
161
196
  ];
@@ -164,43 +199,23 @@ async function getDashboardStats(params) {
164
199
  .aggregate(pipeline)
165
200
  .toArray();
166
201
  const kpiData = aggregatedResult?.kpis?.[0] ?? DEFAULT_KPI_DATA;
167
- const dailyDataRaw = aggregatedResult?.dailyData ?? [];
168
- const hourlyDataRaw = aggregatedResult?.hourlyData ?? [];
169
- const callLengthRaw = aggregatedResult?.callLengthBuckets?.[0] ?? {
170
- short: 0,
171
- medium: 0,
172
- long: 0,
173
- };
202
+ const volumeDataRaw = aggregatedResult?.volumeData ?? [];
203
+ const answeredCount = kpiData.completedCount + kpiData.busyCount;
204
+ const answeredDuration = kpiData.answeredDuration ?? 0;
174
205
  const kpis = {
175
- totalCalls: kpiData.totalCalls,
176
- avgDurationSeconds: kpiData.totalCalls > 0
177
- ? Math.round((kpiData.totalDuration ?? 0) / kpiData.totalCalls)
178
- : 0,
179
- timeSavedMinutes: Math.round((kpiData.totalDuration ?? 0) / 60),
180
- successRate: kpiData.totalCalls > 0
181
- ? Math.round((kpiData.completedCount / kpiData.totalCalls) * 1000) / 10
182
- : 0,
206
+ totalCalls: answeredCount,
207
+ avgDurationSeconds: answeredCount > 0 ? Math.round(answeredDuration / answeredCount) : 0,
208
+ timeSavedMinutes: Math.round(answeredDuration / 60),
183
209
  completedCount: kpiData.completedCount,
184
- failedCount: kpiData.failedCount,
185
- noAnswerCount: kpiData.noAnswerCount,
186
210
  busyCount: kpiData.busyCount,
187
211
  };
188
- const volumeData = dailyDataRaw.map((d) => ({
189
- date: d._id,
190
- count: d.count,
191
- completed: d.completed,
192
- }));
193
- const heatmap = buildHeatmapData(hourlyDataRaw);
212
+ const bucketKeys = generateBucketKeys(startDateObj, endDateObj, granularity, timezone);
213
+ const volumeData = fillVolumeGaps(bucketKeys, volumeDataRaw.map((d) => ({ date: d._id, completed: d.completed })));
194
214
  const response = {
195
215
  kpis,
196
216
  charts: {
197
217
  volumeData,
198
- heatmap,
199
- callLengthBuckets: {
200
- short: callLengthRaw.short,
201
- medium: callLengthRaw.medium,
202
- long: callLengthRaw.long,
203
- },
218
+ volumeGranularity: granularity,
204
219
  },
205
220
  };
206
221
  return response;
@@ -1 +1 @@
1
- {"version":3,"file":"calls.dashboard.js","sourceRoot":"","sources":["../../../../src/talkpilot/calls/dashboard/calls.dashboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calls.dashboard.js","sourceRoot":"","sources":["../../../../src/talkpilot/calls/dashboard/calls.dashboard.ts"],"names":[],"mappings":"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"}
@@ -4,63 +4,42 @@ export type DashboardHeatmapMetric = {
4
4
  };
5
5
  export type DashboardDailyTrendMetric = {
6
6
  date: string;
7
- count: number;
8
7
  completed: number;
9
8
  };
10
- export type DashboardDurationSegments = {
11
- short: number;
12
- medium: number;
13
- long: number;
14
- };
9
+ export type DashboardVolumeGranularity = "hour" | "day" | "week" | "month" | "quarter" | "year";
15
10
  export type DashboardSummaryMetrics = {
16
11
  totalCalls: number;
17
12
  avgDurationSeconds: number;
18
13
  timeSavedMinutes: number;
19
- successRate: number;
20
14
  completedCount: number;
21
- failedCount: number;
22
- noAnswerCount: number;
23
15
  busyCount: number;
24
16
  };
25
17
  export type DashboardVisualData = {
26
18
  volumeData: DashboardDailyTrendMetric[];
27
- heatmap: Record<string, DashboardHeatmapMetric[]>;
28
- callLengthBuckets: DashboardDurationSegments;
19
+ volumeGranularity: DashboardVolumeGranularity;
29
20
  };
30
21
  export type DashboardReportQuery = {
31
22
  clientId: string;
32
23
  startDate: string;
33
24
  endDate: string;
25
+ granularity?: DashboardVolumeGranularity;
34
26
  };
35
27
  export type DashboardReportResponse = {
36
28
  kpis: DashboardSummaryMetrics;
37
29
  charts: DashboardVisualData;
38
30
  };
39
31
  type RawKpiResult = {
40
- totalCalls: number;
41
- totalDuration: number | null;
42
32
  completedCount: number;
43
- failedCount: number;
44
- noAnswerCount: number;
45
33
  busyCount: number;
34
+ answeredDuration: number | null;
46
35
  };
47
- export type RawDailyAggregationResult = {
36
+ export type RawVolumeAggregationResult = {
48
37
  _id: string;
49
- count: number;
50
38
  completed: number;
51
39
  };
52
- export type RawHourlyAggregationResult = {
53
- _id: {
54
- day: string;
55
- hour: number;
56
- };
57
- count: number;
58
- };
59
40
  export interface DashboardAggregationResult {
60
41
  kpis: RawKpiResult[];
61
- dailyData: RawDailyAggregationResult[];
62
- hourlyData: RawHourlyAggregationResult[];
63
- callLengthBuckets: DashboardDurationSegments[];
42
+ volumeData: RawVolumeAggregationResult[];
64
43
  }
65
44
  export {};
66
45
  //# sourceMappingURL=calls.dashboard.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"calls.dashboard.types.d.ts","sourceRoot":"","sources":["../../../../src/talkpilot/calls/dashboard/calls.dashboard.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,yBAAyB,EAAE,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC;IAClD,iBAAiB,EAAE,yBAAyB,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,uBAAuB,CAAC;IAC9B,MAAM,EAAE,mBAAmB,CAAC;CAC7B,CAAC;AACF,KAAK,YAAY,GAAG;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,GAAG,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,SAAS,EAAE,yBAAyB,EAAE,CAAC;IACvC,UAAU,EAAE,0BAA0B,EAAE,CAAC;IACzC,iBAAiB,EAAE,yBAAyB,EAAE,CAAC;CAChD"}
1
+ {"version":3,"file":"calls.dashboard.types.d.ts","sourceRoot":"","sources":["../../../../src/talkpilot/calls/dashboard/calls.dashboard.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAClC,MAAM,GACN,KAAK,GACL,MAAM,GACN,OAAO,GACP,SAAS,GACT,MAAM,CAAC;AAEX,MAAM,MAAM,uBAAuB,GAAG;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,yBAAyB,EAAE,CAAC;IACxC,iBAAiB,EAAE,0BAA0B,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,0BAA0B,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,uBAAuB,CAAC;IAC9B,MAAM,EAAE,mBAAmB,CAAC;CAC7B,CAAC;AACF,KAAK,YAAY,GAAG;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,UAAU,EAAE,0BAA0B,EAAE,CAAC;CAC1C"}
@@ -1,7 +1,4 @@
1
- export * from "./calls.constants";
2
1
  export * from "./calls.types";
3
2
  export * from "./calls.getters";
4
- export * from "./calls.statistics.types";
5
- export * from "./calls.statistics.getters";
6
3
  export * from "./dashboard/calls.dashboard";
7
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/calls/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/calls/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC"}
@@ -14,10 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./calls.constants"), exports);
18
17
  __exportStar(require("./calls.types"), exports);
19
18
  __exportStar(require("./calls.getters"), exports);
20
- __exportStar(require("./calls.statistics.types"), exports);
21
- __exportStar(require("./calls.statistics.getters"), exports);
22
19
  __exportStar(require("./dashboard/calls.dashboard"), exports);
23
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/talkpilot/calls/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,gDAA8B;AAC9B,kDAAgC;AAChC,2DAAyC;AACzC,6DAA2C;AAC3C,8DAA4C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/talkpilot/calls/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,kDAAgC;AAChC,8DAA4C"}
@@ -1 +1 @@
1
- {"version":3,"file":"db-utils.d.ts","sourceRoot":"","sources":["../../src/test-utils/db-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,EAAE,EAAE,MAAM,SAAS,CAAC;AAM1C,wBAAsB,UAAU,IAAI,OAAO,CAAC,EAAE,CAAC,CAW9C;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAGjD"}
1
+ {"version":3,"file":"db-utils.d.ts","sourceRoot":"","sources":["../../src/test-utils/db-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,EAAE,EAAE,MAAM,SAAS,CAAC;AAM1C,wBAAsB,UAAU,IAAI,OAAO,CAAC,EAAE,CAAC,CAa9C;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAGjD"}
@@ -15,8 +15,10 @@ async function initTestDb() {
15
15
  await client.connect();
16
16
  const talkpilotDb = client.db();
17
17
  const municipalDb = client.db("municipal-data");
18
+ const websitalkDb = client.db("website-talk");
18
19
  (0, index_1.setDb)(talkpilotDb);
19
20
  (0, index_1.setMunicipalDataDb)(municipalDb);
21
+ (0, index_1.setWebsitalkDb)(websitalkDb);
20
22
  return talkpilotDb;
21
23
  }
22
24
  async function closeTestDb() {
@@ -1 +1 @@
1
- {"version":3,"file":"db-utils.js","sourceRoot":"","sources":["../../src/test-utils/db-utils.ts"],"names":[],"mappings":";;AAOA,gCAWC;AAED,kCAGC;AAvBD,iEAA0D;AAC1D,qCAA0C;AAC1C,oCAAqD;AAErD,IAAI,WAA8B,CAAC;AACnC,IAAI,MAAmB,CAAC;AAEjB,KAAK,UAAU,UAAU;IAC9B,WAAW,GAAG,MAAM,yCAAiB,CAAC,MAAM,CAAC;QAC3C,QAAQ,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE;KAC9B,CAAC,CAAC;IACH,MAAM,GAAG,IAAI,qBAAW,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;IACvB,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC;IAChC,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAChD,IAAA,aAAK,EAAC,WAAW,CAAC,CAAC;IACnB,IAAA,0BAAkB,EAAC,WAAW,CAAC,CAAC;IAChC,OAAO,WAAW,CAAC;AACrB,CAAC;AAEM,KAAK,UAAU,WAAW;IAC/B,IAAI,MAAM;QAAE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACjC,IAAI,WAAW;QAAE,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"db-utils.js","sourceRoot":"","sources":["../../src/test-utils/db-utils.ts"],"names":[],"mappings":";;AAOA,gCAaC;AAED,kCAGC;AAzBD,iEAA0D;AAC1D,qCAA0C;AAC1C,oCAAqE;AAErE,IAAI,WAA8B,CAAC;AACnC,IAAI,MAAmB,CAAC;AAEjB,KAAK,UAAU,UAAU;IAC9B,WAAW,GAAG,MAAM,yCAAiB,CAAC,MAAM,CAAC;QAC3C,QAAQ,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE;KAC9B,CAAC,CAAC;IACH,MAAM,GAAG,IAAI,qBAAW,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;IACvB,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC;IAChC,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC;IAC9C,IAAA,aAAK,EAAC,WAAW,CAAC,CAAC;IACnB,IAAA,0BAAkB,EAAC,WAAW,CAAC,CAAC;IAChC,IAAA,sBAAc,EAAC,WAAW,CAAC,CAAC;IAC5B,OAAO,WAAW,CAAC;AACrB,CAAC;AAEM,KAAK,UAAU,WAAW;IAC/B,IAAI,MAAM;QAAE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACjC,IAAI,WAAW;QAAE,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;AAC5C,CAAC"}
@@ -10,4 +10,5 @@ export * from "./municipal/cities";
10
10
  export * from "./municipal/departmentsSubjects";
11
11
  export * from "./municipal/streets";
12
12
  export * from "./municipal/tickets";
13
+ export * from "./websitalk/scans";
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/test-utils/factories/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/test-utils/factories/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
@@ -26,4 +26,5 @@ __exportStar(require("./municipal/cities"), exports);
26
26
  __exportStar(require("./municipal/departmentsSubjects"), exports);
27
27
  __exportStar(require("./municipal/streets"), exports);
28
28
  __exportStar(require("./municipal/tickets"), exports);
29
+ __exportStar(require("./websitalk/scans"), exports);
29
30
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/test-utils/factories/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,oDAAkC;AAClC,iEAA+C;AAC/C,4DAA0C;AAC1C,oDAAkC;AAClC,qDAAmC;AACnC,4DAA0C;AAC1C,uDAAqC;AACrC,qDAAmC;AACnC,kEAAgD;AAChD,sDAAoC;AACpC,sDAAoC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/test-utils/factories/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,oDAAkC;AAClC,iEAA+C;AAC/C,4DAA0C;AAC1C,oDAAkC;AAClC,qDAAmC;AACnC,4DAA0C;AAC1C,uDAAqC;AACrC,qDAAmC;AACnC,kEAAgD;AAChD,sDAAoC;AACpC,sDAAoC;AACpC,oDAAkC"}
@@ -0,0 +1,5 @@
1
+ import { Factory } from "fishery";
2
+ import type { Scan } from "../../../websitalk";
3
+ export declare const scanFactory: Factory<Scan, any, Scan, import("fishery").DeepPartialObject<Scan>>;
4
+ export declare function createScanFixture(overrides?: Partial<Scan>): Scan;
5
+ //# sourceMappingURL=scans.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scans.d.ts","sourceRoot":"","sources":["../../../../src/test-utils/factories/websitalk/scans.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE/C,eAAO,MAAM,WAAW,qEAcrB,CAAC;AAEJ,wBAAgB,iBAAiB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAEjE"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.scanFactory = void 0;
4
+ exports.createScanFixture = createScanFixture;
5
+ const fishery_1 = require("fishery");
6
+ const faker_1 = require("@faker-js/faker");
7
+ exports.scanFactory = fishery_1.Factory.define(() => ({
8
+ clientId: faker_1.faker.string.uuid(),
9
+ baseUrl: faker_1.faker.internet.url(),
10
+ status: "CHECKING",
11
+ activeTasksCount: 0,
12
+ pagesScanned: 0,
13
+ pagesSkipped: 0,
14
+ skipped: [],
15
+ siteChrome: {
16
+ url: faker_1.faker.internet.url(),
17
+ sourceType: "site_chrome",
18
+ },
19
+ createdAt: new Date(),
20
+ updatedAt: new Date(),
21
+ }));
22
+ function createScanFixture(overrides) {
23
+ return exports.scanFactory.build(overrides);
24
+ }
25
+ //# sourceMappingURL=scans.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scans.js","sourceRoot":"","sources":["../../../../src/test-utils/factories/websitalk/scans.ts"],"names":[],"mappings":";;;AAoBA,8CAEC;AAtBD,qCAAkC;AAClC,2CAAwC;AAG3B,QAAA,WAAW,GAAG,iBAAO,CAAC,MAAM,CAAO,GAAG,EAAE,CAAC,CAAC;IACrD,QAAQ,EAAE,aAAK,CAAC,MAAM,CAAC,IAAI,EAAE;IAC7B,OAAO,EAAE,aAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;IAC7B,MAAM,EAAE,UAAU;IAClB,gBAAgB,EAAE,CAAC;IACnB,YAAY,EAAE,CAAC;IACf,YAAY,EAAE,CAAC;IACf,OAAO,EAAE,EAAE;IACX,UAAU,EAAE;QACV,GAAG,EAAE,aAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;QACzB,UAAU,EAAE,aAAa;KAC1B;IACD,SAAS,EAAE,IAAI,IAAI,EAAE;IACrB,SAAS,EAAE,IAAI,IAAI,EAAE;CACtB,CAAC,CAAC,CAAC;AAEJ,SAAgB,iBAAiB,CAAC,SAAyB;IACzD,OAAO,mBAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Db, ObjectId as MongoObjectId } from "mongodb";
2
+ export * from "./scans";
3
+ export { websitalkMongodbClient } from "./mongodb-client";
4
+ export declare const setDb: (d: Db) => void;
5
+ export declare const getDb: () => Db;
6
+ export declare const ObjectId: typeof MongoObjectId;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/websitalk/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,SAAS,CAAC;AAExD,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,eAAO,MAAM,KAAK,GAAI,GAAG,EAAE,SAE1B,CAAC;AAEF,eAAO,MAAM,KAAK,QAAO,EAGxB,CAAC;AACF,eAAO,MAAM,QAAQ,sBAAgB,CAAC"}
@@ -0,0 +1,34 @@
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
+ exports.ObjectId = exports.getDb = exports.setDb = exports.websitalkMongodbClient = void 0;
18
+ const mongodb_1 = require("mongodb");
19
+ __exportStar(require("./scans"), exports);
20
+ var mongodb_client_1 = require("./mongodb-client");
21
+ Object.defineProperty(exports, "websitalkMongodbClient", { enumerable: true, get: function () { return mongodb_client_1.websitalkMongodbClient; } });
22
+ let db;
23
+ const setDb = (d) => {
24
+ db = d;
25
+ };
26
+ exports.setDb = setDb;
27
+ const getDb = () => {
28
+ if (!db)
29
+ throw new Error("Website Talk DB not initialised");
30
+ return db;
31
+ };
32
+ exports.getDb = getDb;
33
+ exports.ObjectId = mongodb_1.ObjectId;
34
+ //# sourceMappingURL=index.js.map