@adriangalilea/utils 9.11.0 → 9.13.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 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`).
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`). A visit reads a page by opening it, or by being shown it whole elsewhere, as a note in a feed is read like a tweet in a timeline: the page writes a `view` line naming it (`{ host, path }`, ui's page-sensor does for `data-view` elements half on screen), counted once per visit with the page itself; `readViews(db, { site, host, paths })` sums it over all time, what a public "N views" reads.
97
97
 
98
98
  ## Installation
99
99
 
@@ -22,12 +22,17 @@
22
22
  * ROWS: `visits_visit` (one per visit: when, how many pages, where it came
23
23
  * from, coarse country and viewport, whether a probe or the site's staff made
24
24
  * it), `visits_page` (one per page span: its place, path, how it was reached,
25
- * 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),
26
26
  * `visits_event` (every line of the page's trace as written: the page span's
27
27
  * own start and end, fetch spans, named events, errors, so a page's trace is
28
- * read back from its lines alone, on the visitor's one clock). Pages and visits are kept VISIT_DAYS, events EVENT_DAYS, a
29
- * probe's or staff's FLAGGED_DAYS; old rows go on the first write of each
30
- * 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; a visit reads a page
31
+ * by opening it or by a `view` line naming it, a post shown whole elsewhere). Pages and visits
32
+ * are kept VISIT_DAYS, events EVENT_DAYS, a probe's or staff's FLAGGED_DAYS;
33
+ * old rows go on the first write of each day. Views are kept for good: they
34
+ * are what a page's all-time count is read from (`readViews`). Provision
35
+ * VISITS_SCHEMA once, never on a request.
31
36
  *
32
37
  * REFUSED: a line that is no event, a service the site did not name, a line
33
38
  * outside a page's trace, a field named like a person (ip, user_agent, email,
@@ -41,7 +46,7 @@ export declare const EVENT_DAYS = 30;
41
46
  /** A probe's or the staff's visits: the developer's view, kept a week. */
42
47
  export declare const FLAGGED_DAYS = 7;
43
48
  /** Run explicitly during provisioning, never on a request. */
44
- 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)"];
49
+ 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))"];
45
50
  export interface VisitsOptions {
46
51
  /** The site's own SQLite, VISITS_SCHEMA provisioned. */
47
52
  readonly db: MetricsDriver;
@@ -107,6 +112,16 @@ export declare function readVisits(db: MetricsReader, q: {
107
112
  events?: readonly string[];
108
113
  now?: number;
109
114
  }): Promise<VisitRow[]>;
115
+ /**
116
+ * How many visits read each of a host's pages, all time: a page's view count, from
117
+ * `visits_views` (each visit once, the staff's and probes' never). `paths` limits it
118
+ * to those pages; a page no visit read is absent.
119
+ */
120
+ export declare function readViews(db: MetricsReader, q: {
121
+ site: string;
122
+ host: string;
123
+ paths?: readonly string[];
124
+ }): Promise<Record<string, number>>;
110
125
  /** One visit's page rows and its lines as written, in the order kept: each
111
126
  * page's trace (its own start and end, its requests, its events) by trace id. */
112
127
  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":"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"}
@@ -22,12 +22,17 @@
22
22
  * ROWS: `visits_visit` (one per visit: when, how many pages, where it came
23
23
  * from, coarse country and viewport, whether a probe or the site's staff made
24
24
  * it), `visits_page` (one per page span: its place, path, how it was reached,
25
- * 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),
26
26
  * `visits_event` (every line of the page's trace as written: the page span's
27
27
  * own start and end, fetch spans, named events, errors, so a page's trace is
28
- * read back from its lines alone, on the visitor's one clock). Pages and visits are kept VISIT_DAYS, events EVENT_DAYS, a
29
- * probe's or staff's FLAGGED_DAYS; old rows go on the first write of each
30
- * 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; a visit reads a page
31
+ * by opening it or by a `view` line naming it, a post shown whole elsewhere). Pages and visits
32
+ * are kept VISIT_DAYS, events EVENT_DAYS, a probe's or staff's FLAGGED_DAYS;
33
+ * old rows go on the first write of each day. Views are kept for good: they
34
+ * are what a page's all-time count is read from (`readViews`). Provision
35
+ * VISITS_SCHEMA once, never on a request.
31
36
  *
32
37
  * REFUSED: a line that is no event, a service the site did not name, a line
33
38
  * outside a page's trace, a field named like a person (ip, user_agent, email,
@@ -55,6 +60,7 @@ export const VISITS_SCHEMA = [
55
60
  "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)",
56
61
  "CREATE INDEX IF NOT EXISTS visits_event_visit ON visits_event (visit, id)",
57
62
  "CREATE INDEX IF NOT EXISTS visits_event_day ON visits_event (day)",
63
+ "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))",
58
64
  ];
59
65
  export function callerOf(request) {
60
66
  const h = request.headers;
@@ -154,7 +160,7 @@ export function visitsRoute(options) {
154
160
  const staff = paging && options.staff !== undefined
155
161
  ? await options.staff(request)
156
162
  : false;
157
- const visitOf = await assign(db, site, { caller, staff }, day, at, events, statements);
163
+ const { visitOf, viewers } = await assign(db, site, { caller, staff }, day, at, events, statements);
158
164
  let accepted = 0;
159
165
  for (const { n, line, e } of events) {
160
166
  const visit = visitOf(e.trace_id);
@@ -165,6 +171,21 @@ export function visitsRoute(options) {
165
171
  accepted++;
166
172
  if (e.msg === "page" && e.phase === "end")
167
173
  statements.push(pageEnd(e));
174
+ // A post read where it was shown (a note in a feed): a view of its page.
175
+ const host = str(e.fields?.host);
176
+ const path = str(e.fields?.path);
177
+ if (e.msg === "view" &&
178
+ e.phase === undefined &&
179
+ host !== null &&
180
+ path?.startsWith("/") &&
181
+ inside(host, site)) {
182
+ let viewer = viewers.get(visit);
183
+ if (viewer === undefined) {
184
+ viewer = await viewerOf(db, visit);
185
+ viewers.set(visit, viewer);
186
+ }
187
+ statements.push(...view(viewer, { site, day, host, path }));
188
+ }
168
189
  statements.push({
169
190
  sql: "INSERT INTO visits_event (visit, trace_id, day, at, line) VALUES (?, ?, ?, ?, ?)",
170
191
  args: [visit, e.trace_id, day, at, line],
@@ -211,6 +232,7 @@ function refusal(line, services) {
211
232
  * its start, so whichever of the two arrives first keeps the page.
212
233
  */
213
234
  async function assign(db, site, { caller, staff }, day, at, events, statements) {
235
+ const viewers = new Map();
214
236
  const traces = [...new Set(events.map(({ e }) => e.trace_id))];
215
237
  // One event per page, its start where the batch has it.
216
238
  const opened = new Map();
@@ -230,7 +252,7 @@ async function assign(db, site, { caller, staff }, day, at, events, statements)
230
252
  known.set(String(r.trace_id), String(r.visit));
231
253
  }
232
254
  if (starts.length === 0)
233
- return (t) => known.get(t);
255
+ return { visitOf: (t) => known.get(t), viewers };
234
256
  // The site is in the hash: one store can hold several sites, and a person reading
235
257
  // two of them is two callers, never one visit across sites nor a link between them.
236
258
  const hash = await sha256(`${await saltOf(db, day)}\0${site}\0${caller.ip}\0${caller.agent}`);
@@ -241,8 +263,13 @@ async function assign(db, site, { caller, staff }, day, at, events, statements)
241
263
  args: [day, id],
242
264
  })),
243
265
  ];
266
+ /** The visit the batch's pages join: its pages so far and what it has viewed. */
244
267
  let visit = open && at - Number(open.last) <= VISIT_GAP_MS
245
- ? { id: String(open.visit), pages: Number(open.pages) }
268
+ ? {
269
+ id: String(open.visit),
270
+ pages: Number(open.pages),
271
+ ...(await viewerOf(db, String(open.visit))),
272
+ }
246
273
  : null;
247
274
  for (const e of starts) {
248
275
  if (known.has(e.trace_id))
@@ -251,7 +278,12 @@ async function assign(db, site, { caller, staff }, day, at, events, statements)
251
278
  const flag = (k) => f[k] === true || (k === "staff" && staff) ? 1 : 0;
252
279
  if (visit === null) {
253
280
  const referrer = str(f.referrer);
254
- visit = { id: hex(crypto.getRandomValues(new Uint8Array(8))), pages: 0 };
281
+ visit = {
282
+ id: hex(crypto.getRandomValues(new Uint8Array(8))),
283
+ pages: 0,
284
+ flagged: false,
285
+ seen: new Set(),
286
+ };
255
287
  statements.push({
256
288
  sql: "INSERT INTO visits_visit (id, site, day, started, last, pages, referrer, source, country, viewport, probe, staff) VALUES (?, ?, ?, ?, ?, 0, ?, ?, ?, ?, ?, ?)",
257
289
  args: [
@@ -271,6 +303,11 @@ async function assign(db, site, { caller, staff }, day, at, events, statements)
271
303
  }
272
304
  visit.pages += 1;
273
305
  known.set(e.trace_id, visit.id);
306
+ const host = str(f.host) ?? "";
307
+ const path = str(f.path) ?? "/";
308
+ visit.flagged ||= flag("probe") === 1 || flag("staff") === 1;
309
+ viewers.set(visit.id, visit);
310
+ statements.push(...view(visit, { site, day, host, path }));
274
311
  statements.push({
275
312
  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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
276
313
  args: [
@@ -281,8 +318,8 @@ async function assign(db, site, { caller, staff }, day, at, events, statements)
281
318
  site,
282
319
  day,
283
320
  at,
284
- str(f.host) ?? "",
285
- str(f.path) ?? "/",
321
+ host,
322
+ path,
286
323
  str(f.place),
287
324
  str(f.route),
288
325
  str(f.nav) ?? "navigate",
@@ -299,7 +336,40 @@ async function assign(db, site, { caller, staff }, day, at, events, statements)
299
336
  sql: "INSERT INTO visits_caller (day, caller, visit, last) VALUES (?, ?, ?, ?) ON CONFLICT (day, caller) DO UPDATE SET visit = excluded.visit, last = excluded.last",
300
337
  args: [day, id, visit.id, at],
301
338
  });
302
- return (t) => known.get(t);
339
+ return { visitOf: (t) => known.get(t), viewers };
340
+ }
341
+ const viewKey = (host, path) => `${host}\0${path}`;
342
+ async function viewerOf(db, visit) {
343
+ const [v] = [
344
+ ...(await db.query({
345
+ sql: "SELECT probe, staff FROM visits_visit WHERE id = ?",
346
+ args: [visit],
347
+ })),
348
+ ];
349
+ if (v === undefined)
350
+ throw new Error(`visits: no visit ${visit}`);
351
+ const read = await db.query({
352
+ sql: "SELECT host, path FROM visits_page WHERE visit = ? UNION SELECT json_extract(line, '$.fields.host'), json_extract(line, '$.fields.path') FROM visits_event WHERE visit = ? AND json_extract(line, '$.msg') = 'view' AND json_extract(line, '$.phase') IS NULL",
353
+ args: [visit, visit],
354
+ });
355
+ return {
356
+ flagged: Number(v.probe) === 1 || Number(v.staff) === 1,
357
+ seen: new Set([...read].map((r) => viewKey(String(r.host), String(r.path)))),
358
+ };
359
+ }
360
+ /** A page read by a visit: a view of it, the first time this visit reads it. */
361
+ function view(viewer, at) {
362
+ const key = viewKey(at.host, at.path);
363
+ const first = !viewer.seen.has(key);
364
+ viewer.seen.add(key);
365
+ return first && !viewer.flagged
366
+ ? [
367
+ {
368
+ sql: "INSERT INTO visits_views (site, day, host, path, views) VALUES (?, ?, ?, ?, 1) ON CONFLICT (site, day, host, path) DO UPDATE SET views = views + 1",
369
+ args: [at.site, at.day, at.host, at.path],
370
+ },
371
+ ]
372
+ : [];
303
373
  }
304
374
  /** What a page span's end adds to its row. */
305
375
  function pageEnd(e) {
@@ -432,6 +502,21 @@ export async function readVisits(db, q) {
432
502
  }
433
503
  return [...visits.values()].map(({ at: _, ...v }) => v);
434
504
  }
505
+ /**
506
+ * How many visits read each of a host's pages, all time: a page's view count, from
507
+ * `visits_views` (each visit once, the staff's and probes' never). `paths` limits it
508
+ * to those pages; a page no visit read is absent.
509
+ */
510
+ export async function readViews(db, q) {
511
+ const only = q.paths === undefined
512
+ ? ""
513
+ : ` AND path IN (${q.paths.map(() => "?").join(",") || "NULL"})`;
514
+ const rows = await db.query({
515
+ sql: `SELECT path, SUM(views) AS views FROM visits_views WHERE site = ? AND host = ?${only} GROUP BY path`,
516
+ args: [q.site, q.host, ...(q.paths ?? [])],
517
+ });
518
+ return Object.fromEntries([...rows].map((r) => [String(r.path), Number(r.views)]));
519
+ }
435
520
  /** One visit's page rows and its lines as written, in the order kept: each
436
521
  * page's trace (its own start and end, its requests, its events) by trace id. */
437
522
  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.11.0",
3
+ "version": "9.13.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",