@mongrov/analytics 0.1.0 → 0.3.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 (43) hide show
  1. package/README.md +64 -5
  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/table_metadata.d.ts +37 -0
  7. package/dist/core/table_metadata.d.ts.map +1 -0
  8. package/dist/core/table_metadata.js +51 -0
  9. package/dist/core/table_metadata.js.map +1 -0
  10. package/dist/sync/factory.d.ts +8 -0
  11. package/dist/sync/factory.d.ts.map +1 -1
  12. package/dist/sync/factory.js +121 -3
  13. package/dist/sync/factory.js.map +1 -1
  14. package/dist/sync/fetcher.d.ts.map +1 -1
  15. package/dist/sync/fetcher.js +13 -9
  16. package/dist/sync/fetcher.js.map +1 -1
  17. package/dist/sync/index.d.ts +2 -1
  18. package/dist/sync/index.d.ts.map +1 -1
  19. package/dist/sync/index.js +2 -0
  20. package/dist/sync/index.js.map +1 -1
  21. package/dist/sync/mapper/firmware.d.ts +14 -3
  22. package/dist/sync/mapper/firmware.d.ts.map +1 -1
  23. package/dist/sync/mapper/firmware.js +22 -1
  24. package/dist/sync/mapper/firmware.js.map +1 -1
  25. package/dist/sync/mapper/ring-config.d.ts +27 -13
  26. package/dist/sync/mapper/ring-config.d.ts.map +1 -1
  27. package/dist/sync/mapper/ring-config.js +29 -16
  28. package/dist/sync/mapper/ring-config.js.map +1 -1
  29. package/dist/sync/mapper/types.d.ts +35 -3
  30. package/dist/sync/mapper/types.d.ts.map +1 -1
  31. package/dist/sync/pending_closes.d.ts +30 -0
  32. package/dist/sync/pending_closes.d.ts.map +1 -0
  33. package/dist/sync/pending_closes.js +83 -0
  34. package/dist/sync/pending_closes.js.map +1 -0
  35. package/dist/sync/pusher.d.ts +21 -0
  36. package/dist/sync/pusher.d.ts.map +1 -1
  37. package/dist/sync/pusher.js +59 -3
  38. package/dist/sync/pusher.js.map +1 -1
  39. package/dist/sync/scheduler.d.ts +7 -0
  40. package/dist/sync/scheduler.d.ts.map +1 -1
  41. package/dist/sync/scheduler.js +1 -0
  42. package/dist/sync/scheduler.js.map +1 -1
  43. package/package.json +1 -1
package/README.md CHANGED
@@ -6,11 +6,16 @@ Per-family (or per-tenant) warehouses attached as DuckDB catalogs. Zero-copy
6
6
  reads against R2 Iceberg tables. Headless core with optional React hooks and
7
7
  UI subpaths.
8
8
 
9
- Status: **0.1.0-alpha.7** — Phases 1 → 7 landed on the core engine plus the
10
- full `@mongrov/analytics/sync` subpath (mapper → buffer → flusher → watermark
11
- pusher → fetcher → scheduler → factory + hooks). MinIO integration test
12
- (T-18 / T-28) and app-kill e2e (T-29) still pending; `0.1.0` publish (T-20)
13
- follows once integration coverage lands.
9
+ Status: **0.3.0** — Phases 1 → 7 landed on the core engine plus the full
10
+ `@mongrov/analytics/sync` subpath (mapper → buffer → flusher → watermark
11
+ pusher → fetcher → scheduler → factory + hooks). T-18 / T-28 integration
12
+ suites green against the MinIO + Iceberg REST docker stack (10 cases + 3
13
+ round trips). 0.3.0 additionally lands SCD-2 `device_config` support:
14
+ `RingConfigTranslator`, `PendingClosesStore`, `R2Pusher.pushCloses`, and
15
+ a rewritten sink that closes prior configs both locally and against the
16
+ remote Iceberg zone. **Breaking**: `DeviceConfigRow` shape changed
17
+ (`metric` → `data_type`, `start_hour`/`end_hour` → `start_time`/`end_time`,
18
+ added `weeks`) — see the `ringConfigTranslator` section below.
14
19
 
15
20
  ## Features
16
21
 
