@houtini/seo-audit-console 0.9.0 → 0.10.0

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 (208) hide show
  1. package/README.md +16 -14
  2. package/dist/audit/checks.d.ts +0 -7
  3. package/dist/audit/checks.d.ts.map +1 -1
  4. package/dist/audit/checks.js +22 -282
  5. package/dist/audit/checks.js.map +1 -1
  6. package/dist/audit/drift.d.ts +0 -12
  7. package/dist/audit/drift.d.ts.map +1 -1
  8. package/dist/audit/drift.js +0 -15
  9. package/dist/audit/drift.js.map +1 -1
  10. package/dist/audit/engine.d.ts +0 -3
  11. package/dist/audit/engine.d.ts.map +1 -1
  12. package/dist/audit/engine.js +7 -42
  13. package/dist/audit/engine.js.map +1 -1
  14. package/dist/audit/keywordList.d.ts +0 -14
  15. package/dist/audit/keywordList.d.ts.map +1 -1
  16. package/dist/audit/keywordList.js +0 -5
  17. package/dist/audit/keywordList.js.map +1 -1
  18. package/dist/audit/opportunities.js +3 -26
  19. package/dist/audit/opportunities.js.map +1 -1
  20. package/dist/audit/recon.d.ts +0 -31
  21. package/dist/audit/recon.d.ts.map +1 -1
  22. package/dist/audit/recon.js +0 -27
  23. package/dist/audit/recon.js.map +1 -1
  24. package/dist/audit/report.d.ts +0 -4
  25. package/dist/audit/report.d.ts.map +1 -1
  26. package/dist/audit/report.js +0 -7
  27. package/dist/audit/report.js.map +1 -1
  28. package/dist/audit/schema-validate.d.ts +0 -26
  29. package/dist/audit/schema-validate.d.ts.map +1 -1
  30. package/dist/audit/schema-validate.js +8 -64
  31. package/dist/audit/schema-validate.js.map +1 -1
  32. package/dist/audit/templates.d.ts +0 -24
  33. package/dist/audit/templates.d.ts.map +1 -1
  34. package/dist/audit/templates.js +1 -21
  35. package/dist/audit/templates.js.map +1 -1
  36. package/dist/audit/topicGaps.d.ts +0 -1
  37. package/dist/audit/topicGaps.d.ts.map +1 -1
  38. package/dist/audit/topicGaps.js +3 -24
  39. package/dist/audit/topicGaps.js.map +1 -1
  40. package/dist/core/AuditDatabase.d.ts +0 -14
  41. package/dist/core/AuditDatabase.d.ts.map +1 -1
  42. package/dist/core/AuditDatabase.js +8 -61
  43. package/dist/core/AuditDatabase.js.map +1 -1
  44. package/dist/core/Backlinks.d.ts +0 -7
  45. package/dist/core/Backlinks.d.ts.map +1 -1
  46. package/dist/core/Backlinks.js +1 -23
  47. package/dist/core/Backlinks.js.map +1 -1
  48. package/dist/core/Crawler.d.ts +0 -1
  49. package/dist/core/Crawler.d.ts.map +1 -1
  50. package/dist/core/Crawler.js +24 -119
  51. package/dist/core/Crawler.js.map +1 -1
  52. package/dist/core/DataForSeoClient.d.ts +25 -74
  53. package/dist/core/DataForSeoClient.d.ts.map +1 -1
  54. package/dist/core/DataForSeoClient.js +65 -90
  55. package/dist/core/DataForSeoClient.js.map +1 -1
  56. package/dist/core/Entities.d.ts +0 -6
  57. package/dist/core/Entities.d.ts.map +1 -1
  58. package/dist/core/Entities.js +0 -8
  59. package/dist/core/Entities.js.map +1 -1
  60. package/dist/core/FirecrawlClient.d.ts +0 -18
  61. package/dist/core/FirecrawlClient.d.ts.map +1 -1
  62. package/dist/core/FirecrawlClient.js +1 -13
  63. package/dist/core/FirecrawlClient.js.map +1 -1
  64. package/dist/core/GscClient.d.ts +0 -7
  65. package/dist/core/GscClient.d.ts.map +1 -1
  66. package/dist/core/GscClient.js +1 -10
  67. package/dist/core/GscClient.js.map +1 -1
  68. package/dist/core/GscSync.d.ts +0 -4
  69. package/dist/core/GscSync.d.ts.map +1 -1
  70. package/dist/core/GscSync.js +2 -33
  71. package/dist/core/GscSync.js.map +1 -1
  72. package/dist/core/JobManager.d.ts +0 -5
  73. package/dist/core/JobManager.d.ts.map +1 -1
  74. package/dist/core/JobManager.js +0 -8
  75. package/dist/core/JobManager.js.map +1 -1
  76. package/dist/core/LinkIntersect.d.ts +0 -1
  77. package/dist/core/LinkIntersect.d.ts.map +1 -1
  78. package/dist/core/LinkIntersect.js +1 -37
  79. package/dist/core/LinkIntersect.js.map +1 -1
  80. package/dist/core/MajesticClient.d.ts +0 -26
  81. package/dist/core/MajesticClient.d.ts.map +1 -1
  82. package/dist/core/MajesticClient.js +0 -15
  83. package/dist/core/MajesticClient.js.map +1 -1
  84. package/dist/core/RankTracker.d.ts +0 -4
  85. package/dist/core/RankTracker.d.ts.map +1 -1
  86. package/dist/core/RankTracker.js +0 -9
  87. package/dist/core/RankTracker.js.map +1 -1
  88. package/dist/core/Refresh.d.ts +0 -6
  89. package/dist/core/Refresh.d.ts.map +1 -1
  90. package/dist/core/Refresh.js +0 -6
  91. package/dist/core/Refresh.js.map +1 -1
  92. package/dist/core/SupadataClient.d.ts +0 -11
  93. package/dist/core/SupadataClient.d.ts.map +1 -1
  94. package/dist/core/SupadataClient.js +0 -5
  95. package/dist/core/SupadataClient.js.map +1 -1
  96. package/dist/core/UrlInspector.d.ts +0 -5
  97. package/dist/core/UrlInspector.d.ts.map +1 -1
  98. package/dist/core/UrlInspector.js +0 -6
  99. package/dist/core/UrlInspector.js.map +1 -1
  100. package/dist/core/WikidataClient.d.ts +0 -2
  101. package/dist/core/WikidataClient.d.ts.map +1 -1
  102. package/dist/core/WikidataClient.js +0 -7
  103. package/dist/core/WikidataClient.js.map +1 -1
  104. package/dist/core/agentReadiness.d.ts +0 -9
  105. package/dist/core/agentReadiness.d.ts.map +1 -1
  106. package/dist/core/agentReadiness.js +0 -13
  107. package/dist/core/agentReadiness.js.map +1 -1
  108. package/dist/core/ctrModel.js +0 -3
  109. package/dist/core/ctrModel.js.map +1 -1
  110. package/dist/core/dashboardData.d.ts +0 -1
  111. package/dist/core/dashboardData.d.ts.map +1 -1
  112. package/dist/core/dashboardData.js +13 -95
  113. package/dist/core/dashboardData.js.map +1 -1
  114. package/dist/core/dataStorage.d.ts +0 -2
  115. package/dist/core/dataStorage.d.ts.map +1 -1
  116. package/dist/core/dataStorage.js +6 -19
  117. package/dist/core/dataStorage.js.map +1 -1
  118. package/dist/core/draftBrief.d.ts +0 -7
  119. package/dist/core/draftBrief.d.ts.map +1 -1
  120. package/dist/core/draftBrief.js +0 -10
  121. package/dist/core/draftBrief.js.map +1 -1
  122. package/dist/core/extract.d.ts +0 -11
  123. package/dist/core/extract.d.ts.map +1 -1
  124. package/dist/core/extract.js +1 -38
  125. package/dist/core/extract.js.map +1 -1
  126. package/dist/core/googleNews.d.ts +0 -11
  127. package/dist/core/googleNews.d.ts.map +1 -1
  128. package/dist/core/googleNews.js +0 -7
  129. package/dist/core/googleNews.js.map +1 -1
  130. package/dist/core/gscFreshness.d.ts +0 -10
  131. package/dist/core/gscFreshness.d.ts.map +1 -1
  132. package/dist/core/gscFreshness.js +0 -11
  133. package/dist/core/gscFreshness.js.map +1 -1
  134. package/dist/core/linkGraph.d.ts +0 -15
  135. package/dist/core/linkGraph.d.ts.map +1 -1
  136. package/dist/core/linkGraph.js +1 -23
  137. package/dist/core/linkGraph.js.map +1 -1
  138. package/dist/core/marketSizing.d.ts +0 -13
  139. package/dist/core/marketSizing.d.ts.map +1 -1
  140. package/dist/core/marketSizing.js +1 -1
  141. package/dist/core/marketSizing.js.map +1 -1
  142. package/dist/core/passageScore.d.ts +0 -13
  143. package/dist/core/passageScore.d.ts.map +1 -1
  144. package/dist/core/passageScore.js +1 -16
  145. package/dist/core/passageScore.js.map +1 -1
  146. package/dist/core/paths.d.ts +0 -3
  147. package/dist/core/paths.d.ts.map +1 -1
  148. package/dist/core/paths.js +0 -0
  149. package/dist/core/paths.js.map +1 -1
  150. package/dist/core/queryData.d.ts +0 -1
  151. package/dist/core/queryData.d.ts.map +1 -1
  152. package/dist/core/queryData.js +0 -18
  153. package/dist/core/queryData.js.map +1 -1
  154. package/dist/core/reconFetch.d.ts +0 -6
  155. package/dist/core/reconFetch.d.ts.map +1 -1
  156. package/dist/core/reconFetch.js +1 -4
  157. package/dist/core/reconFetch.js.map +1 -1
  158. package/dist/core/reconResearch.d.ts +0 -20
  159. package/dist/core/reconResearch.d.ts.map +1 -1
  160. package/dist/core/reconResearch.js +1 -16
  161. package/dist/core/reconResearch.js.map +1 -1
  162. package/dist/core/reranker.d.ts +0 -2
  163. package/dist/core/reranker.d.ts.map +1 -1
  164. package/dist/core/reranker.js +1 -11
  165. package/dist/core/reranker.js.map +1 -1
  166. package/dist/core/robots.d.ts +0 -6
  167. package/dist/core/robots.d.ts.map +1 -1
  168. package/dist/core/robots.js +1 -7
  169. package/dist/core/robots.js.map +1 -1
  170. package/dist/core/serpFootprint.d.ts +0 -12
  171. package/dist/core/serpFootprint.d.ts.map +1 -1
  172. package/dist/core/serpFootprint.js +0 -1
  173. package/dist/core/serpFootprint.js.map +1 -1
  174. package/dist/core/serpRecon.d.ts +0 -14
  175. package/dist/core/serpRecon.d.ts.map +1 -1
  176. package/dist/core/serpRecon.js +1 -13
  177. package/dist/core/serpRecon.js.map +1 -1
  178. package/dist/core/sitemap.js +3 -16
  179. package/dist/core/sitemap.js.map +1 -1
  180. package/dist/core/sql.d.ts +0 -4
  181. package/dist/core/sql.d.ts.map +1 -1
  182. package/dist/core/sql.js +0 -4
  183. package/dist/core/sql.js.map +1 -1
  184. package/dist/core/url-key.d.ts +0 -31
  185. package/dist/core/url-key.d.ts.map +1 -1
  186. package/dist/core/url-key.js +1 -38
  187. package/dist/core/url-key.js.map +1 -1
  188. package/dist/core/webHandlers.d.ts +0 -6
  189. package/dist/core/webHandlers.d.ts.map +1 -1
  190. package/dist/core/webHandlers.js +2 -5
  191. package/dist/core/webHandlers.js.map +1 -1
  192. package/dist/core/webServer.d.ts +0 -16
  193. package/dist/core/webServer.d.ts.map +1 -1
  194. package/dist/core/webServer.js +3 -17
  195. package/dist/core/webServer.js.map +1 -1
  196. package/dist/dashboard.js +0 -23
  197. package/dist/dashboard.js.map +1 -1
  198. package/dist/generators/index.d.ts +0 -7
  199. package/dist/generators/index.d.ts.map +1 -1
  200. package/dist/generators/index.js +1 -26
  201. package/dist/generators/index.js.map +1 -1
  202. package/dist/index.js +0 -2
  203. package/dist/index.js.map +1 -1
  204. package/dist/server.d.ts.map +1 -1
  205. package/dist/server.js +190 -312
  206. package/dist/server.js.map +1 -1
  207. package/package.json +1 -1
  208. package/server.json +85 -85
