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.
Files changed (143) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/MIGRATION_4.0.md +1 -1
  3. package/README.md +1 -1
  4. package/RELEASE.md +32 -1
  5. package/SBOM.cdx.json +4 -4
  6. package/THIRD_PARTY_LICENSES.json +1 -1
  7. package/docs/BONDING.md +106 -4
  8. package/docs/ELECTRON.md +1 -1
  9. package/docs/EXPO_PLUGIN.md +2 -2
  10. package/docs/GAPS.4.0.md +1 -1
  11. package/docs/GETTING_STARTED.md +4 -4
  12. package/docs/NODE.md +1 -1
  13. package/docs/PLATFORMS.md +1 -1
  14. package/docs/WEB.md +1 -1
  15. package/docs/generated/PLATFORM_SUPPORT.md +1 -1
  16. package/lib/commonjs/backend-contract/capabilities.js +11 -0
  17. package/lib/commonjs/backend-contract/capabilities.js.map +1 -1
  18. package/lib/commonjs/backend-contract/security.js +54 -0
  19. package/lib/commonjs/backend-contract/security.js.map +1 -1
  20. package/lib/commonjs/backends/bluez/bluez-backend-provider.js +2 -1
  21. package/lib/commonjs/backends/bluez/bluez-backend-provider.js.map +1 -1
  22. package/lib/commonjs/backends/bluez/bluez-backend-runtime.js +1 -0
  23. package/lib/commonjs/backends/bluez/bluez-backend-runtime.js.map +1 -1
  24. package/lib/commonjs/backends/bluez/bluez-backend.js +31 -20
  25. package/lib/commonjs/backends/bluez/bluez-backend.js.map +1 -1
  26. package/lib/commonjs/backends/bluez/bluez-pairing-generation-capability.js +92 -0
  27. package/lib/commonjs/backends/bluez/bluez-pairing-generation-capability.js.map +1 -0
  28. package/lib/commonjs/backends/bluez/bluez-pairing-generation.js +193 -0
  29. package/lib/commonjs/backends/bluez/bluez-pairing-generation.js.map +1 -0
  30. package/lib/commonjs/backends/bluez/bluez-security.js +31 -9
  31. package/lib/commonjs/backends/bluez/bluez-security.js.map +1 -1
  32. package/lib/commonjs/backends/reactnative/react-native-android-security.js +21 -3
  33. package/lib/commonjs/backends/reactnative/react-native-android-security.js.map +1 -1
  34. package/lib/commonjs/backends/winrt/winrt-security.js +16 -10
  35. package/lib/commonjs/backends/winrt/winrt-security.js.map +1 -1
  36. package/lib/commonjs/implementation-version.js +1 -1
  37. package/lib/commonjs/node-bluez.js +5 -2
  38. package/lib/commonjs/node-bluez.js.map +1 -1
  39. package/lib/commonjs/public/security.js +13 -1
  40. package/lib/commonjs/public/security.js.map +1 -1
  41. package/lib/commonjs/testing/deterministic/deterministic-security.js +8 -3
  42. package/lib/commonjs/testing/deterministic/deterministic-security.js.map +1 -1
  43. package/lib/module/backend-contract/capabilities.js +11 -0
  44. package/lib/module/backend-contract/capabilities.js.map +1 -1
  45. package/lib/module/backend-contract/security.js +53 -1
  46. package/lib/module/backend-contract/security.js.map +1 -1
  47. package/lib/module/backends/bluez/bluez-backend-provider.js +2 -1
  48. package/lib/module/backends/bluez/bluez-backend-provider.js.map +1 -1
  49. package/lib/module/backends/bluez/bluez-backend-runtime.js +1 -0
  50. package/lib/module/backends/bluez/bluez-backend-runtime.js.map +1 -1
  51. package/lib/module/backends/bluez/bluez-backend.js +31 -20
  52. package/lib/module/backends/bluez/bluez-backend.js.map +1 -1
  53. package/lib/module/backends/bluez/bluez-pairing-generation-capability.js +87 -0
  54. package/lib/module/backends/bluez/bluez-pairing-generation-capability.js.map +1 -0
  55. package/lib/module/backends/bluez/bluez-pairing-generation.js +188 -0
  56. package/lib/module/backends/bluez/bluez-pairing-generation.js.map +1 -0
  57. package/lib/module/backends/bluez/bluez-security.js +31 -9
  58. package/lib/module/backends/bluez/bluez-security.js.map +1 -1
  59. package/lib/module/backends/reactnative/react-native-android-security.js +21 -3
  60. package/lib/module/backends/reactnative/react-native-android-security.js.map +1 -1
  61. package/lib/module/backends/winrt/winrt-security.js +16 -10
  62. package/lib/module/backends/winrt/winrt-security.js.map +1 -1
  63. package/lib/module/implementation-version.js +1 -1
  64. package/lib/module/node-bluez.js +5 -2
  65. package/lib/module/node-bluez.js.map +1 -1
  66. package/lib/module/public/security.js +13 -1
  67. package/lib/module/public/security.js.map +1 -1
  68. package/lib/module/testing/deterministic/deterministic-security.js +8 -3
  69. package/lib/module/testing/deterministic/deterministic-security.js.map +1 -1
  70. package/lib/typescript/commonjs/src/backend-contract/capabilities.d.ts +11 -0
  71. package/lib/typescript/commonjs/src/backend-contract/capabilities.d.ts.map +1 -1
  72. package/lib/typescript/commonjs/src/backend-contract/security.d.ts +38 -1
  73. package/lib/typescript/commonjs/src/backend-contract/security.d.ts.map +1 -1
  74. package/lib/typescript/commonjs/src/backends/bluez/bluez-backend-provider.d.ts +13 -1
  75. package/lib/typescript/commonjs/src/backends/bluez/bluez-backend-provider.d.ts.map +1 -1
  76. package/lib/typescript/commonjs/src/backends/bluez/bluez-backend-runtime.d.ts +8 -0
  77. package/lib/typescript/commonjs/src/backends/bluez/bluez-backend-runtime.d.ts.map +1 -1
  78. package/lib/typescript/commonjs/src/backends/bluez/bluez-backend.d.ts +5 -1
  79. package/lib/typescript/commonjs/src/backends/bluez/bluez-backend.d.ts.map +1 -1
  80. package/lib/typescript/commonjs/src/backends/bluez/bluez-pairing-generation-capability.d.ts +16 -0
  81. package/lib/typescript/commonjs/src/backends/bluez/bluez-pairing-generation-capability.d.ts.map +1 -0
  82. package/lib/typescript/commonjs/src/backends/bluez/bluez-pairing-generation.d.ts +41 -0
  83. package/lib/typescript/commonjs/src/backends/bluez/bluez-pairing-generation.d.ts.map +1 -0
  84. package/lib/typescript/commonjs/src/backends/bluez/bluez-security.d.ts.map +1 -1
  85. package/lib/typescript/commonjs/src/backends/corebluetooth/corebluetooth-identity.d.ts +1 -1
  86. package/lib/typescript/commonjs/src/backends/reactnative/react-native-android-provider.d.ts +1 -1
  87. package/lib/typescript/commonjs/src/backends/reactnative/react-native-android-security.d.ts +5 -0
  88. package/lib/typescript/commonjs/src/backends/reactnative/react-native-android-security.d.ts.map +1 -1
  89. package/lib/typescript/commonjs/src/backends/reactnative/react-native-apple-provider.d.ts +1 -1
  90. package/lib/typescript/commonjs/src/backends/winrt/winrt-provider.d.ts +1 -1
  91. package/lib/typescript/commonjs/src/backends/winrt/winrt-security.d.ts.map +1 -1
  92. package/lib/typescript/commonjs/src/implementation-version.d.ts +1 -1
  93. package/lib/typescript/commonjs/src/node-bluez.d.ts +14 -0
  94. package/lib/typescript/commonjs/src/node-bluez.d.ts.map +1 -1
  95. package/lib/typescript/commonjs/src/testing/deterministic/deterministic-security.d.ts.map +1 -1
  96. package/lib/typescript/module/src/backend-contract/capabilities.d.ts +11 -0
  97. package/lib/typescript/module/src/backend-contract/capabilities.d.ts.map +1 -1
  98. package/lib/typescript/module/src/backend-contract/security.d.ts +38 -1
  99. package/lib/typescript/module/src/backend-contract/security.d.ts.map +1 -1
  100. package/lib/typescript/module/src/backends/bluez/bluez-backend-provider.d.ts +13 -1
  101. package/lib/typescript/module/src/backends/bluez/bluez-backend-provider.d.ts.map +1 -1
  102. package/lib/typescript/module/src/backends/bluez/bluez-backend-runtime.d.ts +8 -0
  103. package/lib/typescript/module/src/backends/bluez/bluez-backend-runtime.d.ts.map +1 -1
  104. package/lib/typescript/module/src/backends/bluez/bluez-backend.d.ts +5 -1
  105. package/lib/typescript/module/src/backends/bluez/bluez-backend.d.ts.map +1 -1
  106. package/lib/typescript/module/src/backends/bluez/bluez-pairing-generation-capability.d.ts +16 -0
  107. package/lib/typescript/module/src/backends/bluez/bluez-pairing-generation-capability.d.ts.map +1 -0
  108. package/lib/typescript/module/src/backends/bluez/bluez-pairing-generation.d.ts +41 -0
  109. package/lib/typescript/module/src/backends/bluez/bluez-pairing-generation.d.ts.map +1 -0
  110. package/lib/typescript/module/src/backends/bluez/bluez-security.d.ts.map +1 -1
  111. package/lib/typescript/module/src/backends/corebluetooth/corebluetooth-identity.d.ts +1 -1
  112. package/lib/typescript/module/src/backends/reactnative/react-native-android-provider.d.ts +1 -1
  113. package/lib/typescript/module/src/backends/reactnative/react-native-android-security.d.ts +5 -0
  114. package/lib/typescript/module/src/backends/reactnative/react-native-android-security.d.ts.map +1 -1
  115. package/lib/typescript/module/src/backends/reactnative/react-native-apple-provider.d.ts +1 -1
  116. package/lib/typescript/module/src/backends/winrt/winrt-provider.d.ts +1 -1
  117. package/lib/typescript/module/src/backends/winrt/winrt-security.d.ts.map +1 -1
  118. package/lib/typescript/module/src/implementation-version.d.ts +1 -1
  119. package/lib/typescript/module/src/node-bluez.d.ts +14 -0
  120. package/lib/typescript/module/src/node-bluez.d.ts.map +1 -1
  121. package/lib/typescript/module/src/testing/deterministic/deterministic-security.d.ts.map +1 -1
  122. package/native/PREBUILDS.json +5 -5
  123. package/native/electron/corebluetooth/prebuilds/darwin-arm64/unified_ble_corebluetooth.node +0 -0
  124. package/native/electron/corebluetooth/prebuilds/darwin-x64/unified_ble_corebluetooth.node +0 -0
  125. package/native/electron/winrt/prebuilds/win32-arm64/unified_ble_winrt.node +0 -0
  126. package/native/electron/winrt/prebuilds/win32-x64/unified_ble_winrt.node +0 -0
  127. package/native/tauri/src/btleplug_dispatcher.rs +171 -16
  128. package/native/tauri/src/capabilities.rs +2 -1
  129. package/package.json +1 -1
  130. package/src/backend-contract/capabilities.ts +11 -0
  131. package/src/backend-contract/security.ts +51 -1
  132. package/src/backends/bluez/bluez-backend-provider.ts +14 -1
  133. package/src/backends/bluez/bluez-backend-runtime.ts +9 -0
  134. package/src/backends/bluez/bluez-backend.ts +45 -27
  135. package/src/backends/bluez/bluez-pairing-generation-capability.ts +100 -0
  136. package/src/backends/bluez/bluez-pairing-generation.ts +220 -0
  137. package/src/backends/bluez/bluez-security.ts +87 -45
  138. package/src/backends/reactnative/react-native-android-security.ts +19 -1
  139. package/src/backends/winrt/winrt-security.ts +14 -3
  140. package/src/implementation-version.ts +1 -1
  141. package/src/node-bluez.ts +21 -3
  142. package/src/public/security.ts +10 -1
  143. 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.6`. 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.
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.6` 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).
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.5` are immutable. `4.0.6` is the current train head.
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.6",
9
+ "bom-ref": "pkg:npm/unified-ble-manager@4.0.7",
10
10
  "name": "unified-ble-manager",
11
- "version": "4.0.6",
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.6"
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.6",
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",
@@ -4,7 +4,7 @@
4
4
  "schemaVersion": "1.0.0",
5
5
  "package": {
6
6
  "name": "unified-ble-manager",
7
- "version": "4.0.6"
7
+ "version": "4.0.7"
8
8
  },
9
9
  "source": {
10
10
  "method": "pnpm-lock production graph with installed-manifest license audit",
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 *entry* ceremonies are rejected, matching the
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 *already* completed but before `pair()` has returned. On BlueZ this is
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
- separately.
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.6`. The release ships Node-API v8 prebuilds covering macOS and Windows `arm64`/`x64` for both Node and modern Electron.
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.
@@ -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.6` package. Those options match
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.6
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.6` 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
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.
@@ -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.6`.
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.6
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.6` package. Pin that exact version:
40
+ `4.0.7` package. Pin that exact version:
41
41
 
