@talkpilot/core-db 1.3.0 → 1.3.1

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 (101) hide show
  1. package/README.md +0 -30
  2. package/dist/municipal/tickets/index.d.ts +1 -2
  3. package/dist/municipal/tickets/index.d.ts.map +1 -1
  4. package/dist/municipal/tickets/index.js +0 -1
  5. package/dist/municipal/tickets/index.js.map +1 -1
  6. package/dist/municipal/tickets/tickets.getters.d.ts +11 -0
  7. package/dist/municipal/tickets/tickets.getters.d.ts.map +1 -1
  8. package/dist/municipal/tickets/tickets.getters.js +128 -0
  9. package/dist/municipal/tickets/tickets.getters.js.map +1 -1
  10. package/dist/municipal/tickets/tickets.types.d.ts +5 -10
  11. package/dist/municipal/tickets/tickets.types.d.ts.map +1 -1
  12. package/dist/talkpilot/calls/calls.types.d.ts +2 -1
  13. package/dist/talkpilot/calls/calls.types.d.ts.map +1 -1
  14. package/dist/talkpilot/calls/calls.types.js +3 -0
  15. package/dist/talkpilot/calls/calls.types.js.map +1 -1
  16. package/dist/talkpilot/calls/dashboard/calls.dashboard.d.ts +1 -33
  17. package/dist/talkpilot/calls/dashboard/calls.dashboard.d.ts.map +1 -1
  18. package/dist/talkpilot/calls/dashboard/calls.dashboard.js +146 -131
  19. package/dist/talkpilot/calls/dashboard/calls.dashboard.js.map +1 -1
  20. package/dist/talkpilot/calls/dashboard/calls.dashboard.types.d.ts +6 -27
  21. package/dist/talkpilot/calls/dashboard/calls.dashboard.types.d.ts.map +1 -1
  22. package/dist/talkpilot/calls/index.d.ts +0 -3
  23. package/dist/talkpilot/calls/index.d.ts.map +1 -1
  24. package/dist/talkpilot/calls/index.js +0 -3
  25. package/dist/talkpilot/calls/index.js.map +1 -1
  26. package/package.json +1 -1
  27. package/src/municipal/tickets/__tests__/tickets.getters.spec.ts +37 -1
  28. package/src/municipal/tickets/index.ts +1 -2
  29. package/src/municipal/tickets/tickets.getters.ts +140 -0
  30. package/src/municipal/tickets/tickets.types.ts +9 -14
  31. package/src/talkpilot/calls/__tests__/calls.dashboard.spec.ts +111 -8
  32. package/src/talkpilot/calls/calls.types.ts +2 -4
  33. package/src/talkpilot/calls/dashboard/calls.dashboard.ts +197 -148
  34. package/src/talkpilot/calls/dashboard/calls.dashboard.types.ts +12 -25
  35. package/src/talkpilot/calls/index.ts +0 -3
  36. package/src/talkpilot/clientsConfig/__tests__/clientsConfig.spec.ts +0 -7
  37. package/dist/municipal/tickets/tickets.constants.d.ts +0 -7
  38. package/dist/municipal/tickets/tickets.constants.d.ts.map +0 -1
  39. package/dist/municipal/tickets/tickets.constants.js +0 -10
  40. package/dist/municipal/tickets/tickets.constants.js.map +0 -1
  41. package/dist/municipal/tickets/tickets.deprecated.getters.d.ts +0 -12
  42. package/dist/municipal/tickets/tickets.deprecated.getters.d.ts.map +0 -1
  43. package/dist/municipal/tickets/tickets.deprecated.getters.js +0 -131
  44. package/dist/municipal/tickets/tickets.deprecated.getters.js.map +0 -1
  45. package/dist/municipal/tickets/tickets.statistics.aggregation.d.ts +0 -45
  46. package/dist/municipal/tickets/tickets.statistics.aggregation.d.ts.map +0 -1
  47. package/dist/municipal/tickets/tickets.statistics.aggregation.js +0 -98
  48. package/dist/municipal/tickets/tickets.statistics.aggregation.js.map +0 -1
  49. package/dist/municipal/tickets/tickets.statistics.dates.d.ts +0 -7
  50. package/dist/municipal/tickets/tickets.statistics.dates.d.ts.map +0 -1
  51. package/dist/municipal/tickets/tickets.statistics.dates.js +0 -40
  52. package/dist/municipal/tickets/tickets.statistics.dates.js.map +0 -1
  53. package/dist/municipal/tickets/tickets.statistics.getters.d.ts +0 -9
  54. package/dist/municipal/tickets/tickets.statistics.getters.d.ts.map +0 -1
  55. package/dist/municipal/tickets/tickets.statistics.getters.js +0 -55
  56. package/dist/municipal/tickets/tickets.statistics.getters.js.map +0 -1
  57. package/dist/municipal/tickets/tickets.statistics.pipeline.d.ts +0 -53
  58. package/dist/municipal/tickets/tickets.statistics.pipeline.d.ts.map +0 -1
  59. package/dist/municipal/tickets/tickets.statistics.pipeline.js +0 -112
  60. package/dist/municipal/tickets/tickets.statistics.pipeline.js.map +0 -1
  61. package/dist/municipal/tickets/tickets.statistics.utils.d.ts +0 -7
  62. package/dist/municipal/tickets/tickets.statistics.utils.d.ts.map +0 -1
  63. package/dist/municipal/tickets/tickets.statistics.utils.js +0 -40
  64. package/dist/municipal/tickets/tickets.statistics.utils.js.map +0 -1
  65. package/dist/talkpilot/calls/calls.constants.d.ts +0 -17
  66. package/dist/talkpilot/calls/calls.constants.d.ts.map +0 -1
  67. package/dist/talkpilot/calls/calls.constants.js +0 -20
  68. package/dist/talkpilot/calls/calls.constants.js.map +0 -1
  69. package/dist/talkpilot/calls/calls.statistics.getters.d.ts +0 -19
  70. package/dist/talkpilot/calls/calls.statistics.getters.d.ts.map +0 -1
  71. package/dist/talkpilot/calls/calls.statistics.getters.js +0 -375
  72. package/dist/talkpilot/calls/calls.statistics.getters.js.map +0 -1
  73. package/dist/talkpilot/calls/calls.statistics.ticketScope.d.ts +0 -12
  74. package/dist/talkpilot/calls/calls.statistics.ticketScope.d.ts.map +0 -1
  75. package/dist/talkpilot/calls/calls.statistics.ticketScope.js +0 -37
  76. package/dist/talkpilot/calls/calls.statistics.ticketScope.js.map +0 -1
  77. package/dist/talkpilot/calls/calls.statistics.tickets.d.ts +0 -17
  78. package/dist/talkpilot/calls/calls.statistics.tickets.d.ts.map +0 -1
  79. package/dist/talkpilot/calls/calls.statistics.tickets.js +0 -33
  80. package/dist/talkpilot/calls/calls.statistics.tickets.js.map +0 -1
  81. package/dist/talkpilot/calls/calls.statistics.types.d.ts +0 -39
  82. package/dist/talkpilot/calls/calls.statistics.types.d.ts.map +0 -1
  83. package/dist/talkpilot/calls/calls.statistics.types.js +0 -3
  84. package/dist/talkpilot/calls/calls.statistics.types.js.map +0 -1
  85. package/dist/utils/date.utils.d.ts +0 -49
  86. package/dist/utils/date.utils.d.ts.map +0 -1
  87. package/dist/utils/date.utils.js +0 -103
  88. package/dist/utils/date.utils.js.map +0 -1
  89. package/dist/utils/statistics.aggregation.d.ts +0 -20
  90. package/dist/utils/statistics.aggregation.d.ts.map +0 -1
  91. package/dist/utils/statistics.aggregation.js +0 -43
  92. package/dist/utils/statistics.aggregation.js.map +0 -1
  93. package/src/municipal/tickets/__tests__/tickets.statistics.spec.ts +0 -104
  94. package/src/municipal/tickets/tickets.constants.ts +0 -8
  95. package/src/municipal/tickets/tickets.statistics.aggregation.ts +0 -113
  96. package/src/municipal/tickets/tickets.statistics.getters.ts +0 -93
  97. package/src/talkpilot/calls/__tests__/calls.statistics.spec.ts +0 -281
  98. package/src/talkpilot/calls/calls.constants.ts +0 -20
  99. package/src/talkpilot/calls/calls.statistics.getters.ts +0 -525
  100. package/src/talkpilot/calls/calls.statistics.types.ts +0 -44
  101. package/src/utils/date.utils.ts +0 -116
