@mongrov/analytics 0.7.0 → 0.8.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 (41) hide show
  1. package/UPGRADING.md +86 -0
  2. package/dist/core/index.d.ts +2 -0
  3. package/dist/core/index.d.ts.map +1 -1
  4. package/dist/core/index.js +4 -0
  5. package/dist/core/index.js.map +1 -1
  6. package/dist/core/migrations.d.ts.map +1 -1
  7. package/dist/core/migrations.js +39 -0
  8. package/dist/core/migrations.js.map +1 -1
  9. package/dist/core/sampling.d.ts +70 -0
  10. package/dist/core/sampling.d.ts.map +1 -0
  11. package/dist/core/sampling.js +107 -0
  12. package/dist/core/sampling.js.map +1 -0
  13. package/dist/core/schemas.d.ts.map +1 -1
  14. package/dist/core/schemas.js +6 -2
  15. package/dist/core/schemas.js.map +1 -1
  16. package/dist/rules/validator.d.ts.map +1 -1
  17. package/dist/rules/validator.js +35 -2
  18. package/dist/rules/validator.js.map +1 -1
  19. package/dist/sync/factory.d.ts +29 -4
  20. package/dist/sync/factory.d.ts.map +1 -1
  21. package/dist/sync/factory.js +37 -31
  22. package/dist/sync/factory.js.map +1 -1
  23. package/dist/sync/mapper/firmware.d.ts +3 -12
  24. package/dist/sync/mapper/firmware.d.ts.map +1 -1
  25. package/dist/sync/mapper/firmware.js +2 -8
  26. package/dist/sync/mapper/firmware.js.map +1 -1
  27. package/dist/sync/mapper/ring-config.d.ts +76 -28
  28. package/dist/sync/mapper/ring-config.d.ts.map +1 -1
  29. package/dist/sync/mapper/ring-config.js +118 -35
  30. package/dist/sync/mapper/ring-config.js.map +1 -1
  31. package/dist/sync/mapper/schema.d.ts +318 -60
  32. package/dist/sync/mapper/schema.d.ts.map +1 -1
  33. package/dist/sync/mapper/schema.js +40 -8
  34. package/dist/sync/mapper/schema.js.map +1 -1
  35. package/dist/sync/mapper/types.d.ts +52 -19
  36. package/dist/sync/mapper/types.d.ts.map +1 -1
  37. package/dist/sync/pending_closes.js +2 -2
  38. package/dist/sync/pending_closes.js.map +1 -1
  39. package/dist/sync/pusher.js +2 -2
  40. package/dist/sync/pusher.js.map +1 -1
  41. package/package.json +1 -1
