@talkpilot/core-db 1.3.7 → 1.3.9

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 (199) hide show
  1. package/.claude/settings.local.json +11 -0
  2. package/.cursor/rules/development.mdc +65 -65
  3. package/DEVELOPMENT.md +141 -141
  4. package/README.md +257 -190
  5. package/README_OLD.md +160 -160
  6. package/dist/municipal/tickets/tickets.deprecated.getters.d.ts +12 -0
  7. package/dist/municipal/tickets/tickets.deprecated.getters.d.ts.map +1 -0
  8. package/dist/municipal/tickets/tickets.deprecated.getters.js +131 -0
  9. package/dist/municipal/tickets/tickets.deprecated.getters.js.map +1 -0
  10. package/dist/municipal/tickets/tickets.statistics.dates.d.ts +7 -0
  11. package/dist/municipal/tickets/tickets.statistics.dates.d.ts.map +1 -0
  12. package/dist/municipal/tickets/tickets.statistics.dates.js +40 -0
  13. package/dist/municipal/tickets/tickets.statistics.dates.js.map +1 -0
  14. package/dist/municipal/tickets/tickets.statistics.getters.d.ts +4 -0
  15. package/dist/municipal/tickets/tickets.statistics.getters.d.ts.map +1 -1
  16. package/dist/municipal/tickets/tickets.statistics.getters.js +30 -3
  17. package/dist/municipal/tickets/tickets.statistics.getters.js.map +1 -1
  18. package/dist/municipal/tickets/tickets.statistics.pipeline.d.ts +53 -0
  19. package/dist/municipal/tickets/tickets.statistics.pipeline.d.ts.map +1 -0
  20. package/dist/municipal/tickets/tickets.statistics.pipeline.js +112 -0
  21. package/dist/municipal/tickets/tickets.statistics.pipeline.js.map +1 -0
  22. package/dist/municipal/tickets/tickets.statistics.utils.d.ts +7 -0
  23. package/dist/municipal/tickets/tickets.statistics.utils.d.ts.map +1 -0
  24. package/dist/municipal/tickets/tickets.statistics.utils.js +40 -0
  25. package/dist/municipal/tickets/tickets.statistics.utils.js.map +1 -0
  26. package/dist/talkpilot/calls/calls.statistics.getters.d.ts.map +1 -1
  27. package/dist/talkpilot/calls/calls.statistics.getters.js +18 -18
  28. package/dist/talkpilot/calls/calls.statistics.getters.js.map +1 -1
  29. package/dist/talkpilot/calls/calls.statistics.ticketScope.d.ts +12 -0
  30. package/dist/talkpilot/calls/calls.statistics.ticketScope.d.ts.map +1 -0
  31. package/dist/talkpilot/calls/calls.statistics.ticketScope.js +37 -0
  32. package/dist/talkpilot/calls/calls.statistics.ticketScope.js.map +1 -0
  33. package/dist/talkpilot/calls/calls.statistics.tickets.d.ts +17 -0
  34. package/dist/talkpilot/calls/calls.statistics.tickets.d.ts.map +1 -0
  35. package/dist/talkpilot/calls/calls.statistics.tickets.js +33 -0
  36. package/dist/talkpilot/calls/calls.statistics.tickets.js.map +1 -0
  37. package/dist/talkpilot/calls/calls.statistics.types.d.ts +4 -1
  38. package/dist/talkpilot/calls/calls.statistics.types.d.ts.map +1 -1
  39. package/dist/utils/statistics.aggregation.d.ts +20 -0
  40. package/dist/utils/statistics.aggregation.d.ts.map +1 -0
  41. package/dist/utils/statistics.aggregation.js +43 -0
  42. package/dist/utils/statistics.aggregation.js.map +1 -0
  43. package/jest.config.js +20 -20
  44. package/package.json +46 -46
  45. package/src/__tests__/setup.ts +20 -20
  46. package/src/connection.ts +54 -54
  47. package/src/index.ts +26 -26
  48. package/src/municipal/__tests__/validation.spec.ts +62 -62
  49. package/src/municipal/cities/cities.getters.ts +50 -50
  50. package/src/municipal/cities/cities.types.ts +11 -11
  51. package/src/municipal/cities/index.ts +2 -2
  52. package/src/municipal/departmentsSubjects/departmentsSubjects.getters.ts +282 -282
  53. package/src/municipal/departmentsSubjects/departmentsSubjects.types.ts +72 -72
  54. package/src/municipal/departmentsSubjects/index.ts +9 -9
  55. package/src/municipal/index.ts +22 -22
  56. package/src/municipal/mongodb-client.ts +61 -61
  57. package/src/municipal/muniIssues/__tests__/muniIssues.setters.spec.ts +92 -92
  58. package/src/municipal/muniIssues/__tests__/muniIssues.setup.spec.ts +92 -92
  59. package/src/municipal/muniIssues/index.ts +17 -17
  60. package/src/municipal/muniIssues/muniIssues.constants.ts +18 -18
  61. package/src/municipal/muniIssues/muniIssues.getters.ts +24 -24
  62. package/src/municipal/muniIssues/muniIssues.schema.ts +66 -66
  63. package/src/municipal/muniIssues/muniIssues.setters.ts +24 -24
  64. package/src/municipal/muniIssues/muniIssues.setup.ts +65 -65
  65. package/src/municipal/muniIssues/muniIssues.types.ts +37 -37
  66. package/src/municipal/streets/index.ts +2 -2
  67. package/src/municipal/streets/streets.getters.ts +125 -125
  68. package/src/municipal/streets/streets.types.ts +18 -18
  69. package/src/municipal/systemInstructions/__tests__/getters.spec.ts +113 -113
  70. package/src/municipal/systemInstructions/__tests__/setters.spec.ts +274 -274
  71. package/src/municipal/systemInstructions/index.ts +7 -7
  72. package/src/municipal/systemInstructions/instructions.getters.ts +57 -57
  73. package/src/municipal/systemInstructions/instructions.setters.ts +119 -119
  74. package/src/municipal/systemInstructions/instructions.types.ts +30 -30
  75. package/src/municipal/tickets/__tests__/tickets.getters.spec.ts +30 -30
  76. package/src/municipal/tickets/__tests__/tickets.statistics.spec.ts +68 -51
  77. package/src/municipal/tickets/index.ts +3 -3
  78. package/src/municipal/tickets/tickets.constants.ts +8 -8
  79. package/src/municipal/tickets/tickets.getters.ts +121 -121
  80. package/src/municipal/tickets/tickets.statistics.aggregation.ts +96 -96
  81. package/src/municipal/tickets/tickets.statistics.getters.ts +109 -71
  82. package/src/municipal/tickets/tickets.types.ts +53 -53
  83. package/src/municipal/utils/types.ts +11 -11
  84. package/src/talkpilot/__tests__/db.spec.ts +38 -38
  85. package/src/talkpilot/__tests__/mongodb-client.spec.ts +18 -18
  86. package/src/talkpilot/__tests__/validation.spec.ts +68 -68
  87. package/src/talkpilot/agents/__tests__/agents.getters.spec.ts +29 -29
  88. package/src/talkpilot/agents/agents.getters.ts +34 -34
  89. package/src/talkpilot/agents/agents.types.ts +14 -14
  90. package/src/talkpilot/agents/index.ts +2 -2
  91. package/src/talkpilot/backgroundToolResults/__tests__/backgroundToolResults.getters.spec.ts +147 -147
  92. package/src/talkpilot/backgroundToolResults/backgroundToolResults.getters.ts +65 -65
  93. package/src/talkpilot/backgroundToolResults/backgroundToolResults.types.ts +23 -23
  94. package/src/talkpilot/backgroundToolResults/index.ts +2 -2
  95. package/src/talkpilot/calls/__tests__/callStats.utils.spec.ts +128 -128
  96. package/src/talkpilot/calls/__tests__/calls.dashboard.spec.ts +149 -149
  97. package/src/talkpilot/calls/__tests__/calls.spec.ts +270 -270
  98. package/src/talkpilot/calls/__tests__/calls.statistics.spec.ts +375 -344
  99. package/src/talkpilot/calls/calls.constants.ts +20 -20
  100. package/src/talkpilot/calls/calls.getters.ts +248 -248
  101. package/src/talkpilot/calls/calls.statistics.getters.ts +590 -587
  102. package/src/talkpilot/calls/calls.statistics.types.ts +47 -44
  103. package/src/talkpilot/calls/calls.types.ts +119 -119
  104. package/src/talkpilot/calls/dashboard/calls.dashboard.ts +292 -292
  105. package/src/talkpilot/calls/dashboard/calls.dashboard.types.ts +57 -57
  106. package/src/talkpilot/calls/index.ts +6 -6
  107. package/src/talkpilot/clientAudioBuffers/__tests__/clientAudioBuffer.getters.spec.ts +160 -160
  108. package/src/talkpilot/clientAudioBuffers/clientAudioBuffer.getters.ts +117 -117
  109. package/src/talkpilot/clientAudioBuffers/clientsAudioBuffers.types.ts +25 -25
  110. package/src/talkpilot/clientAudioBuffers/index.ts +2 -2
  111. package/src/talkpilot/clients/clients.getters.ts +16 -16
  112. package/src/talkpilot/clients/clients.types.ts +14 -14
  113. package/src/talkpilot/clients/index.ts +2 -2
  114. package/src/talkpilot/clientsConfig/__tests__/clientsConfig.getters.spec.ts +53 -53
  115. package/src/talkpilot/clientsConfig/__tests__/clientsConfig.spec.ts +190 -190
  116. package/src/talkpilot/clientsConfig/clientsConfig.getters.ts +55 -55
  117. package/src/talkpilot/clientsConfig/clientsConfig.types.ts +127 -127
  118. package/src/talkpilot/clientsConfig/index.ts +2 -2
  119. package/src/talkpilot/contextNotes/__tests__/contextNotes.getters.spec.ts +176 -176
  120. package/src/talkpilot/contextNotes/contextNotes.getters.ts +86 -86
  121. package/src/talkpilot/contextNotes/contextNotes.types.ts +20 -20
  122. package/src/talkpilot/contextNotes/index.ts +2 -2
  123. package/src/talkpilot/flows/__tests__/flows.schema.spec.ts +96 -96
  124. package/src/talkpilot/flows/flows.getter.ts +14 -14
  125. package/src/talkpilot/flows/flows.schema.ts +154 -154
  126. package/src/talkpilot/flows/flows.types.ts +187 -187
  127. package/src/talkpilot/flows/index.ts +2 -2
  128. package/src/talkpilot/groups/__tests__/groups.spec.ts +90 -90
  129. package/src/talkpilot/groups/__tests__/phone.utils.spec.ts +32 -32
  130. package/src/talkpilot/groups/groups.getters.ts +30 -30
  131. package/src/talkpilot/groups/groups.types.ts +29 -29
  132. package/src/talkpilot/groups/index.ts +3 -3
  133. package/src/talkpilot/groups/phone.utils.ts +46 -46
  134. package/src/talkpilot/index.ts +31 -31
  135. package/src/talkpilot/leads/index.ts +2 -2
  136. package/src/talkpilot/leads/leads.getter.ts +6 -6
  137. package/src/talkpilot/leads/leads.schema.ts +33 -33
  138. package/src/talkpilot/leads/leads.types.ts +20 -20
  139. package/src/talkpilot/mongodb-client.ts +78 -78
  140. package/src/talkpilot/phone_numbers/__tests__/phone_numbers.spec.ts +252 -252
  141. package/src/talkpilot/phone_numbers/index.ts +2 -2
  142. package/src/talkpilot/phone_numbers/phone_numbers.getter.ts +158 -158
  143. package/src/talkpilot/phone_numbers/phone_numbers.schema.ts +17 -17
  144. package/src/talkpilot/phone_numbers/phone_numbers.types.ts +30 -30
  145. package/src/talkpilot/plans/__tests__/plans.spec.ts +70 -70
  146. package/src/talkpilot/plans/index.ts +2 -2
  147. package/src/talkpilot/plans/plans.getters.ts +132 -132
  148. package/src/talkpilot/plans/plans.types.ts +89 -89
  149. package/src/talkpilot/products/__tests__/products.getters.spec.ts +45 -45
  150. package/src/talkpilot/products/index.ts +2 -2
  151. package/src/talkpilot/products/products.getters.ts +12 -12
  152. package/src/talkpilot/products/products.types.ts +9 -9
  153. package/src/talkpilot/results/index.ts +7 -7
  154. package/src/talkpilot/results/results.getter.ts +39 -39
  155. package/src/talkpilot/results/results.schema.ts +25 -25
  156. package/src/talkpilot/results/results.types.ts +34 -34
  157. package/src/talkpilot/retry_analyze/__tests__/retryAnalyze.getters.spec.ts +156 -156
  158. package/src/talkpilot/retry_analyze/index.ts +2 -2
  159. package/src/talkpilot/retry_analyze/retryAnalyze.getters.ts +84 -84
  160. package/src/talkpilot/retry_analyze/retryAnalyze.types.ts +13 -13
  161. package/src/talkpilot/sessions/__tests__/sessions.spec.ts +147 -147
  162. package/src/talkpilot/sessions/index.ts +2 -2
  163. package/src/talkpilot/sessions/sessions.getter.ts +92 -92
  164. package/src/talkpilot/sessions/sessions.schema.ts +34 -34
  165. package/src/talkpilot/sessions/sessions.types.ts +30 -30
  166. package/src/talkpilot/subscriptions/__tests__/subscriptions.getters.utils.spec.ts +45 -45
  167. package/src/talkpilot/subscriptions/index.ts +3 -3
  168. package/src/talkpilot/subscriptions/subscriptions.getters.ts +146 -146
  169. package/src/talkpilot/subscriptions/subscriptions.getters.utils.ts +33 -33
  170. package/src/talkpilot/subscriptions/subscriptions.types.ts +66 -66
  171. package/src/talkpilot/utils/__tests__/query.utils.spec.ts +49 -49
  172. package/src/talkpilot/utils/query.utils.ts +21 -21
  173. package/src/test-utils/db-utils.ts +26 -26
  174. package/src/test-utils/factories/index.ts +15 -15
  175. package/src/test-utils/factories/municipal/cities.ts +16 -16
  176. package/src/test-utils/factories/municipal/departmentsSubjects.ts +37 -37
  177. package/src/test-utils/factories/municipal/muniIssues.ts +32 -32
  178. package/src/test-utils/factories/municipal/streets.ts +22 -22
  179. package/src/test-utils/factories/municipal/tickets.ts +39 -39
  180. package/src/test-utils/factories/talkpilot/agents.ts +19 -19
  181. package/src/test-utils/factories/talkpilot/calls.ts +37 -37
  182. package/src/test-utils/factories/talkpilot/clientAudioBuffers.ts +20 -20
  183. package/src/test-utils/factories/talkpilot/clientsConfig.ts +18 -18
  184. package/src/test-utils/factories/talkpilot/contextNotes.ts +33 -33
  185. package/src/test-utils/factories/talkpilot/flows.ts +33 -33
  186. package/src/test-utils/factories/talkpilot/groups.ts +33 -33
  187. package/src/test-utils/factories/talkpilot/phone_numbers.ts +22 -22
  188. package/src/test-utils/factories/talkpilot/sessions.ts +35 -35
  189. package/src/test-utils/factories/websitalk/scans.ts +23 -23
  190. package/src/utils/date.utils.ts +116 -116
  191. package/src/utils/shared.types.ts +4 -4
  192. package/src/utils/validation.ts +23 -23
  193. package/src/websitalk/index.ts +15 -15
  194. package/src/websitalk/mongodb-client.ts +61 -61
  195. package/src/websitalk/scans/__tests__/scans.spec.ts +218 -218
  196. package/src/websitalk/scans/index.ts +2 -2
  197. package/src/websitalk/scans/scans.getters.ts +113 -113
  198. package/src/websitalk/scans/scans.types.ts +53 -53
  199. package/tsconfig.json +23 -23
