@flighthq/connectivity 0.4.0-next.1898.266773a → 0.4.0-next.1908.751021c

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.
@@ -1,4 +1,4 @@
1
- import type { Connectivity, ConnectivityBackend, ConnectivityReachability, ConnectivityReachabilityOptions, ConnectivityStatus } from '@flighthq/types/contract';
1
+ import type { BackendExplanation, Connectivity, ConnectivityBackend, ConnectivityReachability, ConnectivityReachabilityOptions, ConnectivityStatus } from '@flighthq/types/contract';
2
2
  export declare function attachConnectivity(net: Connectivity): void;
3
3
  export declare function createConnectivity(): Connectivity;
4
4
  export declare function createConnectivityStatus(): ConnectivityStatus;
@@ -6,11 +6,15 @@ export declare function createWebConnectivityBackend(): ConnectivityBackend;
6
6
  export declare function detachConnectivity(net: Connectivity): void;
7
7
  export declare function detectConnectivityReachability(options: Readonly<ConnectivityReachabilityOptions>, out: ConnectivityReachability): Promise<ConnectivityReachability>;
8
8
  export declare function disposeConnectivity(net: Connectivity): void;
9
+ export declare function explainConnectivityBackend(): BackendExplanation;
9
10
  export declare function getConnectivityBackend(): ConnectivityBackend;
10
11
  export declare function getConnectivityStatus(out: ConnectivityStatus): ConnectivityStatus;
11
12
  export declare function hasConnectivityStatusChanged(a: Readonly<ConnectivityStatus>, b: Readonly<ConnectivityStatus>): boolean;
13
+ export declare function installConnectivityHostBackend(backend: ConnectivityBackend): void;
12
14
  export declare function isConnectivityMetered(): boolean;
13
15
  export declare function isConnectivityOnline(): boolean;
14
16
  export declare function isConnectivitySaveDataEnabled(): boolean;
17
+ export declare function observeConnectivityHostResult(operation: string, succeeded: boolean): void;
18
+ export declare function resetConnectivityBackendForTest(): void;
15
19
  export declare function setConnectivityBackend(backend: ConnectivityBackend | null): void;
16
20
  //# sourceMappingURL=connectivity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connectivity.d.ts","sourceRoot":"","sources":["../src/connectivity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EAEnB,wBAAwB,EACxB,+BAA+B,EAC/B,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAKlC,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAwB1D;AAGD,wBAAgB,kBAAkB,IAAI,YAAY,CAQjD;AAGD,wBAAgB,wBAAwB,IAAI,kBAAkB,CAW7D;AAID,wBAAgB,4BAA4B,IAAI,mBAAmB,CAuDlE;AAGD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAM1D;AAOD,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,QAAQ,CAAC,+BAA+B,CAAC,EAClD,GAAG,EAAE,wBAAwB,GAC5B,OAAO,CAAC,wBAAwB,CAAC,CAcnC;AAID,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAE3D;AAGD,wBAAgB,sBAAsB,IAAI,mBAAmB,CAG5D;AAGD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,kBAAkB,GAAG,kBAAkB,CAEjF;AAGD,wBAAgB,4BAA4B,CAC1C,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAC/B,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAC9B,OAAO,CAWT;AAGD,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAGD,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAGD,wBAAgB,6BAA6B,IAAI,OAAO,CAEvD;AAGD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,GAAG,IAAI,CAEhF"}
1
+ {"version":3,"file":"connectivity.d.ts","sourceRoot":"","sources":["../src/connectivity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EAEnB,wBAAwB,EACxB,+BAA+B,EAC/B,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAElC,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAwB1D;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAQjD;AAED,wBAAgB,wBAAwB,IAAI,kBAAkB,CAW7D;AAID,wBAAgB,4BAA4B,IAAI,mBAAmB,CAuDlE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAM1D;AAED,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,QAAQ,CAAC,+BAA+B,CAAC,EAClD,GAAG,EAAE,wBAAwB,GAC5B,OAAO,CAAC,wBAAwB,CAAC,CAcnC;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAE3D;AAED,wBAAgB,0BAA0B,IAAI,kBAAkB,CAa/D;AAED,wBAAgB,sBAAsB,IAAI,mBAAmB,CAE5D;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,kBAAkB,GAAG,kBAAkB,CAEjF;AAED,wBAAgB,4BAA4B,CAC1C,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAC/B,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAC9B,OAAO,CAWT;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAMjF;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED,wBAAgB,6BAA6B,IAAI,OAAO,CAEvD;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAKzF;AAED,wBAAgB,+BAA+B,IAAI,IAAI,CAKtD;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,GAAG,IAAI,CAEhF"}
@@ -1,7 +1,4 @@
1
1
  import { createSignal, emitSignal } from '@flighthq/signals/contract';
2
- // Begins delivering connectivity changes to `net`'s signals by subscribing to the active backend. On
3
- // each change it reads a fresh status and emits onChange plus edge-triggered signals. Idempotent: a
4
- // prior subscription is torn down first. Pair with detachConnectivity/disposeConnectivity.
5
2
  export function attachConnectivity(net) {
6
3
  detachConnectivity(net);
7
4
  const backend = getConnectivityBackend();
@@ -27,7 +24,6 @@ export function attachConnectivity(net) {
27
24
  });
28
25
  _subscriptions.set(net, unsubscribe);
29
26
  }