@@ -43,7 +43,6 @@ const configSchema = z.object({
43
43
  tables: z.array(z.string().min(1)).min(1),
44
44
  columnOrder: z.record(z.string(), z.array(z.string()).readonly()),
45
45
  prefetchPolicy: prefetchPolicySchema,
46
- hasRingConfigTranslator: z.boolean(),
47
46
  flush: z.object({
48
47
  maxRows: z.number().int().positive().optional(),
49
48
  maxAgeMs: z.number().int().positive().optional(),
@@ -58,9 +57,6 @@ const configSchema = z.object({
58
57
  requiresWifi: z.boolean().optional(),
59
58
  taskName: z.string().optional(),
60
59
  }).optional(),
61
- }).refine(cfg => !cfg.tables.includes('device_config') || cfg.hasRingConfigTranslator, {
62
- message: 'ringConfigTranslator is required when `tables` includes \'device_config\'',
63
- path: ['ringConfigTranslator'],
64
60
  });
65
61
  /**
66
62
  * Assemble a fully wired `SyncManager`. Throws `z.ZodError` if the config is
@@ -71,7 +67,6 @@ export function createSyncManager(config) {
71
67
  tables: config.tables,
72
68
  columnOrder: config.columnOrder,
73
69
  prefetchPolicy: config.prefetchPolicy,
74
- hasRingConfigTranslator: config.ringConfigTranslator !== undefined,
75
70
  flush: config.flush,
76
71
  overflow: config.overflow,
77
72
  scheduler: config.scheduler,
@@ -313,7 +308,6 @@ export function createSyncManager(config) {
313
308
  tables: config.tables,
314
309
  engine: engineAsHybrid,
315
310
  attachCtx: config.ctx,
316
- translator: config.ringConfigTranslator,
317
311
  pendingClosesStore,
318
312
  });
319
313
  return {
@@ -353,30 +347,44 @@ export function createSyncManager(config) {
353
347
  * `.has(dataType)` — but hydrating the row keeps the map future-friendly
354
348
  * for logging / diagnostics without a second query.
355
349
  */
350
+ /**
351
+ * Open (`valid_to IS NULL`) device_config rows for one device.
352
+ *
353
+ * Fully-qualified `memory.main.device_config` so this resolves against the
354
+ * local catalog regardless of the active `USE <iceberg>.default` that
355
+ * `attach()` issues — a 2-part `main.device_config` would resolve against
356
+ * the current (Iceberg) catalog post-attach and miss.
357
+ *
358
+ * Exported so a test can execute it against the real DDL. It is
359
+ * hand-written SQL naming columns explicitly, which means a schema change
360
+ * can silently desync it: the 0.8.0 `data_type` -> `metric` rename did
361
+ * exactly that, and every unit test mocked the response so nothing caught
362
+ * it. `__tests__/prior-configs-sql.integration.test.ts` now runs it against
363
+ * a real table built from LOCAL_SCHEMAS.
364
+ */
365
+ export const ACTIVE_PRIOR_CONFIGS_SQL = `SELECT device_id, brand, family_id, user_id, metric, interval_minutes, `
366
+ + `start_time, end_time, weeks, valid_from, valid_to\n`
367
+ + ` FROM memory.main.device_config\n`
368
+ + ` WHERE device_id = $device_id\n`
369
+ + ` AND family_id = $family_id\n`
370
+ + ` AND user_id = $user_id\n`
371
+ + ` AND valid_to IS NULL`;
356
372
  async function fetchActivePriorConfigs(engine, ctx) {
357
- // Fully-qualified `memory.main.device_config` so this resolves against the
358
- // local in-memory catalog regardless of the active `USE <iceberg>.default`
359
- // that `attach()` issues. A 2-part `main.device_config` would resolve
360
- // against the current (Iceberg) catalog post-attach and miss.
361
- const rows = await engine.execute(`SELECT device_id, brand, family_id, user_id, data_type, interval_minutes, start_time, end_time, weeks, valid_from, valid_to
362
- FROM memory.main.device_config
363
- WHERE device_id = $device_id
364
- AND family_id = $family_id
365
- AND user_id = $user_id
366
- AND valid_to IS NULL`, {
373
+ // See ACTIVE_PRIOR_CONFIGS_SQL.
374
+ const rows = await engine.execute(ACTIVE_PRIOR_CONFIGS_SQL, {
367
375
  device_id: ctx.deviceId,
368
376
  family_id: ctx.familyId,
369
377
  user_id: ctx.userId,
370
378
  });
371
379
  const map = new Map();
372
380
  for (const r of rows) {
373
- const dataType = Number(r.data_type);
374
- map.set(dataType, {
381
+ const metric = String(r.metric ?? '');
382
+ map.set(metric, {
375
383
  brand: String(r.brand ?? ''),
376
384
  family_id: String(r.family_id ?? ''),
377
385
  user_id: String(r.user_id ?? ''),
378
386
  device_id: String(r.device_id ?? ''),
379
- data_type: dataType,
387
+ metric,
380
388
  interval_minutes: Number(r.interval_minutes),
381
389
  start_time: r.start_time == null ? null : String(r.start_time),
382
390
  end_time: r.end_time == null ? null : String(r.end_time),
@@ -388,8 +396,10 @@ async function fetchActivePriorConfigs(engine, ctx) {
388
396
  return map;
389
397
  }
390
398
  function createSensorSink(deps) {
391
- const { buffer, flusher, triggers, tables, engine, attachCtx, translator, pendingClosesStore } = deps;
392
- const handlesConfig = tables.includes('device_config') && translator !== undefined;
399
+ const { buffer, flusher, triggers, tables, engine, attachCtx, pendingClosesStore } = deps;
400
+ // Gated on subscription alone now the mapper owns the translation, so
401
+ // there is no consumer wiring left that could be missing.
402
+ const handlesConfig = tables.includes('device_config');
393
403
  return {
394
404
  push: async (batch) => {
395
405
  await buffer.push(batch);
@@ -398,17 +408,13 @@ function createSensorSink(deps) {
398
408
  pushFirmware: async (fw, ctx) => {
399
409
  // 1) Pre-fetch open configs for this device so the mapper can decide
400
410
  // which metrics need SCD-2 closes. Skipped when we're not
401
- // subscribed to device_config or no translator is wired.
411
+ // subscribed to device_config.
402
412
  const activePriorConfigs = handlesConfig
403
413
  ? await fetchActivePriorConfigs(engine, ctx)
404
414
  : new Map();
405
- // 2) Map firmware → mapped batch. The mapper requires a translator
406
- // only when firmware has ring windows; the wrapper in `firmware.ts`
407
- // enforces that.
408
- const mapped = mapFirmwareExport(fw, ctx, {
409
- activePriorConfigs,
410
- translator,
411
- });
415
+ // 2) Map firmware → mapped batch. The mapper owns the
416
+ // dataType metric translation; no consumer translator needed.
417
+ const mapped = mapFirmwareExport(fw, ctx, { activePriorConfigs });
412
418
  // 3) SCD-2 close handling. Enqueue-before-UPDATE keeps the local
413
419
  // UPDATE + remote UPDATE replay-safe under crash: both are
414
420
  // idempotent via the `valid_to IS NULL` guard.
@@ -421,11 +427,11 @@ function createSensorSink(deps) {
421
427
  await engine.execute(`UPDATE memory.main.device_config
422
428
  SET valid_to = $valid_to
423
429
  WHERE device_id = $device_id
424
- AND data_type = $data_type
430
+ AND metric = $data_type
425
431
  AND valid_to IS NULL`, {
426
432
  valid_to: close.valid_to.toISOString(),
427
433
  device_id: close.device_id,
428
- data_type: close.data_type,
434
+ metric: close.metric,
429
435
  });
430
436
  }
431
437
  }
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/sync/factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/sync/factory.ts"],"names":[],"mappings":"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"}
@@ -14,23 +14,14 @@
14
14
  * shape contract.
15
15
  */
16
16
  import { type RingConfigClose } from './ring-config';
17
- import type { DeviceConfigRow, FirmwareExport, MappedBatch, MapperContext, RingConfigTranslator } from './types';
17
+ import type { DeviceConfigRow, FirmwareExport, MappedBatch, MapperContext } from './types';
18
18
  export interface MapFirmwareOptions {
19
19
  /** Override for deterministic tests. Defaults to `new Date()`. */
20
20
  now?: Date;
21
21
  /**
22
- * SCD-2 prior-config map keyed by `data_type` (integer) — see
23
- * `mapRingConfig`. Required whenever `fw.ring` is non-empty; the mapper
24
- * skips ring-config translation entirely when this is absent and `fw.ring`
25
- * has no windows.
22
+ * SCD-2 prior-config map keyed by metric id — see `mapRingConfig`.
26
23
  */
27
- activePriorConfigs?: ReadonlyMap<number, DeviceConfigRow>;
28
- /**
29
- * Consumer-provided translation from firmware ring metrics to schema
30
- * fields. Required if `fw.ring.automaticMonitoringData` has entries;
31
- * skipped (empty inserts + closes) if absent.
32
- */
33
- translator?: RingConfigTranslator;
24
+ activePriorConfigs?: ReadonlyMap<string, DeviceConfigRow>;
34
25
  }
35
26
  export interface FirmwareMappedBatch extends MappedBatch {
36
27
  device_config_closes: RingConfigClose[];
@@ -1 +1 @@
1
- {"version":3,"file":"firmware.d.ts","sourceRoot":"","sources":["../../../src/sync/mapper/firmware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAA;AAInE,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,WAAW,EACX,aAAa,EACb,oBAAoB,EACrB,MAAM,SAAS,CAAA;AAEhB,MAAM,WAAW,kBAAkB;IACjC,kEAAkE;IAClE,GAAG,CAAC,EAAE,IAAI,CAAA;IACV;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACzD;;;;OAIG;IACH,UAAU,CAAC,EAAE,oBAAoB,CAAA;CAClC;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,oBAAoB,EAAE,eAAe,EAAE,CAAA;CACxC;AAED,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,cAAc,EAClB,GAAG,EAAE,aAAa,EAClB,IAAI,GAAE,kBAAuB,GAC5B,mBAAmB,CAsBrB"}
1
+ {"version":3,"file":"firmware.d.ts","sourceRoot":"","sources":["../../../src/sync/mapper/firmware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAA;AAInE,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,WAAW,EACX,aAAa,EACd,MAAM,SAAS,CAAA;AAEhB,MAAM,WAAW,kBAAkB;IACjC,kEAAkE;IAClE,GAAG,CAAC,EAAE,IAAI,CAAA;IACV;;OAEG;IACH,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;CAC1D;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,oBAAoB,EAAE,eAAe,EAAE,CAAA;CACxC;AAED,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,cAAc,EAClB,GAAG,EAAE,aAAa,EAClB,IAAI,GAAE,kBAAuB,GAC5B,mBAAmB,CAsBrB"}
@@ -51,17 +51,11 @@ export function mapFirmwareExport(fw, ctx, opts = {}) {
51
51
  * sub-mappers).
52
52
  */
53
53
  function mapRingConfigIfPossible(fw, ctx, opts) {
54
- const windows = fw.ring?.automaticMonitoringData ?? [];
55
- if (windows.length === 0 && !opts.translator) {
56
- return { inserts: [], closes: [] };
57
- }
58
- if (!opts.translator) {
59
- throw new Error('mapFirmwareExport: firmware ring.automaticMonitoringData has entries but no `translator` was provided in options');
60
- }
54
+ // No consumer translator any more: the mapper reads the vendor struct
55
+ // directly and owns the dataType -> metric translation itself.
61
56
  return mapRingConfig(fw.ring ?? { automaticMonitoringData: [] }, ctx, {
62
57
  now: opts.now,
63
58
  activePriorConfigs: opts.activePriorConfigs,
64
- translator: opts.translator,
65
59
  });
66
60
  }
67
61
  //# sourceMappingURL=firmware.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"firmware.js","sourceRoot":"","sources":["../../../src/sync/mapper/firmware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAwB,MAAM,eAAe,CAAA;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AA+B9C,MAAM,UAAU,iBAAiB,CAC/B,EAAkB,EAClB,GAAkB,EAClB,OAA2B,EAAE;IAE7B,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAC,eAAe,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;IAC3D,MAAM,KAAK,GAAG,wBAAwB,CAAC,EAAE,CAAC,eAAe,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;IACrE,MAAM,MAAM,GAAG,uBAAuB,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;IAErD,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,IAAI,EAAE,EAAE,GAAG,CAAC;QACpC,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC,SAAS,IAAI,EAAE,EAAE,GAAG,CAAC;QACjD,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC;QACjC,WAAW,EAAE,cAAc,CAAC,EAAE,CAAC,iBAAiB,IAAI,EAAE,EAAE,GAAG,CAAC;QAC5D,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,eAAe,EAAE,QAAQ,CAAC,eAAe;QACzC,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,gEAAgE;QAChE,kEAAkE;QAClE,YAAY,EAAE,EAAE;QAChB,cAAc,EAAE,UAAU,CAAC,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,GAAG,CAAC;QACvD,aAAa,EAAE,MAAM,CAAC,OAAO;QAC7B,oBAAoB,EAAE,MAAM,CAAC,MAAM;KACpC,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,uBAAuB,CAC9B,EAAkB,EAClB,GAAkB,EAClB,IAAwB;IAExB,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,EAAE,uBAAuB,IAAI,EAAE,CAAA;IACtD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7C,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;IACpC,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,kHAAkH,CACnH,CAAA;IACH,CAAC;IACD,OAAO,aAAa,CAClB,EAAE,CAAC,IAAI,IAAI,EAAE,uBAAuB,EAAE,EAAE,EAAE,EAC1C,GAAG,EACH;QACE,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"firmware.js","sourceRoot":"","sources":["../../../src/sync/mapper/firmware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAwB,MAAM,eAAe,CAAA;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAqB9C,MAAM,UAAU,iBAAiB,CAC/B,EAAkB,EAClB,GAAkB,EAClB,OAA2B,EAAE;IAE7B,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAC,eAAe,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;IAC3D,MAAM,KAAK,GAAG,wBAAwB,CAAC,EAAE,CAAC,eAAe,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;IACrE,MAAM,MAAM,GAAG,uBAAuB,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;IAErD,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,IAAI,EAAE,EAAE,GAAG,CAAC;QACpC,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC,SAAS,IAAI,EAAE,EAAE,GAAG,CAAC;QACjD,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC;QACjC,WAAW,EAAE,cAAc,CAAC,EAAE,CAAC,iBAAiB,IAAI,EAAE,EAAE,GAAG,CAAC;QAC5D,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,eAAe,EAAE,QAAQ,CAAC,eAAe;QACzC,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,gEAAgE;QAChE,kEAAkE;QAClE,YAAY,EAAE,EAAE;QAChB,cAAc,EAAE,UAAU,CAAC,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,GAAG,CAAC;QACvD,aAAa,EAAE,MAAM,CAAC,OAAO;QAC7B,oBAAoB,EAAE,MAAM,CAAC,MAAM;KACpC,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,uBAAuB,CAC9B,EAAkB,EAClB,GAAkB,EAClB,IAAwB;IAExB,sEAAsE;IACtE,+DAA+D;IAC/D,OAAO,aAAa,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,uBAAuB,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;QACpE,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;KAC5C,CAAC,CAAA;AACJ,CAAC"}
@@ -1,35 +1,85 @@
1
1
  /**
2
- * Ring config mapper (T-08).
2
+ * Ring config mapper (T-08, Sprint 5 T-09/T-10).
3
3
  *
4
4
  * Firmware `ring.automaticMonitoringData[]` describes which metrics the ring
5
- * currently samples (interval + active hours). We store these as SCD-2-style
6
- * rows in `device_config`, with `valid_from = now()` and `valid_to = null` on
7
- * the new insert.
5
+ * currently samples and on what schedule. We store these as SCD-2-style rows
6
+ * in `device_config`, with `valid_from = now()` and `valid_to = null` on the
7
+ * new insert.
8
+ *
9
+ * ## The firmware boundary (principles 20 + 21)
10
+ *
11
+ * The vendor struct is `AutomaticMonitoring_J2301A` (JStyle J2301A SDK):
12
+ *
13
+ * ```c
14
+ * int mode;
15
+ * int startTime_Hour; int startTime_Minutes;
16
+ * int endTime_Hour; int endTime_Minutes;
17
+ * MyWeeks_J2301A weeks; // 7 booleans
18
+ * int intervalTime;
19
+ * int dataType; // 1 = heartRate, 2 = spo2, 3 = temperature, 4 = HRV
20
+ * ```
21
+ *
22
+ * Everything firmware-shaped is translated here and nothing crosses into
23
+ * the warehouse: `dataType` becomes our metric id, split hour/minute fields
24
+ * become `HH:MM` strings, and the seven-boolean `weeks` struct becomes a
25
+ * bitmask. Principle 21 is explicit that firmware enums must not reach the
26
+ * schema, so `device_config` stores `metric`, never `data_type`.
27
+ *
28
+ * Prior versions inverted this: the mapper's input type had already
29
+ * discarded `dataType`, so a consumer-supplied `RingConfigTranslator` had
30
+ * to invent the enum back from our own metric names — the schema ended up
31
+ * holding a firmware integer that the app, not the firmware, produced.
8
32
  *
9
33
  * Closing prior config (SCD-2 semantics):
10
34
  * The mapper accepts an optional `activePriorConfigs` map keyed by
11
- * `data_type` (integer, produced via the translator). For every metric that
12
- * shows up in the new firmware snapshot, if a prior config was open, the
13
- * mapper emits a `close` entry so the sink can `UPDATE ... SET valid_to =
14
- * now()` locally before the INSERT lands, and enqueue the same directive
15
- * for the next remote push cycle. Metrics present in the prior map but
16
- * absent from the new firmware are left open (the ring is silent on them,
17
- * not disabling them).
18
- *
19
- * Translation:
20
- * The mapper cannot invent `data_type` integers or `start_time`/`end_time`
21
- * strings on its own those are consumer-specific enumerations. Callers
22
- * MUST pass a `RingConfigTranslator` in `opts` (see `mapper/types.ts`).
23
- * Without a translator the mapper cannot produce a schema-shaped row, so
24
- * the option is required TypeScript enforces this at every call site.
25
- *
26
- * The mapper stays pure: no engine access, no clock reads beyond the injected
27
- * `now` (defaults to `new Date()` for production).
35
+ * metric. For every metric present in the new snapshot, if a prior config
36
+ * was open, it emits a `close` entry so the sink can `UPDATE ... SET
37
+ * valid_to = now()` before the INSERT lands. Metrics present in the prior
38
+ * map but absent from the new snapshot are left open — the ring is silent
39
+ * on them, not disabling them.
40
+ */
41
+ import type { DeviceConfigRow, FirmwareRingConfig, FirmwareWeekdays, MapperContext } from './types';
42
+ /**
43
+ * Firmware `dataType` → our metric id (Sprint 5 T-09).
44
+ *
45
+ * Verbatim from the vendor header's own comment. Note this is a **1:1**
46
+ * map: `dataType = 2` is SpO₂ alone, and temperature is its own code 3.
47
+ * The Sprint 5 spec described 2 as "spo2 + temperature (shared schedule)"
48
+ * requiring a fan-out to two rows; the SDK does not agree, so there is
49
+ * nothing to fan out.
50
+ *
51
+ * (Whether firmware *slaves* the two schedules together in practice is a
52
+ * separate, still-open question — but it would not change this mapping,
53
+ * only mean the ring reports two windows with identical timings.)
54
+ */
55
+ export declare const FIRMWARE_DATA_TYPE_TO_METRIC: Readonly<Record<number, string>>;
56
+ /** Reverse map, for diagnostics and for keying prior-config reads. */
57
+ export declare const METRIC_TO_FIRMWARE_DATA_TYPE: Readonly<Record<string, number>>;
58
+ /**
59
+ * Translate a firmware `dataType` to the metric(s) it schedules.
60
+ *
61
+ * Returns an array for forward-compatibility — if a future firmware
62
+ * revision genuinely does share one code across metrics, this signature
63
+ * absorbs it without a breaking change.
64
+ *
65
+ * @throws on an unknown code, with the raw value in the message. Silently
66
+ * dropping an unrecognised code would mean a metric the ring is actively
67
+ * sampling never appears in `device_config`, and every cadence-dependent
68
+ * consumer would fall back to the `metric_metadata` default without
69
+ * anyone noticing.
70
+ */
71
+ export declare function firmwareDataTypeToMetrics(dataType: number): string[];
72
+ /**
73
+ * Seven booleans → a 7-bit mask for `device_config.weeks`.
74
+ * Bit 0 = Sunday … bit 6 = Saturday. All-days is `0x7F`.
28
75
  */
29
- import type { DeviceConfigRow, FirmwareRingConfig, MapperContext, RingConfigTranslator } from './types';
76
+ export declare function weekdaysToBitmask(weeks: FirmwareWeekdays | undefined): number | null;
77
+ /** `HH:MM`, zero-padded. Null when the firmware supplied out-of-range values. */
78
+ export declare function formatClockTime(hour: number, minutes: number): string | null;
30
79
  export interface RingConfigClose {
31
80
  device_id: string;
32
- data_type: number;
81
+ /** Our metric id — matches `device_config.metric`. */
82
+ metric: string;
33
83
  valid_to: Date;
34
84
  }
35
85
  export interface MapRingConfigResult {
@@ -38,10 +88,8 @@ export interface MapRingConfigResult {
38
88
  }
39
89
  export interface MapRingConfigOptions {
40
90
  now?: Date;
41
- /** Prior open configs for this device, keyed by `data_type`. */
42
- activePriorConfigs?: ReadonlyMap<number, DeviceConfigRow>;
43
- /** Required — consumer-provided translation from firmware to schema. */
44
- translator: RingConfigTranslator;
91
+ /** Prior open configs for this device, keyed by metric id. */
92
+ activePriorConfigs?: ReadonlyMap<string, DeviceConfigRow>;
45
93
  }
46
- export declare function mapRingConfig(fw: FirmwareRingConfig, ctx: MapperContext, opts: MapRingConfigOptions): MapRingConfigResult;
94
+ export declare function mapRingConfig(fw: FirmwareRingConfig, ctx: MapperContext, opts?: MapRingConfigOptions): MapRingConfigResult;
47
95
  //# sourceMappingURL=ring-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ring-config.d.ts","sourceRoot":"","sources":["../../../src/sync/mapper/ring-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EACV,eAAe,EAEf,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACrB,MAAM,SAAS,CAAA;AAEhB,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,IAAI,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,eAAe,EAAE,CAAA;IAC1B,MAAM,EAAE,eAAe,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,IAAI,CAAA;IACV,gEAAgE;IAChE,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACzD,wEAAwE;IACxE,UAAU,EAAE,oBAAoB,CAAA;CACjC;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,kBAAkB,EACtB,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,oBAAoB,GACzB,mBAAmB,CAiBrB"}
1
+ {"version":3,"file":"ring-config.d.ts","sourceRoot":"","sources":["../../../src/sync/mapper/ring-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,KAAK,EACV,eAAe,EAEf,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACd,MAAM,SAAS,CAAA;AAEhB;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKxE,CAAA;AAEF,sEAAsE;AACtE,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIzE,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAcpE;AAOD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAOpF;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI5E;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,IAAI,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,eAAe,EAAE,CAAA;IAC1B,MAAM,EAAE,eAAe,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,IAAI,CAAA;IACV,8DAA8D;IAC9D,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;CAC1D;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,kBAAkB,EACtB,GAAG,EAAE,aAAa,EAClB,IAAI,GAAE,oBAAyB,GAC9B,mBAAmB,CAiBrB"}
@@ -1,59 +1,142 @@
1
1
  /**
2
- * Ring config mapper (T-08).
2
+ * Ring config mapper (T-08, Sprint 5 T-09/T-10).
3
3
  *
4
4
  * Firmware `ring.automaticMonitoringData[]` describes which metrics the ring
5
- * currently samples (interval + active hours). We store these as SCD-2-style
6
- * rows in `device_config`, with `valid_from = now()` and `valid_to = null` on
7
- * the new insert.
5
+ * currently samples and on what schedule. We store these as SCD-2-style rows
6
+ * in `device_config`, with `valid_from = now()` and `valid_to = null` on the
7
+ * new insert.
8
+ *
9
+ * ## The firmware boundary (principles 20 + 21)
10
+ *
11
+ * The vendor struct is `AutomaticMonitoring_J2301A` (JStyle J2301A SDK):
12
+ *
13
+ * ```c
14
+ * int mode;
15
+ * int startTime_Hour; int startTime_Minutes;
16
+ * int endTime_Hour; int endTime_Minutes;
17
+ * MyWeeks_J2301A weeks; // 7 booleans
18
+ * int intervalTime;
19
+ * int dataType; // 1 = heartRate, 2 = spo2, 3 = temperature, 4 = HRV
20
+ * ```
21
+ *
22
+ * Everything firmware-shaped is translated here and nothing crosses into
23
+ * the warehouse: `dataType` becomes our metric id, split hour/minute fields
24
+ * become `HH:MM` strings, and the seven-boolean `weeks` struct becomes a
25
+ * bitmask. Principle 21 is explicit that firmware enums must not reach the
26
+ * schema, so `device_config` stores `metric`, never `data_type`.
27
+ *
28
+ * Prior versions inverted this: the mapper's input type had already
29
+ * discarded `dataType`, so a consumer-supplied `RingConfigTranslator` had
30
+ * to invent the enum back from our own metric names — the schema ended up
31
+ * holding a firmware integer that the app, not the firmware, produced.
8
32
  *
9
33
  * Closing prior config (SCD-2 semantics):
10
34
  * The mapper accepts an optional `activePriorConfigs` map keyed by
11
- * `data_type` (integer, produced via the translator). For every metric that
12
- * shows up in the new firmware snapshot, if a prior config was open, the
13
- * mapper emits a `close` entry so the sink can `UPDATE ... SET valid_to =
14
- * now()` locally before the INSERT lands, and enqueue the same directive
15
- * for the next remote push cycle. Metrics present in the prior map but
16
- * absent from the new firmware are left open (the ring is silent on them,
17
- * not disabling them).
18
- *
19
- * Translation:
20
- * The mapper cannot invent `data_type` integers or `start_time`/`end_time`
21
- * strings on its own — those are consumer-specific enumerations. Callers
22
- * MUST pass a `RingConfigTranslator` in `opts` (see `mapper/types.ts`).
23
- * Without a translator the mapper cannot produce a schema-shaped row, so
24
- * the option is required — TypeScript enforces this at every call site.
25
- *
26
- * The mapper stays pure: no engine access, no clock reads beyond the injected
27
- * `now` (defaults to `new Date()` for production).
35
+ * metric. For every metric present in the new snapshot, if a prior config
36
+ * was open, it emits a `close` entry so the sink can `UPDATE ... SET
37
+ * valid_to = now()` before the INSERT lands. Metrics present in the prior
38
+ * map but absent from the new snapshot are left open — the ring is silent
39
+ * on them, not disabling them.
28
40
  */
29
- export function mapRingConfig(fw, ctx, opts) {
41
+ /**
42
+ * Firmware `dataType` → our metric id (Sprint 5 T-09).
43
+ *
44
+ * Verbatim from the vendor header's own comment. Note this is a **1:1**
45
+ * map: `dataType = 2` is SpO₂ alone, and temperature is its own code 3.
46
+ * The Sprint 5 spec described 2 as "spo2 + temperature (shared schedule)"
47
+ * requiring a fan-out to two rows; the SDK does not agree, so there is
48
+ * nothing to fan out.
49
+ *
50
+ * (Whether firmware *slaves* the two schedules together in practice is a
51
+ * separate, still-open question — but it would not change this mapping,
52
+ * only mean the ring reports two windows with identical timings.)
53
+ */
54
+ export const FIRMWARE_DATA_TYPE_TO_METRIC = Object.freeze({
55
+ 1: 'heart_rate',
56
+ 2: 'spo2',
57
+ 3: 'temperature',
58
+ 4: 'hrv',
59
+ });
60
+ /** Reverse map, for diagnostics and for keying prior-config reads. */
61
+ export const METRIC_TO_FIRMWARE_DATA_TYPE = Object.freeze(Object.fromEntries(Object.entries(FIRMWARE_DATA_TYPE_TO_METRIC).map(([dt, m]) => [m, Number(dt)])));
62
+ /**
63
+ * Translate a firmware `dataType` to the metric(s) it schedules.
64
+ *
65
+ * Returns an array for forward-compatibility — if a future firmware
66
+ * revision genuinely does share one code across metrics, this signature
67
+ * absorbs it without a breaking change.
68
+ *
69
+ * @throws on an unknown code, with the raw value in the message. Silently
70
+ * dropping an unrecognised code would mean a metric the ring is actively
71
+ * sampling never appears in `device_config`, and every cadence-dependent
72
+ * consumer would fall back to the `metric_metadata` default without
73
+ * anyone noticing.
74
+ */
75
+ export function firmwareDataTypeToMetrics(dataType) {
76
+ const metric = FIRMWARE_DATA_TYPE_TO_METRIC[dataType];
77
+ if (metric === undefined) {
78
+ const known = Object.entries(FIRMWARE_DATA_TYPE_TO_METRIC)
79
+ .map(([dt, m]) => `${dt}=${m}`)
80
+ .join(', ');
81
+ throw new Error(`mapRingConfig: unknown firmware dataType ${dataType}. `
82
+ + `Known values: ${known}. A new value means the ring firmware added a `
83
+ + `monitored metric — add it to FIRMWARE_DATA_TYPE_TO_METRIC and to `
84
+ + `METRIC_METADATA rather than dropping it.`);
85
+ }
86
+ return [metric];
87
+ }
88
+ /** Vendor weekday order, LSB = Sunday. */
89
+ const WEEKDAY_ORDER = [
90
+ 'sunday', 'monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday',
91
+ ];
92
+ /**
93
+ * Seven booleans → a 7-bit mask for `device_config.weeks`.
94
+ * Bit 0 = Sunday … bit 6 = Saturday. All-days is `0x7F`.
95
+ */
96
+ export function weekdaysToBitmask(weeks) {
97
+ if (!weeks)
98
+ return null;
99
+ let mask = 0;
100
+ WEEKDAY_ORDER.forEach((day, i) => {
101
+ if (weeks[day])
102
+ mask |= 1 << i;
103
+ });
104
+ return mask;
105
+ }
106
+ /** `HH:MM`, zero-padded. Null when the firmware supplied out-of-range values. */
107
+ export function formatClockTime(hour, minutes) {
108
+ if (!Number.isInteger(hour) || hour < 0 || hour > 23)
109
+ return null;
110
+ if (!Number.isInteger(minutes) || minutes < 0 || minutes > 59)
111
+ return null;
112
+ return `${String(hour).padStart(2, '0')}:${String(minutes).padStart(2, '0')}`;
113
+ }
114
+ export function mapRingConfig(fw, ctx, opts = {}) {
30
115
  const now = opts.now ?? new Date();
31
116
  const prior = opts.activePriorConfigs ?? new Map();
32
- const translator = opts.translator;
33
117
  const inserts = [];
34
118
  const closes = [];
35
119
  for (const window of fw.automaticMonitoringData ?? []) {
36
- const dataType = translator.metricToDataType(window.metric);
37
- inserts.push(toRow(window, ctx, now, dataType, translator));
38
- if (prior.has(dataType)) {
39
- closes.push({ device_id: ctx.deviceId, data_type: dataType, valid_to: now });
120
+ for (const metric of firmwareDataTypeToMetrics(window.dataType)) {
121
+ inserts.push(toRow(window, ctx, now, metric));
122
+ if (prior.has(metric)) {
123
+ closes.push({ device_id: ctx.deviceId, metric, valid_to: now });
124
+ }
40
125
  }
41
126
  }
42
127
  return { inserts, closes };
43
128
  }
44
- function toRow(window, ctx, now, dataType, translator) {
45
- const fields = translator.windowToSchemaFields(window);
129
+ function toRow(window, ctx, now, metric) {
46
130
  return {
47
- // No `ts` — device_config's time axis is valid_from / valid_to (SCD-2).
48
131
  brand: ctx.brand,
49
132
  family_id: ctx.familyId,
50
133
  user_id: ctx.userId,
51
134
  device_id: ctx.deviceId,
52
- data_type: dataType,
53
- interval_minutes: window.interval_minutes,
54
- start_time: fields.start_time,
55
- end_time: fields.end_time,
56
- weeks: fields.weeks,
135
+ metric,
136
+ interval_minutes: window.intervalTime,
137
+ start_time: formatClockTime(window.startTime_Hour, window.startTime_Minutes),
138
+ end_time: formatClockTime(window.endTime_Hour, window.endTime_Minutes),
139
+ weeks: weekdaysToBitmask(window.weeks),
57
140
  valid_from: now,
58
141
  valid_to: null,
59
142
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ring-config.js","sourceRoot":"","sources":["../../../src/sync/mapper/ring-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AA6BH,MAAM,UAAU,aAAa,CAC3B,EAAsB,EACtB,GAAkB,EAClB,IAA0B;IAE1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAA;IAClC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAI,GAAG,EAA2B,CAAA;IAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;IAElC,MAAM,OAAO,GAAsB,EAAE,CAAA;IACrC,MAAM,MAAM,GAAsB,EAAE,CAAA;IAEpC,KAAK,MAAM,MAAM,IAAI,EAAE,CAAC,uBAAuB,IAAI,EAAE,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC3D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAA;QAC3D,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAA;QAC9E,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;AAC5B,CAAC;AAED,SAAS,KAAK,CACZ,MAAgC,EAChC,GAAkB,EAClB,GAAS,EACT,QAAgB,EAChB,UAAgC;IAEhC,MAAM,MAAM,GAAG,UAAU,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;IACtD,OAAO;QACL,wEAAwE;QACxE,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,SAAS,EAAE,GAAG,CAAC,QAAQ;QACvB,OAAO,EAAE,GAAG,CAAC,MAAM;QACnB,SAAS,EAAE,GAAG,CAAC,QAAQ;QACvB,SAAS,EAAE,QAAQ;QACnB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE,GAAG;QACf,QAAQ,EAAE,IAAI;KACf,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"ring-config.js","sourceRoot":"","sources":["../../../src/sync/mapper/ring-config.ts"],"names":[],"mappings":"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"}