@@ -423,6 +428,60 @@ export default function App() {
423
428
  | `backgroundTask?` | `BackgroundTaskPort` | Inject a native background port (defaults to an in-process no-op). |
424
429
  | `constraints?` | `ConstraintPort` | Inject Wi-Fi + charging probes (defaults to always-allowed). |
425
430
  | `logger?` | `SchedulerLogger` | Debug hook for the scheduler cycle. |
431
+ | `ringConfigTranslator?` | `RingConfigTranslator` | **Required** when `tables` includes `'device_config'`. Consumer-provided translation between firmware metric names (e.g. `'hrv'`) and the schema `data_type` integer, plus firmware monitoring windows → schema `start_time`/`end_time`/`weeks` fields. Enforced at construction via a Zod refinement (throws `z.ZodError` if missing). |
432
+
433
+ ### `ringConfigTranslator` (SCD-2 `device_config`)
434
+
435
+ Ring configs land in the warehouse as SCD-2 rows: every automatic-monitoring
436
+ window becomes one row keyed on `(device_id, data_type, valid_from)`, with
437
+ `valid_to = NULL` marking the "open" (currently-effective) config. When the
438
+ firmware reports a changed window for the same `data_type`, the sync manager:
439
+
440
+ 1. Pre-fetches every open `device_config` row for the device (single SELECT).
441
+ 2. Runs `mapRingConfig` with those rows as `activePriorConfigs` — the mapper
442
+ emits `device_config_closes[]` for any metric that already had an open
443
+ row, alongside the new inserts.
444
+ 3. Enqueues the closes to a persistent `PendingClosesStore` (survives crash).
445
+ 4. Applies the local UPDATE (`valid_to := now`) against
446
+ `memory.main.device_config`.
447
+ 5. Buffers the new open row for normal push through the flusher.
448
+ 6. On the next scheduler cycle, `R2Pusher.pushCloses(pending)` issues one
449
+ `UPDATE … WHERE valid_to IS NULL` per pending close against the remote
450
+ Iceberg zone. The `valid_to IS NULL` guard makes replays idempotent.
451
+
452
+ Consumers supply `ringConfigTranslator` because the metric ↔ `data_type`
453
+ mapping and the "how do firmware hours map to `HH:MM` strings + weekday
454
+ bitmasks" choices are app-specific:
455
+
456
+ ```ts
457
+ import { type RingConfigTranslator } from '@mongrov/analytics/sync'
458
+
459
+ const ringConfigTranslator: RingConfigTranslator = {
460
+ metricToDataType: (metric) => {
461
+ switch (metric) {
462
+ case 'hrv': return 1
463
+ case 'spo2': return 2
464
+ case 'heart_rate': return 3
465
+ case 'temperature': return 4
466
+ default: throw new Error(`unknown metric: ${metric}`)
467
+ }
468
+ },
469
+ dataTypeToMetric: (dt) => {
470
+ switch (dt) {
471
+ case 1: return 'hrv'
472
+ case 2: return 'spo2'
473
+ case 3: return 'heart_rate'
474
+ case 4: return 'temperature'
475
+ default: return 'unknown'
476
+ }
477
+ },
478
+ windowToSchemaFields: (w) => ({
479
+ start_time: `${String(w.start_hour).padStart(2, '0')}:00`,
480
+ end_time: `${String(w.end_hour).padStart(2, '0')}:00`,
481
+ weeks: 0x7F, // Mon..Sun bitmask; adjust to your firmware
482
+ }),
483
+ }
484
+ ```
426
485
 
427
486
  ### Prefetch policies
428
487
 
@@ -11,5 +11,7 @@ export { AnalyticsProvider } from './context';
11
11
  export type { AnalyticsProviderProps } from './context';
12
12
  export { AnalyticsError, NotImplementedError } from './errors';
13
13
  export type { AnalyticsErrorCode } from './errors';
14
+ export { isSyncable, TABLE_METADATA, timeColumnFor } from './table_metadata';
15
+ export type { TableSyncMetadata } from './table_metadata';
14
16
  export type { AnalyticsAppender, AnalyticsConfig, AnalyticsEngine, AnalyticsLogger, AnalyticsState, AttachContext, EventBus, FamilyMembersProvider, Insight, KVStore, TenantScope, TokenContext, TokenResponse, TokenVendor, Unsubscribe, } from './types';
15
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAG3C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACjE,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC7C,YAAY,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAGvD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAC9D,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAGlD,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,eAAe,EACf,cAAc,EACd,aAAa,EACb,QAAQ,EACR,qBAAqB,EACrB,OAAO,EACP,OAAO,EACP,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAG3C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACjE,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC7C,YAAY,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAGvD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAC9D,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAKlD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAC5E,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAGzD,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,eAAe,EACf,cAAc,EACd,aAAa,EACb,QAAQ,EACR,qBAAqB,EACrB,OAAO,EACP,OAAO,EACP,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,SAAS,CAAA"}
@@ -12,4 +12,8 @@ export { useAnalytics, useInsight, useTimeseries } from './hooks';
12
12
  export { AnalyticsProvider } from './context';
13
13
  // Errors
14
14
  export { AnalyticsError, NotImplementedError } from './errors';
15
+ // Table sync metadata registry (v0.2.0 — public surface for consumers
16
+ // who need to know a table's sync watermark column or syncability flag,
17
+ // e.g. when composing custom pushAll/fetch loops).
18
+ export { isSyncable, TABLE_METADATA, timeColumnFor } from './table_metadata';
15
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,kCAAkC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,qBAAqB;AACrB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAOjE,qBAAqB;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAG7C,SAAS;AACT,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,kCAAkC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,qBAAqB;AACrB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAOjE,qBAAqB;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAG7C,SAAS;AACT,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAG9D,sEAAsE;AACtE,wEAAwE;AACxE,mDAAmD;AACnD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Sync/query metadata per warehouse table.
3
+ *
4
+ * Complements `TABLE_RETENTION` in `retention.ts` — that registry owns the
5
+ * retention timestamp column and sweep policy; this one owns the *push/fetch*
6
+ * watermark column and syncability flag.
7
+ *
8
+ * `timeColumn` — the monotonic column R2Pusher/R2Fetcher use to bound their
9
+ * delta queries. Most tables use `ts`; `sleep_session` uses `ts_start`
10
+ * (matches its `day(ts_start)` partition); `device_config` (SCD-2) uses
11
+ * `valid_from`.
12
+ *
13
+ * `syncable` — `false` for pure-local tables (`sync_watermark`,
14
+ * `tool_call_audit`). v0.2.0 consumers still pass explicit `tables` lists
15
+ * to `pushAll`/fetcher; this flag exists so future callers can filter
16
+ * without hard-coding.
17
+ */
18
+ import type { TableName } from './schemas';
19
+ export interface TableSyncMetadata {
20
+ timeColumn: string;
21
+ syncable: boolean;
22
+ }
23
+ export declare const TABLE_METADATA: Readonly<Record<TableName, TableSyncMetadata>>;
24
+ /**
25
+ * Resolve the sync watermark column for a table.
26
+ *
27
+ * Falls back to `'ts'` for unknown table names so downstream callers stay
28
+ * compatible if the schema catalog and this registry drift.
29
+ */
30
+ export declare function timeColumnFor(table: TableName | string): string;
31
+ /**
32
+ * Whether a table participates in R2 push/fetch. `false` for warehouse-local
33
+ * tables that carry no cross-device state (`sync_watermark`,
34
+ * `tool_call_audit`).
35
+ */
36
+ export declare function isSyncable(table: TableName | string): boolean;
37
+ //# sourceMappingURL=table_metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table_metadata.d.ts","sourceRoot":"","sources":["../../src/core/table_metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAE1C,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAexE,CAAA;AAEF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAE7D"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Sync/query metadata per warehouse table.
3
+ *
4
+ * Complements `TABLE_RETENTION` in `retention.ts` — that registry owns the
5
+ * retention timestamp column and sweep policy; this one owns the *push/fetch*
6
+ * watermark column and syncability flag.
7
+ *
8
+ * `timeColumn` — the monotonic column R2Pusher/R2Fetcher use to bound their
9
+ * delta queries. Most tables use `ts`; `sleep_session` uses `ts_start`
10
+ * (matches its `day(ts_start)` partition); `device_config` (SCD-2) uses
11
+ * `valid_from`.
12
+ *
13
+ * `syncable` — `false` for pure-local tables (`sync_watermark`,
14
+ * `tool_call_audit`). v0.2.0 consumers still pass explicit `tables` lists
15
+ * to `pushAll`/fetcher; this flag exists so future callers can filter
16
+ * without hard-coding.
17
+ */
18
+ export const TABLE_METADATA = Object.freeze({
19
+ hrv: { timeColumn: 'ts', syncable: true },
20
+ heart_rate: { timeColumn: 'ts', syncable: true },
21
+ spo2: { timeColumn: 'ts', syncable: true },
22
+ temperature: { timeColumn: 'ts', syncable: true },
23
+ activity: { timeColumn: 'ts', syncable: true },
24
+ activity_bucket: { timeColumn: 'ts', syncable: true },
25
+ sleep_session: { timeColumn: 'ts_start', syncable: true },
26
+ sleep_stage: { timeColumn: 'ts', syncable: true },
27
+ sleep_raw: { timeColumn: 'ts', syncable: true },
28
+ device_event: { timeColumn: 'ts', syncable: true },
29
+ device_config: { timeColumn: 'valid_from', syncable: true },
30
+ insight: { timeColumn: 'ts', syncable: true },
31
+ sync_watermark: { timeColumn: 'updated_at', syncable: false },
32
+ tool_call_audit: { timeColumn: 'ts', syncable: false },
33
+ });
34
+ /**
35
+ * Resolve the sync watermark column for a table.
36
+ *
37
+ * Falls back to `'ts'` for unknown table names so downstream callers stay
38
+ * compatible if the schema catalog and this registry drift.
39
+ */
40
+ export function timeColumnFor(table) {
41
+ return TABLE_METADATA[table]?.timeColumn ?? 'ts';
42
+ }
43
+ /**
44
+ * Whether a table participates in R2 push/fetch. `false` for warehouse-local
45
+ * tables that carry no cross-device state (`sync_watermark`,
46
+ * `tool_call_audit`).
47
+ */
48
+ export function isSyncable(table) {
49
+ return TABLE_METADATA[table]?.syncable ?? false;
50
+ }
51
+ //# sourceMappingURL=table_metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table_metadata.js","sourceRoot":"","sources":["../../src/core/table_metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AASH,MAAM,CAAC,MAAM,cAAc,GAAmD,MAAM,CAAC,MAAM,CAAC;IAC1F,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACzC,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IAChD,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC1C,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACjD,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC9C,eAAe,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACrD,aAAa,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;IACzD,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACjD,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC/C,YAAY,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IAClD,aAAa,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC3D,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC7C,cAAc,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC7D,eAAe,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;CACvD,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,OAAQ,cAAoD,CAAC,KAAK,CAAC,EAAE,UAAU,IAAI,IAAI,CAAA;AACzF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAyB;IAClD,OAAQ,cAAoD,CAAC,KAAK,CAAC,EAAE,QAAQ,IAAI,KAAK,CAAA;AACxF,CAAC"}
@@ -19,6 +19,7 @@
19
19
  import type { AnalyticsEngine, AttachContext, KVStore } from '../core/types';
20
20
  import type { EventBus } from './events';
21
21
  import type { PrefetchPolicy } from './fetcher';
22
+ import type { RingConfigTranslator } from './mapper/types';
22
23
  import { type BackgroundTaskPort, type ConstraintPort, type SchedulerLogger } from './scheduler';
23
24
  import type { SyncManager } from './manager';
24
25
  import type { OverflowPolicy } from './types';
@@ -56,6 +57,13 @@ export interface CreateSyncManagerConfig {
56
57
  */
57
58
  rulesEngine?: RulesEngine;
58
59
  logger?: SchedulerLogger;
60
+ /**
61
+ * Consumer-provided translation between firmware ring-config semantics
62
+ * and the schema-shaped `device_config` row. **Required** whenever
63
+ * `tables` includes `'device_config'` — enforced at construction by a
64
+ * Zod refinement. See `mapper/types.ts` for the contract.
65
+ */
66
+ ringConfigTranslator?: RingConfigTranslator;
59
67
  }
60
68
  /**
61
69
  * Assemble a fully wired `SyncManager`. Throws `z.ZodError` if the config is
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/sync/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAG5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAO/C,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,eAAe,EAGrB,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAc,WAAW,EAAkC,MAAM,WAAW,CAAA;AAExF,OAAO,KAAK,EAAe,cAAc,EAAe,MAAM,SAAS,CAAA;AAIvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAkCjD,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,eAAe,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,aAAa,CAAA;IAClB,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;IACzB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAA;IAC9C,cAAc,EAAE,cAAc,CAAA;IAC9B,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,cAAc,CAAC,EAAE,kBAAkB,CAAA;IACnC,WAAW,CAAC,EAAE,cAAc,CAAA;IAC5B,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;IACD,QAAQ,CAAC,EAAE;QACT,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,MAAM,CAAC,EAAE,cAAc,CAAA;KACxB,CAAA;IACD,SAAS,CAAC,EAAE;QACV,gBAAgB,CAAC,EAAE,OAAO,CAAA;QAC1B,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,CAAA;IACD;;;;;OAKG;IACH,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,MAAM,CAAC,EAAE,eAAe,CAAA;CACzB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,WAAW,CA8J9E"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/sync/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAG5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAI/C,OAAO,KAAK,EAIV,oBAAoB,EACrB,MAAM,gBAAgB,CAAA;AAIvB,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,eAAe,EAGrB,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAc,WAAW,EAAkC,MAAM,WAAW,CAAA;AAExF,OAAO,KAAK,EAAe,cAAc,EAAe,MAAM,SAAS,CAAA;AAIvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAyCjD,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,eAAe,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,aAAa,CAAA;IAClB,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;IACzB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAA;IAC9C,cAAc,EAAE,cAAc,CAAA;IAC9B,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,cAAc,CAAC,EAAE,kBAAkB,CAAA;IACnC,WAAW,CAAC,EAAE,cAAc,CAAA;IAC5B,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;IACD,QAAQ,CAAC,EAAE;QACT,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,MAAM,CAAC,EAAE,cAAc,CAAA;KACxB,CAAA;IACD,SAAS,CAAC,EAAE;QACV,gBAAgB,CAAC,EAAE,OAAO,CAAA;QAC1B,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,CAAA;IACD;;;;;OAKG;IACH,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,MAAM,CAAC,EAAE,eAAe,CAAA;IACxB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;CAC5C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,WAAW,CAiM9E"}
@@ -23,6 +23,7 @@ import { R2Fetcher } from './fetcher';
23
23
  import { BatchFlusher } from './flusher';
24
24
  import { mapFirmwareExport } from './mapper/firmware';
25
25
  import { OverflowStore } from './overflow';
26
+ import { PendingClosesStore } from './pending_closes';
26
27
  import { R2Pusher } from './pusher';
27
28
  import { SyncScheduler, } from './scheduler';
28
29
  import { FlushTriggers } from './triggers';
@@ -41,6 +42,7 @@ const configSchema = z.object({
41
42
  tables: z.array(z.string().min(1)).min(1),
42
43
  columnOrder: z.record(z.string(), z.array(z.string()).readonly()),
43
44
  prefetchPolicy: prefetchPolicySchema,
45
+ hasRingConfigTranslator: z.boolean(),
44
46
  flush: z.object({
45
47
  maxRows: z.number().int().positive().optional(),
46
48
  maxAgeMs: z.number().int().positive().optional(),
@@ -55,6 +57,9 @@ const configSchema = z.object({
55
57
  requiresWifi: z.boolean().optional(),
56
58
  taskName: z.string().optional(),
57
59
  }).optional(),
60
+ }).refine(cfg => !cfg.tables.includes('device_config') || cfg.hasRingConfigTranslator, {
61
+ message: 'ringConfigTranslator is required when `tables` includes \'device_config\'',
62
+ path: ['ringConfigTranslator'],
58
63
  });
59
64
  /**
60
65
  * Assemble a fully wired `SyncManager`. Throws `z.ZodError` if the config is
@@ -65,6 +70,7 @@ export function createSyncManager(config) {
65
70
  tables: config.tables,
66
71
  columnOrder: config.columnOrder,
67
72
  prefetchPolicy: config.prefetchPolicy,
73
+ hasRingConfigTranslator: config.ringConfigTranslator !== undefined,
68
74
  flush: config.flush,
69
75
  overflow: config.overflow,
70
76
  scheduler: config.scheduler,
@@ -133,6 +139,7 @@ export function createSyncManager(config) {
133
139
  watermark,
134
140
  tables: [...config.tables],
135
141
  });
142
+ const pendingClosesStore = new PendingClosesStore(config.storage);
136
143
  const scheduler = new SyncScheduler({
137
144
  backgroundTask: config.backgroundTask ?? noopBackgroundTask(),
138
145
  constraints: config.constraints ?? alwaysAllowedConstraints(),
@@ -141,6 +148,30 @@ export function createSyncManager(config) {
141
148
  await Promise.all(config.tables.map(t => flusher.flush(t, 'scheduled')));
142
149
  },
143
150
  pushAll: async (tables, ctx) => pusher.pushAll(tables, ctx),
151
+ pushClosesForDeviceConfig: config.tables.includes('device_config')
152
+ ? async (ctx) => {
153
+ const pending = await pendingClosesStore.drain(ctx);
154
+ if (pending.length === 0)
155
+ return;
156
+ try {
157
+ const result = await pusher.pushCloses(pending, ctx);
158
+ if (!result.ok) {
159
+ await pendingClosesStore.requeue(ctx, pending);
160
+ rulesLogger?.warn('sync.factory: pushCloses failed; requeued', {
161
+ count: pending.length,
162
+ code: result.error?.code,
163
+ });
164
+ }
165
+ }
166
+ catch (err) {
167
+ await pendingClosesStore.requeue(ctx, pending);
168
+ rulesLogger?.warn('sync.factory: pushCloses threw; requeued', {
169
+ count: pending.length,
170
+ err: err instanceof Error ? err.message : String(err),
171
+ });
172
+ }
173
+ }
174
+ : undefined,
144
175
  fetchIncremental: async (ctx) => fetcher.fetchIncremental(ctx),
145
176
  // Scheduled rules pass runs after the cycle's flush/push/fetch. Fire-
146
177
  // and-forget — a throw here would surface as a cycle error, but the
@@ -179,7 +210,16 @@ export function createSyncManager(config) {
179
210
  state.scheduler = next;
180
211
  notify();
181
212
  });
182
- const sink = createSensorSink({ buffer, flusher, triggers, tables: config.tables });
213
+ const sink = createSensorSink({
214
+ buffer,
215
+ flusher,
216
+ triggers,
217
+ tables: config.tables,
218
+ engine: engineAsHybrid,
219
+ attachCtx: config.ctx,
220
+ translator: config.ringConfigTranslator,
221
+ pendingClosesStore,
222
+ });
183
223
  return {
184
224
  analytics: config.analytics,
185
225
  sink,
@@ -207,14 +247,92 @@ export function createSyncManager(config) {
207
247
  prefetch: (ctx) => fetcher.prefetchOnAttach(ctx, config.prefetchPolicy),
208
248
  };
209
249
  }
210
- function createSensorSink({ buffer, flusher, triggers, tables }) {
250
+ /**
251
+ * Pre-fetch the currently-open `device_config` rows for the given device
252
+ * so `mapRingConfig` can decide which metrics need SCD-2 closes.
253
+ *
254
+ * Value shape (`DeviceConfigRow`) is not consulted by the mapper — only
255
+ * `.has(dataType)` — but hydrating the row keeps the map future-friendly
256
+ * for logging / diagnostics without a second query.
257
+ */
258
+ async function fetchActivePriorConfigs(engine, ctx) {
259
+ // Fully-qualified `memory.main.device_config` so this resolves against the
260
+ // local in-memory catalog regardless of the active `USE <iceberg>.default`
261
+ // that `attach()` issues. A 2-part `main.device_config` would resolve
262
+ // against the current (Iceberg) catalog post-attach and miss.
263
+ 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
264
+ FROM memory.main.device_config
265
+ WHERE device_id = $device_id
266
+ AND family_id = $family_id
267
+ AND user_id = $user_id
268
+ AND valid_to IS NULL`, {
269
+ device_id: ctx.deviceId,
270
+ family_id: ctx.familyId,
271
+ user_id: ctx.userId,
272
+ });
273
+ const map = new Map();
274
+ for (const r of rows) {
275
+ const dataType = Number(r.data_type);
276
+ map.set(dataType, {
277
+ ts: new Date(String(r.valid_from ?? '')),
278
+ brand: String(r.brand ?? ''),
279
+ family_id: String(r.family_id ?? ''),
280
+ user_id: String(r.user_id ?? ''),
281
+ device_id: String(r.device_id ?? ''),
282
+ data_type: dataType,
283
+ interval_minutes: Number(r.interval_minutes),
284
+ start_time: r.start_time == null ? null : String(r.start_time),
285
+ end_time: r.end_time == null ? null : String(r.end_time),
286
+ weeks: r.weeks == null ? null : Number(r.weeks),
287
+ valid_from: new Date(String(r.valid_from ?? '')),
288
+ valid_to: r.valid_to == null ? null : new Date(String(r.valid_to)),
289
+ });
290
+ }
291
+ return map;
292
+ }
293
+ function createSensorSink(deps) {
294
+ const { buffer, flusher, triggers, tables, engine, attachCtx, translator, pendingClosesStore } = deps;
295
+ const handlesConfig = tables.includes('device_config') && translator !== undefined;
211
296
  return {
212
297
  push: async (batch) => {
213
298
  await buffer.push(batch);
214
299
  triggers.noteEnqueue(batch.table, Date.now());
215
300
  },
216
301
  pushFirmware: async (fw, ctx) => {
217
- const mapped = mapFirmwareExport(fw, ctx);
302
+ // 1) Pre-fetch open configs for this device so the mapper can decide
303
+ // which metrics need SCD-2 closes. Skipped when we're not
304
+ // subscribed to device_config or no translator is wired.
305
+ const activePriorConfigs = handlesConfig
306
+ ? await fetchActivePriorConfigs(engine, ctx)
307
+ : new Map();
308
+ // 2) Map firmware → mapped batch. The mapper requires a translator
309
+ // only when firmware has ring windows; the wrapper in `firmware.ts`
310
+ // enforces that.
311
+ const mapped = mapFirmwareExport(fw, ctx, {
312
+ activePriorConfigs,
313
+ translator,
314
+ });
315
+ // 3) SCD-2 close handling. Enqueue-before-UPDATE keeps the local
316
+ // UPDATE + remote UPDATE replay-safe under crash: both are
317
+ // idempotent via the `valid_to IS NULL` guard.
318
+ if (handlesConfig && mapped.device_config_closes.length > 0) {
319
+ await pendingClosesStore.enqueue(attachCtx, mapped.device_config_closes);
320
+ for (const close of mapped.device_config_closes) {
321
+ // Fully-qualified `memory.main.device_config` — same reason as
322
+ // `fetchActivePriorConfigs` above: sink runs after `attach()` has
323
+ // called `USE <iceberg>.default`, so 2-part names miss.
324
+ await engine.execute(`UPDATE memory.main.device_config
325
+ SET valid_to = $valid_to
326
+ WHERE device_id = $device_id
327
+ AND data_type = $data_type
328
+ AND valid_to IS NULL`, {
329
+ valid_to: close.valid_to.toISOString(),
330
+ device_id: close.device_id,
331
+ data_type: close.data_type,
332
+ });
333
+ }
334
+ }
335
+ // 4) Buffer the new inserts across every mapped table.
218
336
  const asRows = (rows) => rows;
219
337
  const mappedTables = [
220
338
  ['hrv', asRows(mapped.hrv)],
@@ -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":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAOrD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,EAKL,aAAa,GACd,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAK5C,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,CAAA;AAE1E,MAAM,oBAAoB,GAA8B,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACnF,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC9F,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC;QACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACvC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;KACxC,CAAC;IACF,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;CACtC,CAAC,CAAA;AAEF,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACjE,cAAc,EAAE,oBAAoB;IACpC,uBAAuB,EAAE,CAAC,CAAC,OAAO,EAAE;IACpC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAC/C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAChD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;KACpD,CAAC,CAAC,QAAQ,EAAE;IACb,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;QACjB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACtD,MAAM,EAAE,kBAAkB,CAAC,QAAQ,EAAE;KACtC,CAAC,CAAC,QAAQ,EAAE;IACb,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;QAClB,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QACxC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QACpC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAChC,CAAC,CAAC,QAAQ,EAAE;CACd,CAAC,CAAC,MAAM,CACP,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,uBAAuB,EAC3E;IACE,OAAO,EAAE,2EAA2E;IACpF,IAAI,EAAE,CAAC,sBAAsB,CAAC;CAC/B,CACF,CAAA;AA4CD;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAA+B;IAC/D,YAAY,CAAC,KAAK,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,uBAAuB,EAAE,MAAM,CAAC,oBAAoB,KAAK,SAAS;QAClE,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAClD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;QAC9B,QAAQ;QACR,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,cAAc;QAC/C,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM;KAChC,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAiB,EAAE,cAAc,EAAE,EAAE,EAAE,CAAA;IACrD,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEnF,0EAA0E;IAC1E,6EAA6E;IAC7E,4EAA4E;IAC5E,qBAAqB;IACrB,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAA;IACtC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAA;IACjC,MAAM,YAAY,GAAgB,CAAC,KAAK,EAAE,EAAE;QAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAChD,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACjC,IAAI,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5D,WAAW,CAAC,eAAe,CAAC;oBAC1B,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe;oBAC9C,cAAc,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAkB,CAAC;iBACnD,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;oBACxB,WAAW,EAAE,IAAI,CAAC,iDAAiD,EAAE;wBACnE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;wBAC1B,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;qBACtD,CAAC,CAAA;gBACJ,CAAC,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QACD,YAAY,EAAE,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,MAAM,CAAC,SAAoC,CAAA;IAElE,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC;QAC/B,MAAM,EAAE,cAAc;QACtB,MAAM;QACN,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW;QACtC,IAAI,EAAE,YAAY;KACnB,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC;QACjC,MAAM;QACN,OAAO;QACP,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO;QAC9B,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ;KACjC,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;IAE5D,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACjF,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC;QAC1B,MAAM,EAAE,cAAc;QACtB,SAAS;QACT,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;YACf,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;gBACvC,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAC1C,CAAC;YACD,WAAW,EAAE,CAAC,MAAM,CAAC,CAAA;QACvB,CAAC;KACF,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC;QAC5B,MAAM,EAAE,cAAc;QACtB,SAAS;QACT,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;KAC3B,CAAC,CAAA;IAEF,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAEjE,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC;QAClC,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,kBAAkB,EAAE;QAC7D,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,wBAAwB,EAAE;QAC7D,WAAW,EAAE;YACX,QAAQ,EAAE,KAAK,IAAI,EAAE;gBACnB,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;YAC1E,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;YAC3D,yBAAyB,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC;gBAChE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;oBACZ,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBACnD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;wBAAE,OAAM;oBAChC,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;wBACpD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;4BACf,MAAM,kBAAkB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;4BAC9C,WAAW,EAAE,IAAI,CAAC,2CAA2C,EAAE;gCAC7D,KAAK,EAAE,OAAO,CAAC,MAAM;gCACrB,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI;6BACzB,CAAC,CAAA;wBACJ,CAAC;oBACH,CAAC;oBACD,OAAO,GAAG,EAAE,CAAC;wBACX,MAAM,kBAAkB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;wBAC9C,WAAW,EAAE,IAAI,CAAC,0CAA0C,EAAE;4BAC5D,KAAK,EAAE,OAAO,CAAC,MAAM;4BACrB,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;yBACtD,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;gBACH,CAAC,CAAC,SAAS;YACb,gBAAgB,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC;YAC5D,sEAAsE;YACtE,oEAAoE;YACpE,kCAAkC;YAClC,eAAe,EAAE,WAAW;gBAC1B,CAAC,CAAC,KAAK,IAAI,EAAE;oBACT,IAAI,CAAC;wBACH,MAAM,WAAW,CAAC,iBAAiB,EAAE,CAAA;oBACvC,CAAC;oBACD,OAAO,GAAG,EAAE,CAAC;wBACX,WAAW,EAAE,IAAI,CAAC,mDAAmD,EAAE;4BACrE,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;yBACtD,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;gBACH,CAAC,CAAC,SAAS;SACd;QACD,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QAC1B,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ;QACpC,gBAAgB,EAAE;YAChB,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,gBAAgB;YACnD,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,YAAY;SAC5C;QACD,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC,CAAA;IAEF,MAAM,KAAK,GAAqB;QAC9B,SAAS,EAAE,MAAM;KAClB,CAAA;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAiC,CAAA;IAC5D,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,KAAK,MAAM,EAAE,IAAI,WAAW;YAAE,EAAE,CAAC,KAAK,CAAC,CAAA;IACzC,CAAC,CAAA;IACD,SAAS,CAAC,SAAS,CAAC,CAAC,IAAoB,EAAE,EAAE;QAC3C,KAAK,CAAC,SAAS,GAAG,IAAI,CAAA;QACtB,MAAM,EAAE,CAAA;IACV,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,gBAAgB,CAAC;QAC5B,MAAM;QACN,OAAO;QACP,QAAQ;QACR,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,cAAc;QACtB,SAAS,EAAE,MAAM,CAAC,GAAG;QACrB,UAAU,EAAE,MAAM,CAAC,oBAAoB;QACvC,kBAAkB;KACnB,CAAC,CAAA;IAEF,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,IAAI;QACJ,OAAO;QACP,MAAM;QACN,OAAO;QACP,SAAS;QACT,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;QAC3B,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;YACf,cAAc,EAAE,EAAE,GAAG,QAAQ,CAAC,cAAc,EAAE;YAC9C,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;SAChD,CAAC;QACF,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE;YAChB,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACnB,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACrC,CAAC;QACD,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,SAAS,CAAC,KAAK,EAAE,CAAA;QACzB,CAAC;QACD,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;QACxB,CAAC;QACD,UAAU,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE;QACxC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,cAAc,CAAC;KACxE,CAAA;AACH,CAAC;AAeD;;;;;;;GAOG;AACH,KAAK,UAAU,uBAAuB,CACpC,MAAoB,EACpB,GAAkB;IAElB,2EAA2E;IAC3E,2EAA2E;IAC3E,sEAAsE;IACtE,8DAA8D;IAC9D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAC/B;;;;;6BAKyB,EACzB;QACE,SAAS,EAAE,GAAG,CAAC,QAAQ;QACvB,SAAS,EAAE,GAAG,CAAC,QAAQ;QACvB,OAAO,EAAE,GAAG,CAAC,MAAM;KACpB,CACF,CAAA;IACD,MAAM,GAAG,GAAG,IAAI,GAAG,EAA2B,CAAA;IAC9C,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QACpC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE;YAChB,EAAE,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;YACxC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC5B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;YACpC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;YAChC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;YACpC,SAAS,EAAE,QAAQ;YACnB,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC;YAC5C,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;YAC9D,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;YACxD,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;YAC/C,UAAU,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;YAChD,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;SACnE,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAoB;IAC5C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAA;IACrG,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,UAAU,KAAK,SAAS,CAAA;IAElF,OAAO;QACL,IAAI,EAAE,KAAK,EAAE,KAAkB,EAAE,EAAE;YACjC,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACxB,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QAC/C,CAAC;QACD,YAAY,EAAE,KAAK,EAAE,EAAkB,EAAE,GAAkB,EAAE,EAAE;YAC7D,qEAAqE;YACrE,6DAA6D;YAC7D,4DAA4D;YAC5D,MAAM,kBAAkB,GAAG,aAAa;gBACtC,CAAC,CAAC,MAAM,uBAAuB,CAAC,MAAM,EAAE,GAAG,CAAC;gBAC5C,CAAC,CAAC,IAAI,GAAG,EAA2B,CAAA;YAEtC,mEAAmE;YACnE,uEAAuE;YACvE,oBAAoB;YACpB,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,EAAE,GAAG,EAAE;gBACxC,kBAAkB;gBAClB,UAAU;aACX,CAAC,CAAA;YAEF,iEAAiE;YACjE,8DAA8D;YAC9D,kDAAkD;YAClD,IAAI,aAAa,IAAI,MAAM,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5D,MAAM,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAA;gBACxE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;oBAChD,+DAA+D;oBAC/D,kEAAkE;oBAClE,wDAAwD;oBACxD,MAAM,MAAM,CAAC,OAAO,CAClB;;;;qCAIyB,EACzB;wBACE,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE;wBACtC,SAAS,EAAE,KAAK,CAAC,SAAS;wBAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;qBAC3B,CACF,CAAA;gBACH,CAAC;YACH,CAAC;YAED,uDAAuD;YACvD,MAAM,MAAM,GAAG,CAAI,IAAkB,EAA6B,EAAE,CAClE,IAA4C,CAAA;YAC9C,MAAM,YAAY,GAA+C;gBAC/D,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC3B,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACzC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC3C,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACrC,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;gBACnD,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBAC/C,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC3C,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACvC,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC7C,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;aAChD,CAAA;YACD,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,YAAY,EAAE,CAAC;gBACzC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;oBAAE,SAAQ;gBACxC,MAAM,MAAM,CAAC,IAAI,CAAC;oBAChB,KAAK;oBACL,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,IAAI;iBACL,CAAC,CAAA;gBACF,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;YACzC,CAAC;QACH,CAAC;QACD,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,OAAO,GAAkB,EAAE,CAAA;YACjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;gBAClD,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YAC3B,CAAC;YACD,OAAO,OAAO,CAAA;QAChB,CAAC;QACD,eAAe,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE;YACxC,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAClC,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAA;QAChC,CAAC;QACD,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACpB,KAAK,MAAM,CAAC,IAAI,MAAM;gBAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAC/C,CAAC;KACF,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAA;IACvD,OAAO;QACL,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA,CAAC,CAAC;QAClE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC;QACrD,YAAY,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;KAC/C,CAAA;AACH,CAAC;AAED,SAAS,wBAAwB;IAC/B,OAAO;QACL,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;QAC5B,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;KAC3B,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../../src/sync/fetcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,MAAM,MAAM,cAAc,GACpB;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtB,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,EAAE,EAAE,OAAO,CAAA;IACX,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,IAAI,CAAA;IACX,KAAK,CAAC,EAAE,IAAI,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,YAAY,CAAA;IACpB,SAAS,EAAE,cAAc,CAAA;IACzB,+DAA+D;IAC/D,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;IACzB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;IAChB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IAC1D,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;CAC5D;AAMD,qBAAa,SAAS;;gBAQR,MAAM,EAAE,eAAe;IASnC;;;OAGG;IACG,gBAAgB,CACpB,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,WAAW,EAAE,CAAC;IAoBzB;;OAEG;IACG,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAWlE;;;OAGG;IACG,aAAa,CACjB,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,WAAW,CAAC;CAuIxB"}
1
+ {"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../../src/sync/fetcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,MAAM,MAAM,cAAc,GACpB;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtB,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,EAAE,EAAE,OAAO,CAAA;IACX,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,IAAI,CAAA;IACX,KAAK,CAAC,EAAE,IAAI,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,YAAY,CAAA;IACpB,SAAS,EAAE,cAAc,CAAA;IACzB,+DAA+D;IAC/D,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;IACzB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;IAChB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IAC1D,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;CAC5D;AAMD,qBAAa,SAAS;;gBAQR,MAAM,EAAE,eAAe;IASnC;;;OAGG;IACG,gBAAgB,CACpB,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,WAAW,EAAE,CAAC;IAoBzB;;OAEG;IACG,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAWlE;;;OAGG;IACG,aAAa,CACjB,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,WAAW,CAAC;CA2IxB"}
@@ -30,6 +30,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
30
30
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
31
31
  };
32
32
  var _R2Fetcher_instances, _R2Fetcher_engine, _R2Fetcher_watermark, _R2Fetcher_tables, _R2Fetcher_now, _R2Fetcher_localTable, _R2Fetcher_remoteTable, _R2Fetcher_prefetchOne, _R2Fetcher_fetchIncrementalOne, _R2Fetcher_countFetched, _R2Fetcher_toFailure;
33
+ import { timeColumnFor } from '../core/table_metadata';
33
34
  import { SyncError } from './errors';
34
35
  const DEFAULT_LOCAL = (_c, table) => `main.${table}`;
35
36
  const DEFAULT_REMOTE = (c, table) => `zone_${c.tenantId}.${table}`;
@@ -85,15 +86,16 @@ export class R2Fetcher {
85
86
  */
86
87
  async fetchOnDemand(ctx, params) {
87
88
  try {
89
+ const tsCol = timeColumnFor(params.table);
88
90
  const local = __classPrivateFieldGet(this, _R2Fetcher_localTable, "f").call(this, ctx, params.table);
89
91
  const remote = __classPrivateFieldGet(this, _R2Fetcher_remoteTable, "f").call(this, ctx, params.table);
90
92
  const bindings = {
91
93
  since: params.since.toISOString(),
92
94
  familyId: ctx.tenantId,
93
95
  };
94
- let where = 'ts >= $since AND family_id = $familyId';
96
+ let where = `${tsCol} >= $since AND family_id = $familyId`;
95
97
  if (params.until) {
96
- where += ' AND ts <= $until';
98
+ where += ` AND ${tsCol} <= $until`;
97
99
  bindings.until = params.until.toISOString();
98
100
  }
99
101
  const limitClause = params.limit ? ` LIMIT ${Math.max(1, Math.floor(params.limit))}` : '';
@@ -111,10 +113,11 @@ export class R2Fetcher {
111
113
  }
112
114
  }
113
115
  _R2Fetcher_engine = new WeakMap(), _R2Fetcher_watermark = new WeakMap(), _R2Fetcher_tables = new WeakMap(), _R2Fetcher_now = new WeakMap(), _R2Fetcher_localTable = new WeakMap(), _R2Fetcher_remoteTable = new WeakMap(), _R2Fetcher_instances = new WeakSet(), _R2Fetcher_prefetchOne = async function _R2Fetcher_prefetchOne(ctx, table, policy, cutoff) {
116
+ const tsCol = timeColumnFor(table);
114
117
  const local = __classPrivateFieldGet(this, _R2Fetcher_localTable, "f").call(this, ctx, table);
115
118
  const remote = __classPrivateFieldGet(this, _R2Fetcher_remoteTable, "f").call(this, ctx, table);
116
119
  if (policy.kind === 'all-family-on-attach') {
117
- const sql = `INSERT INTO ${local} SELECT * FROM ${remote} WHERE family_id = $familyId AND ts >= $cutoff ON CONFLICT DO NOTHING`;
120
+ const sql = `INSERT INTO ${local} SELECT * FROM ${remote} WHERE family_id = $familyId AND ${tsCol} >= $cutoff ON CONFLICT DO NOTHING`;
118
121
  await __classPrivateFieldGet(this, _R2Fetcher_engine, "f").execute(sql, {
119
122
  familyId: ctx.tenantId,
120
123
  cutoff,
@@ -125,26 +128,27 @@ _R2Fetcher_engine = new WeakMap(), _R2Fetcher_watermark = new WeakMap(), _R2Fetc
125
128
  const activeCutoff = new Date(activeCutoffMs).toISOString();
126
129
  // CTE picks user_ids seen in the recent window, then filters the window
127
130
  // pull down to those users.
128
- const sql = `WITH active AS (SELECT DISTINCT user_id FROM ${remote} WHERE family_id = $familyId AND ts >= $activeCutoff) INSERT INTO ${local} SELECT r.* FROM ${remote} r JOIN active a ON r.user_id = a.user_id WHERE r.family_id = $familyId AND r.ts >= $cutoff ON CONFLICT DO NOTHING`;
131
+ const sql = `WITH active AS (SELECT DISTINCT user_id FROM ${remote} WHERE family_id = $familyId AND ${tsCol} >= $activeCutoff) INSERT INTO ${local} SELECT r.* FROM ${remote} r JOIN active a ON r.user_id = a.user_id WHERE r.family_id = $familyId AND r.${tsCol} >= $cutoff ON CONFLICT DO NOTHING`;
129
132
  await __classPrivateFieldGet(this, _R2Fetcher_engine, "f").execute(sql, {
130
133
  familyId: ctx.tenantId,
131
134
  cutoff,
132
135
  activeCutoff,
133
136
  });
134
137
  }
135
- const rowsFetched = await __classPrivateFieldGet(this, _R2Fetcher_instances, "m", _R2Fetcher_countFetched).call(this, remote, ctx, cutoff);
138
+ const rowsFetched = await __classPrivateFieldGet(this, _R2Fetcher_instances, "m", _R2Fetcher_countFetched).call(this, remote, ctx, cutoff, tsCol);
136
139
  await __classPrivateFieldGet(this, _R2Fetcher_watermark, "f").advance(ctx.brand, ctx.tenantId, table, 'fetch', __classPrivateFieldGet(this, _R2Fetcher_now, "f").call(this));
137
140
  return { table, rowsFetched, ok: true };
138
141
  }, _R2Fetcher_fetchIncrementalOne = async function _R2Fetcher_fetchIncrementalOne(ctx, table) {
142
+ const tsCol = timeColumnFor(table);
139
143
  const watermark = await __classPrivateFieldGet(this, _R2Fetcher_watermark, "f").get(ctx.brand, ctx.tenantId, table, 'fetch');
140
144
  const local = __classPrivateFieldGet(this, _R2Fetcher_localTable, "f").call(this, ctx, table);
141
145
  const remote = __classPrivateFieldGet(this, _R2Fetcher_remoteTable, "f").call(this, ctx, table);
142
- const sql = `INSERT INTO ${local} SELECT * FROM ${remote} WHERE ts > $watermark AND family_id = $familyId ON CONFLICT DO NOTHING`;
146
+ const sql = `INSERT INTO ${local} SELECT * FROM ${remote} WHERE ${tsCol} > $watermark AND family_id = $familyId ON CONFLICT DO NOTHING`;
143
147
  await __classPrivateFieldGet(this, _R2Fetcher_engine, "f").execute(sql, {
144
148
  watermark: watermark.toISOString(),
145
149
  familyId: ctx.tenantId,
146
150
  });
147
- const maxRows = await __classPrivateFieldGet(this, _R2Fetcher_engine, "f").execute(`SELECT MAX(ts) AS max_ts, COUNT(*) AS row_count FROM ${remote} WHERE ts > $watermark AND family_id = $familyId`, { watermark: watermark.toISOString(), familyId: ctx.tenantId });
151
+ const maxRows = await __classPrivateFieldGet(this, _R2Fetcher_engine, "f").execute(`SELECT MAX(${tsCol}) AS max_ts, COUNT(*) AS row_count FROM ${remote} WHERE ${tsCol} > $watermark AND family_id = $familyId`, { watermark: watermark.toISOString(), familyId: ctx.tenantId });
148
152
  const first = maxRows[0];
149
153
  const rowsFetched = Number(first?.row_count ?? 0);
150
154
  if (first?.max_ts) {
@@ -154,8 +158,8 @@ _R2Fetcher_engine = new WeakMap(), _R2Fetcher_watermark = new WeakMap(), _R2Fetc
154
158
  }
155
159
  }
156
160
  return { table, rowsFetched, ok: true };
157
- }, _R2Fetcher_countFetched = async function _R2Fetcher_countFetched(remote, ctx, cutoff) {
158
- const rows = await __classPrivateFieldGet(this, _R2Fetcher_engine, "f").execute(`SELECT COUNT(*) AS c FROM ${remote} WHERE family_id = $familyId AND ts >= $cutoff`, { familyId: ctx.tenantId, cutoff });
161
+ }, _R2Fetcher_countFetched = async function _R2Fetcher_countFetched(remote, ctx, cutoff, tsCol) {
162
+ const rows = await __classPrivateFieldGet(this, _R2Fetcher_engine, "f").execute(`SELECT COUNT(*) AS c FROM ${remote} WHERE family_id = $familyId AND ${tsCol} >= $cutoff`, { familyId: ctx.tenantId, cutoff });
159
163
  return Number(rows[0]?.c ?? 0);
160
164
  }, _R2Fetcher_toFailure = function _R2Fetcher_toFailure(table, cause) {
161
165
  const err = cause instanceof SyncError
@@ -1 +1 @@
1
- {"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../../src/sync/fetcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../../src/sync/fetcher.ts"],"names":[],"mappings":"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"}
@@ -29,5 +29,6 @@ export { type ReconstructSleepResult, reconstructSleepSessions, } from './mapper
29
29
  export { mapSpo2 } from './mapper/spo2';
30
30
  export { mapTemperature } from './mapper/temperature';
31
31
  export { computeNightOf, parseTimestamp } from './mapper/time';
32
- export type { ActivityBucketRow, ActivityRow, DeviceConfigRow, DeviceEventRow, FirmwareActivityRow, FirmwareBatteryRow, FirmwareExport, FirmwareHRRow, FirmwareHRVRow, FirmwareMonitoringWindow, FirmwareRingConfig, FirmwareSleepRow, FirmwareSpO2Row, FirmwareTempRow, HeartRateRow, HrvRow, MappedBatch, MapperContext, SleepRawRow, SleepSessionRow, SleepStageRow, Spo2Row, TemperatureRow, } from './mapper/types';
32
+ export type { ActivityBucketRow, ActivityRow, DeviceConfigRow, DeviceEventRow, FirmwareActivityRow, FirmwareBatteryRow, FirmwareExport, FirmwareHRRow, FirmwareHRVRow, FirmwareMonitoringWindow, FirmwareRingConfig, FirmwareSleepRow, FirmwareSpO2Row, FirmwareTempRow, HeartRateRow, HrvRow, MappedBatch, MapperContext, RingConfigTranslator, SleepRawRow, SleepSessionRow, SleepStageRow, Spo2Row, TemperatureRow, } from './mapper/types';
33
+ export { PendingClosesStore } from './pending_closes';
33
34
  //# sourceMappingURL=index.d.ts.map