42
42
  ```sh
43
- pnpm add unified-ble-manager@4.0.6
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.6`. 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.
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.6` 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.
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.6`. The backend is Experimental until artifact-bound physical-hardware validation says otherwise. See [`PLATFORMS.md`](PLATFORMS.md).
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.6`
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":";;;;;;;;;;;;;;AAEA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAHA;;AAKA;AACO,MAAME,oBAAoB,GAAAC,OAAA,CAAAD,oBAAA,GAAGE,MAAM,CAACC,MAAM,CAAC;EAChD;EACAC,uBAAuB,EAAE,2BAA2B;EACpDC,sBAAsB,EAAE,0BAA0B;EAClDC,2BAA2B,EAAE,+BAA+B;EAC5DC,mBAAmB,EAAE,uBAAuB;EAC5CC,oBAAoB,EAAE,wBAAwB;EAC9C;AACF;AACA;AACA;AACA;EACEC,oBAAoB,EAAE,wBAAwB;EAC9CC,SAAS,EAAE,YAAY;EACvBC,mBAAmB,EAAE,uBAAuB;EAC5CC,UAAU,EAAE,aAAa;EACzBC,oBAAoB,EAAE,wBAAwB;EAC9CC,YAAY,EAAE,eAAe;EAC7B;EACAC,gBAAgB,EAAE,mBAAmB;EACrCC,uBAAuB,EAAE,2BAA2B;EACpDC,cAAc,EAAE,iBAAiB;EACjCC,sBAAsB,EAAE,0BAA0B;EAClDC,oBAAoB,EAAE,wBAAwB;EAC9CC,kBAAkB,EAAE,qBAAqB;EACzCC,oBAAoB,EAAE,uBAAuB;EAC7CC,aAAa,EAAE,gBAAgB;EAC/BC,iBAAiB,EAAE,oBAAoB;EACvC;EACAC,aAAa,EAAE,gBAAgB;EAC/BC,YAAY,EAAE,eAAe;EAC7BC,qBAAqB,EAAE,yBAAyB;EAChDC,cAAc,EAAE,iBAAiB;EACjCC,sBAAsB,EAAE,0BAA0B;EAClD;EACAC,eAAe,EAAE,kBAAkB;EACnCC,eAAe,EAAE,kBAAkB;EACnCC,kBAAkB,EAAE,sBAAsB;EAC1CC,kBAAkB,EAAE,2BAA2B;EAC/CC,SAAS,EAAE,iBAAiB;EAC5BC,aAAa,EAAE,qBAAqB;EACpCC,6BAA6B,EAAE,uCAAuC;EACtEC,qBAAqB,EAAE,8BAA8B;EACrD;EACAC,0BAA0B,EAAE,8BAA8B;EAC1DC,uCAAuC,EAAE,6CAA6C;EACtFC,mCAAmC,EAAE,wCAAwC;EAC7EC,wBAAwB,EAAE;AAC5B,CAAC,CAAC;AAUF;AACO,MAAMC,wBAA+D,GAAAxC,OAAA,CAAAwC,wBAAA,GAAGvC,MAAM,CAACC,MAAM,CAC1FD,MAAM,CAACwC,MAAM,CAAC1C,oBAAoB,CAAC,CAAC2C,GAAG,CAACC,EAAE,IACxC1C,MAAM,CAACC,MAAM,CAAC;EACZyC,EAAE;EACFC,cAAc,EAAE,CAAU;EAC1BC,kBAAkB,EAAE,uBAAgC;EACpDC,mBAAmB,EAAE,gBAAgBH,EAAE,CAACI,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;AAC3D,CAAC,CACH,CACF,CAAC;;AAED;;AAOA;;AASA;;AAMA;;AAcA;;AAsBA;;AAMA;AACA;AACA;AACA;;AAuBA;;AAoCA;AACO,SAASC,4CAA4CA,CAC1DC,OAA0C,EACA;EAC1C,MAAMC,WAAW,GAAGjD,MAAM,CAACC,MAAM,CAC/B+C,OAAO,CAACC,WAAW,KAAKC,SAAS,GAC7B,CACElD,MAAM,CAACC,MAAM,CAAC;IACZkD,IAAI,EAAE,kCAAkC;IACxCC,WAAW,EACT,2GAA2G;IAC7GC,iBAAiB,EAAE;EACrB,CAAC,CAAC,CACH,GACDL,OAAO,CAACC,WAAW,CAACR,GAAG,CAACa,UAAU,IAAItD,MAAM,CAACC,MAAM,CAAC;IAAE,GAAGqD;EAAW,CAAC,CAAC,CAC5E,CAAC;EACD,MAAMC,mBAAmB,GAAG,IAAAC,wBAAY,EAAC,IAAAC,mBAAO,EAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,IAAAA,mBAAO,EAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;EAC1G,MAAMC,WAAW,GAAG1D,MAAM,CAACC,MAAM,CAAC,CAAC,GAAG+C,OAAO,CAACW,mBAAmB,CAAC,CAAC;EACnE,MAAMC,cAA6E,GAAG5D,MAAM,CAACC,MAAM,CAAC;IAClG,MAAM4D,MAAMA,CAAA,EAAgC;MAC1C,MAAM,IAAAC,qBAAa,EACjB,yBAAyB,EACzB,YAAY,EACZd,OAAO,CAACe,SAAS,IAAI,6CACvB,CAAC;IACH;EACF,CAAC,CAAC;EACF,OAAO/D,MAAM,CAACC,MAAM,CAAC;IACnByC,EAAE,EAAEM,OAAO,CAACN,EAAE,IAAI5C,oBAAoB,CAACe,gBAAgB;IACvDmD,KAAK,EAAE,SAAkB;IACzBT,mBAAmB;IACnBU,oBAAoB,EAAE,gBAAyB;IAC/CL,cAAc;IACdM,GAAG,EAAElE,MAAM,CAACC,MAAM,CAAC;MACjBkE,OAAO,EAAEnB,OAAO,CAACoB,UAAU;MAC3BT,mBAAmB,EAAED,WAAW;MAChCW,aAAa,EAAEd;IACjB,CAAC,CAAC;IACFe,QAAQ,EAAEtE,MAAM,CAACC,MAAM,CAAC;MACtBsE,SAAS,EAAE,GAAGvB,OAAO,CAACwB,YAAY,gBAAgB;MAClDC,aAAa,EAAE,eAAwB;MACvCC,qBAAqB,EAAE1B,OAAO,CAAC0B,qBAAqB;MACpDF,YAAY,EAAExB,OAAO,CAACwB,YAAY;MAClCd,WAAW;MACXT;IACF,CAAC,CAAC;IACFA,WAAW;IACX0B,MAAM,EAAE3E,MAAM,CAACC,MAAM,CAAC;MAAE2E,YAAY,EAAE5E,MAAM,CAACC,MAAM,CAAC;QAAE4E,OAAO,EAAE,CAAC;QAAEC,OAAO,EAAE,IAAI;QAAEC,IAAI,EAAE;MAAU,CAAC;IAAE,CAAC;EACvG,CAAC,CAAC;AACJ;;AAEA;AACO,SAASC,4BAA4BA,CAACC,UAAgC,EAAwB;EACnG,MAAMlB,SAAS,GAAG,8BAA8B;EAChD,IAAI,CAACkB,UAAU,CAACvC,EAAE,CAACwC,QAAQ,CAAC,GAAG,CAAC,IAAID,UAAU,CAACvC,EAAE,CAACyC,UAAU,CAAC,GAAG,CAAC,IAAIF,UAAU,CAACvC,EAAE,CAAC0C,QAAQ,CAAC,GAAG,CAAC,EAAE;IAChG,MAAM,IAAAtB,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAEC,SAAS,CAAC;EACpE;EACAsB,2BAA2B,CAACJ,UAAU,CAAC1B,mBAAmB,EAAE,GAAGQ,SAAS,wBAAwB,CAAC;EACjG,IACEkB,UAAU,CAACf,GAAG,CAACC,OAAO,CAACmB,MAAM,KAAK,CAAC,IACnCL,UAAU,CAACf,GAAG,CAACP,mBAAmB,CAAC2B,MAAM,KAAK,CAAC,IAC/CL,UAAU,CAACX,QAAQ,CAACC,SAAS,CAACe,MAAM,KAAK,CAAC,IAC1CL,UAAU,CAACX,QAAQ,CAACE,YAAY,CAACc,MAAM,KAAK,CAAC,IAC7CL,UAAU,CAACX,QAAQ,CAACZ,WAAW,CAAC4B,MAAM,KAAK,CAAC,EAC5C;IACA,MAAM,IAAAxB,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAEC,SAAS,CAAC;EACpE;EACAsB,2BAA2B,CAACJ,UAAU,CAACf,GAAG,CAACG,aAAa,EAAE,GAAGN,SAAS,iBAAiB,CAAC;EACxF,IAAI/D,MAAM,CAACuF,IAAI,CAACN,UAAU,CAACN,MAAM,CAAC,CAACW,MAAM,KAAK,CAAC,EAAE;IAC/C,MAAM,IAAAxB,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAEC,SAAS,CAAC;EACpE;EACAyB,sBAAsB,CAACP,UAAU,CAACN,MAAM,CAAC;EACzC,IAAIM,UAAU,CAACjB,KAAK,KAAK,SAAS,IAAIiB,UAAU,CAAChC,WAAW,CAACqC,MAAM,KAAK,CAAC,EAAE;IACzE,MAAM,IAAAxB,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAEC,SAAS,CAAC;EACpE;EACA,IACE,CAACkB,UAAU,CAACjB,KAAK,KAAK,aAAa,IAAIiB,UAAU,CAACjB,KAAK,KAAK,aAAa,KACzEiB,UAAU,CAAChC,WAAW,CAACqC,MAAM,KAAK,CAAC,EACnC;IACA,MAAM,IAAAxB,qBAAa,EACjBmB,UAAU,CAACjB,KAAK,KAAK,aAAa,GAAG,wBAAwB,GAAG,wBAAwB,EACxF,YAAY,EACZD,SACF,CAAC;EACH;EACA,KAAK,MAAMT,UAAU,IAAI,CAAC,GAAG2B,UAAU,CAAChC,WAAW,EAAE,GAAGgC,UAAU,CAACX,QAAQ,CAACrB,WAAW,CAAC,EAAE;IACxF,IACEK,UAAU,CAACH,IAAI,CAACmC,MAAM,KAAK,CAAC,IAC5BhC,UAAU,CAACF,WAAW,CAACkC,MAAM,KAAK,CAAC,IACnChC,UAAU,CAACD,iBAAiB,CAACiC,MAAM,KAAK,CAAC,EACzC;MACA,MAAM,IAAAxB,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,GAAGC,SAAS,cAAc,CAAC;IACrF;EACF;EACA,IAAI,CAAC0B,gBAAgB,CAACR,UAAU,CAAChC,WAAW,EAAEgC,UAAU,CAACX,QAAQ,CAACrB,WAAW,CAAC,EAAE;IAC9E,MAAM,IAAAa,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,GAAGC,SAAS,uBAAuB,CAAC;EAC9F;EACA,IAAIkB,UAAU,CAACf,GAAG,CAACP,mBAAmB,CAAC+B,IAAI,CAACC,UAAU,IAAI,CAACV,UAAU,CAACX,QAAQ,CAACZ,WAAW,CAACwB,QAAQ,CAACS,UAAU,CAAC,CAAC,EAAE;IAChH,MAAM,IAAA7B,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,GAAGC,SAAS,qBAAqB,CAAC;EAC5F;EACA,MAAM6B,iBAAiB,GACrBX,UAAU,CAACX,QAAQ,CAACG,aAAa,KAAK,WAAW,IAAIQ,UAAU,CAACX,QAAQ,CAACG,aAAa,KAAK,uBAAuB;EACpH,IAAIQ,UAAU,CAACjB,KAAK,KAAK,WAAW,KAAK,CAAC4B,iBAAiB,IAAIX,UAAU,CAAChC,WAAW,CAACqC,MAAM,KAAK,CAAC,CAAC,EAAE;IACnG,MAAM,IAAAxB,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,GAAGC,SAAS,qBAAqB,CAAC;EAC5F;EACA,IAAIkB,UAAU,CAACjB,KAAK,KAAK,SAAS,IAAIiB,UAAU,CAACX,QAAQ,CAACG,aAAa,KAAK,SAAS,EAAE;IACrF,MAAM,IAAAX,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,GAAGC,SAAS,mBAAmB,CAAC;EAC1F;EACA,IACE,CAACkB,UAAU,CAACjB,KAAK,KAAK,aAAa,IAAIiB,UAAU,CAACjB,KAAK,KAAK,aAAa,KACzEiB,UAAU,CAACX,QAAQ,CAACG,aAAa,KAAK,SAAS,EAC/C;IACA,MAAM,IAAAX,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,GAAGC,SAAS,mBAAmB,CAAC;EAC1F;EACA,OAAOkB,UAAU;AACnB;;AAEA;AACO,SAASY,4BAA4BA,CAACZ,UAAgC,EAAwB;EACnGD,4BAA4B,CAACC,UAAU,CAAC;EACxC,OAAOjF,MAAM,CAACC,MAAM,CAAC;IACnByC,EAAE,EAAEuC,UAAU,CAACvC,EAAE;IACjBsB,KAAK,EAAEiB,UAAU,CAACjB,KAAK;IACvBT,mBAAmB,EAAEuC,6BAA6B,CAACb,UAAU,CAAC1B,mBAAmB,CAAC;IAClFU,oBAAoB,EAAEgB,UAAU,CAAChB,oBAAoB;IACrDC,GAAG,EAAElE,MAAM,CAACC,MAAM,CAAC;MACjBkE,OAAO,EAAEc,UAAU,CAACf,GAAG,CAACC,OAAO;MAC/BR,mBAAmB,EAAE3D,MAAM,CAACC,MAAM,CAAC,CAAC,GAAGgF,UAAU,CAACf,GAAG,CAACP,mBAAmB,CAAC,CAAC;MAC3EU,aAAa,EAAEyB,6BAA6B,CAACb,UAAU,CAACf,GAAG,CAACG,aAAa;IAC3E,CAAC,CAAC;IACFC,QAAQ,EAAEtE,MAAM,CAACC,MAAM,CAAC;MACtBsE,SAAS,EAAEU,UAAU,CAACX,QAAQ,CAACC,SAAS;MACxCE,aAAa,EAAEQ,UAAU,CAACX,QAAQ,CAACG,aAAa;MAChDC,qBAAqB,EAAEO,UAAU,CAACX,QAAQ,CAACI,qBAAqB;MAChEF,YAAY,EAAES,UAAU,CAACX,QAAQ,CAACE,YAAY;MAC9Cd,WAAW,EAAE1D,MAAM,CAACC,MAAM,CAAC,CAAC,GAAGgF,UAAU,CAACX,QAAQ,CAACZ,WAAW,CAAC,CAAC;MAChET,WAAW,EAAE8C,mBAAmB,CAACd,UAAU,CAACX,QAAQ,CAACrB,WAAW;IAClE,CAAC,CAAC;IACFA,WAAW,EAAE8C,mBAAmB,CAACd,UAAU,CAAChC,WAAW,CAAC;IACxD0B,MAAM,EAAEqB,wBAAwB,CAACf,UAAU,CAACN,MAAM;EACpD,CAAC,CAAC;AACJ;AAEO,SAASsB,6BAA6BA,CAC3CC,WAA4C,EAC5CC,iBAAyB,EACL;EACpB,MAAMC,SAAS,GAAGF,WAAW,CAACzD,GAAG,CAACoD,4BAA4B,CAAC;EAC/D,MAAMQ,GAAG,GAAG,IAAIC,GAAG,CAACF,SAAS,CAAC3D,GAAG,CAACwC,UAAU,IAAIA,UAAU,CAACvC,EAAE,CAAC,CAAC;EAC/D,IAAI2D,GAAG,CAACE,IAAI,KAAKH,SAAS,CAACd,MAAM,IAAIa,iBAAiB,CAACb,MAAM,KAAK,CAAC,EAAE;IACnE,MAAM,IAAAxB,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,+BAA+B,CAAC;EAC1F;EACA,MAAM0C,QAAQ,GAAG,CAAC,GAAGJ,SAAS,CAAC;EAC/B,KAAK,MAAMK,KAAK,IAAIlE,wBAAwB,EAAE;IAC5C,IAAI8D,GAAG,CAACK,GAAG,CAACD,KAAK,CAAC/D,EAAE,CAAC,EAAE;IACvB8D,QAAQ,CAACG,IAAI,CAACC,4BAA4B,CAACH,KAAK,CAAC/D,EAAE,EAAE+D,KAAK,CAAC7D,kBAAkB,CAAC,CAAC;EACjF;EACA,OAAO5C,MAAM,CAACC,MAAM,CAAC;IACnB4G,aAAa,EAAE,CAAC;IAChBV,iBAAiB;IACjBD,WAAW,EAAElG,MAAM,CAACC,MAAM,CAACuG,QAAQ;EACrC,CAAC,CAAC;AACJ;AAEA,SAASI,4BAA4BA,CAAClE,EAAoB,EAAEyB,OAAe,EAAwB;EACjG,MAAM2C,WAAW,GAAG,IAAAtD,wBAAY,EAAC,IAAAC,mBAAO,EAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,IAAAA,mBAAO,EAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;EAClG,MAAMkC,UAAU,GAAG,8CAA8C;EACjE,MAAMrC,UAAU,GAAGtD,MAAM,CAACC,MAAM,CAAC;IAC/BkD,IAAI,EAAE,iBAAiB;IACvBC,WAAW,EAAE,yDAAyD;IACtEC,iBAAiB,EAAE;EACrB,CAAC,CAAC;EACF,OAAOrD,MAAM,CAACC,MAAM,CAAC;IACnByC,EAAE;IACFsB,KAAK,EAAE,aAAa;IACpBT,mBAAmB,EAAEuD,WAAW;IAChC7C,oBAAoB,EAAE,gBAAgB;IACtCC,GAAG,EAAElE,MAAM,CAACC,MAAM,CAAC;MACjBkE,OAAO;MACPR,mBAAmB,EAAE3D,MAAM,CAACC,MAAM,CAAC,CAAC0F,UAAU,CAAC,CAAC;MAChDtB,aAAa,EAAEyC;IACjB,CAAC,CAAC;IACFxC,QAAQ,EAAEtE,MAAM,CAACC,MAAM,CAAC;MACtBsE,SAAS,EAAE,sBAAsB7B,EAAE,EAAE;MACrC+B,aAAa,EAAE,SAAS;MACxBC,qBAAqB,EAAE,SAAS;MAChCF,YAAY,EAAE,kCAAkC;MAChDd,WAAW,EAAE1D,MAAM,CAACC,MAAM,CAAC,CAAC0F,UAAU,CAAC,CAAC;MACxC1C,WAAW,EAAEjD,MAAM,CAACC,MAAM,CAAC,CAACqD,UAAU,CAAC;IACzC,CAAC,CAAC;IACFL,WAAW,EAAEjD,MAAM,CAACC,MAAM,CAAC,CAACqD,UAAU,CAAC,CAAC;IACxCqB,MAAM,EAAE3E,MAAM,CAACC,MAAM,CAAC;MAAE2E,YAAY,EAAE5E,MAAM,CAACC,MAAM,CAAC;QAAE4E,OAAO,EAAE,CAAC;QAAEC,OAAO,EAAE,IAAI;QAAEC,IAAI,EAAE;MAAU,CAAC;IAAE,CAAC;EACvG,CAAC,CAAC;AACJ;AAEO,SAASgC,0BAA0BA,CACxCC,QAA4B,EAC5BC,yBAAiC,EACjCC,sBAAsB,GAAG,KAAK,EACV;EACpB,IAAIF,QAAQ,CAACH,aAAa,KAAK,CAAC,IAAIG,QAAQ,CAACb,iBAAiB,KAAKc,yBAAyB,EAAE;IAC5F,MAAM,IAAAnD,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,sCAAsC,CAAC;EACjG;EACA,MAAMuC,GAAG,GAAG,IAAIC,GAAG,CAAS,CAAC;EAC7B,KAAK,MAAMrB,UAAU,IAAI+B,QAAQ,CAACd,WAAW,EAAE;IAC7ClB,4BAA4B,CAACC,UAAU,CAAC;IACxC,IAAIoB,GAAG,CAACK,GAAG,CAACzB,UAAU,CAACvC,EAAE,CAAC,EAAE;MAC1B,MAAM,IAAAoB,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,sCAAsC,CAAC;IACjG;IACAuC,GAAG,CAACc,GAAG,CAAClC,UAAU,CAACvC,EAAE,CAAC;EACxB;EACA,IAAIwE,sBAAsB,IAAI3E,wBAAwB,CAACmD,IAAI,CAACe,KAAK,IAAI,CAACJ,GAAG,CAACK,GAAG,CAACD,KAAK,CAAC/D,EAAE,CAAC,CAAC,EAAE;IACxF,MAAM,IAAAoB,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,iDAAiD,CAAC;EAC5G;EACA,OAAOkD,QAAQ;AACjB;AACO,SAASI,2BAA2BA,CAMzCC,YAAoE,EACZ;EACxD,IAAI,CAACA,YAAY,CAAC3E,EAAE,CAACwC,QAAQ,CAAC,GAAG,CAAC,IAAImC,YAAY,CAAC3E,EAAE,CAACyC,UAAU,CAAC,GAAG,CAAC,IAAIkC,YAAY,CAAC3E,EAAE,CAAC0C,QAAQ,CAAC,GAAG,CAAC,EAAE;IACtG,MAAM,IAAAtB,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,6BAA6B,CAAC;EACxF;EACA,IAAI,OAAOuD,YAAY,CAACzD,cAAc,CAACC,MAAM,KAAK,UAAU,EAAE;IAC5D,MAAM,IAAAC,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,6BAA6B,CAAC;EACxF;EACAuB,2BAA2B,CAACgC,YAAY,CAAC9D,mBAAmB,EAAE,mDAAmD,CAAC;EAClH,IACE8D,YAAY,CAACnD,GAAG,CAACC,OAAO,CAACmB,MAAM,KAAK,CAAC,IACrC+B,YAAY,CAACnD,GAAG,CAACP,mBAAmB,CAAC2B,MAAM,KAAK,CAAC,IACjD+B,YAAY,CAAC/C,QAAQ,CAACC,SAAS,CAACe,MAAM,KAAK,CAAC,IAC5C+B,YAAY,CAAC/C,QAAQ,CAACE,YAAY,CAACc,MAAM,KAAK,CAAC,IAC/C+B,YAAY,CAAC/C,QAAQ,CAACZ,WAAW,CAAC4B,MAAM,KAAK,CAAC,EAC9C;IACA,MAAM,IAAAxB,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,6BAA6B,CAAC;EACxF;EACA,IAAI9D,MAAM,CAACuF,IAAI,CAAC8B,YAAY,CAAC1C,MAAM,CAAC,CAACW,MAAM,KAAK,CAAC,EAAE;IACjD,MAAM,IAAAxB,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,6BAA6B,CAAC;EACxF;EACA0B,sBAAsB,CAAC6B,YAAY,CAAC1C,MAAM,CAAC;EAC3C,IAAI0C,YAAY,CAACrD,KAAK,KAAK,SAAS,IAAIqD,YAAY,CAACpE,WAAW,CAACqC,MAAM,KAAK,CAAC,EAAE;IAC7E,MAAM,IAAAxB,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,6BAA6B,CAAC;EACxF;EACA,IACE,CAACuD,YAAY,CAACrD,KAAK,KAAK,aAAa,IAAIqD,YAAY,CAACrD,KAAK,KAAK,aAAa,KAC7EqD,YAAY,CAACpE,WAAW,CAACqC,MAAM,KAAK,CAAC,EACrC;IACA,MAAM,IAAAxB,qBAAa,EACjBuD,YAAY,CAACrD,KAAK,KAAK,aAAa,GAAG,wBAAwB,GAAG,wBAAwB,EAC1F,YAAY,EACZ,6BACF,CAAC;EACH;EACA,KAAK,MAAMV,UAAU,IAAI,CAAC,GAAG+D,YAAY,CAACpE,WAAW,EAAE,GAAGoE,YAAY,CAAC/C,QAAQ,CAACrB,WAAW,CAAC,EAAE;IAC5F,IACEK,UAAU,CAACH,IAAI,CAACmC,MAAM,KAAK,CAAC,IAC5BhC,UAAU,CAACF,WAAW,CAACkC,MAAM,KAAK,CAAC,IACnChC,UAAU,CAACD,iBAAiB,CAACiC,MAAM,KAAK,CAAC,EACzC;MACA,MAAM,IAAAxB,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,yCAAyC,CAAC;IACpG;EACF;EACA,IAAI,CAAC2B,gBAAgB,CAAC4B,YAAY,CAACpE,WAAW,EAAEoE,YAAY,CAAC/C,QAAQ,CAACrB,WAAW,CAAC,EAAE;IAClF,MAAM,IAAAa,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,kDAAkD,CAAC;EAC7G;EACA,IACEuD,YAAY,CAACnD,GAAG,CAACP,mBAAmB,CAAC+B,IAAI,CAACC,UAAU,IAAI,CAAC0B,YAAY,CAAC/C,QAAQ,CAACZ,WAAW,CAACwB,QAAQ,CAACS,UAAU,CAAC,CAAC,EAChH;IACA,MAAM,IAAA7B,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,gDAAgD,CAAC;EAC3G;EACA,MAAM8B,iBAAiB,GACrByB,YAAY,CAAC/C,QAAQ,CAACG,aAAa,KAAK,WAAW,IACnD4C,YAAY,CAAC/C,QAAQ,CAACG,aAAa,KAAK,uBAAuB;EACjE,IAAI4C,YAAY,CAACrD,KAAK,KAAK,WAAW,KAAK,CAAC4B,iBAAiB,IAAIyB,YAAY,CAACpE,WAAW,CAACqC,MAAM,KAAK,CAAC,CAAC,EAAE;IACvG,MAAM,IAAAxB,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,gDAAgD,CAAC;EAC3G;EACA,IAAIuD,YAAY,CAACrD,KAAK,KAAK,SAAS,IAAIqD,YAAY,CAAC/C,QAAQ,CAACG,aAAa,KAAK,SAAS,EAAE;IACzF,MAAM,IAAAX,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,8CAA8C,CAAC;EACzG;EACA,IACE,CAACuD,YAAY,CAACrD,KAAK,KAAK,aAAa,IAAIqD,YAAY,CAACrD,KAAK,KAAK,aAAa,KAC7EqD,YAAY,CAAC/C,QAAQ,CAACG,aAAa,KAAK,SAAS,EACjD;IACA,MAAM,IAAAX,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,8CAA8C,CAAC;EACzG;EACA,OAAOuD,YAAY;AACrB;AACO,SAASC,qBAAqBA,CACnCC,aAKG,EACc;EACjB,MAAMlB,GAAG,GAAG,IAAIC,GAAG,CAAS,CAAC;EAC7B,MAAMF,SAAqD,GAAG,EAAE;EAChE,MAAMF,WAAmC,GAAG,EAAE;EAC9C,KAAK,MAAMmB,YAAY,IAAIE,aAAa,EAAE;IACxCH,2BAA2B,CAACC,YAAY,CAAC;IACzC,IAAIhB,GAAG,CAACK,GAAG,CAACW,YAAY,CAAC3E,EAAE,CAAC,EAAE;MAC5B,MAAM,IAAAoB,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,uBAAuB,CAAC;IAClF;IACAuC,GAAG,CAACc,GAAG,CAACE,YAAY,CAAC3E,EAAE,CAAC;IACxB,MAAMsE,QAAQ,GAAGQ,2BAA2B,CAACH,YAAY,CAAC;IAC1DjB,SAAS,CAACO,IAAI,CAACK,QAAQ,CAAC;IACxBd,WAAW,CAACS,IAAI,CAACc,2BAA2B,CAACT,QAAQ,CAAC,CAAC;EACzD;EACA,OAAOhH,MAAM,CAACC,MAAM,CAAC;IAAEsH,aAAa,EAAEvH,MAAM,CAACC,MAAM,CAACmG,SAAS,CAAC;IAAEF,WAAW,EAAElG,MAAM,CAACC,MAAM,CAACiG,WAAW;EAAE,CAAC,CAAC;AAC5G;;AAEA;AACO,SAASwB,uBAAuBA,CAACC,QAAyB,EAAmC;EAClG,OAAOA,QAAQ,CAACzB,WAAW;AAC7B;AAEA,SAAST,gBAAgBA,CAACmC,IAA2B,EAAEC,KAA4B,EAAW;EAC5F,OACED,IAAI,CAACtC,MAAM,KAAKuC,KAAK,CAACvC,MAAM,IAC5BsC,IAAI,CAACE,KAAK,CACR,CAACxE,UAAU,EAAEyE,KAAK,KAChBzE,UAAU,CAACH,IAAI,KAAK0E,KAAK,CAACE,KAAK,CAAC,EAAE5E,IAAI,IACtCG,UAAU,CAACF,WAAW,KAAKyE,KAAK,CAACE,KAAK,CAAC,EAAE3E,WAAW,IACpDE,UAAU,CAACD,iBAAiB,KAAKwE,KAAK,CAACE,KAAK,CAAC,EAAE1E,iBACnD,CAAC;AAEL;AAEA,SAASmE,2BAA2BA,CAClCH,YAAsD,EACZ;EAC1C,MAAMxD,MAAM,GAAGwD,YAAY,CAACzD,cAAc,CAACC,MAAM,CAACmE,IAAI,CAACX,YAAY,CAACzD,cAAc,CAAC;EACnF,MAAMA,cAAc,GAAG5D,MAAM,CAACC,MAAM,CAAC;IACnC4D,MAAM,EAAGoE,KAAyB,IAAKpE,MAAM,CAACoE,KAAK;EACrD,CAAC,CAAC;EACF,OAAOjI,MAAM,CAACC,MAAM,CAAC;IACnByC,EAAE,EAAE2E,YAAY,CAAC3E,EAAE;IACnBsB,KAAK,EAAEqD,YAAY,CAACrD,KAAK;IACzBT,mBAAmB,EAAEuC,6BAA6B,CAACuB,YAAY,CAAC9D,mBAAmB,CAAC;IACpFU,oBAAoB,EAAEoD,YAAY,CAACpD,oBAAoB;IACvDL,cAAc;IACdM,GAAG,EAAElE,MAAM,CAACC,MAAM,CAAC;MACjBkE,OAAO,EAAEkD,YAAY,CAACnD,GAAG,CAACC,OAAO;MACjCR,mBAAmB,EAAE3D,MAAM,CAACC,MAAM,CAAC,CAAC,GAAGoH,YAAY,CAACnD,GAAG,CAACP,mBAAmB,CAAC,CAAC;MAC7EU,aAAa,EAAEyB,6BAA6B,CAACuB,YAAY,CAACnD,GAAG,CAACG,aAAa;IAC7E,CAAC,CAAC;IACFC,QAAQ,EAAEtE,MAAM,CAACC,MAAM,CAAC;MACtBsE,SAAS,EAAE8C,YAAY,CAAC/C,QAAQ,CAACC,SAAS;MAC1CE,aAAa,EAAE4C,YAAY,CAAC/C,QAAQ,CAACG,aAAa;MAClDC,qBAAqB,EAAE2C,YAAY,CAAC/C,QAAQ,CAACI,qBAAqB;MAClEF,YAAY,EAAE6C,YAAY,CAAC/C,QAAQ,CAACE,YAAY;MAChDd,WAAW,EAAE1D,MAAM,CAACC,MAAM,CAAC,CAAC,GAAGoH,YAAY,CAAC/C,QAAQ,CAACZ,WAAW,CAAC,CAAC;MAClET,WAAW,EAAE8C,mBAAmB,CAACsB,YAAY,CAAC/C,QAAQ,CAACrB,WAAW;IACpE,CAAC,CAAC;IACFA,WAAW,EAAE8C,mBAAmB,CAACsB,YAAY,CAACpE,WAAW,CAAC;IAC1D0B,MAAM,EAAEqB,wBAAwB,CAACqB,YAAY,CAAC1C,MAAM;EACtD,CAAC,CAAC;AACJ;AAEA,SAAS8C,2BAA2BA,CAACJ,YAAsD,EAAwB;EACjH,OAAOrH,MAAM,CAACC,MAAM,CAAC;IACnByC,EAAE,EAAE2E,YAAY,CAAC3E,EAAE;IACnBsB,KAAK,EAAEqD,YAAY,CAACrD,KAAK;IACzBT,mBAAmB,EAAEuC,6BAA6B,CAACuB,YAAY,CAAC9D,mBAAmB,CAAC;IACpFU,oBAAoB,EAAEoD,YAAY,CAACpD,oBAAoB;IACvDC,GAAG,EAAElE,MAAM,CAACC,MAAM,CAAC;MACjBkE,OAAO,EAAEkD,YAAY,CAACnD,GAAG,CAACC,OAAO;MACjCR,mBAAmB,EAAE3D,MAAM,CAACC,MAAM,CAAC,CAAC,GAAGoH,YAAY,CAACnD,GAAG,CAACP,mBAAmB,CAAC,CAAC;MAC7EU,aAAa,EAAEyB,6BAA6B,CAACuB,YAAY,CAACnD,GAAG,CAACG,aAAa;IAC7E,CAAC,CAAC;IACFC,QAAQ,EAAEtE,MAAM,CAACC,MAAM,CAAC;MACtBsE,SAAS,EAAE8C,YAAY,CAAC/C,QAAQ,CAACC,SAAS;MAC1CE,aAAa,EAAE4C,YAAY,CAAC/C,QAAQ,CAACG,aAAa;MAClDC,qBAAqB,EAAE2C,YAAY,CAAC/C,QAAQ,CAACI,qBAAqB;MAClEF,YAAY,EAAE6C,YAAY,CAAC/C,QAAQ,CAACE,YAAY;MAChDd,WAAW,EAAE1D,MAAM,CAACC,MAAM,CAAC,CAAC,GAAGoH,YAAY,CAAC/C,QAAQ,CAACZ,WAAW,CAAC,CAAC;MAClET,WAAW,EAAE8C,mBAAmB,CAACsB,YAAY,CAAC/C,QAAQ,CAACrB,WAAW;IACpE,CAAC,CAAC;IACFA,WAAW,EAAE8C,mBAAmB,CAACsB,YAAY,CAACpE,WAAW,CAAC;IAC1D0B,MAAM,EAAEqB,wBAAwB,CAACqB,YAAY,CAAC1C,MAAM;EACtD,CAAC,CAAC;AACJ;AAEA,SAASU,2BAA2BA,CAAC6C,KAAwC,EAAEnE,SAAiB,EAAQ;EACtG,IACEmE,KAAK,KAAKhF,SAAS,IACnBgF,KAAK,KAAK,IAAI,IACdA,KAAK,CAACC,IAAI,KAAK,mBAAmB,IAClCD,KAAK,CAACpD,OAAO,CAACqD,IAAI,KAAK,mBAAmB,IAC1CD,KAAK,CAACrD,OAAO,CAACsD,IAAI,KAAK,mBAAmB,IAC1C,CAACC,MAAM,CAACC,aAAa,CAACH,KAAK,CAACpD,OAAO,CAACwD,KAAK,CAAC,IAC1C,CAACF,MAAM,CAACC,aAAa,CAACH,KAAK,CAACrD,OAAO,CAACyD,KAAK,CAAC,IAC1CJ,KAAK,CAACpD,OAAO,CAACwD,KAAK,GAAG,CAAC,IACvBJ,KAAK,CAACpD,OAAO,CAACwD,KAAK,GAAGJ,KAAK,CAACrD,OAAO,CAACyD,KAAK,EACzC;IACA,MAAM,IAAAxE,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAEC,SAAS,CAAC;EACpE;AACF;AAEA,SAASyB,sBAAsBA,CAACb,MAAwB,EAAQ;EAC9D,KAAK,MAAM,CAAC4D,IAAI,EAAEC,KAAK,CAAC,IAAIxI,MAAM,CAACyI,OAAO,CAAC9D,MAAM,CAAC,EAAE;IAClD,IACE4D,IAAI,CAACjD,MAAM,KAAK,CAAC,IACjB,CAAC8C,MAAM,CAACM,QAAQ,CAACF,KAAK,CAAC3D,OAAO,CAAC,IAC/B2D,KAAK,CAAC3D,OAAO,GAAG,CAAC,IAChB2D,KAAK,CAAC1D,OAAO,KAAK,IAAI,KACpB,CAACsD,MAAM,CAACM,QAAQ,CAACF,KAAK,CAAC1D,OAAO,CAAC,IAAI0D,KAAK,CAAC1D,OAAO,GAAG,CAAC,IAAI0D,KAAK,CAAC1D,OAAO,GAAG0D,KAAK,CAAC3D,OAAO,CAAE,IAC1F2D,KAAK,CAACzD,IAAI,CAACO,MAAM,KAAK,CAAC,EACvB;MACA,MAAM,IAAAxB,qBAAa,EAAC,oBAAoB,EAAE,YAAY,EAAE,oCAAoC,CAAC;IAC/F;EACF;AACF;AAEA,SAASkC,wBAAwBA,CAACrB,MAAwB,EAAoB;EAC5E,MAAMqC,QAAyC,GAAG,CAAC,CAAC;EACpD,KAAK,MAAM,CAACuB,IAAI,EAAEC,KAAK,CAAC,IAAIxI,MAAM,CAACyI,OAAO,CAAC9D,MAAM,CAAC,EAAE;IAClDqC,QAAQ,CAACuB,IAAI,CAAC,GAAGvI,MAAM,CAACC,MAAM,CAAC;MAAE4E,OAAO,EAAE2D,KAAK,CAAC3D,OAAO;MAAEC,OAAO,EAAE0D,KAAK,CAAC1D,OAAO;MAAEC,IAAI,EAAEyD,KAAK,CAACzD;IAAK,CAAC,CAAC;EACtG;EACA,OAAO/E,MAAM,CAACC,MAAM,CAAC+G,QAAQ,CAAC;AAChC;AAEA,SAASjB,mBAAmBA,CAAC9C,WAAkC,EAAyB;EACtF,OAAOjD,MAAM,CAACC,MAAM,CAClBgD,WAAW,CAACR,GAAG,CAACa,UAAU,IACxBtD,MAAM,CAACC,MAAM,CAAC;IACZkD,IAAI,EAAEG,UAAU,CAACH,IAAI;IACrBC,WAAW,EAAEE,UAAU,CAACF,WAAW;IACnCC,iBAAiB,EAAEC,UAAU,CAACD;EAChC,CAAC,CACH,CACF,CAAC;AACH;AAEA,SAASyC,6BAA6BA,CAACoC,KAAwC,EAAqC;EAClH,OAAOlI,MAAM,CAACC,MAAM,CAAC;IACnBkI,IAAI,EAAED,KAAK,CAACC,IAAI;IAChBrD,OAAO,EAAE9E,MAAM,CAACC,MAAM,CAAC;MAAEkI,IAAI,EAAED,KAAK,CAACpD,OAAO,CAACqD,IAAI;MAAEG,KAAK,EAAEJ,KAAK,CAACpD,OAAO,CAACwD;IAAM,CAAC,CAAC;IAChFzD,OAAO,EAAE7E,MAAM,CAACC,MAAM,CAAC;MAAEkI,IAAI,EAAED,KAAK,CAACrD,OAAO,CAACsD,IAAI;MAAEG,KAAK,EAAEJ,KAAK,CAACrD,OAAO,CAACyD;IAAM,CAAC;EACjF,CAAC,CAAC;AACJ","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":"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","ignoreList":[]}
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":[]}