@@ -1,131 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getTicketsCountByCityAndDateRange = getTicketsCountByCityAndDateRange;
4
- exports.getTicketsSubjectStats = getTicketsSubjectStats;
5
- const tickets_getters_1 = require("./tickets.getters");
6
- /**
7
- * @deprecated Use `findCallSidsWithTicketsByCity` with `ticketStatsDateScopeFromYmd` instead.
8
- * Will be removed in 3.0.0.
9
- */
10
- async function getTicketsCountByCityAndDateRange(cityName, startStr, endStr, timezone) {
11
- const doc = await (0, tickets_getters_1.getTicketsCollection)()
12
- .aggregate([
13
- { $match: { cityName, callSid: { $exists: true, $nin: [null, ""] } } },
14
- {
15
- $addFields: {
16
- dateLocal: {
17
- $dateToString: { format: "%Y-%m-%d", date: "$createdAt", timezone },
18
- },
19
- },
20
- },
21
- { $match: { dateLocal: { $gte: startStr, $lte: endStr } } },
22
- { $count: "n" },
23
- ])
24
- .next();
25
- return doc?.n ?? 0;
26
- }
27
- /**
28
- * @deprecated Use `findFilteredCallSids` + `findSubjectsByCallSids` instead.
29
- * Will be removed in 3.0.0.
30
- */
31
- async function getTicketsSubjectStats(cityName, startStr, endStr, timezone) {
32
- const rows = await (0, tickets_getters_1.getTicketsCollection)()
33
- .aggregate([
34
- { $match: { cityName } },
35
- {
36
- $addFields: {
37
- dateLocal: {
38
- $dateToString: { format: "%Y-%m-%d", date: "$createdAt", timezone },
39
- },
40
- },
41
- },
42
- { $match: { dateLocal: { $gte: startStr, $lte: endStr } } },
43
- {
44
- $addFields: {
45
- effectiveSubjectId: {
46
- $ifNull: [
47
- "$externalCallFields.event_subject_id",
48
- {
49
- $ifNull: [
50
- "$externalCallFields.event_sub_subject_id",
51
- "$externalCallFields.event_sub_subject_id2",
52
- ],
53
- },
54
- ],
55
- },
56
- },
57
- },
58
- {
59
- $lookup: {
60
- from: "departmentsSubjects",
61
- let: { sid: "$effectiveSubjectId", c: cityName },
62
- pipeline: [
63
- {
64
- $match: {
65
- $expr: {
66
- $and: [
67
- { $eq: ["$cityName", "$$c"] },
68
- {
69
- $or: [
70
- { $eq: ["$subject_id", { $ifNull: ["$$sid", ""] }] },
71
- {
72
- $eq: ["$sub_subject_id", { $ifNull: ["$$sid", ""] }],
73
- },
74
- {
75
- $eq: ["$sub_subject_id2", { $ifNull: ["$$sid", ""] }],
76
- },
77
- ],
78
- },
79
- ],
80
- },
81
- },
82
- },
83
- { $limit: 1 },
84
- ],
85
- as: "subj",
86
- },
87
- },
88
- {
89
- $addFields: {
90
- subject_id: {
91
- $cond: {
92
- if: { $gt: [{ $size: "$subj" }, 0] },
93
- then: {
94
- $ifNull: [{ $arrayElemAt: ["$subj.subject_id", 0] }, ""],
95
- },
96
- else: "",
97
- },
98
- },
99
- subject: {
100
- $cond: {
101
- if: { $gt: [{ $size: "$subj" }, 0] },
102
- then: {
103
- $ifNull: [
104
- { $arrayElemAt: ["$subj.subjectName", 0] },
105
- "Unclassified",
106
- ],
107
- },
108
- else: "Unclassified",
109
- },
110
- },
111
- },
112
- },
113
- {
114
- $group: {
115
- _id: "$subject_id",
116
- subject: { $first: "$subject" },
117
- count: { $sum: 1 },
118
- },
119
- },
120
- { $sort: { count: -1 } },
121
- ])
122
- .toArray();
123
- const total = rows.reduce((sum, row) => sum + row.count, 0);
124
- return rows.map((row) => ({
125
- subject_name: row.subject,
126
- subject_id: row._id,
127
- count: row.count,
128
- percentage: total > 0 ? Math.round((row.count / total) * 100) : 0,
129
- }));
130
- }
131
- //# sourceMappingURL=tickets.deprecated.getters.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tickets.deprecated.getters.js","sourceRoot":"","sources":["../../../src/municipal/tickets/tickets.deprecated.getters.ts"],"names":[],"mappings":"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"}
@@ -1,45 +0,0 @@
1
- import { CityName } from "../utils/types";
2
- import type { TicketStatsDateRange } from "./tickets.types";
3
- export declare const isDraftSubjectIdExpr: {
4
- $or: ({
5
- $eq: (string | {
6
- $type: string;
7
- })[];
8
- $regexMatch?: undefined;
9
- } | {
10
- $eq: (string | null)[];
11
- $regexMatch?: undefined;
12
- } | {
13
- $regexMatch: {
14
- input: {
15
- $ifNull: string[];
16
- };
17
- regex: RegExp;
18
- };
19
- $eq?: undefined;
20
- })[];
21
- };
22
- export declare const ticketsWithCallSidMatch: (cityName: CityName, dateRange: TicketStatsDateRange) => {
23
- createdAt: {
24
- $gte: Date;
25
- $lte: Date;
26
- };
27
- cityName: string;
28
- callSid: {
29
- $exists: boolean;
30
- $nin: (string | null)[];
31
- };
32
- };
33
- export declare const ticketsByCallSidsMatch: (cityName: CityName, callSids: string[], dateRange?: TicketStatsDateRange) => {
34
- createdAt?: {
35
- $gte: Date;
36
- $lte: Date;
37
- } | undefined;
38
- cityName: string;
39
- callSid: {
40
- $in: string[];
41
- };
42
- };
43
- export declare const subjectGroupStages: (cityName: CityName, limit?: number) => Record<string, unknown>[];
44
- export declare const runTicketStatsAggregate: <T>(pipeline: Record<string, unknown>[]) => Promise<T[]>;
45
- //# sourceMappingURL=tickets.statistics.aggregation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tickets.statistics.aggregation.d.ts","sourceRoot":"","sources":["../../../src/municipal/tickets/tickets.statistics.aggregation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAuD5D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;CAWhC,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,UAAU,QAAQ,EAClB,WAAW,oBAAoB;;;;;;;;;;CAK/B,CAAC;AAEH,eAAO,MAAM,sBAAsB,GACjC,UAAU,QAAQ,EAClB,UAAU,MAAM,EAAE,EAClB,YAAY,oBAAoB;;;;;;;;;CAKhC,CAAC;AAEH,eAAO,MAAM,kBAAkB,GAC7B,UAAU,QAAQ,EAClB,QAAQ,MAAM,KACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAUzB,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAU,CAAC,EAC7C,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAClC,OAAO,CAAC,CAAC,EAAE,CAKb,CAAC"}
@@ -1,98 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runTicketStatsAggregate = exports.subjectGroupStages = exports.ticketsByCallSidsMatch = exports.ticketsWithCallSidMatch = exports.isDraftSubjectIdExpr = void 0;
4
- const tickets_constants_1 = require("./tickets.constants");
5
- const tickets_getters_1 = require("./tickets.getters");
6
- const effectiveSubjectIdExpr = {
7
- $ifNull: [
8
- "$externalCallFields.event_subject_id",
9
- {
10
- $ifNull: [
11
- "$externalCallFields.event_sub_subject_id",
12
- "$externalCallFields.event_sub_subject_id2",
13
- ],
14
- },
15
- ],
16
- };
17
- const departmentsSubjectsLookup = (cityName) => ({
18
- $lookup: {
19
- from: "departmentsSubjects",
20
- let: { sid: "$effectiveSubjectId", c: cityName },
21
- pipeline: [
22
- {
23
- $match: {
24
- $expr: {
25
- $and: [
26
- { $eq: ["$cityName", "$$c"] },
27
- {
28
- $or: [
29
- { $eq: ["$subject_id", { $ifNull: ["$$sid", ""] }] },
30
- { $eq: ["$sub_subject_id", { $ifNull: ["$$sid", ""] }] },
31
- { $eq: ["$sub_subject_id2", { $ifNull: ["$$sid", ""] }] },
32
- ],
33
- },
34
- ],
35
- },
36
- },
37
- },
38
- { $limit: 1 },
39
- ],
40
- as: "subj",
41
- },
42
- });
43
- const subjectLabelExpr = {
44
- $cond: {
45
- if: { $gt: [{ $size: "$subj" }, 0] },
46
- then: {
47
- $ifNull: [{ $arrayElemAt: ["$subj.subjectName", 0] }, tickets_constants_1.UNCLASSIFIED],
48
- },
49
- else: tickets_constants_1.UNCLASSIFIED,
50
- },
51
- };
52
- const ticketDateMatch = (dateRange) => ({
53
- createdAt: { $gte: dateRange.from, $lte: dateRange.to },
54
- });
55
- exports.isDraftSubjectIdExpr = {
56
- $or: [
57
- { $eq: [{ $type: "$externalCallFields.event_subject_id" }, "missing"] },
58
- { $eq: ["$externalCallFields.event_subject_id", null] },
59
- {
60
- $regexMatch: {
61
- input: { $ifNull: ["$externalCallFields.event_subject_id", ""] },
62
- regex: /^\s*$/,
63
- },
64
- },
65
- ],
66
- };
67
- const ticketsWithCallSidMatch = (cityName, dateRange) => ({
68
- cityName,
69
- callSid: { $exists: true, $nin: [null, ""] },
70
- ...ticketDateMatch(dateRange),
71
- });
72
- exports.ticketsWithCallSidMatch = ticketsWithCallSidMatch;
73
- const ticketsByCallSidsMatch = (cityName, callSids, dateRange) => ({
74
- cityName,
75
- callSid: { $in: callSids },
76
- ...(dateRange ? ticketDateMatch(dateRange) : {}),
77
- });
78
- exports.ticketsByCallSidsMatch = ticketsByCallSidsMatch;
79
- const subjectGroupStages = (cityName, limit) => {
80
- const shouldLimit = typeof limit === "number" && limit > 0;
81
- return [
82
- { $addFields: { effectiveSubjectId: effectiveSubjectIdExpr } },
83
- departmentsSubjectsLookup(cityName),
84
- { $addFields: { subject: subjectLabelExpr } },
85
- { $group: { _id: "$subject", count: { $sum: 1 } } },
86
- { $sort: { count: -1 } },
87
- ...(shouldLimit ? [{ $limit: limit }] : []),
88
- ];
89
- };
90
- exports.subjectGroupStages = subjectGroupStages;
91
- const runTicketStatsAggregate = async (pipeline) => {
92
- const rows = await (0, tickets_getters_1.getTicketsCollection)()
93
- .aggregate(pipeline, { maxTimeMS: tickets_constants_1.STATS_MAX_TIME_MS })
94
- .toArray();
95
- return rows;
96
- };
97
- exports.runTicketStatsAggregate = runTicketStatsAggregate;
98
- //# sourceMappingURL=tickets.statistics.aggregation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tickets.statistics.aggregation.js","sourceRoot":"","sources":["../../../src/municipal/tickets/tickets.statistics.aggregation.ts"],"names":[],"mappings":";;;AACA,2DAAsE;AACtE,uDAAyD;AAGzD,MAAM,sBAAsB,GAAG;IAC7B,OAAO,EAAE;QACP,sCAAsC;QACtC;YACE,OAAO,EAAE;gBACP,0CAA0C;gBAC1C,2CAA2C;aAC5C;SACF;KACF;CACF,CAAC;AAEF,MAAM,yBAAyB,GAAG,CAAC,QAAkB,EAAE,EAAE,CAAC,CAAC;IACzD,OAAO,EAAE;QACP,IAAI,EAAE,qBAAqB;QAC3B,GAAG,EAAE,EAAE,GAAG,EAAE,qBAAqB,EAAE,CAAC,EAAE,QAAQ,EAAE;QAChD,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE;oBACN,KAAK,EAAE;wBACL,IAAI,EAAE;4BACJ,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE;4BAC7B;gCACE,GAAG,EAAE;oCACH,EAAE,GAAG,EAAE,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;oCACpD,EAAE,GAAG,EAAE,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;oCACxD,EAAE,GAAG,EAAE,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;iCAC1D;6BACF;yBACF;qBACF;iBACF;aACF;YACD,EAAE,MAAM,EAAE,CAAC,EAAE;SACd;QACD,EAAE,EAAE,MAAM;KACX;CACF,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG;IACvB,KAAK,EAAE;QACL,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE;QACpC,IAAI,EAAE;YACJ,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,EAAE,gCAAY,CAAC;SACpE;QACD,IAAI,EAAE,gCAAY;KACnB;CACF,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,SAA+B,EAAE,EAAE,CAAC,CAAC;IAC5D,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE;CACxD,CAAC,CAAC;AAEU,QAAA,oBAAoB,GAAG;IAClC,GAAG,EAAE;QACH,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,sCAAsC,EAAE,EAAE,SAAS,CAAC,EAAE;QACvE,EAAE,GAAG,EAAE,CAAC,sCAAsC,EAAE,IAAI,CAAC,EAAE;QACvD;YACE,WAAW,EAAE;gBACX,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,sCAAsC,EAAE,EAAE,CAAC,EAAE;gBAChE,KAAK,EAAE,OAAO;aACf;SACF;KACF;CACF,CAAC;AAEK,MAAM,uBAAuB,GAAG,CACrC,QAAkB,EAClB,SAA+B,EAC/B,EAAE,CAAC,CAAC;IACJ,QAAQ;IACR,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE;IAC5C,GAAG,eAAe,CAAC,SAAS,CAAC;CAC9B,CAAC,CAAC;AAPU,QAAA,uBAAuB,2BAOjC;AAEI,MAAM,sBAAsB,GAAG,CACpC,QAAkB,EAClB,QAAkB,EAClB,SAAgC,EAChC,EAAE,CAAC,CAAC;IACJ,QAAQ;IACR,OAAO,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE;IAC1B,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;CACjD,CAAC,CAAC;AARU,QAAA,sBAAsB,0BAQhC;AAEI,MAAM,kBAAkB,GAAG,CAChC,QAAkB,EAClB,KAAc,EACa,EAAE;IAC7B,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;IAC3D,OAAO;QACL,EAAE,UAAU,EAAE,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,EAAE;QAC9D,yBAAyB,CAAC,QAAQ,CAAC;QACnC,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE;QAC7C,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;QACnD,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;QACxB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC;AACJ,CAAC,CAAC;AAbW,QAAA,kBAAkB,sBAa7B;AAEK,MAAM,uBAAuB,GAAG,KAAK,EAC1C,QAAmC,EACrB,EAAE;IAChB,MAAM,IAAI,GAAG,MAAM,IAAA,sCAAoB,GAAE;SACtC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,qCAAiB,EAAE,CAAC;SACrD,OAAO,EAAE,CAAC;IACb,OAAO,IAAW,CAAC;AACrB,CAAC,CAAC;AAPW,QAAA,uBAAuB,2BAOlC"}
@@ -1,7 +0,0 @@
1
- import type { TicketStatsDateScope } from "./tickets.types";
2
- export declare const resolveTicketStatsDateRange: (dateScope?: TicketStatsDateScope) => {
3
- from: Date;
4
- to: Date;
5
- };
6
- export declare const ticketStatsDateScopeFromYmd: (startStr: string, endStr: string, timezone: string) => TicketStatsDateScope;
7
- //# sourceMappingURL=tickets.statistics.dates.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tickets.statistics.dates.d.ts","sourceRoot":"","sources":["../../../src/municipal/tickets/tickets.statistics.dates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAiC5D,eAAO,MAAM,2BAA2B,GACtC,YAAY,oBAAoB,KAC/B;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,IAAI,CAAA;CAKxB,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,UAAU,MAAM,EAChB,QAAQ,MAAM,EACd,UAAU,MAAM,KACf,oBAGD,CAAC"}
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ticketStatsDateScopeFromYmd = exports.resolveTicketStatsDateRange = void 0;
4
- const DEFAULT_LOOKBACK_DAYS = 30;
5
- const DAY_MS = 24 * 60 * 60 * 1000;
6
- const formatYmdInTz = (date, timezone) => new Intl.DateTimeFormat("en-CA", { timeZone: timezone }).format(date);
7
- const dateAtNoonUtc = (dateStr) => {
8
- const [y, m, d] = dateStr.split("-").map(Number);
9
- return new Date(Date.UTC(y, m - 1, d, 12, 0, 0));
10
- };
11
- const startOfCalendarDayInTz = (dateStr, timezone) => {
12
- const anchor = dateAtNoonUtc(dateStr).getTime();
13
- let low = anchor - 2 * DAY_MS;
14
- let high = anchor + DAY_MS;
15
- while (high - low > 1) {
16
- const mid = Math.floor((low + high) / 2);
17
- if (formatYmdInTz(new Date(mid), timezone) >= dateStr)
18
- high = mid;
19
- else
20
- low = mid;
21
- }
22
- return new Date(high);
23
- };
24
- const endOfCalendarDayInTz = (dateStr, timezone) => {
25
- const [y, m, d] = dateStr.split("-").map(Number);
26
- const nextDay = new Date(Date.UTC(y, m - 1, d + 1)).toISOString().slice(0, 10);
27
- return new Date(startOfCalendarDayInTz(nextDay, timezone).getTime() - 1);
28
- };
29
- const resolveTicketStatsDateRange = (dateScope) => {
30
- const to = dateScope?.to ?? new Date();
31
- const from = dateScope?.from ?? new Date(to.getTime() - DEFAULT_LOOKBACK_DAYS * DAY_MS);
32
- return { from, to };
33
- };
34
- exports.resolveTicketStatsDateRange = resolveTicketStatsDateRange;
35
- const ticketStatsDateScopeFromYmd = (startStr, endStr, timezone) => ({
36
- from: startOfCalendarDayInTz(startStr, timezone),
37
- to: endOfCalendarDayInTz(endStr, timezone),
38
- });
39
- exports.ticketStatsDateScopeFromYmd = ticketStatsDateScopeFromYmd;
40
- //# sourceMappingURL=tickets.statistics.dates.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tickets.statistics.dates.js","sourceRoot":"","sources":["../../../src/municipal/tickets/tickets.statistics.dates.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import { CityName } from "../utils/types";
2
- import type { SubjectItem, TicketStatsDateRange, TicketStatsDateScope } from "./tickets.types";
3
- export declare const resolveTicketStatsDateRange: (dateScope?: TicketStatsDateScope) => TicketStatsDateRange;
4
- export declare const ticketStatsDateScopeFromYmd: (startStr: string, endStr: string, timezone: string) => TicketStatsDateScope;
5
- export declare const findCallSidsWithTicketsByCity: (cityName: CityName, dateScope?: TicketStatsDateScope) => Promise<string[]>;
6
- export declare const findCallSidsWithDraftTicketsByCity: (cityName: CityName, dateScope?: TicketStatsDateScope) => Promise<string[]>;
7
- export declare const findSubjectsByCityAndDateRange: (cityName: CityName, dateScope?: TicketStatsDateScope, limit?: number) => Promise<SubjectItem[]>;
8
- export declare const findSubjectsByCallSids: (cityName: CityName, callSids: string[], limit?: number, dateScope?: TicketStatsDateScope) => Promise<SubjectItem[]>;
9
- //# sourceMappingURL=tickets.statistics.getters.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tickets.statistics.getters.d.ts","sourceRoot":"","sources":["../../../src/municipal/tickets/tickets.statistics.getters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAc1C,OAAO,KAAK,EACV,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,2BAA2B,GACtC,YAAY,oBAAoB,KAC/B,oBAKF,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,UAAU,MAAM,EAChB,QAAQ,MAAM,EACd,UAAU,MAAM,KACf,oBAGD,CAAC;AAEH,eAAO,MAAM,6BAA6B,GACxC,UAAU,QAAQ,EAClB,YAAY,oBAAoB,KAC/B,OAAO,CAAC,MAAM,EAAE,CAMlB,CAAC;AAEF,eAAO,MAAM,kCAAkC,GAC7C,UAAU,QAAQ,EAClB,YAAY,oBAAoB,KAC/B,OAAO,CAAC,MAAM,EAAE,CAOlB,CAAC;AAEF,eAAO,MAAM,8BAA8B,GACzC,UAAU,QAAQ,EAClB,YAAY,oBAAoB,EAChC,QAAQ,MAAM,KACb,OAAO,CAAC,WAAW,EAAE,CAMvB,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,UAAU,QAAQ,EAClB,UAAU,MAAM,EAAE,EAClB,QAAQ,MAAM,EACd,YAAY,oBAAoB,KAC/B,OAAO,CAAC,WAAW,EAAE,CAcvB,CAAC"}
@@ -1,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findSubjectsByCallSids = exports.findSubjectsByCityAndDateRange = exports.findCallSidsWithDraftTicketsByCity = exports.findCallSidsWithTicketsByCity = exports.ticketStatsDateScopeFromYmd = exports.resolveTicketStatsDateRange = void 0;
4
- const date_utils_1 = require("../../utils/date.utils");
5
- const tickets_constants_1 = require("./tickets.constants");
6
- const tickets_statistics_aggregation_1 = require("./tickets.statistics.aggregation");
7
- const resolveTicketStatsDateRange = (dateScope) => {
8
- const to = dateScope?.to ?? new Date();
9
- const from = dateScope?.from ?? new Date(to.getTime() - tickets_constants_1.DEFAULT_LOOKBACK_DAYS * date_utils_1.DAY_MS);
10
- return { from, to };
11
- };
12
- exports.resolveTicketStatsDateRange = resolveTicketStatsDateRange;
13
- const ticketStatsDateScopeFromYmd = (startStr, endStr, timezone) => ({
14
- from: (0, date_utils_1.startOfCalendarDayInTz)(startStr, timezone),
15
- to: (0, date_utils_1.endOfCalendarDayInTz)(endStr, timezone),
16
- });
17
- exports.ticketStatsDateScopeFromYmd = ticketStatsDateScopeFromYmd;
18
- const findCallSidsWithTicketsByCity = async (cityName, dateScope) => {
19
- const rows = await (0, tickets_statistics_aggregation_1.runTicketStatsAggregate)([
20
- { $match: (0, tickets_statistics_aggregation_1.ticketsWithCallSidMatch)(cityName, (0, exports.resolveTicketStatsDateRange)(dateScope)) },
21
- { $group: { _id: "$callSid" } },
22
- ]);
23
- return rows.map((r) => String(r._id)).filter(Boolean);
24
- };
25
- exports.findCallSidsWithTicketsByCity = findCallSidsWithTicketsByCity;
26
- const findCallSidsWithDraftTicketsByCity = async (cityName, dateScope) => {
27
- const rows = await (0, tickets_statistics_aggregation_1.runTicketStatsAggregate)([
28
- { $match: (0, tickets_statistics_aggregation_1.ticketsWithCallSidMatch)(cityName, (0, exports.resolveTicketStatsDateRange)(dateScope)) },
29
- { $match: { $expr: tickets_statistics_aggregation_1.isDraftSubjectIdExpr } },
30
- { $group: { _id: "$callSid" } },
31
- ]);
32
- return rows.map((r) => String(r._id)).filter(Boolean);
33
- };
34
- exports.findCallSidsWithDraftTicketsByCity = findCallSidsWithDraftTicketsByCity;
35
- const findSubjectsByCityAndDateRange = async (cityName, dateScope, limit) => {
36
- const rows = await (0, tickets_statistics_aggregation_1.runTicketStatsAggregate)([
37
- { $match: (0, tickets_statistics_aggregation_1.ticketsWithCallSidMatch)(cityName, (0, exports.resolveTicketStatsDateRange)(dateScope)) },
38
- ...(0, tickets_statistics_aggregation_1.subjectGroupStages)(cityName, limit),
39
- ]);
40
- return rows.map((r) => ({ subject: String(r._id), count: r.count }));
41
- };
42
- exports.findSubjectsByCityAndDateRange = findSubjectsByCityAndDateRange;
43
- const findSubjectsByCallSids = async (cityName, callSids, limit, dateScope) => {
44
- if (!callSids.length)
45
- return [];
46
- const rows = await (0, tickets_statistics_aggregation_1.runTicketStatsAggregate)([
47
- {
48
- $match: (0, tickets_statistics_aggregation_1.ticketsByCallSidsMatch)(cityName, callSids, dateScope ? (0, exports.resolveTicketStatsDateRange)(dateScope) : undefined),
49
- },
50
- ...(0, tickets_statistics_aggregation_1.subjectGroupStages)(cityName, limit),
51
- ]);
52
- return rows.map((r) => ({ subject: String(r._id), count: r.count }));
53
- };
54
- exports.findSubjectsByCallSids = findSubjectsByCallSids;
55
- //# sourceMappingURL=tickets.statistics.getters.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tickets.statistics.getters.js","sourceRoot":"","sources":["../../../src/municipal/tickets/tickets.statistics.getters.ts"],"names":[],"mappings":"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"}
@@ -1,53 +0,0 @@
1
- import { CityName } from "../utils/types";
2
- import type { SubjectItem, TicketStatsDateScope } from "./tickets.types";
3
- export declare const isDraftSubjectIdExpr: {
4
- $or: ({
5
- $eq: (string | {
6
- $type: string;
7
- })[];
8
- $regexMatch?: undefined;
9
- } | {
10
- $eq: (string | null)[];
11
- $regexMatch?: undefined;
12
- } | {
13
- $regexMatch: {
14
- input: {
15
- $ifNull: string[];
16
- };
17
- regex: RegExp;
18
- };
19
- $eq?: undefined;
20
- })[];
21
- };
22
- export declare const ticketsWithCallSidMatch: (cityName: CityName, dateScope?: TicketStatsDateScope) => {
23
- createdAt: {
24
- $gte: Date;
25
- $lte: Date;
26
- };
27
- cityName: string;
28
- callSid: {
29
- $exists: boolean;
30
- $nin: (string | null)[];
31
- };
32
- };
33
- export declare const ticketsByCallSidsMatch: (cityName: CityName, callSids: string[], dateScope?: TicketStatsDateScope) => {
34
- createdAt?: {
35
- $gte: Date;
36
- $lte: Date;
37
- } | undefined;
38
- cityName: string;
39
- callSid: {
40
- $in: string[];
41
- };
42
- };
43
- export declare const callSidGroupStages: () => Record<string, unknown>[];
44
- export declare const subjectGroupStages: (cityName: CityName, limit?: number) => Record<string, unknown>[];
45
- export declare const runTicketStatsAggregate: <T>(pipeline: Record<string, unknown>[]) => Promise<T[]>;
46
- export declare const mapCallSidRows: (rows: {
47
- _id: unknown;
48
- }[]) => string[];
49
- export declare const mapSubjectRows: (rows: {
50
- _id: unknown;
51
- count: number;
52
- }[]) => SubjectItem[];
53
- //# sourceMappingURL=tickets.statistics.pipeline.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tickets.statistics.pipeline.d.ts","sourceRoot":"","sources":["../../../src/municipal/tickets/tickets.statistics.pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAiBzE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;CAWhC,CAAC;AA4CF,eAAO,MAAM,uBAAuB,GAClC,UAAU,QAAQ,EAClB,YAAY,oBAAoB;;;;;;;;;;CAKhC,CAAC;AAEH,eAAO,MAAM,sBAAsB,GACjC,UAAU,QAAQ,EAClB,UAAU,MAAM,EAAE,EAClB,YAAY,oBAAoB;;;;;;;;;CAKhC,CAAC;AAEH,eAAO,MAAM,kBAAkB,QAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAE5D,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,UAAU,QAAQ,EAClB,QAAQ,MAAM,KACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAUzB,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAU,CAAC,EAC7C,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAClC,OAAO,CAAC,CAAC,EAAE,CAKb,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,MAAM;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,EAAE,KAAG,MAAM,EAChB,CAAC;AAEjD,eAAO,MAAM,cAAc,GAAI,MAAM;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,KAAG,WAAW,EAMjF,CAAC"}
@@ -1,112 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mapSubjectRows = exports.mapCallSidRows = exports.runTicketStatsAggregate = exports.subjectGroupStages = exports.callSidGroupStages = exports.ticketsByCallSidsMatch = exports.ticketsWithCallSidMatch = exports.isDraftSubjectIdExpr = void 0;
4
- const tickets_getters_1 = require("./tickets.getters");
5
- const tickets_statistics_utils_1 = require("./tickets.statistics.utils");
6
- const UNCLASSIFIED = "ללא מחלקה";
7
- const STATS_MAX_TIME_MS = 30_000;
8
- const effectiveSubjectIdExpr = {
9
- $ifNull: [
10
- "$externalCallFields.event_subject_id",
11
- {
12
- $ifNull: [
13
- "$externalCallFields.event_sub_subject_id",
14
- "$externalCallFields.event_sub_subject_id2",
15
- ],
16
- },
17
- ],
18
- };
19
- exports.isDraftSubjectIdExpr = {
20
- $or: [
21
- { $eq: [{ $type: "$externalCallFields.event_subject_id" }, "missing"] },
22
- { $eq: ["$externalCallFields.event_subject_id", null] },
23
- {
24
- $regexMatch: {
25
- input: { $ifNull: ["$externalCallFields.event_subject_id", ""] },
26
- regex: /^\s*$/,
27
- },
28
- },
29
- ],
30
- };
31
- const departmentsSubjectsLookup = (cityName) => ({
32
- $lookup: {
33
- from: "departmentsSubjects",
34
- let: { sid: "$effectiveSubjectId", c: cityName },
35
- pipeline: [
36
- {
37
- $match: {
38
- $expr: {
39
- $and: [
40
- { $eq: ["$cityName", "$$c"] },
41
- {
42
- $or: [
43
- { $eq: ["$subject_id", { $ifNull: ["$$sid", ""] }] },
44
- { $eq: ["$sub_subject_id", { $ifNull: ["$$sid", ""] }] },
45
- { $eq: ["$sub_subject_id2", { $ifNull: ["$$sid", ""] }] },
46
- ],
47
- },
48
- ],
49
- },
50
- },
51
- },
52
- { $limit: 1 },
53
- ],
54
- as: "subj",
55
- },
56
- });
57
- const subjectLabelExpr = {
58
- $cond: {
59
- if: { $gt: [{ $size: "$subj" }, 0] },
60
- then: {
61
- $ifNull: [{ $arrayElemAt: ["$subj.subjectName", 0] }, UNCLASSIFIED],
62
- },
63
- else: UNCLASSIFIED,
64
- },
65
- };
66
- const ticketDateMatchStage = (dateScope) => {
67
- const { from, to } = (0, tickets_statistics_utils_1.resolveTicketStatsDateRange)(dateScope);
68
- return { createdAt: { $gte: from, $lte: to } };
69
- };
70
- const ticketsWithCallSidMatch = (cityName, dateScope) => ({
71
- cityName,
72
- callSid: { $exists: true, $nin: [null, ""] },
73
- ...ticketDateMatchStage(dateScope),
74
- });
75
- exports.ticketsWithCallSidMatch = ticketsWithCallSidMatch;
76
- const ticketsByCallSidsMatch = (cityName, callSids, dateScope) => ({
77
- cityName,
78
- callSid: { $in: callSids },
79
- ...(dateScope ? ticketDateMatchStage(dateScope) : {}),
80
- });
81
- exports.ticketsByCallSidsMatch = ticketsByCallSidsMatch;
82
- const callSidGroupStages = () => [
83
- { $group: { _id: "$callSid" } },
84
- ];
85
- exports.callSidGroupStages = callSidGroupStages;
86
- const subjectGroupStages = (cityName, limit) => {
87
- const shouldLimit = typeof limit === "number" && limit > 0;
88
- return [
89
- { $addFields: { effectiveSubjectId: effectiveSubjectIdExpr } },
90
- departmentsSubjectsLookup(cityName),
91
- { $addFields: { subject: subjectLabelExpr } },
92
- { $group: { _id: "$subject", count: { $sum: 1 } } },
93
- { $sort: { count: -1 } },
94
- ...(shouldLimit ? [{ $limit: limit }] : []),
95
- ];
96
- };
97
- exports.subjectGroupStages = subjectGroupStages;
98
- const runTicketStatsAggregate = async (pipeline) => {
99
- const rows = await (0, tickets_getters_1.getTicketsCollection)()
100
- .aggregate(pipeline, { maxTimeMS: STATS_MAX_TIME_MS })
101
- .toArray();
102
- return rows;
103
- };
104
- exports.runTicketStatsAggregate = runTicketStatsAggregate;
105
- const mapCallSidRows = (rows) => rows.map((r) => String(r._id)).filter(Boolean);
106
- exports.mapCallSidRows = mapCallSidRows;
107
- const mapSubjectRows = (rows) => rows.map((r) => ({
108
- subject: String(r._id),
109
- count: r.count,
110
- }));
111
- exports.mapSubjectRows = mapSubjectRows;
112
- //# sourceMappingURL=tickets.statistics.pipeline.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tickets.statistics.pipeline.js","sourceRoot":"","sources":["../../../src/municipal/tickets/tickets.statistics.pipeline.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import type { TicketStatsDateScope } from "./tickets.types";
2
- export declare const resolveTicketStatsDateRange: (dateScope?: TicketStatsDateScope) => {
3
- from: Date;
4
- to: Date;
5
- };
6
- export declare const ticketStatsDateScopeFromYmd: (startStr: string, endStr: string, timezone: string) => TicketStatsDateScope;
7
- //# sourceMappingURL=tickets.statistics.utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tickets.statistics.utils.d.ts","sourceRoot":"","sources":["../../../src/municipal/tickets/tickets.statistics.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAiC5D,eAAO,MAAM,2BAA2B,GACtC,YAAY,oBAAoB,KAC/B;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,IAAI,CAAA;CAKxB,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,UAAU,MAAM,EAChB,QAAQ,MAAM,EACd,UAAU,MAAM,KACf,oBAGD,CAAC"}