@adriangalilea/utils 9.10.0 → 9.12.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.
package/README.md CHANGED
@@ -93,7 +93,7 @@ const visits = await readVisits(libsqlDriver(client), { site: 'untitled.garden',
93
93
  // [{ id, started, places: ['studio', 'lore'], referrer: 'news.ycombinator.com', country: 'ES', … }]
94
94
  ```
95
95
 
96
- A visit is one caller's pages, each within 30 minutes of the one before, within one UTC day. The caller is a hash of its IP and user agent with a random salt of the day, deleted when the day is over: a visitor is recognisable within a day, never across two, and once the salt is gone by no one, the site's owner included. The IP and user agent are never stored; the country (two letters, from the platform's header) is. Pages and visits are kept 180 days, a page's lines (its own start and end, requests, named events, errors) 30, a probe's (an automated browser) and the staff's 7, and both are left out of `readVisits` unless `flagged`. A page flags itself a probe (`navigator.webdriver`); the route's `staff(request)` flags the pages a batch starts as the site's own people reading, answered on the server where the session is (a signed-in owner, a development host). Refused, by line: a service the site did not name, a line outside a page's trace, a field named like a person (`ip`, `user_agent`, `email`, `user`, `name`, `phone`). A crawler's batch is dropped whole. Provision `VISITS_SCHEMA` once (the tables are prefixed `visits_`); the route updates and deletes, so its credential needs both. `readVisits` merges a move within a place (two pages of one project are one step, `pages` counts them), and `events: ['main action']` makes those named lines steps too, right after the page they were written on, as `eventStep(place, name)` (`trash:main action`): where a project's funnel ends. `readVisit(db, id)` returns one visit's pages and its lines as written: every page's trace, read back from the lines alone (ui's `spanTrees`).
96
+ A visit is one caller's pages, each within 30 minutes of the one before, within one UTC day. The caller is a hash of its IP and user agent with the site and a random salt of the day, deleted when the day is over: a visitor is recognisable within a day, never across two, and once the salt is gone by no one, the site's owner included. One store can hold several sites: a person reading two of them is two callers, never linked. The IP and user agent are never stored; the country (two letters, from the platform's header) is. Pages and visits are kept 180 days, a page's lines (its own start and end, requests, named events, errors) 30, a probe's (an automated browser) and the staff's 7, and both are left out of `readVisits` unless `flagged`. A page flags itself a probe (`navigator.webdriver`); the route's `staff(request)` flags the pages a batch starts as the site's own people reading, answered on the server where the session is (a signed-in owner, a development host). Refused, by line: a service the site did not name, a line outside a page's trace, a field named like a person (`ip`, `user_agent`, `email`, `user`, `name`, `phone`). A crawler's batch is dropped whole. Provision `VISITS_SCHEMA` once (the tables are prefixed `visits_`); the route updates and deletes, so its credential needs both. `readVisits` merges a move within a place (two pages of one project are one step, `pages` counts them), and `events: ['main action']` makes those named lines steps too, right after the page they were written on, as `eventStep(place, name)` (`trash:main action`): where a project's funnel ends. `readVisit(db, id)` returns one visit's pages and its lines as written: every page's trace, read back from the lines alone (ui's `spanTrees`). A page's view count is kept apart, for good: per day and page, how many visits read it, each once and the staff's and probes' never, a number with nothing of who (`visits_views`); `readViews(db, { site, host, paths })` sums it over all time, what a public "N views" reads.
97
97
 
98
98
  ## Installation
99
99
 
@@ -13,20 +13,25 @@
13
13
  * const visits = await readVisits(libsqlDriver(client), { site: "untitled.garden", days: 14 })
14
14
  *
15
15
  * A VISIT is one caller's pages, each within VISIT_GAP_MS of the one before,
16
- * within one UTC day. The caller is a hash of its IP and user agent with a
17
- * random salt of the day, the salt deleted once the day is over: a visitor is
16
+ * within one UTC day. The caller is a hash of its IP and user agent with the
17
+ * site and a random salt of the day, the salt deleted once the day is over (one
18
+ * store can hold several sites, never linking a person across them): a visitor is
18
19
  * recognisable within a day, never across two, and once the salt is gone by no
19
20
  * one. The IP and user agent are never stored; nothing is kept in the browser.
20
21
  *
21
22
  * ROWS: `visits_visit` (one per visit: when, how many pages, where it came
22
23
  * from, coarse country and viewport, whether a probe or the site's staff made
23
24
  * it), `visits_page` (one per page span: its place, path, how it was reached,
24
- * how long it was on screen, the sections it reached, the vitals) and
25
+ * how long it was on screen, the sections it reached, the vitals),
25
26
  * `visits_event` (every line of the page's trace as written: the page span's
26
27
  * own start and end, fetch spans, named events, errors, so a page's trace is
27
- * read back from its lines alone, on the visitor's one clock). Pages and visits are kept VISIT_DAYS, events EVENT_DAYS, a
28
- * probe's or staff's FLAGGED_DAYS; old rows go on the first write of each
29
- * day. Provision VISITS_SCHEMA once, never on a request.
28
+ * read back from its lines alone, on the visitor's one clock) and
29
+ * `visits_views` (per day, per page, how many visits read it, each once, the
30
+ * staff's and probes' never: a count with nothing of who). Pages and visits
31
+ * are kept VISIT_DAYS, events EVENT_DAYS, a probe's or staff's FLAGGED_DAYS;
32
+ * old rows go on the first write of each day. Views are kept for good: they
33
+ * are what a page's all-time count is read from (`readViews`). Provision
34
+ * VISITS_SCHEMA once, never on a request.
30
35
  *
31
36
  * REFUSED: a line that is no event, a service the site did not name, a line
32
37
  * outside a page's trace, a field named like a person (ip, user_agent, email,
@@ -40,7 +45,7 @@ export declare const EVENT_DAYS = 30;
40
45
  /** A probe's or the staff's visits: the developer's view, kept a week. */
41
46
  export declare const FLAGGED_DAYS = 7;
42
47
  /** Run explicitly during provisioning, never on a request. */
43
- export declare const VISITS_SCHEMA: readonly ["CREATE TABLE IF NOT EXISTS visits_salt (day TEXT PRIMARY KEY, salt TEXT NOT NULL)", "CREATE TABLE IF NOT EXISTS visits_caller (day TEXT NOT NULL, caller TEXT NOT NULL, visit TEXT NOT NULL, last INTEGER NOT NULL, PRIMARY KEY (day, caller))", "CREATE TABLE IF NOT EXISTS visits_visit (id TEXT PRIMARY KEY, site TEXT NOT NULL, day TEXT NOT NULL, started INTEGER NOT NULL, last INTEGER NOT NULL, pages INTEGER NOT NULL, referrer TEXT, source TEXT, country TEXT, viewport TEXT, probe INTEGER NOT NULL, staff INTEGER NOT NULL)", "CREATE INDEX IF NOT EXISTS visits_visit_day ON visits_visit (site, day)", "CREATE TABLE IF NOT EXISTS visits_page (span_id TEXT PRIMARY KEY, trace_id TEXT NOT NULL, visit TEXT NOT NULL, seq INTEGER NOT NULL, site TEXT NOT NULL, day TEXT NOT NULL, at INTEGER NOT NULL, host TEXT NOT NULL, path TEXT NOT NULL, place TEXT, route TEXT, nav TEXT NOT NULL, from_path TEXT, build TEXT, dur_ms REAL, reached TEXT, ttfb_ms REAL, lcp_ms REAL, inp_ms REAL, cls REAL)", "CREATE INDEX IF NOT EXISTS visits_page_visit ON visits_page (visit, seq)", "CREATE INDEX IF NOT EXISTS visits_page_trace ON visits_page (trace_id)", "CREATE INDEX IF NOT EXISTS visits_page_day ON visits_page (site, day)", "CREATE TABLE IF NOT EXISTS visits_event (id INTEGER PRIMARY KEY, visit TEXT NOT NULL, trace_id TEXT NOT NULL, day TEXT NOT NULL, at INTEGER NOT NULL, line TEXT NOT NULL)", "CREATE INDEX IF NOT EXISTS visits_event_visit ON visits_event (visit, id)", "CREATE INDEX IF NOT EXISTS visits_event_day ON visits_event (day)"];
48
+ export declare const VISITS_SCHEMA: readonly ["CREATE TABLE IF NOT EXISTS visits_salt (day TEXT PRIMARY KEY, salt TEXT NOT NULL)", "CREATE TABLE IF NOT EXISTS visits_caller (day TEXT NOT NULL, caller TEXT NOT NULL, visit TEXT NOT NULL, last INTEGER NOT NULL, PRIMARY KEY (day, caller))", "CREATE TABLE IF NOT EXISTS visits_visit (id TEXT PRIMARY KEY, site TEXT NOT NULL, day TEXT NOT NULL, started INTEGER NOT NULL, last INTEGER NOT NULL, pages INTEGER NOT NULL, referrer TEXT, source TEXT, country TEXT, viewport TEXT, probe INTEGER NOT NULL, staff INTEGER NOT NULL)", "CREATE INDEX IF NOT EXISTS visits_visit_day ON visits_visit (site, day)", "CREATE TABLE IF NOT EXISTS visits_page (span_id TEXT PRIMARY KEY, trace_id TEXT NOT NULL, visit TEXT NOT NULL, seq INTEGER NOT NULL, site TEXT NOT NULL, day TEXT NOT NULL, at INTEGER NOT NULL, host TEXT NOT NULL, path TEXT NOT NULL, place TEXT, route TEXT, nav TEXT NOT NULL, from_path TEXT, build TEXT, dur_ms REAL, reached TEXT, ttfb_ms REAL, lcp_ms REAL, inp_ms REAL, cls REAL)", "CREATE INDEX IF NOT EXISTS visits_page_visit ON visits_page (visit, seq)", "CREATE INDEX IF NOT EXISTS visits_page_trace ON visits_page (trace_id)", "CREATE INDEX IF NOT EXISTS visits_page_day ON visits_page (site, day)", "CREATE TABLE IF NOT EXISTS visits_event (id INTEGER PRIMARY KEY, visit TEXT NOT NULL, trace_id TEXT NOT NULL, day TEXT NOT NULL, at INTEGER NOT NULL, line TEXT NOT NULL)", "CREATE INDEX IF NOT EXISTS visits_event_visit ON visits_event (visit, id)", "CREATE INDEX IF NOT EXISTS visits_event_day ON visits_event (day)", "CREATE TABLE IF NOT EXISTS visits_views (site TEXT NOT NULL, day TEXT NOT NULL, host TEXT NOT NULL, path TEXT NOT NULL, views INTEGER NOT NULL, PRIMARY KEY (site, day, host, path))"];
44
49
  export interface VisitsOptions {
45
50
  /** The site's own SQLite, VISITS_SCHEMA provisioned. */
46
51
  readonly db: MetricsDriver;
@@ -106,6 +111,16 @@ export declare function readVisits(db: MetricsReader, q: {
106
111
  events?: readonly string[];
107
112
  now?: number;
108
113
  }): Promise<VisitRow[]>;
114
+ /**
115
+ * How many visits read each of a host's pages, all time: a page's view count, from
116
+ * `visits_views` (each visit once, the staff's and probes' never). `paths` limits it
117
+ * to those pages; a page no visit read is absent.
118
+ */
119
+ export declare function readViews(db: MetricsReader, q: {
120
+ site: string;
121
+ host: string;
122
+ paths?: readonly string[];
123
+ }): Promise<Record<string, number>>;
109
124
  /** One visit's page rows and its lines as written, in the order kept: each
110
125
  * page's trace (its own start and end, its requests, its events) by trace id. */
111
126
  export declare function readVisit(db: MetricsReader, id: string): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/visits/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/visits/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,KAAK,EACX,aAAa,EACb,aAAa,EAGb,MAAM,sBAAsB,CAAC;AAG9B,yFAAyF;AACzF,eAAO,MAAM,YAAY,QAAc,CAAC;AACxC,eAAO,MAAM,UAAU,MAAM,CAAC;AAC9B,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,0EAA0E;AAC1E,eAAO,MAAM,YAAY,IAAI,CAAC;AAK9B,8DAA8D;AAC9D,eAAO,MAAM,aAAa,wrDAahB,CAAC;AAEX,MAAM,WAAW,aAAa;IAC7B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC;IAC3B,qFAAqF;IACrF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wFAAwF;IACxF,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,6GAA6G;IAC7G,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC;IAC/C;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC5B;AAED,sGAAsG;AACtG,MAAM,WAAW,MAAM;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAejD;AA2CD,MAAM,WAAW,SAAS;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACrB;AAeD,uGAAuG;AACvG,wBAAgB,WAAW,CAC1B,OAAO,EAAE,aAAa,GACpB,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAgFzC;AA2OD;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACxB;AAED;qEACqE;AACrE,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,KAAG,MACrC,CAAC;AAErB;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC/B,EAAE,EAAE,aAAa,EACjB,CAAC,EAAE;IACF,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;CACb,GACC,OAAO,CAAC,QAAQ,EAAE,CAAC,CA8DrB;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAC9B,EAAE,EAAE,aAAa,EACjB,CAAC,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC1D,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAYjC;AAED;kFACkF;AAClF,wBAAsB,SAAS,CAC9B,EAAE,EAAE,aAAa,EACjB,EAAE,EAAE,MAAM,GACR,OAAO,CAAC;IACV,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACjC,KAAK,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC,CAcD"}
@@ -13,20 +13,25 @@
13
13
  * const visits = await readVisits(libsqlDriver(client), { site: "untitled.garden", days: 14 })
14
14
  *
15
15
  * A VISIT is one caller's pages, each within VISIT_GAP_MS of the one before,
16
- * within one UTC day. The caller is a hash of its IP and user agent with a
17
- * random salt of the day, the salt deleted once the day is over: a visitor is
16
+ * within one UTC day. The caller is a hash of its IP and user agent with the
17
+ * site and a random salt of the day, the salt deleted once the day is over (one
18
+ * store can hold several sites, never linking a person across them): a visitor is
18
19
  * recognisable within a day, never across two, and once the salt is gone by no
19
20
  * one. The IP and user agent are never stored; nothing is kept in the browser.
20
21
  *
21
22
  * ROWS: `visits_visit` (one per visit: when, how many pages, where it came
22
23
  * from, coarse country and viewport, whether a probe or the site's staff made
23
24
  * it), `visits_page` (one per page span: its place, path, how it was reached,
24
- * how long it was on screen, the sections it reached, the vitals) and
25
+ * how long it was on screen, the sections it reached, the vitals),
25
26
  * `visits_event` (every line of the page's trace as written: the page span's
26
27
  * own start and end, fetch spans, named events, errors, so a page's trace is
27
- * read back from its lines alone, on the visitor's one clock). Pages and visits are kept VISIT_DAYS, events EVENT_DAYS, a
28
- * probe's or staff's FLAGGED_DAYS; old rows go on the first write of each
29
- * day. Provision VISITS_SCHEMA once, never on a request.
28
+ * read back from its lines alone, on the visitor's one clock) and
29
+ * `visits_views` (per day, per page, how many visits read it, each once, the
30
+ * staff's and probes' never: a count with nothing of who). Pages and visits
31
+ * are kept VISIT_DAYS, events EVENT_DAYS, a probe's or staff's FLAGGED_DAYS;
32
+ * old rows go on the first write of each day. Views are kept for good: they
33
+ * are what a page's all-time count is read from (`readViews`). Provision
34
+ * VISITS_SCHEMA once, never on a request.
30
35
  *
31
36
  * REFUSED: a line that is no event, a service the site did not name, a line
32
37
  * outside a page's trace, a field named like a person (ip, user_agent, email,
@@ -54,6 +59,7 @@ export const VISITS_SCHEMA = [
54
59
  "CREATE TABLE IF NOT EXISTS visits_event (id INTEGER PRIMARY KEY, visit TEXT NOT NULL, trace_id TEXT NOT NULL, day TEXT NOT NULL, at INTEGER NOT NULL, line TEXT NOT NULL)",
55
60
  "CREATE INDEX IF NOT EXISTS visits_event_visit ON visits_event (visit, id)",
56
61
  "CREATE INDEX IF NOT EXISTS visits_event_day ON visits_event (day)",
62
+ "CREATE TABLE IF NOT EXISTS visits_views (site TEXT NOT NULL, day TEXT NOT NULL, host TEXT NOT NULL, path TEXT NOT NULL, views INTEGER NOT NULL, PRIMARY KEY (site, day, host, path))",
57
63
  ];
58
64
  export function callerOf(request) {
59
65
  const h = request.headers;
@@ -230,16 +236,30 @@ async function assign(db, site, { caller, staff }, day, at, events, statements)
230
236
  }
231
237
  if (starts.length === 0)
232
238
  return (t) => known.get(t);
233
- const hash = await sha256(`${await saltOf(db, day)}\0${caller.ip}\0${caller.agent}`);
239
+ // The site is in the hash: one store can hold several sites, and a person reading
240
+ // two of them is two callers, never one visit across sites nor a link between them.
241
+ const hash = await sha256(`${await saltOf(db, day)}\0${site}\0${caller.ip}\0${caller.agent}`);
234
242
  const id = hash.slice(0, 32);
235
243
  const [open] = [
236
244
  ...(await db.query({
237
- sql: "SELECT c.visit, c.last, v.pages FROM visits_caller c JOIN visits_visit v ON v.id = c.visit WHERE c.day = ? AND c.caller = ?",
245
+ sql: "SELECT c.visit, c.last, v.pages, v.probe, v.staff FROM visits_caller c JOIN visits_visit v ON v.id = c.visit WHERE c.day = ? AND c.caller = ?",
238
246
  args: [day, id],
239
247
  })),
240
248
  ];
249
+ /** The visit the batch's pages join: its pages so far, whether it is flagged, and
250
+ * the pages (host and path) it has seen, each counted once in its views. */
241
251
  let visit = open && at - Number(open.last) <= VISIT_GAP_MS
242
- ? { id: String(open.visit), pages: Number(open.pages) }
252
+ ? {
253
+ id: String(open.visit),
254
+ pages: Number(open.pages),
255
+ flagged: Number(open.probe) === 1 || Number(open.staff) === 1,
256
+ seen: new Set([
257
+ ...(await db.query({
258
+ sql: "SELECT DISTINCT host, path FROM visits_page WHERE visit = ?",
259
+ args: [String(open.visit)],
260
+ })),
261
+ ].map((r) => `${String(r.host)}\0${String(r.path)}`)),
262
+ }
243
263
  : null;
244
264
  for (const e of starts) {
245
265
  if (known.has(e.trace_id))
@@ -248,7 +268,12 @@ async function assign(db, site, { caller, staff }, day, at, events, statements)
248
268
  const flag = (k) => f[k] === true || (k === "staff" && staff) ? 1 : 0;
249
269
  if (visit === null) {
250
270
  const referrer = str(f.referrer);
251
- visit = { id: hex(crypto.getRandomValues(new Uint8Array(8))), pages: 0 };
271
+ visit = {
272
+ id: hex(crypto.getRandomValues(new Uint8Array(8))),
273
+ pages: 0,
274
+ flagged: false,
275
+ seen: new Set(),
276
+ };
252
277
  statements.push({
253
278
  sql: "INSERT INTO visits_visit (id, site, day, started, last, pages, referrer, source, country, viewport, probe, staff) VALUES (?, ?, ?, ?, ?, 0, ?, ?, ?, ?, ?, ?)",
254
279
  args: [
@@ -268,6 +293,17 @@ async function assign(db, site, { caller, staff }, day, at, events, statements)
268
293
  }
269
294
  visit.pages += 1;
270
295
  known.set(e.trace_id, visit.id);
296
+ const host = str(f.host) ?? "";
297
+ const path = str(f.path) ?? "/";
298
+ visit.flagged ||= flag("probe") === 1 || flag("staff") === 1;
299
+ // A page's views: the visits that read it, each once, its own and probes' never.
300
+ const key = `${host}\0${path}`;
301
+ if (!visit.flagged && !visit.seen.has(key))
302
+ statements.push({
303
+ sql: "INSERT INTO visits_views (site, day, host, path, views) VALUES (?, ?, ?, ?, 1) ON CONFLICT (site, day, host, path) DO UPDATE SET views = views + 1",
304
+ args: [site, day, host, path],
305
+ });
306
+ visit.seen.add(key);
271
307
  statements.push({
272
308
  sql: "INSERT OR IGNORE INTO visits_page (span_id, trace_id, visit, seq, site, day, at, host, path, place, route, nav, from_path, build) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
273
309
  args: [
@@ -278,8 +314,8 @@ async function assign(db, site, { caller, staff }, day, at, events, statements)
278
314
  site,
279
315
  day,
280
316
  at,
281
- str(f.host) ?? "",
282
- str(f.path) ?? "/",
317
+ host,
318
+ path,
283
319
  str(f.place),
284
320
  str(f.route),
285
321
  str(f.nav) ?? "navigate",
@@ -429,6 +465,21 @@ export async function readVisits(db, q) {
429
465
  }
430
466
  return [...visits.values()].map(({ at: _, ...v }) => v);
431
467
  }
468
+ /**
469
+ * How many visits read each of a host's pages, all time: a page's view count, from
470
+ * `visits_views` (each visit once, the staff's and probes' never). `paths` limits it
471
+ * to those pages; a page no visit read is absent.
472
+ */
473
+ export async function readViews(db, q) {
474
+ const only = q.paths === undefined
475
+ ? ""
476
+ : ` AND path IN (${q.paths.map(() => "?").join(",") || "NULL"})`;
477
+ const rows = await db.query({
478
+ sql: `SELECT path, SUM(views) AS views FROM visits_views WHERE site = ? AND host = ?${only} GROUP BY path`,
479
+ args: [q.site, q.host, ...(q.paths ?? [])],
480
+ });
481
+ return Object.fromEntries([...rows].map((r) => [String(r.path), Number(r.views)]));
482
+ }
432
483
  /** One visit's page rows and its lines as written, in the order kept: each
433
484
  * page's trace (its own start and end, its requests, its events) by trace id. */
434
485
  export async function readVisit(db, id) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/visits/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/visits/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adriangalilea/utils",
3
- "version": "9.10.0",
3
+ "version": "9.12.0",
4
4
  "description": "TypeScript utilities - logger, currency, formatter, GramIO bot plugins, and more",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",