30
- // Allocates a Connectivity event entity with inert signals; call attachConnectivity to start delivery.
31
27
  export function createConnectivity() {
32
28
  return {
33
29
  onChange: createSignal(),
@@ -37,7 +33,6 @@ export function createConnectivity() {
37
33
  onOnline: createSignal(),
38
34
  };
39
35
  }
40
- // Allocates a zeroed ConnectivityStatus, suitable as the `out` for getConnectivityStatus.
41
36
  export function createConnectivityStatus() {
42
37
  return {
43
38
  downlink: -1,
@@ -110,7 +105,6 @@ export function createWebConnectivityBackend() {
110
105
  },
111
106
  };
112
107
  }
113
- // Stops delivery to `net` and forgets its subscription. Safe to call when not attached.
114
108
  export function detachConnectivity(net) {
115
109
  const unsubscribe = _subscriptions.get(net);
116
110
  if (unsubscribe !== undefined) {
@@ -118,11 +112,6 @@ export function detachConnectivity(net) {
118
112
  _subscriptions.delete(net);
119
113
  }
120
114
  }
121
- // Performs a one-shot reachability probe against the given URL using the active backend's
122
- // detectReachability, falling back to a fetch-based implementation when the backend does not provide
123
- // one. Writes the result into `out` and returns it. Returns a sentinel on failure rather than throwing.
124
- // NOTE: navigator.onLine reports an interface, not internet reachability. Use this function when you
125
- // need to distinguish "a network interface is up" from "the internet is actually reachable."
126
115
  export async function detectConnectivityReachability(options, out) {
127
116
  const backend = getConnectivityBackend();
128
117
  if (backend.detectReachability !== undefined) {
@@ -139,22 +128,29 @@ export async function detectConnectivityReachability(options, out) {
139
128
  out.latency = -1;
140
129
  return out;
141
130
  }
142
- // Releases `net` for garbage collection by detaching its backend subscription. The signals remain
143
- // plain GC-managed memory afterward.
144
131
  export function disposeConnectivity(net) {
145
132
  detachConnectivity(net);
146
133
  }
147
- // The active network backend, or a lazily-created web default. There is always a backend.
134
+ export function explainConnectivityBackend() {
135
+ if (_custom !== null) {
136
+ return { conflict: _hostConflict, layer: 'custom', operation: null, viability: 'unobserved' };
137
+ }
138
+ if (_host !== null) {
139
+ return {
140
+ conflict: _hostConflict,
141
+ layer: 'host',
142
+ operation: _hostObservation !== null ? _hostObservation.operation : null,
143
+ viability: _hostObservation !== null ? _hostObservation.viability : 'unobserved',
144
+ };
145
+ }
146
+ return { conflict: false, layer: 'host-not-enabled', operation: null, viability: 'unobserved' };
147
+ }
148
148
  export function getConnectivityBackend() {
149
- if (_backend === null)
150
- _backend = createWebConnectivityBackend();
151
- return _backend;
149
+ return _custom ?? _host ?? _sentinel;
152
150
  }
153
- // Fills `out` with the current connectivity snapshot and returns it.
154
151
  export function getConnectivityStatus(out) {
155
152
  return getConnectivityBackend().getStatus(out);
156
153
  }
157
- // Returns a diff of two status snapshots. Returns true if any field differs.
158
154
  export function hasConnectivityStatusChanged(a, b) {
159
155
  return (a.online !== b.online ||
160
156
  a.type !== b.type ||
@@ -165,24 +161,64 @@ export function hasConnectivityStatusChanged(a, b) {
165
161
  a.saveData !== b.saveData ||
166
162
  a.metered !== b.metered);
167
163
  }
168
- // True when the connection is metered (cellular or save-data is set). Convenience over getConnectivityStatus.
164
+ export function installConnectivityHostBackend(backend) {
165
+ if (_host !== null) {
166
+ if (_host !== backend)
167
+ _hostConflict = true;
168
+ return;
169
+ }
170
+ _host = backend;
171
+ }
169
172
  export function isConnectivityMetered() {
170
173
  return getConnectivityBackend().getStatus(_scratch).metered;
171
174
  }
172
- // True when the host currently reports connectivity. Convenience over getConnectivityStatus.
173
175
  export function isConnectivityOnline() {
174
176
  return getConnectivityBackend().getStatus(_scratch).online;
175
177
  }
176
- // True when the user or OS has requested reduced data usage. Convenience over getConnectivityStatus.
177
178
  export function isConnectivitySaveDataEnabled() {
178
179
  return getConnectivityBackend().getStatus(_scratch).saveData;
179
180
  }
180
- // Installs a native host network backend; pass null to fall back to the web default.
181
+ export function observeConnectivityHostResult(operation, succeeded) {
182
+ _hostObservation = {
183
+ operation,
184
+ viability: succeeded ? 'available' : 'runtime-api-unavailable',
185
+ };
186
+ }
187
+ export function resetConnectivityBackendForTest() {
188
+ _custom = null;
189
+ _host = null;
190
+ _hostConflict = false;
191
+ _hostObservation = null;
192
+ }
181
193
  export function setConnectivityBackend(backend) {
182
- _backend = backend;
194
+ _custom = backend;
183
195
  }
184
- let _backend = null;
196
+ let _custom = null;
197
+ let _host = null;
198
+ let _hostConflict = false;
199
+ let _hostObservation = null;
185
200
  const _scratch = createConnectivityStatus();
201
+ const _sentinel = {
202
+ getStatus(out) {
203
+ out.online = false;
204
+ out.type = 'unknown';
205
+ out.downlink = -1;
206
+ out.downlinkMax = -1;
207
+ out.effectiveType = '';
208
+ out.rtt = -1;
209
+ out.saveData = false;
210
+ out.metered = false;
211
+ return out;
212
+ },
213
+ async detectReachability(_options, out) {
214
+ out.reachable = false;
215
+ out.latency = -1;
216
+ return out;
217
+ },
218
+ subscribe() {
219
+ return () => { };
220
+ },
221
+ };
186
222
  const _subscriptions = new WeakMap();
187
223
  // Combines two AbortSignals: aborts when either fires.
188
224
  function anyAbortSignal(a, b) {
@@ -1 +1 @@
1
- {"version":3,"file":"connectivity.js","sourceRoot":"","sources":["../src/connectivity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connectivity.js","sourceRoot":"","sources":["../src/connectivity.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { attachConnectivity, createConnectivity, detachConnectivity, detectConnectivityReachability, disposeConnectivity, getConnectivityStatus, hasConnectivityStatusChanged, isConnectivityMetered, isConnectivityOnline, isConnectivitySaveDataEnabled, } from './contract';
1
+ export { explainConnectivityBackend, attachConnectivity, createConnectivity, detachConnectivity, detectConnectivityReachability, disposeConnectivity, getConnectivityStatus, hasConnectivityStatusChanged, isConnectivityMetered, isConnectivityOnline, isConnectivitySaveDataEnabled, } from './contract';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,8BAA8B,EAC9B,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,8BAA8B,EAC9B,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { attachConnectivity, createConnectivity, detachConnectivity, detectConnectivityReachability, disposeConnectivity, getConnectivityStatus, hasConnectivityStatusChanged, isConnectivityMetered, isConnectivityOnline, isConnectivitySaveDataEnabled, } from './contract';
1
+ export { explainConnectivityBackend, attachConnectivity, createConnectivity, detachConnectivity, detectConnectivityReachability, disposeConnectivity, getConnectivityStatus, hasConnectivityStatusChanged, isConnectivityMetered, isConnectivityOnline, isConnectivitySaveDataEnabled, } from './contract';
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,8BAA8B,EAC9B,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,8BAA8B,EAC9B,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,YAAY,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/connectivity",
3
- "version": "0.4.0-next.1898.266773a",
3
+ "version": "0.4.0-next.1908.751021c",
4
4
  "author": "Joshua Granick and other contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,8 +38,8 @@
38
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@flighthq/signals": "0.4.0-next.1898.266773a",
42
- "@flighthq/types": "0.4.0-next.1898.266773a"
41
+ "@flighthq/signals": "0.4.0-next.1908.751021c",
42
+ "@flighthq/types": "0.4.0-next.1908.751021c"
43
43
  },
44
44
  "devDependencies": {
45
45
  "typescript": "^5.3.0"
@@ -16,6 +16,10 @@ import {
16
16
  isConnectivityOnline,
17
17
  isConnectivitySaveDataEnabled,
18
18
  setConnectivityBackend,
19
+ explainConnectivityBackend,
20
+ installConnectivityHostBackend,
21
+ observeConnectivityHostResult,
22
+ resetConnectivityBackendForTest,
19
23
  } from './connectivity';
20
24
 
21
25
  function fakeBackend(
@@ -266,6 +270,34 @@ describe('disposeConnectivity', () => {
266
270
  });
267
271
  });
268
272
 
273
+ describe('explainConnectivityBackend', () => {
274
+ afterEach(() => resetConnectivityBackendForTest());
275
+
276
+ it('reports host-not-enabled when no backend is installed', () => {
277
+ resetConnectivityBackendForTest();
278
+ const explanation = explainConnectivityBackend();
279
+ expect(explanation.layer).toBe('host-not-enabled');
280
+ expect(explanation.conflict).toBe(false);
281
+ expect(explanation.viability).toBe('unobserved');
282
+ });
283
+
284
+ it('reports custom layer when a custom backend is set', () => {
285
+ setConnectivityBackend(fakeBackend());
286
+ expect(explainConnectivityBackend().layer).toBe('custom');
287
+ });
288
+
289
+ it('reports host layer when a host backend is installed', () => {
290
+ installConnectivityHostBackend(fakeBackend());
291
+ expect(explainConnectivityBackend().layer).toBe('host');
292
+ });
293
+
294
+ it('reports conflict when two different host backends are installed', () => {
295
+ installConnectivityHostBackend(fakeBackend());
296
+ installConnectivityHostBackend(fakeBackend());
297
+ expect(explainConnectivityBackend().conflict).toBe(true);
298
+ });
299
+ });
300
+
269
301
  describe('getConnectivityBackend', () => {
270
302
  it('falls back to a web backend', () => {
271
303
  expect(getConnectivityBackend()).not.toBeNull();
@@ -326,6 +358,25 @@ describe('hasConnectivityStatusChanged', () => {
326
358
  });
327
359
  });
328
360
 
361
+ describe('installConnectivityHostBackend', () => {
362
+ afterEach(() => resetConnectivityBackendForTest());
363
+
364
+ it('installs a host backend that getConnectivityBackend returns', () => {
365
+ const backend = fakeBackend();
366
+ installConnectivityHostBackend(backend);
367
+ expect(getConnectivityBackend()).toBe(backend);
368
+ });
369
+
370
+ it('is first-host-wins: a second different backend sets conflict', () => {
371
+ const first = fakeBackend();
372
+ const second = fakeBackend();
373
+ installConnectivityHostBackend(first);
374
+ installConnectivityHostBackend(second);
375
+ expect(getConnectivityBackend()).toBe(first);
376
+ expect(explainConnectivityBackend().conflict).toBe(true);
377
+ });
378
+ });
379
+
329
380
  describe('isConnectivityMetered', () => {
330
381
  it('returns false for a non-metered connection', () => {
331
382
  setConnectivityBackend(fakeBackend({ metered: false }));
@@ -363,6 +414,36 @@ describe('isConnectivitySaveDataEnabled', () => {
363
414
  });
364
415
  });
365
416
 
417
+ describe('observeConnectivityHostResult', () => {
418
+ afterEach(() => resetConnectivityBackendForTest());
419
+
420
+ it('records a successful observation', () => {
421
+ installConnectivityHostBackend(fakeBackend());
422
+ observeConnectivityHostResult('getStatus', true);
423
+ const explanation = explainConnectivityBackend();
424
+ expect(explanation.operation).toBe('getStatus');
425
+ expect(explanation.viability).toBe('available');
426
+ });
427
+
428
+ it('records a failed observation', () => {
429
+ installConnectivityHostBackend(fakeBackend());
430
+ observeConnectivityHostResult('getStatus', false);
431
+ expect(explainConnectivityBackend().viability).toBe('runtime-api-unavailable');
432
+ });
433
+ });
434
+
435
+ describe('resetConnectivityBackendForTest', () => {
436
+ it('clears all backend slots', () => {
437
+ setConnectivityBackend(fakeBackend());
438
+ installConnectivityHostBackend(fakeBackend());
439
+ observeConnectivityHostResult('getStatus', true);
440
+ resetConnectivityBackendForTest();
441
+ expect(explainConnectivityBackend().layer).toBe('host-not-enabled');
442
+ expect(explainConnectivityBackend().conflict).toBe(false);
443
+ expect(explainConnectivityBackend().viability).toBe('unobserved');
444
+ });
445
+ });
446
+
366
447
  describe('setConnectivityBackend', () => {
367
448
  it('clears back to the web fallback when passed null', () => {
368
449
  setConnectivityBackend(fakeBackend());