@@ -1,113 +1,113 @@
1
- import { Collection, Filter, ObjectId } from "mongodb";
2
- import { getDb } from "../index";
3
- import {
4
- applyQueryOptions,
5
- QueryOptions,
6
- } from "../../talkpilot/utils/query.utils";
7
- import type {
8
- ActiveScanStatus,
9
- Scan,
10
- ScanDoc,
11
- ScanStatus,
12
- } from "./scans.types";
13
-
14
- export const getScansCollection = (): Collection<Scan> => {
15
- return getDb().collection<Scan>("scans");
16
- };
17
-
18
- export const getScansByClientAndDateRange = (
19
- clientId: string,
20
- startDate: Date,
21
- endDate: Date,
22
- ): Promise<ScanDoc[]> => {
23
- return getScansCollection()
24
- .find({
25
- clientId,
26
- createdAt: {
27
- $gte: startDate,
28
- $lte: endDate,
29
- },
30
- })
31
- .toArray();
32
- };
33
-
34
- export const getScanFieldsByClientAndDateRange = <K extends keyof Scan>(
35
- clientId: string,
36
- startDate: Date,
37
- endDate: Date,
38
- fields: K[],
39
- ): Promise<Pick<ScanDoc, "_id" | K>[]> => {
40
- const projection = fields.reduce<Record<string, 1>>((acc, field) => {
41
- acc[field as string] = 1;
42
- return acc;
43
- }, {});
44
-
45
- return getScansCollection()
46
- .find(
47
- {
48
- clientId,
49
- createdAt: {
50
- $gte: startDate,
51
- $lte: endDate,
52
- },
53
- },
54
- { projection },
55
- )
56
- .toArray() as Promise<Pick<ScanDoc, "_id" | K>[]>;
57
- };
58
-
59
- export const createScanDoc = (
60
- scan: Pick<Scan, "clientId" | "baseUrl" | "notifyPhoneNumber">,
61
- ) => {
62
- return getScansCollection().insertOne({
63
- ...scan,
64
- status: "CHECKING",
65
- activeTasksCount: 0,
66
- pagesScanned: 0,
67
- pagesSkipped: 0,
68
- skipped: [],
69
- siteChrome: {} as Scan["siteChrome"],
70
- createdAt: new Date(),
71
- updatedAt: new Date(),
72
- });
73
- };
74
-
75
- const FINISHED_SCAN_STATUSES: ScanStatus[] = ["COMPLETED", "FAILED"];
76
-
77
- export const getActiveScanStatus = async (
78
- clientId: string,
79
- ): Promise<ActiveScanStatus> => {
80
- const latestScan = await getScansCollection().findOne(
81
- { clientId },
82
- { sort: { createdAt: -1 } },
83
- );
84
-
85
- if (!latestScan || FINISHED_SCAN_STATUSES.includes(latestScan.status)) {
86
- return { isActive: false };
87
- }
88
-
89
- return { isActive: true, status: latestScan.status };
90
- };
91
-
92
- export const updateScanDoc = async (
93
- scanId: ObjectId,
94
- updates: Partial<Omit<Scan, "clientId" | "createdAt">>,
95
- ): Promise<ScanDoc | null> => {
96
- return await getScansCollection().findOneAndUpdate(
97
- { _id: scanId },
98
- { $set: { ...updates, updatedAt: new Date() } },
99
- { returnDocument: "after" },
100
- );
101
- };
102
-
103
- export const findScansByQuery = async (
104
- query: Filter<Scan>,
105
- options?: QueryOptions,
106
- ): Promise<ScanDoc[]> => {
107
- const cursor = getScansCollection().find(query);
108
- return await applyQueryOptions(cursor, options).toArray();
109
- };
110
-
111
- export const countScans = async (query: Filter<Scan>): Promise<number> => {
112
- return getScansCollection().countDocuments(query);
113
- };
1
+ import { Collection, Filter, ObjectId } from "mongodb";
2
+ import { getDb } from "../index";
3
+ import {
4
+ applyQueryOptions,
5
+ QueryOptions,
6
+ } from "../../talkpilot/utils/query.utils";
7
+ import type {
8
+ ActiveScanStatus,
9
+ Scan,
10
+ ScanDoc,
11
+ ScanStatus,
12
+ } from "./scans.types";
13
+
14
+ export const getScansCollection = (): Collection<Scan> => {
15
+ return getDb().collection<Scan>("scans");
16
+ };
17
+
18
+ export const getScansByClientAndDateRange = (
19
+ clientId: string,
20
+ startDate: Date,
21
+ endDate: Date,
22
+ ): Promise<ScanDoc[]> => {
23
+ return getScansCollection()
24
+ .find({
25
+ clientId,
26
+ createdAt: {
27
+ $gte: startDate,
28
+ $lte: endDate,
29
+ },
30
+ })
31
+ .toArray();
32
+ };
33
+
34
+ export const getScanFieldsByClientAndDateRange = <K extends keyof Scan>(
35
+ clientId: string,
36
+ startDate: Date,
37
+ endDate: Date,
38
+ fields: K[],
39
+ ): Promise<Pick<ScanDoc, "_id" | K>[]> => {
40
+ const projection = fields.reduce<Record<string, 1>>((acc, field) => {
41
+ acc[field as string] = 1;
42
+ return acc;
43
+ }, {});
44
+
45
+ return getScansCollection()
46
+ .find(
47
+ {
48
+ clientId,
49
+ createdAt: {
50
+ $gte: startDate,
51
+ $lte: endDate,
52
+ },
53
+ },
54
+ { projection },
55
+ )
56
+ .toArray() as Promise<Pick<ScanDoc, "_id" | K>[]>;
57
+ };
58
+
59
+ export const createScanDoc = (
60
+ scan: Pick<Scan, "clientId" | "baseUrl" | "notifyPhoneNumber">,
61
+ ) => {
62
+ return getScansCollection().insertOne({
63
+ ...scan,
64
+ status: "CHECKING",
65
+ activeTasksCount: 0,
66
+ pagesScanned: 0,
67
+ pagesSkipped: 0,
68
+ skipped: [],
69
+ siteChrome: {} as Scan["siteChrome"],
70
+ createdAt: new Date(),
71
+ updatedAt: new Date(),
72
+ });
73
+ };
74
+
75
+ const FINISHED_SCAN_STATUSES: ScanStatus[] = ["COMPLETED", "FAILED"];
76
+
77
+ export const getActiveScanStatus = async (
78
+ clientId: string,
79
+ ): Promise<ActiveScanStatus> => {
80
+ const latestScan = await getScansCollection().findOne(
81
+ { clientId },
82
+ { sort: { createdAt: -1 } },
83
+ );
84
+
85
+ if (!latestScan || FINISHED_SCAN_STATUSES.includes(latestScan.status)) {
86
+ return { isActive: false };
87
+ }
88
+
89
+ return { isActive: true, status: latestScan.status };
90
+ };
91
+
92
+ export const updateScanDoc = async (
93
+ scanId: ObjectId,
94
+ updates: Partial<Omit<Scan, "clientId" | "createdAt">>,
95
+ ): Promise<ScanDoc | null> => {
96
+ return await getScansCollection().findOneAndUpdate(
97
+ { _id: scanId },
98
+ { $set: { ...updates, updatedAt: new Date() } },
99
+ { returnDocument: "after" },
100
+ );
101
+ };
102
+
103
+ export const findScansByQuery = async (
104
+ query: Filter<Scan>,
105
+ options?: QueryOptions,
106
+ ): Promise<ScanDoc[]> => {
107
+ const cursor = getScansCollection().find(query);
108
+ return await applyQueryOptions(cursor, options).toArray();
109
+ };
110
+
111
+ export const countScans = async (query: Filter<Scan>): Promise<number> => {
112
+ return getScansCollection().countDocuments(query);
113
+ };
@@ -1,53 +1,53 @@
1
- import { WithId } from "mongodb";
2
-
3
- export type ScanStatus =
4
- | "CHECKING"
5
- | "PREPARING"
6
- | "SCANNING"
7
- | "PROCESSING"
8
- | "COMPLETED"
9
- | "FAILED";
10
-
11
- export type ActiveScanStatus =
12
- | { isActive: true; status: ScanStatus }
13
- | { isActive: false };
14
-
15
- export type SiteChromeEntry = {
16
- url: string;
17
- urlCanonical?: string | null;
18
- title?: string | null;
19
- h1?: string | null;
20
- language?: string | null;
21
- sourceType?: string | null;
22
- status?: string | null;
23
- context?: string | null;
24
- contentHash?: string | null;
25
- errorMessage?: string | null;
26
- breadcrumbs?: unknown;
27
- description?: string | null;
28
- sourceUrl?: string | null;
29
- fetchedAt?: Date | null;
30
- createdAt?: Date;
31
- updatedAt?: Date;
32
- };
33
-
34
- export type SkippedEntry = {
35
- path: string;
36
- reason: string;
37
- };
38
-
39
- export type Scan = {
40
- clientId: string;
41
- baseUrl: string;
42
- notifyPhoneNumber?: string | null;
43
- status: ScanStatus;
44
- activeTasksCount: number;
45
- pagesScanned: number;
46
- pagesSkipped: number;
47
- skipped: SkippedEntry[];
48
- siteChrome: SiteChromeEntry;
49
- createdAt: Date;
50
- updatedAt: Date;
51
- };
52
-
53
- export type ScanDoc = WithId<Scan>;
1
+ import { WithId } from "mongodb";
2
+
3
+ export type ScanStatus =
4
+ | "CHECKING"
5
+ | "PREPARING"
6
+ | "SCANNING"
7
+ | "PROCESSING"
8
+ | "COMPLETED"
9
+ | "FAILED";
10
+
11
+ export type ActiveScanStatus =
12
+ | { isActive: true; status: ScanStatus }
13
+ | { isActive: false };
14
+
15
+ export type SiteChromeEntry = {
16
+ url: string;
17
+ urlCanonical?: string | null;
18
+ title?: string | null;
19
+ h1?: string | null;
20
+ language?: string | null;
21
+ sourceType?: string | null;
22
+ status?: string | null;
23
+ context?: string | null;
24
+ contentHash?: string | null;
25
+ errorMessage?: string | null;
26
+ breadcrumbs?: unknown;
27
+ description?: string | null;
28
+ sourceUrl?: string | null;
29
+ fetchedAt?: Date | null;
30
+ createdAt?: Date;
31
+ updatedAt?: Date;
32
+ };
33
+
34
+ export type SkippedEntry = {
35
+ path: string;
36
+ reason: string;
37
+ };
38
+
39
+ export type Scan = {
40
+ clientId: string;
41
+ baseUrl: string;
42
+ notifyPhoneNumber?: string | null;
43
+ status: ScanStatus;
44
+ activeTasksCount: number;
45
+ pagesScanned: number;
46
+ pagesSkipped: number;
47
+ skipped: SkippedEntry[];
48
+ siteChrome: SiteChromeEntry;
49
+ createdAt: Date;
50
+ updatedAt: Date;
51
+ };
52
+
53
+ export type ScanDoc = WithId<Scan>;
package/tsconfig.json CHANGED
@@ -1,23 +1,23 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2022",
4
- "module": "CommonJS",
5
- "moduleResolution": "node",
6
- "lib": ["ES2022"],
7
- "declaration": true,
8
- "declarationMap": true,
9
- "sourceMap": true,
10
- "outDir": "dist",
11
- "rootDir": "src",
12
- "strict": true,
13
- "esModuleInterop": true,
14
- "forceConsistentCasingInFileNames": true,
15
- "skipLibCheck": true,
16
- "resolveJsonModule": true,
17
- "experimentalDecorators": true,
18
- "emitDecoratorMetadata": true,
19
- "baseUrl": "."
20
- },
21
- "include": ["src/**/*"],
22
- "exclude": ["node_modules", "dist", "test", "**/*.test.ts", "**/__tests__/*", "**/*.spec.ts"]
23
- }
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "CommonJS",
5
+ "moduleResolution": "node",
6
+ "lib": ["ES2022"],
7
+ "declaration": true,
8
+ "declarationMap": true,
9
+ "sourceMap": true,
10
+ "outDir": "dist",
11
+ "rootDir": "src",
12
+ "strict": true,
13
+ "esModuleInterop": true,
14
+ "forceConsistentCasingInFileNames": true,
15
+ "skipLibCheck": true,
16
+ "resolveJsonModule": true,
17
+ "experimentalDecorators": true,
18
+ "emitDecoratorMetadata": true,
19
+ "baseUrl": "."
20
+ },
21
+ "include": ["src/**/*"],
22
+ "exclude": ["node_modules", "dist", "test", "**/*.test.ts", "**/__tests__/*", "**/*.spec.ts"]
23
+ }