@@ -6,19 +6,11 @@ import { brandToken } from './url-key.js';
6
6
  import { HTML_CT } from './sql.js';
7
7
  import { latestSerpFootprint, ensureFootprintTable } from './serpFootprint.js';
8
8
  import { latestMarketSizing, ensureMarketTable } from './marketSizing.js';
9
- // Bump when the dashboard payload SHAPE/content changes, so cached entries from older code are
10
- // invalidated even if the underlying GSC/crawl data hasn't changed. Part of the cache version key.
11
9
  const PAYLOAD_VERSION = '11';
12
- /** Build the dashboard payload for a property from its synced GSC history. */
13
10
  export function getDashboardData(dataDir, siteUrl) {
14
11
  const db = new AuditDatabase(dbPathFor(dataDir, siteUrl));
15
12
  try {
16
- // Cache: the payload is ~20 GROUP-BY scans over search_analytics (~6s at 1.8M rows) but only
17
- // changes on sync/audit. Probe a cheap data-version; serve the cached JSON on a hit.
18
- // Probe every table the payload reads from — search_analytics + pages + the latest audit run,
19
- // PLUS agent_readiness and rank_history (written by check_agent_readiness / track_ranks via their
20
- // own paths). Omitting the latter two would serve a stale dashboard after those tools run.
21
- ensureFootprintTable(db.db); // probe below reads it; create before first serp_features run
13
+ ensureFootprintTable(db.db);
22
14
  ensureMarketTable(db.db);
23
15
  const ver = db.db.prepare(`SELECT (SELECT MAX(date)||':'||COALESCE(MAX(rowid),0) FROM search_analytics) sa,
24
16
  (SELECT run_id FROM audit_runs ORDER BY started_at DESC LIMIT 1) run,
@@ -31,23 +23,16 @@ export function getDashboardData(dataDir, siteUrl) {
31
23
  (SELECT COUNT(*)||':'||COALESCE(MAX(fetched_at),'') FROM link_prospects) lp`).get();
32
24
  const version = `${PAYLOAD_VERSION}|${ver.sa ?? 'none'}|${ver.run ?? 'none'}|${ver.pg}|${ver.ar ?? ''}|${ver.rh ?? ''}|${ver.sf}|${ver.ms}|${ver.pb ?? ''}|${ver.lp ?? ''}`;
33
25
  const hit = db.db.prepare('SELECT payload FROM dashboard_cache WHERE id=1 AND version=?').get(version);
34
- // A corrupt/truncated cache row must fall through to a rebuild, not throw forever.
35
26
  if (hit) {
36
27
  try {
37
28
  return JSON.parse(hit.payload);
38
29
  }
39
- catch { /* rebuild below */ }
30
+ catch { }
40
31
  }
41
- // Use the finalised date (trailing partial GSC days trimmed) for ALL windows + charts, so the
42
- // dashboard never shows the "traffic tanking" cliff of unfinalised data.
43
32
  const fresh = gscFreshness(db.db);
44
33
  const maxDate = fresh.effectiveMax;
45
34
  if (!maxDate)
46
35
  return { siteUrl, empty: true };
47
- // Upper bound: never include unfinalised days past effectiveMax. Windows anchored on maxDate
48
- // only set a lower bound (date > date(maxDate,'-Nd')), so without this the partial trailing
49
- // days would still slip into current-period sums and the daily charts. (Prior windows already
50
- // cap below maxDate, so they don't need it.) maxDate is our own ISO date — safe to interpolate.
51
36
  const UB = `date <= '${maxDate}'`;
52
37
  const totals = (start, end) => {
53
38
  const where = end
@@ -62,17 +47,9 @@ export function getDashboardData(dataDir, siteUrl) {
62
47
  const cur = totals('-28 days');
63
48
  const prior = totals('-56 days', '-28 days');
64
49
  const ctr = (t) => (t.impressions ? t.clicks / t.impressions : 0);
65
- // Branded vs non-branded — brand derived from the property's registrable label, matched against
66
- // the space-stripped query (so "sim racing cockpit" matches brand "simracingcockpit"). Done in
67
- // one SQL pass. The detected brand is surfaced in the UI so the split is verifiable, not a
68
- // black box — for descriptive domains where the brand equals a generic term, the user can see it.
69
- const brandKey = brandToken(siteUrl); // shared helper — same derivation the audit's brandExcl uses
50
+ const brandKey = brandToken(siteUrl);
70
51
  let brandedSplit;
71
52
  if (brandKey) {
72
- // Whole-token match (brand surrounded by word boundaries), NOT substring — so a 3-letter brand
73
- // like "ehi" matches the query "ehi inspections" but NOT "vehicle". Strict: this under-detects
74
- // for descriptive concatenated domains (where the brand is typed spaced = the category) rather
75
- // than over-detecting — a wrong split is worse than a conservative one.
76
53
  const tok = `% ${brandKey} %`;
77
54
  const splitRow = db.db.prepare(`SELECT COALESCE(SUM(CASE WHEN (' '||LOWER(query)||' ') LIKE ? THEN clicks ELSE 0 END),0) bClk,
78
55
  COALESCE(SUM(CASE WHEN (' '||LOWER(query)||' ') LIKE ? THEN impressions ELSE 0 END),0) bImp,
@@ -116,7 +93,6 @@ export function getDashboardData(dataDir, siteUrl) {
116
93
  prevPosition: p ? Math.round(p.position * 10) / 10 : 0,
117
94
  };
118
95
  });
119
- // Ranking distribution over time (impressions by position bucket) — flagship #1
120
96
  const rankingDistribution = db.db
121
97
  .prepare(`SELECT date,
122
98
  COALESCE(SUM(CASE WHEN position<=3 THEN impressions ELSE 0 END),0) b1,
@@ -125,7 +101,6 @@ export function getDashboardData(dataDir, siteUrl) {
125
101
  COALESCE(SUM(CASE WHEN position>20 THEN impressions ELSE 0 END),0) b4
126
102
  FROM search_analytics WHERE ${UB} AND date > date(?, '-90 days') GROUP BY date ORDER BY date`)
127
103
  .all(maxDate);
128
- // Striking-distance queries (avg position 11–20, current period) — flagship #2
129
104
  const strikingDistance = db.db
130
105
  .prepare(`SELECT query, AVG(position) position, SUM(impressions) impressions, SUM(clicks) clicks
131
106
  FROM search_analytics WHERE query IS NOT NULL AND ${UB} AND date > date(?, '-28 days')
@@ -133,10 +108,6 @@ export function getDashboardData(dataDir, siteUrl) {
133
108
  ORDER BY SUM(impressions) DESC LIMIT 40`)
134
109
  .all(maxDate)
135
110
  .map(r => ({ ...r, position: Math.round(r.position * 10) / 10 }));
136
- // Quick-wins matrix — every query with real impressions (≤ pos 20), plotted CTR vs position
137
- // against the expected-CTR curve. Two opportunity types: 'striking' (page 2 → push to page 1)
138
- // and 'snippet' (ranks page-1 but under-clicked vs expected). potential = recoverable clicks,
139
- // grounded in the same CTR model the audit uses. 'ok' queries are context dots.
140
111
  const quickWins = db.db.prepare(`SELECT query, SUM(impressions) impr, SUM(clicks) clicks, SUM(position*impressions)*1.0/NULLIF(SUM(impressions),0) pos
141
112
  FROM search_analytics WHERE query IS NOT NULL AND ${UB} AND date > date(?, '-28 days')
142
113
  GROUP BY query HAVING SUM(impressions) >= 50 AND pos <= 20
@@ -144,40 +115,30 @@ export function getDashboardData(dataDir, siteUrl) {
144
115
  .map(r => {
145
116
  const ctr = r.impr ? r.clicks / r.impr : 0;
146
117
  const exp = expectedCtr(r.pos);
147
- // STRICT: near-zero CTR at a page-1 position is NOT a snippet-rewrite win — a SERP feature
148
- // (AI overview / video / pack), cannibalisation, or tracking gap is eating the clicks. Bucket
149
- // it as 'serp' (verify, no recoverable promise) so we never over-state the opportunity.
150
118
  const type = r.pos > 10 ? 'striking'
151
119
  : (r.pos <= 10 && ctr < exp * 0.1) ? 'serp'
152
120
  : (ctr < exp * 0.6 ? 'snippet' : 'ok');
153
121
  const potential = type === 'striking' ? Math.max(0, r.impr * expectedCtr(8) - r.clicks)
154
- : type === 'snippet' ? Math.max(0, r.impr * exp - r.clicks) : 0; // serp/ok carry no recoverable estimate
122
+ : type === 'snippet' ? Math.max(0, r.impr * exp - r.clicks) : 0;
155
123
  return { query: r.query, position: Math.round(r.pos * 10) / 10, impressions: r.impr, clicks: r.clicks, ctr: Math.round(ctr * 1000) / 10, expectedCtr: Math.round(exp * 1000) / 10, type, potential: Math.round(potential) };
156
124
  })
157
125
  .sort((a, b) => b.potential - a.potential);
158
- // DataForSEO over-time sequence + GSC↔DataForSEO date-range reconciliation
159
126
  const rankHistory = db.db
160
127
  .prepare('SELECT period, pos_1_3, pos_4_10, pos_11_20, pos_21_100, etv, keyword_count FROM rank_history ORDER BY period')
161
128
  .all();
162
129
  const gscMin = db.db.prepare('SELECT MIN(date) d FROM search_analytics').get().d;
163
130
  const dateAlignment = reconcileRanges(gscMin, maxDate, rankHistory ?? []);
164
- // Device breakdown (current vs prior 28d)
165
131
  const devCur = db.db.prepare(`SELECT device, SUM(clicks) clicks, SUM(impressions) impressions, AVG(position) position FROM search_analytics WHERE device <> '' AND ${UB} AND date > date(?, '-28 days') GROUP BY device`).all(maxDate);
166
132
  const devPrior = new Map(db.db.prepare(`SELECT device, SUM(clicks) clicks FROM search_analytics WHERE device <> '' AND date > date(?, '-56 days') AND date <= date(?, '-28 days') GROUP BY device`).all(maxDate, maxDate).map(d => [d.device, d.clicks]));
167
133
  const deviceBreakdown = devCur.map(d => ({ device: d.device, clicks: d.clicks, prevClicks: devPrior.get(d.device) ?? 0, impressions: d.impressions, ctr: d.impressions ? d.clicks / d.impressions : 0, position: Math.round(d.position * 10) / 10 }));
168
- // Country breakdown (top 10 current, with prior clicks)
169
134
  const ctyPrior = new Map(db.db.prepare(`SELECT country, SUM(clicks) clicks FROM search_analytics WHERE country <> '' AND date > date(?, '-56 days') AND date <= date(?, '-28 days') GROUP BY country`).all(maxDate, maxDate).map(c => [c.country, c.clicks]));
170
135
  const countryBreakdown = db.db.prepare(`SELECT country, SUM(clicks) clicks, SUM(impressions) impressions FROM search_analytics WHERE country <> '' AND ${UB} AND date > date(?, '-28 days') GROUP BY country ORDER BY clicks DESC LIMIT 10`).all(maxDate).map(c => ({ country: c.country, clicks: c.clicks, prevClicks: ctyPrior.get(c.country) ?? 0, impressions: c.impressions }));
171
- // Page performance + categorisation (current vs prior 28d)
172
136
  const pagePrior = new Map(db.db.prepare(`SELECT page_key, SUM(clicks) clicks, SUM(impressions) impressions FROM search_analytics WHERE page_key IS NOT NULL AND date > date(?, '-56 days') AND date <= date(?, '-28 days') GROUP BY page_key`).all(maxDate, maxDate).map(p => [p.page_key, p]));
173
137
  const pagePerformance = db.db.prepare(`SELECT page_key, SUM(clicks) clicks, SUM(impressions) impressions, AVG(position) position FROM search_analytics WHERE page_key IS NOT NULL AND ${UB} AND date > date(?, '-28 days') GROUP BY page_key ORDER BY clicks DESC LIMIT 40`).all(maxDate).map(p => {
174
138
  const prev = pagePrior.get(p.page_key) ?? { clicks: 0, impressions: 0 };
175
139
  const pct = prev.clicks ? ((p.clicks - prev.clicks) / prev.clicks) * 100 : (p.clicks > 0 ? 100 : 0);
176
140
  return { urlKey: p.page_key, clicks: p.clicks, prevClicks: prev.clicks, clicksChangePct: Math.round(pct), impressions: p.impressions, position: Math.round(p.position * 10) / 10, category: pageCategory(p, prev) };
177
141
  });
178
- // Content decay & refresh ROI — pages that earned ≥10 clicks last period and have since fallen
179
- // ≥20%, ranked by clicks lost (the recoverable upside from a content refresh). Fact-based: every
180
- // row is a real page with a measured before/after over matched 28-day windows.
181
142
  const contentDecay = db.db.prepare(`WITH cur AS (SELECT page_key, SUM(clicks) c, SUM(impressions) i, SUM(position*impressions)*1.0/NULLIF(SUM(impressions),0) pos
182
143
  FROM search_analytics WHERE page_key IS NOT NULL AND ${UB} AND date > date(?, '-28 days') GROUP BY page_key),
183
144
  prev AS (SELECT page_key, SUM(clicks) c FROM search_analytics WHERE page_key IS NOT NULL AND date > date(?, '-56 days') AND date <= date(?, '-28 days') GROUP BY page_key)
@@ -186,7 +147,6 @@ export function getDashboardData(dataDir, siteUrl) {
186
147
  WHERE prev.c >= 10 AND COALESCE(cur.c,0) < prev.c * 0.8
187
148
  ORDER BY (prev.c - COALESCE(cur.c,0)) DESC LIMIT 30`).all(maxDate, maxDate, maxDate)
188
149
  .map(r => ({ urlKey: r.url, prevClicks: r.prevC, clicks: r.curC, lost: r.prevC - r.curC, dropPct: Math.round((1 - r.curC / r.prevC) * 100), impressions: r.curI, position: Math.round(r.pos * 10) / 10 }));
189
- // Keyword ranking movement (first-seen vs last-seen position over 90d)
190
150
  const keywordMovement = db.db.prepare(`WITH q AS (SELECT query, MIN(date) fd, MAX(date) ld FROM search_analytics WHERE query IS NOT NULL AND ${UB} AND date > date(?, '-90 days') GROUP BY query HAVING SUM(impressions) >= 50 AND MIN(date) < MAX(date))
191
151
  SELECT q.query,
192
152
  (SELECT AVG(position) FROM search_analytics s WHERE s.query=q.query AND s.date=q.fd AND s.impressions>0) firstPos,
@@ -198,17 +158,13 @@ export function getDashboardData(dataDir, siteUrl) {
198
158
  .filter(r => r.category !== 'stable')
199
159
  .sort((a, b) => Math.abs(b.delta) - Math.abs(a.delta))
200
160
  .slice(0, 40);
201
- // Latest audit findings (if run_audit has run for this property)
202
161
  const lastRun = db.db.prepare('SELECT run_id, finding_count, finished_at FROM audit_runs ORDER BY started_at DESC LIMIT 1').get();
203
162
  let findings = null;
204
163
  if (lastRun) {
205
164
  const byCheck = db.db.prepare('SELECT check_id, category, severity, COUNT(*) count, AVG(priority) priority FROM findings WHERE run_id=? GROUP BY check_id ORDER BY count DESC').all(lastRun.run_id);
206
165
  const topRaw = db.db.prepare('SELECT check_id, category, severity, url_key, evidence, traffic_at_risk, effort, priority, recommendation FROM findings WHERE run_id=? ORDER BY priority DESC LIMIT 50').all(lastRun.run_id);
207
- // Impact = priority normalised to the run's top finding (preserves magnitude), shown as a
208
- // 0–100 index + S/M/L/XL size instead of a clicks "forecast".
209
166
  const maxPrio = Math.max(1, ...topRaw.map(f => f.priority || 0));
210
167
  const top = topRaw.map(f => { const impact = Math.round((f.priority || 0) / maxPrio * 100); return { ...f, impact, size: impact >= 50 ? 'XL' : impact >= 20 ? 'L' : impact >= 5 ? 'M' : 'S' }; });
211
- // One representative (highest-priority) example per check → the audit-report view.
212
168
  const exRows = db.db.prepare('SELECT check_id, url_key, evidence, traffic_at_risk, recommendation, priority FROM findings WHERE run_id=? ORDER BY priority DESC').all(lastRun.run_id);
213
169
  const parse = (s) => { try {
214
170
  return JSON.parse(s || '{}');
@@ -216,7 +172,6 @@ export function getDashboardData(dataDir, siteUrl) {
216
172
  catch {
217
173
  return {};
218
174
  } };
219
- // Up to 3 representative examples per check (highest-priority first) → richer recs view.
220
175
  const exByCheck = new Map();
221
176
  for (const r of exRows) {
222
177
  const arr = exByCheck.get(r.check_id) ?? [];
@@ -226,7 +181,7 @@ export function getDashboardData(dataDir, siteUrl) {
226
181
  }
227
182
  }
228
183
  const SEV = { crit: 0, high: 1, med: 2, low: 3, info: 4 };
229
- const sevRank = (s) => SEV[s] ?? 5; // unknown severity sorts last, not NaN
184
+ const sevRank = (s) => SEV[s] ?? 5;
230
185
  const catMap = new Map();
231
186
  const mkEx = (r) => {
232
187
  const t = parse(r.traffic_at_risk);
@@ -253,8 +208,6 @@ export function getDashboardData(dataDir, siteUrl) {
253
208
  .sort((a, b) => Math.min(...a.checks.map(c => sevRank(c.severity))) - Math.min(...b.checks.map(c => sevRank(c.severity))));
254
209
  findings = { runId: lastRun.run_id, total: lastRun.finding_count, finishedAt: lastRun.finished_at, byCheck, top, recommendations };
255
210
  }
256
- // Equity vs reality: join per-page internal PageRank with 28d GSC traffic, bucketed by template.
257
- // (Needs a crawl — pages.ipr is populated post-crawl. Empty if crawl-free.)
258
211
  let equityScatter;
259
212
  let templateMismatch;
260
213
  const pageRows = db.db.prepare(`SELECT url_key, COALESCE(ipr,0) ipr FROM pages WHERE status_code=200 AND indexable=1`).all();
@@ -281,9 +234,6 @@ export function getDashboardData(dataDir, siteUrl) {
281
234
  templateMismatch = [...agg.entries()].map(([template, a]) => ({ template, pages: a.n, iprPct: Math.round(a.ipr / tIpr * 1000) / 10, trafficPct: Math.round(a.clicks / tClk * 1000) / 10 }))
282
235
  .sort((x, y) => y.iprPct - x.iprPct).slice(0, 8);
283
236
  }
284
- // Internal link explorer: iPR flow between folders as a bipartite Sankey. Each body link
285
- // carries ipr(source)/outdegree(source); flows are summed folder→folder, intra-folder
286
- // flows dropped (they're the noise, cross-folder equity movement is the architecture story).
287
237
  let linkFlows;
288
238
  {
289
239
  const iprMap = new Map();
@@ -294,7 +244,7 @@ export function getDashboardData(dataDir, siteUrl) {
294
244
  const outdeg = new Map();
295
245
  for (const e of edges)
296
246
  outdeg.set(e.s, (outdeg.get(e.s) ?? 0) + e.n);
297
- const flow = new Map(); // "src|dst" folder pair → summed equity
247
+ const flow = new Map();
298
248
  for (const e of edges) {
299
249
  const sf = templateBucket(e.s), tf = templateBucket(e.t);
300
250
  if (sf === tf)
@@ -315,13 +265,8 @@ export function getDashboardData(dataDir, siteUrl) {
315
265
  }
316
266
  }
317
267
  }
318
- // Top internally-linked pages with their current status code (most-linked first). A 404/redirect
319
- // high in this list is a major leak — lots of internal links pointing at a dead/redirected URL.
320
268
  const topLinkedPages = db.db.prepare(`SELECT url_key, COALESCE(inlink_count,0) inl, status_code, indexable, indexable_reason FROM pages WHERE is_internal=1 ORDER BY inlink_count DESC, status_code LIMIT 30`).all()
321
269
  .map(p => ({ url: p.url_key, inlinks: p.inl, status: p.status_code, indexable: !!p.indexable, reason: p.indexable_reason }));
322
- // Site health — Screaming-Frog-style crawl diagnostics. One conditional-aggregation
323
- // pass per table region (not a COUNT(*) scan per bucket); tones are assigned HERE, where
324
- // the meaning of each bucket is known, so the UI never has to infer colour from label text.
325
270
  let crawlHealth;
326
271
  {
327
272
  const one = (sql) => db.db.prepare(sql).get().n;
@@ -329,8 +274,6 @@ export function getDashboardData(dataDir, siteUrl) {
329
274
  if (totalPages > 0) {
330
275
  const stats = (rows) => rows.filter(r => r.count > 0);
331
276
  const num = (v) => Number(v) || 0;
332
- // Estimated transfer size: pages.bytes is the DECODED HTML size (see Crawler), so
333
- // compressed responses ship roughly 22% of it over the wire.
334
277
  const EST = `CAST(CASE WHEN content_encoding IS NOT NULL AND content_encoding <> '' THEN bytes*0.22 ELSE bytes END AS INTEGER)`;
335
278
  const IDX = `status_code=200 AND indexable=1 AND ${HTML_CT}`;
336
279
  const g1 = db.db.prepare(`SELECT
@@ -362,7 +305,6 @@ export function getDashboardData(dataDir, siteUrl) {
362
305
  SUM(CASE WHEN mixed_content_count > 0 THEN 1 ELSE 0 END) mixed,
363
306
  SUM(CASE WHEN heading_skips > 0 THEN 1 ELSE 0 END) hSkips
364
307
  FROM pages WHERE ${IDX}`).get();
365
- // Duplicate title/meta: one GROUP BY pass each (sum of members of every duplicated group).
366
308
  const dupCount = (col) => db.db.prepare(`SELECT COALESCE(SUM(c),0) n FROM (SELECT COUNT(*) c FROM pages WHERE ${IDX} AND ${col} IS NOT NULL AND TRIM(${col})<>'' GROUP BY LOWER(TRIM(${col})) HAVING COUNT(*)>1)`).get().n;
367
309
  const responseCodes = stats([
368
310
  { label: '200 OK', count: num(g1.ok), tone: 'ok' },
@@ -426,7 +368,6 @@ export function getDashboardData(dataDir, siteUrl) {
426
368
  };
427
369
  }
428
370
  }
429
- // Agent readiness — latest result persisted by check_agent_readiness (one property per DB).
430
371
  const arRow = db.db.prepare(`SELECT score, level, checks, by_category, checked_at FROM agent_readiness ORDER BY checked_at DESC LIMIT 1`).get();
431
372
  const parseJ = (s) => { try {
432
373
  return JSON.parse(s || '[]');
@@ -435,8 +376,6 @@ export function getDashboardData(dataDir, siteUrl) {
435
376
  return [];
436
377
  } };
437
378
  const agentReadiness = arRow ? { score: arRow.score, level: arRow.level, checkedAt: arRow.checked_at, byCategory: parseJ(arRow.by_category), checks: parseJ(arRow.checks) } : undefined;
438
- // Cannibalisation braids — queries where multiple URLs compete, each URL's weekly avg position.
439
- // The "braid" of crossing lines over time is Google thrashing between URLs (severity = tangle).
440
379
  const cannQueries = db.db.prepare(`WITH pp AS (SELECT query, page_key, SUM(impressions) imp, SUM(position*impressions)*1.0/NULLIF(SUM(impressions),0) pos
441
380
  FROM search_analytics WHERE query IS NOT NULL AND page_key IS NOT NULL AND ${UB} AND date > date(?, '-90 days')
442
381
  GROUP BY query, page_key HAVING pos < 20 AND imp >= 30)
@@ -452,12 +391,6 @@ export function getDashboardData(dataDir, siteUrl) {
452
391
  })),
453
392
  };
454
393
  });
455
- // Cannibalisation table — the full list (not just the 6 braided). One query for every
456
- // (query,page_key) pair that competes, grouped client-side. Verdict by IMPRESSION share (robust:
457
- // impressions are always present, so a single noise click can't flip it): 'dominant' = Google
458
- // overwhelmingly shows one URL (≥70%, low urgency); 'split' = it rotates between URLs
459
- // (consolidate). crossType = the competing URLs are DIFFERENT page types (e.g. a category page
460
- // and an article) — the clearest intent confusion and the most actionable to resolve.
461
394
  const cannRows = db.db.prepare(`WITH pp AS (SELECT query, page_key, SUM(impressions) imp, SUM(clicks) clk, SUM(position*impressions)*1.0/NULLIF(SUM(impressions),0) pos
462
395
  FROM search_analytics WHERE query IS NOT NULL AND page_key IS NOT NULL AND ${UB} AND date > date(?, '-90 days')
463
396
  GROUP BY query, page_key HAVING pos < 20 AND imp >= 30),
@@ -473,18 +406,13 @@ export function getDashboardData(dataDir, siteUrl) {
473
406
  const cannibalisationTable = [...cannMap.entries()].map(([query, urls]) => {
474
407
  const totalImpressions = urls.reduce((s, u) => s + u.impressions, 0);
475
408
  const totalClicks = urls.reduce((s, u) => s + u.clicks, 0);
476
- // Impression share of the most-shown URL — robust to click noise (the old click-share verdict
477
- // could flip 'dominant' on a single click in the 5–10 total-clicks band).
478
409
  const imprShare = totalImpressions > 0 ? Math.max(...urls.map(u => u.impressions)) / totalImpressions : 0;
479
410
  const verdict = imprShare >= 0.7 ? 'dominant' : 'split';
480
- // Cross-type = the competing URLs span 2+ page templates (e.g. a /category page vs an article).
481
411
  const crossType = new Set(urls.map(u => u.template)).size >= 2;
482
412
  return { query, urlCount: urls.length, totalImpressions, totalClicks, verdict, crossType, urls: urls.slice(0, 6) };
483
- }).sort((a, b) => (Number(b.crossType) - Number(a.crossType)) || // cross-type first (most actionable)
484
- ((a.verdict === 'split' ? 0 : 1) - (b.verdict === 'split' ? 0 : 1)) || // then split before dominant
413
+ }).sort((a, b) => (Number(b.crossType) - Number(a.crossType)) ||
414
+ ((a.verdict === 'split' ? 0 : 1) - (b.verdict === 'split' ? 0 : 1)) ||
485
415
  (b.totalImpressions - a.totalImpressions)).slice(0, 40);
486
- // Link intersect (link_intersect) — followed-first, then Trust Flow / domain trust. Absent
487
- // table (pre-link_intersect DB) is fine; the tab shows a run/upsell state instead.
488
416
  let linkProspects = [];
489
417
  try {
490
418
  const lpRows = db.db.prepare(`SELECT domain, intersections, linked_targets, domain_trust, spam_score, dofollow,
@@ -511,10 +439,7 @@ export function getDashboardData(dataDir, siteUrl) {
511
439
  fetchedAt: r.fetched_at ?? null,
512
440
  }));
513
441
  }
514
- catch { /* no link_prospects table yet */ }
515
- // Trapped authority: pages with real external authority (referring domains) buried deep
516
- // internally (click depth 3+ from home via body links, or unreachable) — equity not reaching
517
- // money pages. Needs pull_backlinks (page_backlinks); empty otherwise.
442
+ catch { }
518
443
  let trappedAuthority = [];
519
444
  try {
520
445
  const taRows = db.db.prepare(`SELECT p.url_key url, COALESCE(p.ipr,0) ipr, p.click_depth cd,
@@ -529,9 +454,7 @@ export function getDashboardData(dataDir, siteUrl) {
529
454
  try {
530
455
  topTopic = (JSON.parse(r.ttf || '[]')[0]?.topic) ?? null;
531
456
  }
532
- catch { /* not enriched */ }
533
- // Rank by real authority buried deep: Majestic Trust Flow (0-100) when enriched, else the
534
- // referring-domains count (capped) as a proxy, weighted by how deep the page sits.
457
+ catch { }
535
458
  const authority = r.tf != null ? r.tf : Math.min(r.rd, 100);
536
459
  return { url: r.url, referringDomains: r.rd, backlinks: r.bl, clickDepth: r.cd, ipr: Math.round(r.ipr), trustFlow: r.tf ?? null, topTopic, _s: authority * (r.cd ?? 6) };
537
460
  })
@@ -539,7 +462,7 @@ export function getDashboardData(dataDir, siteUrl) {
539
462
  .slice(0, 20)
540
463
  .map(({ _s, ...rest }) => rest);
541
464
  }
542
- catch { /* no page_backlinks / no crawl */ }
465
+ catch { }
543
466
  const payload = {
544
467
  siteUrl,
545
468
  linkProspects,
@@ -574,20 +497,18 @@ export function getDashboardData(dataDir, siteUrl) {
574
497
  serpFootprint: latestSerpFootprint(db.db),
575
498
  marketSizing: latestMarketSizing(db.db),
576
499
  };
577
- // Best-effort cache write (skip silently if the DB is read-only).
578
500
  try {
579
501
  db.db.prepare(`INSERT INTO dashboard_cache (id, version, payload, created_at) VALUES (1, ?, ?, datetime('now'))
580
502
  ON CONFLICT(id) DO UPDATE SET version=excluded.version, payload=excluded.payload, created_at=excluded.created_at`)
581
503
  .run(version, JSON.stringify(payload));
582
504
  }
583
- catch { /* cache is an optimisation, never block the dashboard on it */ }
505
+ catch { }
584
506
  return payload;
585
507
  }
586
508
  finally {
587
509
  db.close();
588
510
  }
589
511
  }
590
- /** Template proxy: first URL path segment (homepage / content-root collapse to named buckets). */
591
512
  function templateBucket(urlKey) {
592
513
  try {
593
514
  const p = new URL(urlKey).pathname.replace(/^\/+|\/+$/g, '');
@@ -599,7 +520,6 @@ function templateBucket(urlKey) {
599
520
  return 'other';
600
521
  }
601
522
  }
602
- /** Categorise a page by period-over-period performance (per the agency-report idiom). */
603
523
  function pageCategory(cur, prev) {
604
524
  const pct = prev.clicks ? ((cur.clicks - prev.clicks) / prev.clicks) * 100 : (cur.clicks > 0 ? 100 : 0);
605
525
  if (pct >= 15)
@@ -614,20 +534,18 @@ function pageCategory(cur, prev) {
614
534
  return 'improve CTR';
615
535
  return 'stable';
616
536
  }
617
- /** Categorise a query's rank movement (first-seen vs last-seen position). */
618
537
  function movementCategory(first, last) {
619
538
  if (first > 3 && last <= 3)
620
539
  return 'entered top 3';
621
540
  if (first <= 3 && last > 3)
622
541
  return 'dropped from top 3';
623
- const delta = first - last; // positive = improved (lower position number)
542
+ const delta = first - last;
624
543
  if (delta >= 3)
625
544
  return 'gained';
626
545
  if (delta <= -3)
627
546
  return 'lost';
628
547
  return 'stable';
629
548
  }
630
- /** Reconcile GSC (daily) and DataForSEO (monthly) date ranges before charting. */
631
549
  function reconcileRanges(gscMin, gscMax, rankHistory) {
632
550
  const gsc = gscMin && gscMax ? { start: gscMin, end: gscMax } : null;
633
551
  const dfs = rankHistory.length
@@ -1 +1 @@
1
- {"version":3,"file":"dashboardData.js","sourceRoot":"","sources":["../../src/core/dashboardData.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboardData.js","sourceRoot":"","sources":["../../src/core/dashboardData.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- /** How many recent audit runs / crawl snapshots clear-crawl-history keeps. */
2
1
  export declare const KEEP_RECENT = 5;
3
2
  export interface PropertyStorage {
4
3
  file: string;
@@ -13,7 +12,6 @@ export interface PropertyStorage {
13
12
  lastCrawl: string | null;
14
13
  linkProspects: number;
15
14
  linkProspectsFetched: string | null;
16
- /** Other properties sharing this file (pre-per-form-filename databases) — their data is mixed in. */
17
15
  sharedWith?: string[];
18
16
  }
19
17
  export interface StorageSummary {
@@ -1 +1 @@
1
- {"version":3,"file":"dataStorage.d.ts","sourceRoot":"","sources":["../../src/core/dataStorage.ts"],"names":[],"mappings":"AAWA,8EAA8E;AAC9E,eAAO,MAAM,WAAW,IAAI,CAAC;AAM7B,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,qGAAqG;IACrG,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1C,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AA0BD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,CA+DhF;AAED,eAAO,MAAM,QAAQ,GAAI,GAAG,MAAM,KAAG,MAKpC,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,GAAG,qBAAqB,GAAG,iBAAiB,EAC5D,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,GAC1C,WAAW,CAsEb"}
1
+ {"version":3,"file":"dataStorage.d.ts","sourceRoot":"","sources":["../../src/core/dataStorage.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,WAAW,IAAI,CAAC;AAM7B,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1C,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AA0BD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,CA+DhF;AAED,eAAO,MAAM,QAAQ,GAAI,GAAG,MAAM,KAAG,MAKpC,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,GAAG,qBAAqB,GAAG,iBAAiB,EAC5D,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,GAC1C,WAAW,CAsEb"}
@@ -1,14 +1,7 @@
1
- /**
2
- * dataStorage — data-hygiene: what's on disk per property (sizes, row counts, last
3
- * sync/crawl), plus explicit prune actions (vacuum / clear-crawl-history /
4
- * delete-property). Destructive actions require confirm:true and refuse loudly,
5
- * naming exactly what would be deleted. Never touches a DB while a job is running.
6
- */
7
1
  import Database from 'better-sqlite3';
8
2
  import { readdirSync, statSync, existsSync, rmSync } from 'node:fs';
9
3
  import path from 'node:path';
10
4
  import { dbPathFor, sanitizeProperty } from './paths.js';
11
- /** How many recent audit runs / crawl snapshots clear-crawl-history keeps. */
12
5
  export const KEEP_RECENT = 5;
13
6
  const CACHE_DB_NAMES = new Set([
14
7
  'dataforseo-cache.db', 'wikidata-cache.db', 'majestic-cache.db', 'firecrawl-cache.db', 'supadata-cache.db',
@@ -19,7 +12,7 @@ const sizeWithSidecars = (dbFile) => {
19
12
  try {
20
13
  total += statSync(dbFile + suffix).size;
21
14
  }
22
- catch { /* absent */ }
15
+ catch { }
23
16
  }
24
17
  return total;
25
18
  };
@@ -34,11 +27,11 @@ const dirSize = (dir) => {
34
27
  try {
35
28
  total += statSync(p).size;
36
29
  }
37
- catch { /* raced */ }
30
+ catch { }
38
31
  }
39
32
  }
40
33
  }
41
- catch { /* absent */ }
34
+ catch { }
42
35
  return total;
43
36
  };
44
37
  const safeCount = (db, table) => {
@@ -57,7 +50,7 @@ export function storageSummary(dataDir, siteUrl) {
57
50
  try {
58
51
  files = readdirSync(dataDir).filter(f => f.endsWith('.db'));
59
52
  }
60
- catch { /* dataDir absent */ }
53
+ catch { }
61
54
  const wantStem = siteUrl ? sanitizeProperty(siteUrl) : null;
62
55
  for (const file of files.sort()) {
63
56
  const full = path.join(dataDir, file);
@@ -74,12 +67,8 @@ export function storageSummary(dataDir, siteUrl) {
74
67
  other.push({ file, bytes });
75
68
  continue;
76
69
  }
77
- // The ACTIVE property (most recently synced) owns the data. Ordering by id reported the
78
- // first property ever created, which on a legacy collided database is the wrong one.
79
70
  const metaRows = db.prepare(`SELECT site_url, last_synced_at FROM property_meta ORDER BY COALESCE(last_synced_at,'') DESC, id ASC`).all();
80
71
  const meta = metaRows[0];
81
- // >1 property in one file = a database created before per-form filenames. Say so rather than
82
- // silently attributing every row to one of them.
83
72
  const sharedWith = metaRows.length > 1 ? metaRows.slice(1).map(r => r.site_url) : undefined;
84
73
  if (wantStem && file !== `${wantStem}.db`)
85
74
  continue;
@@ -87,12 +76,12 @@ export function storageSummary(dataDir, siteUrl) {
87
76
  try {
88
77
  lastCrawl = db.prepare(`SELECT MAX(COALESCE(finished_at, started_at)) t FROM crawl_metadata`).get().t;
89
78
  }
90
- catch { /* no crawl table */ }
79
+ catch { }
91
80
  let linkProspectsFetched = null;
92
81
  try {
93
82
  linkProspectsFetched = db.prepare(`SELECT MAX(fetched_at) t FROM link_prospects`).get().t;
94
83
  }
95
- catch { /* no link_prospects table (pre-link_intersect DB) */ }
84
+ catch { }
96
85
  properties.push({
97
86
  file,
98
87
  siteUrl: meta?.site_url ?? null,
@@ -171,8 +160,6 @@ export function pruneProperty(dataDir, siteUrl, action, confirm, runningJobs) {
171
160
  const bytesAfter = sizeWithSidecars(dbFile);
172
161
  return { ...base, ok: true, detail: { bytesBefore, bytesAfter, bytesReclaimed: Math.max(bytesBefore - bytesAfter, 0) } };
173
162
  }
174
- // clear-crawl-history: drop page_snapshots + audit_runs/findings beyond the KEEP_RECENT
175
- // most recent, then VACUUM. Preview first so the refusal can name what goes.
176
163
  const db = new Database(dbFile);
177
164
  try {
178
165
  const keepRuns = db.prepare(`SELECT run_id FROM audit_runs ORDER BY started_at DESC LIMIT ${KEEP_RECENT}`).all().map(r => r.run_id);