@dejadex/web 0.1.0 → 0.1.1

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/CHANGELOG.md CHANGED
@@ -3,6 +3,20 @@
3
3
  All notable changes to `@dejadex/web`. Versions follow semver; before 1.0 a
4
4
  minor version may break the client contract (`src/types.ts`), and says so here.
5
5
 
6
+ ## 0.1.1
7
+
8
+ - **Fix:** the usage database (`dejadex-usage`) no longer blocks a host's
9
+ `indexedDB.deleteDatabase`. The IndexedDB store closes its connection on
10
+ `versionchange`; before, a host deleting it on sign-out stayed blocked for
11
+ the life of the page, and the previous account's queued usage could be
12
+ drained under the next account's session.
13
+ - `UsageStore.close()` (optional for stores a host writes; a no-op on the
14
+ memory store). After a close or a `versionchange`, every call rejects with
15
+ `ScannerError` `INVALID_OPTIONS` ("the usage store is closed"); nothing is
16
+ dropped in silence.
17
+ - `destroy()` also closes the usage store the identifier opened itself. A store
18
+ passed as `options.usageStore` belongs to the host and is left open.
19
+
6
20
  ## 0.1.0 — first published release
7
21
 
8
22
  - `createIdentifier`: card crops in, catalogue ids out, on the device
package/README.md CHANGED
@@ -21,7 +21,8 @@ npm install @dejadex/web
21
21
  What protects the platform is the lease and the signed asset URLs, not the
22
22
  SDK's code, which runs in browsers anyway. Releases are cut from a
23
23
  `web-v<version>` tag by `.github/workflows/publish-web-sdk.yml` (npm trusted
24
- publishing, no stored token); see `CHANGELOG.md`.
24
+ publishing, no stored token), staged and then approved by a maintainer with
25
+ 2FA; see `CHANGELOG.md`.
25
26
 
26
27
  ## Usage
27
28
 
@@ -69,7 +70,14 @@ await identifier.drainUsage((batch) => myBackend.postUsage(batch))
69
70
  device engine and resolves its `DeviceEngineInfo` (backend, precision, threads,
70
71
  measured `perCropMs`). `status()` reports the lease, the device engine and why
71
72
  the server route is paused. `leaseRequest()` is the renewal body (see Usage).
72
- `newSession()`, `pendingUsage()` and `destroy()` are what their names say.
73
+ `newSession()` and `pendingUsage()` are what their names say. `destroy()`
74
+ releases the device engine and closes the usage store the identifier opened;
75
+ a store passed as `usageStore` is the host's, and stays open.
76
+
77
+ **Sign-out.** Drain usage, `destroy()` the identifier, then
78
+ `indexedDB.deleteDatabase('dejadex-usage')`. An SDK store still open lets go
79
+ of the database when the delete arrives (and rejects later calls), so the
80
+ delete is never blocked and no queued usage carries into the next account.
73
81
 
74
82
  ### Where a call runs
75
83
 
