unified-ble-manager 4.0.6 → 4.0.7
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 +24 -0
- package/MIGRATION_4.0.md +1 -1
- package/README.md +1 -1
- package/RELEASE.md +32 -1
- package/SBOM.cdx.json +4 -4
- package/THIRD_PARTY_LICENSES.json +1 -1
- package/docs/BONDING.md +106 -4
- package/docs/ELECTRON.md +1 -1
- package/docs/EXPO_PLUGIN.md +2 -2
- package/docs/GAPS.4.0.md +1 -1
- package/docs/GETTING_STARTED.md +4 -4
- package/docs/NODE.md +1 -1
- package/docs/PLATFORMS.md +1 -1
- package/docs/WEB.md +1 -1
- package/docs/generated/PLATFORM_SUPPORT.md +1 -1
- package/lib/commonjs/backend-contract/capabilities.js +11 -0
- package/lib/commonjs/backend-contract/capabilities.js.map +1 -1
- package/lib/commonjs/backend-contract/security.js +54 -0
- package/lib/commonjs/backend-contract/security.js.map +1 -1
- package/lib/commonjs/backends/bluez/bluez-backend-provider.js +2 -1
- package/lib/commonjs/backends/bluez/bluez-backend-provider.js.map +1 -1
- package/lib/commonjs/backends/bluez/bluez-backend-runtime.js +1 -0
- package/lib/commonjs/backends/bluez/bluez-backend-runtime.js.map +1 -1
- package/lib/commonjs/backends/bluez/bluez-backend.js +31 -20
- package/lib/commonjs/backends/bluez/bluez-backend.js.map +1 -1
- package/lib/commonjs/backends/bluez/bluez-pairing-generation-capability.js +92 -0
- package/lib/commonjs/backends/bluez/bluez-pairing-generation-capability.js.map +1 -0
- package/lib/commonjs/backends/bluez/bluez-pairing-generation.js +193 -0
- package/lib/commonjs/backends/bluez/bluez-pairing-generation.js.map +1 -0
- package/lib/commonjs/backends/bluez/bluez-security.js +31 -9
- package/lib/commonjs/backends/bluez/bluez-security.js.map +1 -1
- package/lib/commonjs/backends/reactnative/react-native-android-security.js +21 -3
- package/lib/commonjs/backends/reactnative/react-native-android-security.js.map +1 -1
- package/lib/commonjs/backends/winrt/winrt-security.js +16 -10
- package/lib/commonjs/backends/winrt/winrt-security.js.map +1 -1
- package/lib/commonjs/implementation-version.js +1 -1
- package/lib/commonjs/node-bluez.js +5 -2
- package/lib/commonjs/node-bluez.js.map +1 -1
- package/lib/commonjs/public/security.js +13 -1
- package/lib/commonjs/public/security.js.map +1 -1
- package/lib/commonjs/testing/deterministic/deterministic-security.js +8 -3
- package/lib/commonjs/testing/deterministic/deterministic-security.js.map +1 -1
- package/lib/module/backend-contract/capabilities.js +11 -0
- package/lib/module/backend-contract/capabilities.js.map +1 -1
- package/lib/module/backend-contract/security.js +53 -1
- package/lib/module/backend-contract/security.js.map +1 -1
- package/lib/module/backends/bluez/bluez-backend-provider.js +2 -1
- package/lib/module/backends/bluez/bluez-backend-provider.js.map +1 -1
- package/lib/module/backends/bluez/bluez-backend-runtime.js +1 -0
- package/lib/module/backends/bluez/bluez-backend-runtime.js.map +1 -1
- package/lib/module/backends/bluez/bluez-backend.js +31 -20
- package/lib/module/backends/bluez/bluez-backend.js.map +1 -1
- package/lib/module/backends/bluez/bluez-pairing-generation-capability.js +87 -0
- package/lib/module/backends/bluez/bluez-pairing-generation-capability.js.map +1 -0
- package/lib/module/backends/bluez/bluez-pairing-generation.js +188 -0
- package/lib/module/backends/bluez/bluez-pairing-generation.js.map +1 -0
- package/lib/module/backends/bluez/bluez-security.js +31 -9
- package/lib/module/backends/bluez/bluez-security.js.map +1 -1
- package/lib/module/backends/reactnative/react-native-android-security.js +21 -3
- package/lib/module/backends/reactnative/react-native-android-security.js.map +1 -1
- package/lib/module/backends/winrt/winrt-security.js +16 -10
- package/lib/module/backends/winrt/winrt-security.js.map +1 -1
- package/lib/module/implementation-version.js +1 -1
- package/lib/module/node-bluez.js +5 -2
- package/lib/module/node-bluez.js.map +1 -1
- package/lib/module/public/security.js +13 -1
- package/lib/module/public/security.js.map +1 -1
- package/lib/module/testing/deterministic/deterministic-security.js +8 -3
- package/lib/module/testing/deterministic/deterministic-security.js.map +1 -1
- package/lib/typescript/commonjs/src/backend-contract/capabilities.d.ts +11 -0
- package/lib/typescript/commonjs/src/backend-contract/capabilities.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/backend-contract/security.d.ts +38 -1
- package/lib/typescript/commonjs/src/backend-contract/security.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/backends/bluez/bluez-backend-provider.d.ts +13 -1
- package/lib/typescript/commonjs/src/backends/bluez/bluez-backend-provider.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/backends/bluez/bluez-backend-runtime.d.ts +8 -0
- package/lib/typescript/commonjs/src/backends/bluez/bluez-backend-runtime.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/backends/bluez/bluez-backend.d.ts +5 -1
- package/lib/typescript/commonjs/src/backends/bluez/bluez-backend.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/backends/bluez/bluez-pairing-generation-capability.d.ts +16 -0
- package/lib/typescript/commonjs/src/backends/bluez/bluez-pairing-generation-capability.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/backends/bluez/bluez-pairing-generation.d.ts +41 -0
- package/lib/typescript/commonjs/src/backends/bluez/bluez-pairing-generation.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/backends/bluez/bluez-security.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/backends/corebluetooth/corebluetooth-identity.d.ts +1 -1
- package/lib/typescript/commonjs/src/backends/reactnative/react-native-android-provider.d.ts +1 -1
- package/lib/typescript/commonjs/src/backends/reactnative/react-native-android-security.d.ts +5 -0
- package/lib/typescript/commonjs/src/backends/reactnative/react-native-android-security.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/backends/reactnative/react-native-apple-provider.d.ts +1 -1
- package/lib/typescript/commonjs/src/backends/winrt/winrt-provider.d.ts +1 -1
- package/lib/typescript/commonjs/src/backends/winrt/winrt-security.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/implementation-version.d.ts +1 -1
- package/lib/typescript/commonjs/src/node-bluez.d.ts +14 -0
- package/lib/typescript/commonjs/src/node-bluez.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/testing/deterministic/deterministic-security.d.ts.map +1 -1
- package/lib/typescript/module/src/backend-contract/capabilities.d.ts +11 -0
- package/lib/typescript/module/src/backend-contract/capabilities.d.ts.map +1 -1
- package/lib/typescript/module/src/backend-contract/security.d.ts +38 -1
- package/lib/typescript/module/src/backend-contract/security.d.ts.map +1 -1
- package/lib/typescript/module/src/backends/bluez/bluez-backend-provider.d.ts +13 -1
- package/lib/typescript/module/src/backends/bluez/bluez-backend-provider.d.ts.map +1 -1
- package/lib/typescript/module/src/backends/bluez/bluez-backend-runtime.d.ts +8 -0
- package/lib/typescript/module/src/backends/bluez/bluez-backend-runtime.d.ts.map +1 -1
- package/lib/typescript/module/src/backends/bluez/bluez-backend.d.ts +5 -1
- package/lib/typescript/module/src/backends/bluez/bluez-backend.d.ts.map +1 -1
- package/lib/typescript/module/src/backends/bluez/bluez-pairing-generation-capability.d.ts +16 -0
- package/lib/typescript/module/src/backends/bluez/bluez-pairing-generation-capability.d.ts.map +1 -0
- package/lib/typescript/module/src/backends/bluez/bluez-pairing-generation.d.ts +41 -0
- package/lib/typescript/module/src/backends/bluez/bluez-pairing-generation.d.ts.map +1 -0
- package/lib/typescript/module/src/backends/bluez/bluez-security.d.ts.map +1 -1
- package/lib/typescript/module/src/backends/corebluetooth/corebluetooth-identity.d.ts +1 -1
- package/lib/typescript/module/src/backends/reactnative/react-native-android-provider.d.ts +1 -1
- package/lib/typescript/module/src/backends/reactnative/react-native-android-security.d.ts +5 -0
- package/lib/typescript/module/src/backends/reactnative/react-native-android-security.d.ts.map +1 -1
- package/lib/typescript/module/src/backends/reactnative/react-native-apple-provider.d.ts +1 -1
- package/lib/typescript/module/src/backends/winrt/winrt-provider.d.ts +1 -1
- package/lib/typescript/module/src/backends/winrt/winrt-security.d.ts.map +1 -1
- package/lib/typescript/module/src/implementation-version.d.ts +1 -1
- package/lib/typescript/module/src/node-bluez.d.ts +14 -0
- package/lib/typescript/module/src/node-bluez.d.ts.map +1 -1
- package/lib/typescript/module/src/testing/deterministic/deterministic-security.d.ts.map +1 -1
- package/native/PREBUILDS.json +5 -5
- package/native/electron/corebluetooth/prebuilds/darwin-arm64/unified_ble_corebluetooth.node +0 -0
- package/native/electron/corebluetooth/prebuilds/darwin-x64/unified_ble_corebluetooth.node +0 -0
- package/native/electron/winrt/prebuilds/win32-arm64/unified_ble_winrt.node +0 -0
- package/native/electron/winrt/prebuilds/win32-x64/unified_ble_winrt.node +0 -0
- package/native/tauri/src/btleplug_dispatcher.rs +171 -16
- package/native/tauri/src/capabilities.rs +2 -1
- package/package.json +1 -1
- package/src/backend-contract/capabilities.ts +11 -0
- package/src/backend-contract/security.ts +51 -1
- package/src/backends/bluez/bluez-backend-provider.ts +14 -1
- package/src/backends/bluez/bluez-backend-runtime.ts +9 -0
- package/src/backends/bluez/bluez-backend.ts +45 -27
- package/src/backends/bluez/bluez-pairing-generation-capability.ts +100 -0
- package/src/backends/bluez/bluez-pairing-generation.ts +220 -0
- package/src/backends/bluez/bluez-security.ts +87 -45
- package/src/backends/reactnative/react-native-android-security.ts +19 -1
- package/src/backends/winrt/winrt-security.ts +14 -3
- package/src/implementation-version.ts +1 -1
- package/src/node-bluez.ts +21 -3
- package/src/public/security.ts +10 -1
- package/src/testing/deterministic/deterministic-security.ts +8 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,30 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `unified-ble-manager` are documented here.
|
|
4
4
|
|
|
5
|
+
## [4.0.7] - 2026-08-26
|
|
6
|
+
|
|
7
|
+
### Changed behaviour
|
|
8
|
+
|
|
9
|
+
- `cancelPairing()` reports what the cancellation **achieved**, not what it requested, and can no longer contradict the pairing it cancelled. Every backend answered `'cancelled'` unconditionally the moment the cancel was dispatched, so a cancellation that lost the race told the caller no bond exists while one did — and a caller who believes that never looks again. It now reads the in-flight pairing's own result rather than forming a second opinion, which is what makes the two calls incapable of disagreeing: there is one source of truth and the cancellation reads it. `SecurityCancelPairingResult` gains the words to say so — `'paired'` when the bond completed before the cancellation arrived, and `'rejected'` (carrying the peer's reason) when the peer refused, because claiming credit for stopping something that stopped itself is the same substitution with the arrow reversed. A pairing that *fails* is not given an invented outcome: `cancelPairing()` rejects with the error the pairing rejected with. `'paired'` deliberately matches `SecurityPairResult`'s `'paired'` — a bond exists as a result of this operation — and is not `'already-paired'`, which in that type means the peer was bonded *before* the call; one word, one meaning, in both types. Applies to BlueZ, Android, WinRT **and** the deterministic `/testing` backend, since a mock that answers differently from every real radio lets a consumer's suite pass against a contract no device honours. WinRT additionally short-circuited *upstream* of the shared mapper — when its dispatcher reported the operation already terminal, which is exactly the lost race, it answered `'not-pairing'`, contradicting its own `pair()` and making that word mean both "there was nothing to stop" and "it was already over" (#159).
|
|
10
|
+
|
|
11
|
+
### Additions
|
|
12
|
+
|
|
13
|
+
- **`PairOptions.secureConnections` can now actually select the LE pairing generation on BlueZ — behind a host-supplied privileged operation.** Some peripherals accept only LE Legacy and terminate the link on a Secure Connections pairing request; 4.0.6 gave the contract a way to say so but no backend that could honour it. `org.bluez.Adapter1` (BlueZ 5.85) exposes no Secure Connections property and `Device1.Pair` takes no parameters — the setting lives behind the kernel management socket's Set Secure Connections command, which requires **`CAP_NET_ADMIN`**.
|
|
14
|
+
|
|
15
|
+
This package never acquires that privilege: it opens no management socket, shells out to nothing, and does not assume it is root. A library that silently escalates hands an application capabilities its author did not choose and cannot audit. The **host** supplies the operation via `BluezBackendProviderOptions.pairingGeneration`, which makes the escalation visible in the application that opted into it. Omit it and `'require'`/`'disallow'` keep failing closed exactly as in 4.0.6 — the default posture is unchanged.
|
|
16
|
+
|
|
17
|
+
Three properties of the kernel setting a host must accept, documented in `docs/BONDING.md` rather than discovered: it is **adapter-wide**, not per-pairing, so every pairing on that controller uses the selected generation while it is held; it **outlives the process**, because the kernel keeps it until something sets it back; and a **failed restore never changes the pairing's outcome** — a bond that was created is reported as created, with the restore failure reported separately, because leaving a controller in LE Legacy and telling a caller they are not bonded are both serious and are different facts. Concurrent *directed* pairings on one adapter are serialised so they cannot corrupt each other's restore value; an undirected (`'prefer'`) pairing does not take that lock and uses whichever generation is held, which `docs/BONDING.md` states beside the option.
|
|
18
|
+
|
|
19
|
+
`security:pairing-generation` joins the capability catalog and is reported by the instantiated backend at runtime: `unsupported` with the platform reason when no operation was supplied, `limited` when one was — so two BlueZ backends on one machine legitimately answer differently. Evidence is deterministic tests only; this is **not** physical-radio proof, and the label says so (#144).
|
|
20
|
+
|
|
21
|
+
### Fixes
|
|
22
|
+
|
|
23
|
+
- A Tauri connect that succeeds physically but is then denied admission no longer strands the peer. Both compensation branches — the caller vanished, and the caller's lease went stale — removed the peer reservation *before* attempting the disconnect and then discarded its result with `.ok()`. If that disconnect failed or hung while the peripheral stayed connected, the result was a connected peer with no owner and no handle: nothing could reach it, nothing could retry it, and the caller was told only that admission was denied. Compensation now follows the rule the explicit disconnect already follows — a bounded wait, a fresh state reading, and a D-Bus error naming a vanished device object read as evidence of release rather than as a failed question — and surrenders the reservation only when the platform proves the link is down. Genuine indeterminacy keeps it so a retry can reclaim the peer, and the admission error carries what compensation could not undo, which is the difference between "try again" and "a peer is stranded" (#146).
|
|
24
|
+
|
|
25
|
+
### Known limitations
|
|
26
|
+
|
|
27
|
+
- `pair()`'s abort path still reports `'cancelled'` without knowing whether the daemon bonded anyway. Learning the truth means waiting for the radio, and waiting risks a hang that a wedged daemon would inflict on the caller — which the suite explicitly forbids. Resolving it needs a vocabulary that can express "cancellation requested, bond state not yet known"; `state()` and `watch()` remain authoritative meanwhile (#157).
|
|
28
|
+
|
|
5
29
|
## [4.0.6] - 2026-08-26
|
|
6
30
|
|
|
7
31
|
The first release cut against a live peripheral on Android as well as Linux. Most of it is defects that only real hardware surfaced, several of them boundaries that discarded evidence and so presented a specific fault as silence. Does not retag `v4.0.5`.
|
package/MIGRATION_4.0.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Migrating from react-native-ble-plx
|
|
4
4
|
|
|
5
|
-
The current package is `4.0.
|
|
5
|
+
The current package is `4.0.7`. The `4.0.0` release is a new package and a new contract. It is **not a source-compatible rename**. There is no `new BleManager()` facade, no Base64 characteristic values, and no public transaction IDs.
|
|
6
6
|
|
|
7
7
|
This page is for a React Native app that already uses `react-native-ble-plx`. Web, Electron, Node, and Tauri are new hosts — use those pages after you understand the RN rewrite.
|
|
8
8
|
|
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
It is an evolution of `react-native-ble-plx`, rewritten as a **cross-platform unified product**. One bytes-first BLE model and lifecycle semantics across hosts, with host-specific construction and ownership. The root package never picks a radio for you, and it will not quietly fall back to a simulator or a different backend.
|
|
8
8
|
|
|
9
|
-
Install `unified-ble-manager` from npm (`4.0.
|
|
9
|
+
Install `unified-ble-manager` from npm (`4.0.7` on `latest`). The root import does not pick a radio. Package SemVer and backend support labels are independent: each radio backend stays Experimental until live-radio evidence says otherwise. See [`docs/PLATFORMS.md`](docs/PLATFORMS.md).
|
|
10
10
|
|
|
11
11
|
> Sponsored by [Imagi Explain](https://imagiexplain.com) — researched, narrated whiteboard explainers from a prompt, a PDF, or your notes.
|
|
12
12
|
|
package/RELEASE.md
CHANGED
|
@@ -81,7 +81,7 @@ Active `4.0.0-rc.*` release-train candidates publish to npm `latest` so a bare `
|
|
|
81
81
|
|
|
82
82
|
On release day, set `release_candidate` to the exact candidate required by the
|
|
83
83
|
release plan. RC2, RC3, RC4, `4.0.0-rc.4.1`, and RC5 are already immutable
|
|
84
|
-
once tagged. Stable `4.0.0`, `4.0.1`, `4.0.2`, `4.0.3`, `4.0.4`, and `4.0.
|
|
84
|
+
once tagged. Stable `4.0.0`, `4.0.1`, `4.0.2`, `4.0.3`, `4.0.4`, `4.0.5`, and `4.0.6` are immutable. `4.0.7` is the current train head.
|
|
85
85
|
|
|
86
86
|
```sh
|
|
87
87
|
release_candidate=4.0.0-rc.N
|
|
@@ -133,6 +133,37 @@ The `v4.0.3` tag is immutable published history. Do not recreate or move it.
|
|
|
133
133
|
git tag -a v4.0.3 -m "v4.0.3"
|
|
134
134
|
```
|
|
135
135
|
|
|
136
|
+
## Releasing 4.0.7
|
|
137
|
+
|
|
138
|
+
Same shape as 4.0.6. The release workflow verifies that the tag points at the
|
|
139
|
+
exact current `main` commit before publication; do not create it from a side
|
|
140
|
+
branch or an older commit. Do not retag any immutable version.
|
|
141
|
+
|
|
142
|
+
```sh
|
|
143
|
+
git fetch origin --tags
|
|
144
|
+
git checkout main
|
|
145
|
+
git pull --ff-only origin main
|
|
146
|
+
|
|
147
|
+
test "$(git branch --show-current)" = "main"
|
|
148
|
+
test "$(node -p "require('./package.json').version")" = "4.0.7"
|
|
149
|
+
git diff --exit-code
|
|
150
|
+
git diff --cached --exit-code
|
|
151
|
+
|
|
152
|
+
git tag -a v4.0.7 -m "v4.0.7"
|
|
153
|
+
git push origin v4.0.7
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Do not push another commit to `main` between the final verification and the tag
|
|
157
|
+
push.
|
|
158
|
+
|
|
159
|
+
Before tagging, confirm the release-notes extraction finds the entry — the
|
|
160
|
+
workflow's awk matches `^## \[4.0.7\]`, and a heading left as `[Unreleased]`
|
|
161
|
+
publishes a stub instead of the changelog:
|
|
162
|
+
|
|
163
|
+
```sh
|
|
164
|
+
awk -v ver=4.0.7 '$0 ~ ("^## \\[" ver "\\]") {p=1;next} p && $0 ~ /^## \[/ {exit} p {print}' CHANGELOG.md
|
|
165
|
+
```
|
|
166
|
+
|
|
136
167
|
## Releasing 4.0.6
|
|
137
168
|
|
|
138
169
|
The source version is prepared on `main` before the tag. The release workflow verifies that every initial release tag points at the exact current `main` commit before publication; do not create that tag from a side branch or an older commit. Do not retag immutable `v4.0.0`, `v4.0.1`, `v4.0.2`, or `v4.0.3`.
|
package/SBOM.cdx.json
CHANGED
|
@@ -6,15 +6,15 @@
|
|
|
6
6
|
"metadata": {
|
|
7
7
|
"component": {
|
|
8
8
|
"type": "library",
|
|
9
|
-
"bom-ref": "pkg:npm/unified-ble-manager@4.0.
|
|
9
|
+
"bom-ref": "pkg:npm/unified-ble-manager@4.0.7",
|
|
10
10
|
"name": "unified-ble-manager",
|
|
11
|
-
"version": "4.0.
|
|
11
|
+
"version": "4.0.7",
|
|
12
12
|
"licenses": [
|
|
13
13
|
{
|
|
14
14
|
"expression": "Apache-2.0"
|
|
15
15
|
}
|
|
16
16
|
],
|
|
17
|
-
"purl": "pkg:npm/unified-ble-manager@4.0.
|
|
17
|
+
"purl": "pkg:npm/unified-ble-manager@4.0.7"
|
|
18
18
|
},
|
|
19
19
|
"properties": [
|
|
20
20
|
{
|
|
@@ -560,7 +560,7 @@
|
|
|
560
560
|
"dependsOn": []
|
|
561
561
|
},
|
|
562
562
|
{
|
|
563
|
-
"ref": "pkg:npm/unified-ble-manager@4.0.
|
|
563
|
+
"ref": "pkg:npm/unified-ble-manager@4.0.7",
|
|
564
564
|
"dependsOn": [
|
|
565
565
|
"pkg:npm/%40babel/runtime@7.29.7",
|
|
566
566
|
"pkg:npm/%40tauri-apps/api@2.11.1",
|
package/docs/BONDING.md
CHANGED
|
@@ -49,7 +49,7 @@ On BlueZ, `pair()` calls `org.bluez.Device1.Pair` and `unpair()` calls
|
|
|
49
49
|
`org.bluez.Adapter1.RemoveDevice`; the library registers a just-works
|
|
50
50
|
(`NoInputNoOutput`) `org.bluez.Agent1` on its own bus so the system-mediated
|
|
51
51
|
ceremony can complete without an external agent. Just-works confirmation is
|
|
52
|
-
auto-accepted; passkey and PIN
|
|
52
|
+
auto-accepted; passkey and PIN _entry_ ceremonies are rejected, matching the
|
|
53
53
|
`NoInputNoOutput` capability. The agent is registered (not made the system
|
|
54
54
|
default) so it applies to pairings this client initiates. This dispatch and
|
|
55
55
|
agent policy are covered by unit tests, but their behavior against a live BlueZ
|
|
@@ -75,14 +75,38 @@ without the cancellation extension), the attempt rejects with
|
|
|
75
75
|
happen.
|
|
76
76
|
|
|
77
77
|
There is a second, narrower window: an abort or deadline that lands after the
|
|
78
|
-
bond has
|
|
78
|
+
bond has _already_ completed but before `pair()` has returned. On BlueZ this is
|
|
79
79
|
reported truthfully as `paired` (never `cancelled`), because the native pairing
|
|
80
80
|
call resolves only on a completed bond. On Android and WinRT the public outcome
|
|
81
81
|
is currently committed when the abort fires, before the native result is
|
|
82
82
|
observed, so this race can surface `cancelled` for a peer that did in fact
|
|
83
83
|
bond; the bond is still authoritative and visible through `watch()`/`state()`.
|
|
84
|
-
Aligning Android and WinRT with BlueZ's report-the-bond behavior is tracked
|
|
85
|
-
|
|
84
|
+
Aligning Android and WinRT with BlueZ's report-the-bond behavior is tracked in
|
|
85
|
+
[#157](https://github.com/sfourdrinier/unified-ble-manager/issues/157), which
|
|
86
|
+
records why it is a contract decision rather than a bug fix: learning the truth
|
|
87
|
+
means waiting for the radio, and waiting risks hanging the caller behind a
|
|
88
|
+
wedged daemon.
|
|
89
|
+
|
|
90
|
+
`cancelPairing()` no longer forms its own opinion about that race. It reports
|
|
91
|
+
what the cancellation _achieved_ by reading the pairing's own result, so the two
|
|
92
|
+
calls cannot contradict each other about one operation: `'paired'` when the bond
|
|
93
|
+
completed before the cancellation arrived, `'rejected'` (with the peer's reason)
|
|
94
|
+
when the peer refused, `'cancelled'` when the cancellation stopped it, and
|
|
95
|
+
`'not-pairing'` when there was nothing to stop. A pairing that _fails_ does not
|
|
96
|
+
get an invented outcome - `cancelPairing()` rejects with the same error the
|
|
97
|
+
pairing rejected with.
|
|
98
|
+
|
|
99
|
+
Two limits are deliberate rather than overlooked. `'not-pairing'` carries a
|
|
100
|
+
narrow race of its own: the pairing can settle between the lookup and the
|
|
101
|
+
caller's call, and that instant reports `'not-pairing'`. And `pair()`'s abort
|
|
102
|
+
path still reports `'cancelled'` without knowing whether the daemon bonded
|
|
103
|
+
anyway, because the alternative is worse: learning the truth means waiting for
|
|
104
|
+
the radio, and a wedged or unresponsive daemon would then hang the caller - a
|
|
105
|
+
hang the suite explicitly forbids (`cancels promptly while the native Pair call
|
|
106
|
+
remains pending`). Truth and promptness genuinely conflict here, and resolving
|
|
107
|
+
it needs a vocabulary that can say "cancellation requested, bond state not yet
|
|
108
|
+
known" rather than a longer wait. Until then, `state()` and `watch()` remain
|
|
109
|
+
authoritative for whether a bond exists.
|
|
86
110
|
|
|
87
111
|
Apple and Web keep generic
|
|
88
112
|
pairing/bonding unsupported where their public APIs do not provide a truthful
|
|
@@ -90,3 +114,81 @@ measurement; Web `forget()` remains origin-authorization revocation, not
|
|
|
90
114
|
`unpair`.
|
|
91
115
|
|
|
92
116
|
See [PLATFORMS.md](./PLATFORMS.md) for current evidence boundaries.
|
|
117
|
+
|
|
118
|
+
## Selecting the LE pairing generation (privileged, Linux/BlueZ)
|
|
119
|
+
|
|
120
|
+
Some peripherals accept **only** LE Legacy pairing and terminate the link on an
|
|
121
|
+
LE Secure Connections pairing request; others accept only SC. `PairOptions`
|
|
122
|
+
carries `secureConnections` (`'require' | 'prefer' | 'disallow'`, default
|
|
123
|
+
`'prefer'`) to say which you need.
|
|
124
|
+
|
|
125
|
+
`'prefer'` defers to the platform and is always available. The two **directed**
|
|
126
|
+
values, `'require'` and `'disallow'`, are the ones that need this section.
|
|
127
|
+
|
|
128
|
+
### Why this needs privilege at all
|
|
129
|
+
|
|
130
|
+
`org.bluez.Adapter1` (BlueZ 5.85) exposes no Secure Connections property, and
|
|
131
|
+
`org.bluez.Device1.Pair` takes no parameters — verified against a live daemon,
|
|
132
|
+
not inferred. The setting lives behind the kernel management socket's Set
|
|
133
|
+
Secure Connections command, which requires `CAP_NET_ADMIN`. There is no
|
|
134
|
+
unprivileged route.
|
|
135
|
+
|
|
136
|
+
**This package never acquires that privilege.** It does not open a management
|
|
137
|
+
socket, does not shell out to `btmgmt`, and does not assume it is already root.
|
|
138
|
+
A library that silently escalates hands an application capabilities its author
|
|
139
|
+
did not choose and cannot audit. Instead the host supplies the operation:
|
|
140
|
+
|
|
141
|
+
```ts
|
|
142
|
+
import { createBluezBleManager } from 'unified-ble-manager/node/bluez'
|
|
143
|
+
|
|
144
|
+
const manager = await createBluezBleManager({
|
|
145
|
+
pairingGeneration: {
|
|
146
|
+
async read(adapterId) {
|
|
147
|
+
// mgmt Read Controller Information -> 'legacy-only' | 'enabled' | 'required'
|
|
148
|
+
},
|
|
149
|
+
async set(adapterId, generation) {
|
|
150
|
+
// mgmt Set Secure Connections: 0x00 legacy-only, 0x01 enabled, 0x02 required
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
})
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Omit it and `'require'`/`'disallow'` keep failing closed with
|
|
157
|
+
`capability.unsupported`, which is the unchanged default posture. The
|
|
158
|
+
`security:pairing-generation` capability reports what your host actually
|
|
159
|
+
supplied, so a caller can tell "this build cannot" from "the peer refused".
|
|
160
|
+
|
|
161
|
+
### What you are agreeing to
|
|
162
|
+
|
|
163
|
+
Read these before implementing a controller. They are properties of the kernel
|
|
164
|
+
setting, not of this package, and they cannot be designed away:
|
|
165
|
+
|
|
166
|
+
- **It is adapter-wide, not per-pairing.** While held, _every_ pairing on that
|
|
167
|
+
controller uses the selected generation — including pairings this package did
|
|
168
|
+
not initiate.
|
|
169
|
+
- **It outlives the process.** The kernel keeps the value until something sets
|
|
170
|
+
it back. A crash between `set` and restore leaves the adapter changed.
|
|
171
|
+
- **It is restored after each pairing**, whether the pairing succeeded or
|
|
172
|
+
failed, and concurrent pairings on one adapter are serialised so they cannot
|
|
173
|
+
corrupt each other's restore value.
|
|
174
|
+
- **A controller that never settles wedges pairing on that adapter.** Neither
|
|
175
|
+
`read` nor `set` is given a timeout by this package, because the right bound
|
|
176
|
+
depends on your transport and is yours to choose. A controller that hangs
|
|
177
|
+
blocks every later directed pairing on that adapter, and the peer it was
|
|
178
|
+
pairing stays owned for the process lifetime. **Bound your own mgmt I/O.**
|
|
179
|
+
- **An undirected pairing running concurrently is not serialised.** Only
|
|
180
|
+
`'require'`/`'disallow'` take the adapter lock. A default (`'prefer'`)
|
|
181
|
+
pairing that overlaps a directed one on the same controller will use
|
|
182
|
+
whichever generation is held at that moment.
|
|
183
|
+
- **A failed restore never changes the pairing's outcome.** A bond that was
|
|
184
|
+
created is reported as created; the restore failure is reported separately.
|
|
185
|
+
Leaving a controller in LE Legacy is a security regression that must be seen —
|
|
186
|
+
but so is telling a caller they are not bonded when they are.
|
|
187
|
+
|
|
188
|
+
### Evidence
|
|
189
|
+
|
|
190
|
+
This path is covered by deterministic tests only. It has **not** been verified
|
|
191
|
+
against a physical peripheral, and nothing here should be read as physical-radio
|
|
192
|
+
proof. The `security:pairing-generation` capability reports `limited` when a controller
|
|
193
|
+
is supplied, never `supported`, and that label changes only when physical
|
|
194
|
+
evidence says so — not because the code looks finished.
|
package/docs/ELECTRON.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Main owns the radio. The renderer uses a versioned IPC client and never loads a native addon.
|
|
6
6
|
|
|
7
|
-
The current package is `4.0.
|
|
7
|
+
The current package is `4.0.7`. The release ships Node-API v8 prebuilds covering macOS and Windows `arm64`/`x64` for both Node and modern Electron.
|
|
8
8
|
|
|
9
9
|
`unified-ble-manager/electron/main` and
|
|
10
10
|
`unified-ble-manager/electron/renderer` are the only Electron entrypoints.
|
package/docs/EXPO_PLUGIN.md
CHANGED
|
@@ -7,7 +7,7 @@ start a radio, request runtime permissions during prebuild, or prove physical
|
|
|
7
7
|
radio/restoration reliability. Expo Go is not a supported BLE execution
|
|
8
8
|
environment because it cannot contain this native module.
|
|
9
9
|
|
|
10
|
-
Use the v2 plugin options in the published `4.0.
|
|
10
|
+
Use the v2 plugin options in the published `4.0.7` package. Those options match
|
|
11
11
|
the schema introduced at `4.0.0-rc.4`. Expo Go cannot load this native module.
|
|
12
12
|
|
|
13
13
|
## Installation and development build
|
|
@@ -15,7 +15,7 @@ the schema introduced at `4.0.0-rc.4`. Expo Go cannot load this native module.
|
|
|
15
15
|
Pin the package so a later `latest` bump does not change native plugin options
|
|
16
16
|
without a rebuild:
|
|
17
17
|
|
|
18
|
-
pnpm add unified-ble-manager@4.0.
|
|
18
|
+
pnpm add unified-ble-manager@4.0.7
|
|
19
19
|
pnpm add expo@^57.0.0 expo-dev-client
|
|
20
20
|
npx expo prebuild --clean
|
|
21
21
|
npx expo run:ios
|
package/docs/GAPS.4.0.md
CHANGED
|
@@ -14,7 +14,7 @@ This file tracks platform code, CI, package, lab, and live-radio evidence. It do
|
|
|
14
14
|
|
|
15
15
|
The clean-baseline contract, unified core, public manager, deterministic backend, TCK, native protocol, first-party backend implementations, host-isolated package exports, SDK/CLI, and legacy-absence gates exist in the 4.0 source. Passing deterministic, compile, ABI, or package tests are implementation proof; they do not become physical-radio support evidence unless a retained record proves the corresponding live scenario.
|
|
16
16
|
|
|
17
|
-
`unified-ble-manager@4.0.
|
|
17
|
+
`unified-ble-manager@4.0.7` is the published, immutable stable package/API. Immutable `4.0.0`, `4.0.1`, `4.0.2`, and `4.0.3` remain published history. Backend support labels remain
|
|
18
18
|
evidence-derived. This package does not rewrite the evidence inventory: a backend remains at the support level
|
|
19
19
|
justified by its records. The alpha train, including `v4.0.0-alpha.40`, remains historical implementation/release
|
|
20
20
|
evidence and must not be used to claim a higher current support label than it actually proved.
|
package/docs/GETTING_STARTED.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
This page gets you to a first scan, connect, read, notify, and teardown on React Native. Other hosts are linked at the bottom. The root import does not turn Bluetooth on.
|
|
6
6
|
|
|
7
|
-
The current package is `4.0.
|
|
7
|
+
The current package is `4.0.7`.
|
|
8
8
|
|
|
9
9
|
## Pick a host
|
|
10
10
|
|
|
@@ -27,7 +27,7 @@ The current package is `4.0.6`.
|
|
|
27
27
|
Pin the current package for a known native rebuild:
|
|
28
28
|
|
|
29
29
|
```sh
|
|
30
|
-
pnpm add unified-ble-manager@4.0.
|
|
30
|
+
pnpm add unified-ble-manager@4.0.7
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
Declare Android Bluetooth permissions and the BLE hardware feature yourself,
|
|
@@ -37,10 +37,10 @@ request runtime permissions on Android 12+, add
|
|
|
37
37
|
#### Expo / CNG v2
|
|
38
38
|
|
|
39
39
|
The Expo v2 schema and `unified-ble-manager/expo` factory are in the published
|
|
40
|
-
`4.0.
|
|
40
|
+
`4.0.7` package. Pin that exact version:
|
|
41
41
|
|
|
42
42
|
```sh
|
|
43
|
-
pnpm add unified-ble-manager@4.0.
|
|
43
|
+
pnpm add unified-ble-manager@4.0.7
|
|
44
44
|
```
|
|
45
45
|
|
|
46
46
|
The package does not run in Expo Go.
|
package/docs/NODE.md
CHANGED
|
@@ -10,7 +10,7 @@ The root import does not open an adapter. Pick one backend:
|
|
|
10
10
|
| `unified-ble-manager/node/winrt` | Windows |
|
|
11
11
|
| `unified-ble-manager/node/bluez` | Linux (needs `dbus-next@^0.10.2` in the app) |
|
|
12
12
|
|
|
13
|
-
The current package is `4.0.
|
|
13
|
+
The current package is `4.0.7`. The release ships Node-API v8 prebuilds for macOS and Windows on `arm64` and `x64`. A normal install should not compile native code. BlueZ talks D-Bus and has no addon.
|
|
14
14
|
|
|
15
15
|
## One-call factories
|
|
16
16
|
|
package/docs/PLATFORMS.md
CHANGED
|
@@ -8,7 +8,7 @@ This page is an evidence index, not a static compatibility matrix. An applicatio
|
|
|
8
8
|
|
|
9
9
|
## Package stability and backend support are separate
|
|
10
10
|
|
|
11
|
-
`unified-ble-manager@4.0.
|
|
11
|
+
`unified-ble-manager@4.0.7` is the published **stable package/API** for the 4.x contract; it is immutable. Backend support labels remain evidence-derived and independent of this SemVer. Immutable `4.0.0`, `4.0.1`, `4.0.2`, and `4.0.3` remain published history.
|
|
12
12
|
|
|
13
13
|
This package is the portable API/semantics freeze; it does **not** mean every first-party backend is
|
|
14
14
|
automatically Preview, Supported, or Reliability-qualified.
|
package/docs/WEB.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Use `unified-ble-manager/web` in a secure context (HTTPS or localhost) from a user gesture. There is no background scan and no process-level restoration.
|
|
6
6
|
|
|
7
|
-
The current package is `4.0.
|
|
7
|
+
The current package is `4.0.7`. The backend is Experimental until artifact-bound physical-hardware validation says otherwise. See [`PLATFORMS.md`](PLATFORMS.md).
|
|
8
8
|
|
|
9
9
|
## Create the manager
|
|
10
10
|
|
|
@@ -6,7 +6,7 @@ This page is generated by `scripts/docs/generate-platform-support.js` from valid
|
|
|
6
6
|
|
|
7
7
|
## Current package
|
|
8
8
|
|
|
9
|
-
`unified-ble-manager@4.0.
|
|
9
|
+
`unified-ble-manager@4.0.7`
|
|
10
10
|
|
|
11
11
|
No evidence record is bound to this exact package version and artifact. Consequently, this generated page makes no Preview, Live Preview, Supported, or Reliability-qualified platform claim for the current package.
|
|
12
12
|
|
|
@@ -51,6 +51,17 @@ const BUILT_IN_FEATURE_IDS = exports.BUILT_IN_FEATURE_IDS = Object.freeze({
|
|
|
51
51
|
securityCancelPairing: 'security:cancel-pairing',
|
|
52
52
|
securityUnpair: 'security:unpair',
|
|
53
53
|
securityCustomCeremony: 'security:custom-ceremony',
|
|
54
|
+
/**
|
|
55
|
+
* The backend can select the LE pairing generation for a pairing - `PairOptions
|
|
56
|
+
* .secureConnections` `'require'` (Secure Connections only) or `'disallow'` (LE
|
|
57
|
+
* Legacy only), for peripherals that accept exactly one of them.
|
|
58
|
+
*
|
|
59
|
+
* No radio exposes this unprivileged. Where a backend reports it supported, a
|
|
60
|
+
* host has supplied a privileged operation explicitly; where it does not, the
|
|
61
|
+
* two directed values fail closed rather than bonding at a generation the
|
|
62
|
+
* caller forbade.
|
|
63
|
+
*/
|
|
64
|
+
securityPairingGeneration: 'security:pairing-generation',
|
|
54
65
|
// GATT
|
|
55
66
|
gattDescriptors: 'gatt:descriptors',
|
|
56
67
|
gattIndications: 'gatt:indications',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_errors","require","_primitives","BUILT_IN_FEATURE_IDS","exports","Object","freeze","discoveryContinuousScan","discoverySystemChooser","discoveryAdvertisementWatch","scanPlatformOptions","peerResolveReference","peerAddressTargeting","peerKnown","peerSystemConnected","peerBonded","peerOriginAuthorized","peerRestored","connectionDirect","connectionWhenAvailable","connectionRssi","connectionEffectiveMtu","connectionRequestMtu","connectionPriority","connectionParameters","connectionPhy","connectionSubrate","securityState","securityPair","securityCancelPairing","securityUnpair","securityCustomCeremony","gattDescriptors","gattIndications","gattServiceChanged","maximumWriteLength","longWrite","reliableWrite","writeWithoutResponseReadiness","highThroughputAcquire","backgroundAppleRestoration","backgroundAndroidConnectedDeviceService","backgroundDesktopMaintainConnection","lifecyclePagePersistence","BUILT_IN_FEATURE_CATALOG","values","map","id","catalogVersion","requiredTckSuiteId","documentationAnchor","replace","createBackendOperationCapabilityRegistration","options","limitations","undefined","code","explanation","affectedGuarantee","limitation","selectedSchemaRange","versionRange","version","scenarioIds","requiredScenarioIds","implementation","invoke","contractError","operation","state","implementationOrigin","tck","suiteId","tckSuiteId","contractRange","evidence","receiptId","sourceDigest","evidenceLevel","implementationVersion","limits","availability","maximum","minimum","unit","validateCapabilityDescriptor","descriptor","includes","startsWith","endsWith","assertCapabilitySchemaRange","length","keys","assertCapabilityLimits","limitationsEqual","some","scenarioId","qualifiedEvidence","snapshotCapabilityDescriptor","snapshotCapabilitySchemaRange","snapshotLimitations","snapshotCapabilityLimits","snapshotCapabilityDescriptors","descriptors","backendGeneration","snapshots","ids","Set","size","complete","entry","has","push","unsupportedBuiltInDescriptor","schemaVersion","schemaRange","validateCapabilitySnapshot","snapshot","expectedBackendGeneration","requireCatalogComplete","add","validateFeatureRegistration","registration","createFeatureRegistry","registrations","snapshotFeatureRegistration","describeFeatureRegistration","describeFeatureRegistry","registry","left","right","every","index","bind","input","range","axis","Number","isSafeInteger","value","name","limit","entries","isFinite"],"sourceRoot":"../../../src","sources":["backend-contract/capabilities.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_errors","require","_primitives","BUILT_IN_FEATURE_IDS","exports","Object","freeze","discoveryContinuousScan","discoverySystemChooser","discoveryAdvertisementWatch","scanPlatformOptions","peerResolveReference","peerAddressTargeting","peerKnown","peerSystemConnected","peerBonded","peerOriginAuthorized","peerRestored","connectionDirect","connectionWhenAvailable","connectionRssi","connectionEffectiveMtu","connectionRequestMtu","connectionPriority","connectionParameters","connectionPhy","connectionSubrate","securityState","securityPair","securityCancelPairing","securityUnpair","securityCustomCeremony","securityPairingGeneration","gattDescriptors","gattIndications","gattServiceChanged","maximumWriteLength","longWrite","reliableWrite","writeWithoutResponseReadiness","highThroughputAcquire","backgroundAppleRestoration","backgroundAndroidConnectedDeviceService","backgroundDesktopMaintainConnection","lifecyclePagePersistence","BUILT_IN_FEATURE_CATALOG","values","map","id","catalogVersion","requiredTckSuiteId","documentationAnchor","replace","createBackendOperationCapabilityRegistration","options","limitations","undefined","code","explanation","affectedGuarantee","limitation","selectedSchemaRange","versionRange","version","scenarioIds","requiredScenarioIds","implementation","invoke","contractError","operation","state","implementationOrigin","tck","suiteId","tckSuiteId","contractRange","evidence","receiptId","sourceDigest","evidenceLevel","implementationVersion","limits","availability","maximum","minimum","unit","validateCapabilityDescriptor","descriptor","includes","startsWith","endsWith","assertCapabilitySchemaRange","length","keys","assertCapabilityLimits","limitationsEqual","some","scenarioId","qualifiedEvidence","snapshotCapabilityDescriptor","snapshotCapabilitySchemaRange","snapshotLimitations","snapshotCapabilityLimits","snapshotCapabilityDescriptors","descriptors","backendGeneration","snapshots","ids","Set","size","complete","entry","has","push","unsupportedBuiltInDescriptor","schemaVersion","schemaRange","validateCapabilitySnapshot","snapshot","expectedBackendGeneration","requireCatalogComplete","add","validateFeatureRegistration","registration","createFeatureRegistry","registrations","snapshotFeatureRegistration","describeFeatureRegistration","describeFeatureRegistry","registry","left","right","every","index","bind","input","range","axis","Number","isSafeInteger","value","name","limit","entries","isFinite"],"sourceRoot":"../../../src","sources":["backend-contract/capabilities.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,4 +3,58 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.cancelOutcomeForPairResult = cancelOutcomeForPairResult;
|
|
7
|
+
/**
|
|
8
|
+
* What a cancellation actually achieved, not what it requested.
|
|
9
|
+
*
|
|
10
|
+
* A cancellation can lose the race, and it can also arrive at something that
|
|
11
|
+
* was never going to bond. Each of those is a different fact and gets its own
|
|
12
|
+
* word, mirroring `SecurityPairResult` so that a word means the same thing in
|
|
13
|
+
* both types:
|
|
14
|
+
*
|
|
15
|
+
* - `'cancelled'` your cancellation stopped it
|
|
16
|
+
* - `'not-pairing'` there was nothing to stop
|
|
17
|
+
* - `'paired'` the bond completed before your cancellation arrived
|
|
18
|
+
* - `'rejected'` the peer refused it; nobody cancelled anything
|
|
19
|
+
*
|
|
20
|
+
* `'paired'` is deliberately not `'already-paired'`, which in `SecurityPairResult`
|
|
21
|
+
* means the peer was bonded BEFORE the call. A pairing that FAILS is not a
|
|
22
|
+
* fourth outcome: `cancelPairing()` rejects with the same error the pairing
|
|
23
|
+
* rejected with, because inventing a resolved outcome for a failure would be
|
|
24
|
+
* the same substitution this type exists to prevent.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* The cancellation outcome implied by the pairing's OWN result.
|
|
29
|
+
*
|
|
30
|
+
* Every backend answers `cancelPairing()` by asking the in-flight pairing what
|
|
31
|
+
* happened to it, rather than forming a second, independent opinion: two
|
|
32
|
+
* observations of one fact can disagree, and that disagreement is the defect -
|
|
33
|
+
* `pair()` reporting `paired` while `cancelPairing()` reported `cancelled` for
|
|
34
|
+
* the same operation. Reading the pairing's own answer makes them incapable of
|
|
35
|
+
* disagreeing, and keeps the four backends saying one thing.
|
|
36
|
+
*/
|
|
37
|
+
function cancelOutcomeForPairResult(result) {
|
|
38
|
+
switch (result.outcome) {
|
|
39
|
+
// One fact - a bond exists because of this operation - so one word. The
|
|
40
|
+
// re-pairing distinction stays on `pair()` for callers who need it.
|
|
41
|
+
case 'paired':
|
|
42
|
+
case 'already-paired':
|
|
43
|
+
case 'repaired':
|
|
44
|
+
return {
|
|
45
|
+
outcome: 'paired'
|
|
46
|
+
};
|
|
47
|
+
// The peer refused. Nobody cancelled anything, and saying otherwise would
|
|
48
|
+
// claim credit for stopping something that stopped itself.
|
|
49
|
+
case 'rejected':
|
|
50
|
+
return {
|
|
51
|
+
outcome: 'rejected',
|
|
52
|
+
reason: result.reason
|
|
53
|
+
};
|
|
54
|
+
case 'cancelled':
|
|
55
|
+
return {
|
|
56
|
+
outcome: 'cancelled'
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
6
60
|
//# sourceMappingURL=security.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["backend-contract/security.ts"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["cancelOutcomeForPairResult","result","outcome","reason"],"sourceRoot":"../../../src","sources":["backend-contract/security.ts"],"mappings":";;;;;;AA6FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,0BAA0BA,CAACC,MAA0B,EAA+B;EAClG,QAAQA,MAAM,CAACC,OAAO;IACpB;IACA;IACA,KAAK,QAAQ;IACb,KAAK,gBAAgB;IACrB,KAAK,UAAU;MACb,OAAO;QAAEA,OAAO,EAAE;MAAS,CAAC;IAC9B;IACA;IACA,KAAK,UAAU;MACb,OAAO;QAAEA,OAAO,EAAE,UAAU;QAAEC,MAAM,EAAEF,MAAM,CAACE;MAAO,CAAC;IACvD,KAAK,WAAW;MACd,OAAO;QAAED,OAAO,EAAE;MAAY,CAAC;EACnC;AACF","ignoreList":[]}
|
|
@@ -50,7 +50,8 @@ function createBluezBackendProvider(options) {
|
|
|
50
50
|
store,
|
|
51
51
|
adapter: descriptor,
|
|
52
52
|
now: options.now,
|
|
53
|
-
busKind: options.busKind
|
|
53
|
+
busKind: options.busKind,
|
|
54
|
+
pairingGeneration: options.pairingGeneration
|
|
54
55
|
});
|
|
55
56
|
} catch (error) {
|
|
56
57
|
return closeBoundaryAfterFailure(boundary, error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_errors","require","_implementationVersion","_primitives","_bluezBackend","_bluezDbusContract","_bluezObjectStore","BLUEZ_BACKEND_ID","exports","BLUEZ_PLATFORM_ID","BLUEZ_IMPLEMENTATION_VERSION","UNIFIED_BLE_IMPLEMENTATION_VERSION","bluezCompatibility","Object","freeze","backendContract","versionRange","version","capabilitySchema","eventSchema","traceFormat","createBluezBackendProvider","options","descriptor","providerId","hostKind","loadability","compatibility","listAdapters","withBluezProbe","store","adapterDescriptors","now","create","selection","boundary","boundaryFactory","open","busKind","BluezObjectStore","objectManager","adapters","selected","filter","adapter","String","adapterId","selectedAdapterId","length","contractError","undefined","BluezBackend","error","closeBoundaryAfterFailure","operation","result","primaryError","close","Error","cleanupError","AggregateError","objectsWithInterface","BLUEZ_ADAPTER_INTERFACE","map","path","powered","optionalBooleanProperty","opaqueId","displayName","optionalStringProperty","state","availability","authorization","power","backendGeneration","updatedAt","monotonicTimestamp","safeReason","bluezSafeReason","BLUEZ_NO_AUTHORIZATION_CONCEPT_REASON","adapterGeneration","limitations"],"sourceRoot":"../../../../src","sources":["backends/bluez/bluez-backend-provider.ts"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"names":["_errors","require","_implementationVersion","_primitives","_bluezBackend","_bluezDbusContract","_bluezObjectStore","BLUEZ_BACKEND_ID","exports","BLUEZ_PLATFORM_ID","BLUEZ_IMPLEMENTATION_VERSION","UNIFIED_BLE_IMPLEMENTATION_VERSION","bluezCompatibility","Object","freeze","backendContract","versionRange","version","capabilitySchema","eventSchema","traceFormat","createBluezBackendProvider","options","descriptor","providerId","hostKind","loadability","compatibility","listAdapters","withBluezProbe","store","adapterDescriptors","now","create","selection","boundary","boundaryFactory","open","busKind","BluezObjectStore","objectManager","adapters","selected","filter","adapter","String","adapterId","selectedAdapterId","length","contractError","undefined","BluezBackend","pairingGeneration","error","closeBoundaryAfterFailure","operation","result","primaryError","close","Error","cleanupError","AggregateError","objectsWithInterface","BLUEZ_ADAPTER_INTERFACE","map","path","powered","optionalBooleanProperty","opaqueId","displayName","optionalStringProperty","state","availability","authorization","power","backendGeneration","updatedAt","monotonicTimestamp","safeReason","bluezSafeReason","BLUEZ_NO_AUTHORIZATION_CONCEPT_REASON","adapterGeneration","limitations"],"sourceRoot":"../../../../src","sources":["backends/bluez/bluez-backend-provider.ts"],"mappings":"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","ignoreList":[]}
|