@@ -34,7 +34,11 @@ export interface IdentifierOptions {
34
34
  readonly preload?: boolean;
35
35
  /** The page origin the lease must allow. Default `location.origin`. */
36
36
  readonly origin?: string | null;
37
- /** Default IndexedDB (`dejadex-usage`), memory where it is unavailable. */
37
+ /**
38
+ * Default IndexedDB (`dejadex-usage`), memory where it is unavailable. The
39
+ * default store is the identifier's own: `destroy()` closes it. A store passed
40
+ * here is the host's: `destroy()` leaves it open, and the host closes it.
41
+ */
38
42
  readonly usageStore?: UsageStore;
39
43
  /** Background failures (a device engine that failed to load). Never called from `identify`. */
40
44
  readonly onError?: (error: Error) => void;
@@ -74,7 +78,13 @@ export interface Identifier {
74
78
  * Null asks as a device with no lease.
75
79
  */
76
80
  leaseRequest(previousLeaseId?: string | null): Promise<LeaseRequest>;
77
- /** Releases the device engine and its Worker. Later calls resolve `unavailable`. */
81
+ /**
82
+ * Releases the device engine and its Worker, and closes the usage store the
83
+ * identifier opened itself (never one passed as `options.usageStore`). Later
84
+ * calls resolve `unavailable`, and the usage methods reject once that store
85
+ * is closed. Drain usage first: what is still queued stays on the device
86
+ * until a later identifier drains it or the host deletes `dejadex-usage`.
87
+ */
78
88
  destroy(): Promise<void>;
79
89
  }
80
90
  export declare function createIdentifier(options: IdentifierOptions): Identifier;
@@ -1 +1 @@
1
- {"version":3,"file":"identifier.d.ts","sourceRoot":"","sources":["../../src/identify/identifier.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAe,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACzF,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAe,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC3F,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAA+B,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAChF,OAAO,EAAuC,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAA;AASvG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAmC,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC/E,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EAErB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAK7C,MAAM,WAAW,iBAAiB;IAChC,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,gFAAgF;IAChF,QAAQ,CAAC,eAAe,EAAE,SAAS,cAAc,EAAE,CAAA;IACnD,4FAA4F;IAC5F,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAA;IAC3B,gGAAgG;IAChG,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,oDAAoD;IACpD,QAAQ,CAAC,cAAc,CAAC,EAAE,kBAAkB,CAAA;IAC5C,uGAAuG;IACvG,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IACpC,qFAAqF;IACrF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAA;IACjC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,CAAC,MAAM,UAAU,CAAC,CAAA;IAC1D,mFAAmF;IACnF,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,uEAAuE;IACvE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAA;IAChC,+FAA+F;IAC/F,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAEzC,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAA;IAC5B,gBAAgB;IAChB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAC3B,gBAAgB;IAChB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,OAAO,CAAA;IAC/B,gBAAgB;IAChB,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;IACrE,gBAAgB;IAChB,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAA;CAChC;AAED,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IACzF,+FAA+F;IAC/F,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IAC3C,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,yEAAyE;IACzE,UAAU,IAAI,MAAM,CAAA;IACpB,iEAAiE;IACjE,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACpC,MAAM,IAAI,gBAAgB,CAAA;IAC1B,qGAAqG;IACrG,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IAC/E,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IAC/B;;;;;;;;OAQG;IACH,YAAY,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IACpE,oFAAoF;IACpF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB;AAgDD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CA4PvE"}
1
+ {"version":3,"file":"identifier.d.ts","sourceRoot":"","sources":["../../src/identify/identifier.ts"],"names":[],"mappings":"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"}
@@ -86,7 +86,10 @@ export function createIdentifier(options) {
86
86
  const doFetch = options.fetch ?? ((url, init) => fetch(url, init));
87
87
  const loadEngine = options.loadEngine ?? defaultEngineLoader(options.engine);
88
88
  const health = new ServerHealth();
89
- const meterReady = (options.usageStore ? Promise.resolve(options.usageStore) : defaultUsageStore()).then((store) => new UsageMeter({ store, now }));
89
+ // A store the identifier opened is closed by `destroy()`; the host's is not.
90
+ const ownStore = options.usageStore === undefined;
91
+ const storeReady = options.usageStore ? Promise.resolve(options.usageStore) : defaultUsageStore();
92
+ const meterReady = storeReady.then((store) => new UsageMeter({ store, now }));
90
93
  let lease = null;
91
94
  /** The constructor's lease while it is being verified; `identify` waits for it. */
92
95
  let initialLease = null;
@@ -312,6 +315,8 @@ export function createIdentifier(options) {
312
315
  engine = null;
313
316
  engineKey = null;
314
317
  await e?.release().catch(() => undefined);
318
+ if (ownStore)
319
+ (await storeReady).close?.();
315
320
  },
316
321
  };
317
322
  if (options.lease) {
@@ -1 +1 @@
1
- {"version":3,"file":"identifier.js","sourceRoot":"","sources":["../../src/identify/identifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identifier.js","sourceRoot":"","sources":["../../src/identify/identifier.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,3 @@
1
- /**
2
- * The device's usage queue: what was counted waits here, across reloads,
3
- * until the host has delivered it. IndexedDB in the browser; an in-memory
4
- * store for tests and for runtimes without IndexedDB (where usage then lives
5
- * only as long as the page).
6
- *
7
- * Two stages:
8
- * - a **tally** per (lease, session) collects the cards first identified in
9
- * that session and the number of calls, as answers come in;
10
- * - `seal` turns every open tally into a `UsageReport` with the lease's next
11
- * `seq` and a fresh `reportId`, atomically. A sealed report never changes,
12
- * so delivering it twice is harmless (the service dedupes by `reportId`).
13
- *
14
- * Database `dejadex-usage`, version 1:
15
- * tallies key `<leaseId>\n<sessionId>` → Tally
16
- * reports keyPath `report.reportId`, index `order` → { order, report }
17
- * meta `deviceId`, `order`, `seq:<leaseId>`, `reported:<leaseId>`
18
- */
19
1
  import type { UsageReport } from '../types.js';
20
2
  export interface Tally {
21
3
  readonly leaseId: string;
@@ -42,6 +24,12 @@ export interface UsageStore {
42
24
  reportedThrough(leaseId: string): Promise<number | null>;
43
25
  /** Queued reports plus open tallies. */
44
26
  size(): Promise<number>;
27
+ /**
28
+ * Releases what the store holds open (the IndexedDB connection). Later calls
29
+ * reject with `ScannerError` `INVALID_OPTIONS`. Optional for stores a host
30
+ * implements; the identifier closes only a store it opened itself.
31
+ */
32
+ close?(): void;
45
33
  }
46
34
  export declare function randomId(bytes?: number): string;
47
35
  export declare function memoryUsageStore(): UsageStore;
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/usage/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,qCAAqC;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,yEAAyE;IACzE,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3B,iFAAiF;IACjF,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/G,iFAAiF;IACjF,IAAI,CAAC,WAAW,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAChD,yDAAyD;IACzD,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAA;IACpD,MAAM,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnD,uFAAuF;IACvF,YAAY,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,qEAAqE;IACrE,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACxD,wCAAwC;IACxC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;CACxB;AAED,wBAAgB,QAAQ,CAAC,KAAK,SAAK,GAAG,MAAM,CAM3C;AAqBD,wBAAgB,gBAAgB,IAAI,UAAU,CA0C7C;AAyBD,yEAAyE;AACzE,wBAAsB,mBAAmB,CAAC,OAAO,GAAE,UAAsB,GAAG,OAAO,CAAC,UAAU,CAAC,CA2F9F;AAED,6EAA6E;AAC7E,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,UAAU,CAAC,CAO7D"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/usage/store.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,qCAAqC;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,yEAAyE;IACzE,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3B,iFAAiF;IACjF,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/G,iFAAiF;IACjF,IAAI,CAAC,WAAW,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAChD,yDAAyD;IACzD,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAA;IACpD,MAAM,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnD,uFAAuF;IACvF,YAAY,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,qEAAqE;IACrE,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACxD,wCAAwC;IACxC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACvB;;;;OAIG;IACH,KAAK,CAAC,IAAI,IAAI,CAAA;CACf;AAED,wBAAgB,QAAQ,CAAC,KAAK,SAAK,GAAG,MAAM,CAM3C;AAqBD,wBAAgB,gBAAgB,IAAI,UAAU,CA4C7C;AAyBD,yEAAyE;AACzE,wBAAsB,mBAAmB,CAAC,OAAO,GAAE,UAAsB,GAAG,OAAO,CAAC,UAAU,CAAC,CAiH9F;AAED,6EAA6E;AAC7E,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,UAAU,CAAC,CAO7D"}
@@ -1,3 +1,28 @@
1
+ /**
2
+ * The device's usage queue: what was counted waits here, across reloads,
3
+ * until the host has delivered it. IndexedDB in the browser; an in-memory
4
+ * store for tests and for runtimes without IndexedDB (where usage then lives
5
+ * only as long as the page).
6
+ *
7
+ * Two stages:
8
+ * - a **tally** per (lease, session) collects the cards first identified in
9
+ * that session and the number of calls, as answers come in;
10
+ * - `seal` turns every open tally into a `UsageReport` with the lease's next
11
+ * `seq` and a fresh `reportId`, atomically. A sealed report never changes,
12
+ * so delivering it twice is harmless (the service dedupes by `reportId`).
13
+ *
14
+ * Database `dejadex-usage`, version 1:
15
+ * tallies key `<leaseId>\n<sessionId>` → Tally
16
+ * reports keyPath `report.reportId`, index `order` → { order, report }
17
+ * meta `deviceId`, `order`, `seq:<leaseId>`, `reported:<leaseId>`
18
+ *
19
+ * The connection is never held against the host: on `versionchange` (the
20
+ * host's `indexedDB.deleteDatabase('dejadex-usage')` on sign-out, or a newer
21
+ * page upgrading it) the store closes itself, so the delete proceeds. A closed
22
+ * store rejects every later call with a `ScannerError`; nothing is dropped
23
+ * without the caller hearing of it.
24
+ */
25
+ import { ScannerError } from '../errors.js';
1
26
  export function randomId(bytes = 16) {
2
27
  const b = new Uint8Array(bytes);
3
28
  crypto.getRandomValues(b);
@@ -68,6 +93,8 @@ export function memoryUsageStore() {
68
93
  async size() {
69
94
  return queue.length + tallies.size;
70
95
  },
96
+ /** Nothing to release: memory lives as long as the page. */
97
+ close() { },
71
98
  };
72
99
  }
73
100
  const DB_NAME = 'dejadex-usage';
@@ -99,9 +126,29 @@ export async function indexedDbUsageStore(factory = indexedDB) {
99
126
  db.createObjectStore('meta');
100
127
  };
101
128
  const db = await request(open);
129
+ /** Why the connection is gone, once it is. */
130
+ let closed = null;
131
+ const shut = (why) => {
132
+ if (closed !== null)
133
+ return;
134
+ closed = why;
135
+ db.close();
136
+ };
137
+ // Another party wants the database (a host's deleteDatabase, a newer
138
+ // version): let go, or its request is blocked for the life of the document.
139
+ db.onversionchange = () => shut('it was deleted or upgraded elsewhere');
140
+ // The browser closed it (storage cleared, the disk went away).
141
+ db.onclose = () => {
142
+ closed ??= 'the browser closed it';
143
+ };
144
+ const transaction = (names, mode) => {
145
+ if (closed !== null)
146
+ throw new ScannerError('INVALID_OPTIONS', `the usage store is closed: ${closed}`);
147
+ return db.transaction(names, mode);
148
+ };
102
149
  return {
103
150
  async deviceId() {
104
- const tx = db.transaction('meta', 'readwrite');
151
+ const tx = transaction('meta', 'readwrite');
105
152
  const meta = tx.objectStore('meta');
106
153
  let id = (await request(meta.get('deviceId')));
107
154
  if (typeof id !== 'string') {
@@ -112,7 +159,7 @@ export async function indexedDbUsageStore(factory = indexedDB) {
112
159
  return id;
113
160
  },
114
161
  async tally(leaseId, sessionId, cardIds, calls, at) {
115
- const tx = db.transaction('tallies', 'readwrite');
162
+ const tx = transaction('tallies', 'readwrite');
116
163
  const store = tx.objectStore('tallies');
117
164
  const key = tallyKey(leaseId, sessionId);
118
165
  const prev = (await request(store.get(key)));
@@ -120,7 +167,7 @@ export async function indexedDbUsageStore(factory = indexedDB) {
120
167
  await done(tx);
121
168
  },
122
169
  async seal(newReportId) {
123
- const tx = db.transaction(['tallies', 'reports', 'meta'], 'readwrite');
170
+ const tx = transaction(['tallies', 'reports', 'meta'], 'readwrite');
124
171
  const tallies = tx.objectStore('tallies');
125
172
  const reports = tx.objectStore('reports');
126
173
  const meta = tx.objectStore('meta');
@@ -144,20 +191,20 @@ export async function indexedDbUsageStore(factory = indexedDB) {
144
191
  return open.length;
145
192
  },
146
193
  async peek(limit) {
147
- const tx = db.transaction('reports', 'readonly');
194
+ const tx = transaction('reports', 'readonly');
148
195
  const rows = (await request(tx.objectStore('reports').index('order').getAll(null, limit)));
149
196
  await done(tx);
150
197
  return rows.map((r) => r.report);
151
198
  },
152
199
  async remove(ids) {
153
- const tx = db.transaction('reports', 'readwrite');
200
+ const tx = transaction('reports', 'readwrite');
154
201
  const store = tx.objectStore('reports');
155
202
  for (const id of ids)
156
203
  store.delete(id);
157
204
  await done(tx);
158
205
  },
159
206
  async markReported(reports) {
160
- const tx = db.transaction('meta', 'readwrite');
207
+ const tx = transaction('meta', 'readwrite');
161
208
  const meta = tx.objectStore('meta');
162
209
  const top = new Map();
163
210
  for (const r of reports)
@@ -171,17 +218,20 @@ export async function indexedDbUsageStore(factory = indexedDB) {
171
218
  await done(tx);
172
219
  },
173
220
  async reportedThrough(leaseId) {
174
- const tx = db.transaction('meta', 'readonly');
221
+ const tx = transaction('meta', 'readonly');
175
222
  const v = (await request(tx.objectStore('meta').get(`reported:${leaseId}`)));
176
223
  await done(tx);
177
224
  return v ?? null;
178
225
  },
179
226
  async size() {
180
- const tx = db.transaction(['reports', 'tallies'], 'readonly');
227
+ const tx = transaction(['reports', 'tallies'], 'readonly');
181
228
  const [a, b] = await Promise.all([request(tx.objectStore('reports').count()), request(tx.objectStore('tallies').count())]);
182
229
  await done(tx);
183
230
  return a + b;
184
231
  },
232
+ close() {
233
+ shut('close() was called');
234
+ },
185
235
  };
186
236
  }
187
237
  /** IndexedDB where it opens, else memory (private windows can refuse it). */
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/usage/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/usage/store.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dejadex/web",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Framework-free browser SDK: on-device card detection, tracking and identification",
5
5
  "license": "UNLICENSED",
6
6
  "homepage": "https://dejadex.com",
@@ -72,7 +72,11 @@ export interface IdentifierOptions {
72
72
  readonly preload?: boolean
73
73
  /** The page origin the lease must allow. Default `location.origin`. */
74
74
  readonly origin?: string | null
75
- /** Default IndexedDB (`dejadex-usage`), memory where it is unavailable. */
75
+ /**
76
+ * Default IndexedDB (`dejadex-usage`), memory where it is unavailable. The
77
+ * default store is the identifier's own: `destroy()` closes it. A store passed
78
+ * here is the host's: `destroy()` leaves it open, and the host closes it.
79
+ */
76
80
  readonly usageStore?: UsageStore
77
81
  /** Background failures (a device engine that failed to load). Never called from `identify`. */
78
82
  readonly onError?: (error: Error) => void
@@ -114,7 +118,13 @@ export interface Identifier {
114
118
  * Null asks as a device with no lease.
115
119
  */
116
120
  leaseRequest(previousLeaseId?: string | null): Promise<LeaseRequest>
117
- /** Releases the device engine and its Worker. Later calls resolve `unavailable`. */
121
+ /**
122
+ * Releases the device engine and its Worker, and closes the usage store the
123
+ * identifier opened itself (never one passed as `options.usageStore`). Later
124
+ * calls resolve `unavailable`, and the usage methods reject once that store
125
+ * is closed. Drain usage first: what is still queued stays on the device
126
+ * until a later identifier drains it or the host deletes `dejadex-usage`.
127
+ */
118
128
  destroy(): Promise<void>
119
129
  }
120
130
 
@@ -176,9 +186,10 @@ export function createIdentifier(options: IdentifierOptions): Identifier {
176
186
  const doFetch: ServerFetch = options.fetch ?? ((url, init) => fetch(url, init))
177
187
  const loadEngine = options.loadEngine ?? defaultEngineLoader(options.engine)
178
188
  const health = new ServerHealth()
179
- const meterReady: Promise<UsageMeter> = (options.usageStore ? Promise.resolve(options.usageStore) : defaultUsageStore()).then(
180
- (store) => new UsageMeter({ store, now }),
181
- )
189
+ // A store the identifier opened is closed by `destroy()`; the host's is not.
190
+ const ownStore = options.usageStore === undefined
191
+ const storeReady: Promise<UsageStore> = options.usageStore ? Promise.resolve(options.usageStore) : defaultUsageStore()
192
+ const meterReady: Promise<UsageMeter> = storeReady.then((store) => new UsageMeter({ store, now }))
182
193
 
183
194
  let lease: Lease | null = null
184
195
  /** The constructor's lease while it is being verified; `identify` waits for it. */
@@ -401,6 +412,7 @@ export function createIdentifier(options: IdentifierOptions): Identifier {
401
412
  engine = null
402
413
  engineKey = null
403
414
  await e?.release().catch(() => undefined)
415
+ if (ownStore) (await storeReady).close?.()
404
416
  },
405
417
  }
406
418
 
@@ -15,7 +15,14 @@
15
15
  * tallies key `<leaseId>\n<sessionId>` → Tally
16
16
  * reports keyPath `report.reportId`, index `order` → { order, report }
17
17
  * meta `deviceId`, `order`, `seq:<leaseId>`, `reported:<leaseId>`
18
+ *
19
+ * The connection is never held against the host: on `versionchange` (the
20
+ * host's `indexedDB.deleteDatabase('dejadex-usage')` on sign-out, or a newer
21
+ * page upgrading it) the store closes itself, so the delete proceeds. A closed
22
+ * store rejects every later call with a `ScannerError`; nothing is dropped
23
+ * without the caller hearing of it.
18
24
  */
25
+ import { ScannerError } from '../errors.js'
19
26
  import type { UsageReport } from '../types.js'
20
27
 
21
28
  export interface Tally {
@@ -44,6 +51,12 @@ export interface UsageStore {
44
51
  reportedThrough(leaseId: string): Promise<number | null>
45
52
  /** Queued reports plus open tallies. */
46
53
  size(): Promise<number>
54
+ /**
55
+ * Releases what the store holds open (the IndexedDB connection). Later calls
56
+ * reject with `ScannerError` `INVALID_OPTIONS`. Optional for stores a host
57
+ * implements; the identifier closes only a store it opened itself.
58
+ */
59
+ close?(): void
47
60
  }
48
61
 
49
62
  export function randomId(bytes = 16): string {
@@ -114,6 +127,8 @@ export function memoryUsageStore(): UsageStore {
114
127
  async size() {
115
128
  return queue.length + tallies.size
116
129
  },
130
+ /** Nothing to release: memory lives as long as the page. */
131
+ close() {},
117
132
  }
118
133
  }
119
134
 
@@ -153,9 +168,28 @@ export async function indexedDbUsageStore(factory: IDBFactory = indexedDB): Prom
153
168
  }
154
169
  const db = await request(open)
155
170
 
171
+ /** Why the connection is gone, once it is. */
172
+ let closed: string | null = null
173
+ const shut = (why: string) => {
174
+ if (closed !== null) return
175
+ closed = why
176
+ db.close()
177
+ }
178
+ // Another party wants the database (a host's deleteDatabase, a newer
179
+ // version): let go, or its request is blocked for the life of the document.
180
+ db.onversionchange = () => shut('it was deleted or upgraded elsewhere')
181
+ // The browser closed it (storage cleared, the disk went away).
182
+ db.onclose = () => {
183
+ closed ??= 'the browser closed it'
184
+ }
185
+ const transaction = (names: string | string[], mode: IDBTransactionMode): IDBTransaction => {
186
+ if (closed !== null) throw new ScannerError('INVALID_OPTIONS', `the usage store is closed: ${closed}`)
187
+ return db.transaction(names, mode)
188
+ }
189
+
156
190
  return {
157
191
  async deviceId() {
158
- const tx = db.transaction('meta', 'readwrite')
192
+ const tx = transaction('meta', 'readwrite')
159
193
  const meta = tx.objectStore('meta')
160
194
  let id = (await request(meta.get('deviceId'))) as unknown
161
195
  if (typeof id !== 'string') {
@@ -166,7 +200,7 @@ export async function indexedDbUsageStore(factory: IDBFactory = indexedDB): Prom
166
200
  return id as string
167
201
  },
168
202
  async tally(leaseId, sessionId, cardIds, calls, at) {
169
- const tx = db.transaction('tallies', 'readwrite')
203
+ const tx = transaction('tallies', 'readwrite')
170
204
  const store = tx.objectStore('tallies')
171
205
  const key = tallyKey(leaseId, sessionId)
172
206
  const prev = (await request(store.get(key))) as Tally | undefined
@@ -174,7 +208,7 @@ export async function indexedDbUsageStore(factory: IDBFactory = indexedDB): Prom
174
208
  await done(tx)
175
209
  },
176
210
  async seal(newReportId) {
177
- const tx = db.transaction(['tallies', 'reports', 'meta'], 'readwrite')
211
+ const tx = transaction(['tallies', 'reports', 'meta'], 'readwrite')
178
212
  const tallies = tx.objectStore('tallies')
179
213
  const reports = tx.objectStore('reports')
180
214
  const meta = tx.objectStore('meta')
@@ -196,19 +230,19 @@ export async function indexedDbUsageStore(factory: IDBFactory = indexedDB): Prom
196
230
  return open.length
197
231
  },
198
232
  async peek(limit) {
199
- const tx = db.transaction('reports', 'readonly')
233
+ const tx = transaction('reports', 'readonly')
200
234
  const rows = (await request(tx.objectStore('reports').index('order').getAll(null, limit))) as QueuedRow[]
201
235
  await done(tx)
202
236
  return rows.map((r) => r.report)
203
237
  },
204
238
  async remove(ids) {
205
- const tx = db.transaction('reports', 'readwrite')
239
+ const tx = transaction('reports', 'readwrite')
206
240
  const store = tx.objectStore('reports')
207
241
  for (const id of ids) store.delete(id)
208
242
  await done(tx)
209
243
  },
210
244
  async markReported(reports) {
211
- const tx = db.transaction('meta', 'readwrite')
245
+ const tx = transaction('meta', 'readwrite')
212
246
  const meta = tx.objectStore('meta')
213
247
  const top = new Map<string, number>()
214
248
  for (const r of reports) top.set(r.leaseId, Math.max(top.get(r.leaseId) ?? 0, r.seq))
@@ -220,17 +254,20 @@ export async function indexedDbUsageStore(factory: IDBFactory = indexedDB): Prom
220
254
  await done(tx)
221
255
  },
222
256
  async reportedThrough(leaseId) {
223
- const tx = db.transaction('meta', 'readonly')
257
+ const tx = transaction('meta', 'readonly')
224
258
  const v = (await request(tx.objectStore('meta').get(`reported:${leaseId}`))) as number | undefined
225
259
  await done(tx)
226
260
  return v ?? null
227
261
  },
228
262
  async size() {
229
- const tx = db.transaction(['reports', 'tallies'], 'readonly')
263
+ const tx = transaction(['reports', 'tallies'], 'readonly')
230
264
  const [a, b] = await Promise.all([request(tx.objectStore('reports').count()), request(tx.objectStore('tallies').count())])
231
265
  await done(tx)
232
266
  return a + b
233
267
  },
268
+ close() {
269
+ shut('close() was called')
270
+ },
234
271
  }
235
272
  }
236
273