@blue-soda/dsh-remote 0.5.6 → 0.5.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 (232) hide show
  1. package/README.md +2 -2
  2. package/cordis.patch.yml +30 -30
  3. package/dist/client.github.js +1 -1
  4. package/dist/client.js +1 -1
  5. package/dist/index.js +321 -57
  6. package/dist/index.js.map +3 -3
  7. package/dsh-plugin.json +41 -41
  8. package/package.json +165 -165
  9. package/dist/acp.d.ts +0 -75
  10. package/dist/acp.d.ts.map +0 -1
  11. package/dist/acp.js +0 -61
  12. package/dist/acp.js.map +0 -1
  13. package/dist/api-proxy-switch.d.ts +0 -33
  14. package/dist/api-proxy-switch.d.ts.map +0 -1
  15. package/dist/api-proxy-switch.js +0 -109
  16. package/dist/api-proxy-switch.js.map +0 -1
  17. package/dist/atomic-file.d.ts +0 -16
  18. package/dist/atomic-file.d.ts.map +0 -1
  19. package/dist/atomic-file.js +0 -81
  20. package/dist/atomic-file.js.map +0 -1
  21. package/dist/bin/doctor.d.ts +0 -3
  22. package/dist/bin/doctor.d.ts.map +0 -1
  23. package/dist/bin/doctor.js +0 -13
  24. package/dist/bin/doctor.js.map +0 -1
  25. package/dist/cli.d.ts +0 -32
  26. package/dist/cli.d.ts.map +0 -1
  27. package/dist/cli.js +0 -289
  28. package/dist/cli.js.map +0 -1
  29. package/dist/client-runtime.d.ts +0 -375
  30. package/dist/client-runtime.d.ts.map +0 -1
  31. package/dist/client-runtime.js +0 -1768
  32. package/dist/client-runtime.js.map +0 -1
  33. package/dist/client-secure-transport.d.ts +0 -23
  34. package/dist/client-secure-transport.d.ts.map +0 -1
  35. package/dist/client-secure-transport.js +0 -144
  36. package/dist/client-secure-transport.js.map +0 -1
  37. package/dist/client-target-store.d.ts +0 -40
  38. package/dist/client-target-store.d.ts.map +0 -1
  39. package/dist/client-target-store.js +0 -79
  40. package/dist/client-target-store.js.map +0 -1
  41. package/dist/client.d.ts +0 -13
  42. package/dist/client.d.ts.map +0 -1
  43. package/dist/codex/app-server.d.ts +0 -71
  44. package/dist/codex/app-server.d.ts.map +0 -1
  45. package/dist/codex/app-server.js +0 -268
  46. package/dist/codex/app-server.js.map +0 -1
  47. package/dist/codex/codex-image-codec.d.ts +0 -7
  48. package/dist/codex/codex-image-codec.d.ts.map +0 -1
  49. package/dist/codex/codex-image-codec.js +0 -288
  50. package/dist/codex/codex-image-codec.js.map +0 -1
  51. package/dist/codex/domain.d.ts +0 -102
  52. package/dist/codex/domain.d.ts.map +0 -1
  53. package/dist/codex/domain.js +0 -1323
  54. package/dist/codex/domain.js.map +0 -1
  55. package/dist/codex/method-policy.d.ts +0 -338
  56. package/dist/codex/method-policy.d.ts.map +0 -1
  57. package/dist/codex/method-policy.js +0 -141
  58. package/dist/codex/method-policy.js.map +0 -1
  59. package/dist/codex/peer-bridge.d.ts +0 -57
  60. package/dist/codex/peer-bridge.d.ts.map +0 -1
  61. package/dist/codex/peer-bridge.js +0 -299
  62. package/dist/codex/peer-bridge.js.map +0 -1
  63. package/dist/codex/permissions.d.ts +0 -4
  64. package/dist/codex/permissions.d.ts.map +0 -1
  65. package/dist/codex/permissions.js +0 -21
  66. package/dist/codex/permissions.js.map +0 -1
  67. package/dist/codex/session-id.d.ts +0 -10
  68. package/dist/codex/session-id.d.ts.map +0 -1
  69. package/dist/codex/session-id.js +0 -15
  70. package/dist/codex/session-id.js.map +0 -1
  71. package/dist/codex/virtual-harness.d.ts +0 -209
  72. package/dist/codex/virtual-harness.d.ts.map +0 -1
  73. package/dist/codex/virtual-harness.js +0 -2650
  74. package/dist/codex/virtual-harness.js.map +0 -1
  75. package/dist/codex-workspace-bridge.d.ts +0 -108
  76. package/dist/codex-workspace-bridge.d.ts.map +0 -1
  77. package/dist/codex-workspace-bridge.js +0 -502
  78. package/dist/codex-workspace-bridge.js.map +0 -1
  79. package/dist/config.d.ts +0 -99
  80. package/dist/config.d.ts.map +0 -1
  81. package/dist/config.js +0 -127
  82. package/dist/config.js.map +0 -1
  83. package/dist/connection-controller.d.ts +0 -44
  84. package/dist/connection-controller.d.ts.map +0 -1
  85. package/dist/connection-controller.js +0 -185
  86. package/dist/connection-controller.js.map +0 -1
  87. package/dist/control-route.d.ts +0 -34
  88. package/dist/control-route.d.ts.map +0 -1
  89. package/dist/control-route.js +0 -136
  90. package/dist/control-route.js.map +0 -1
  91. package/dist/control-runtime.d.ts +0 -138
  92. package/dist/control-runtime.d.ts.map +0 -1
  93. package/dist/control-runtime.js +0 -543
  94. package/dist/control-runtime.js.map +0 -1
  95. package/dist/control-stream.d.ts +0 -67
  96. package/dist/control-stream.d.ts.map +0 -1
  97. package/dist/control-stream.js +0 -179
  98. package/dist/control-stream.js.map +0 -1
  99. package/dist/defaults.d.ts +0 -9
  100. package/dist/defaults.d.ts.map +0 -1
  101. package/dist/defaults.js +0 -9
  102. package/dist/defaults.js.map +0 -1
  103. package/dist/file-viewer-bridge.d.ts +0 -30
  104. package/dist/file-viewer-bridge.d.ts.map +0 -1
  105. package/dist/file-viewer-bridge.js +0 -128
  106. package/dist/file-viewer-bridge.js.map +0 -1
  107. package/dist/file-viewer-contract.d.ts +0 -5
  108. package/dist/file-viewer-contract.d.ts.map +0 -1
  109. package/dist/file-viewer-contract.js +0 -4
  110. package/dist/file-viewer-contract.js.map +0 -1
  111. package/dist/harness-api-bridge.d.ts +0 -81
  112. package/dist/harness-api-bridge.d.ts.map +0 -1
  113. package/dist/harness-api-bridge.js +0 -862
  114. package/dist/harness-api-bridge.js.map +0 -1
  115. package/dist/harness-api-history.d.ts +0 -3
  116. package/dist/harness-api-history.d.ts.map +0 -1
  117. package/dist/harness-api-history.js +0 -59
  118. package/dist/harness-api-history.js.map +0 -1
  119. package/dist/harness-remote-bridge.d.ts +0 -60
  120. package/dist/harness-remote-bridge.d.ts.map +0 -1
  121. package/dist/harness-remote-bridge.js +0 -540
  122. package/dist/harness-remote-bridge.js.map +0 -1
  123. package/dist/harness-version.d.ts +0 -23
  124. package/dist/harness-version.d.ts.map +0 -1
  125. package/dist/harness-version.js +0 -95
  126. package/dist/harness-version.js.map +0 -1
  127. package/dist/identity-store.d.ts +0 -45
  128. package/dist/identity-store.d.ts.map +0 -1
  129. package/dist/identity-store.js +0 -186
  130. package/dist/identity-store.js.map +0 -1
  131. package/dist/ids.d.ts +0 -2
  132. package/dist/ids.d.ts.map +0 -1
  133. package/dist/ids.js +0 -17
  134. package/dist/ids.js.map +0 -1
  135. package/dist/index.d.ts +0 -78
  136. package/dist/index.d.ts.map +0 -1
  137. package/dist/logging.d.ts +0 -18
  138. package/dist/logging.d.ts.map +0 -1
  139. package/dist/logging.js +0 -30
  140. package/dist/logging.js.map +0 -1
  141. package/dist/loopback-host.d.ts +0 -20
  142. package/dist/loopback-host.d.ts.map +0 -1
  143. package/dist/loopback-host.js +0 -245
  144. package/dist/loopback-host.js.map +0 -1
  145. package/dist/loopback-preview.d.ts +0 -19
  146. package/dist/loopback-preview.d.ts.map +0 -1
  147. package/dist/loopback-preview.js +0 -232
  148. package/dist/loopback-preview.js.map +0 -1
  149. package/dist/native-rtc-helper.d.ts +0 -14
  150. package/dist/native-rtc-helper.d.ts.map +0 -1
  151. package/dist/native-rtc-helper.js +0 -575
  152. package/dist/native-rtc-helper.js.map +0 -1
  153. package/dist/remote-api-proxy.d.ts +0 -17
  154. package/dist/remote-api-proxy.d.ts.map +0 -1
  155. package/dist/remote-api-proxy.js +0 -451
  156. package/dist/remote-api-proxy.js.map +0 -1
  157. package/dist/remote-directory-browser.d.ts +0 -16
  158. package/dist/remote-directory-browser.d.ts.map +0 -1
  159. package/dist/remote-directory-browser.js +0 -48
  160. package/dist/remote-directory-browser.js.map +0 -1
  161. package/dist/remote-file-content-provider.d.ts +0 -48
  162. package/dist/remote-file-content-provider.d.ts.map +0 -1
  163. package/dist/remote-file-content-provider.js +0 -93
  164. package/dist/remote-file-content-provider.js.map +0 -1
  165. package/dist/remote-typert-gateway.d.ts +0 -20
  166. package/dist/remote-typert-gateway.d.ts.map +0 -1
  167. package/dist/remote-typert-gateway.js +0 -334
  168. package/dist/remote-typert-gateway.js.map +0 -1
  169. package/dist/rpc-binary-attachments.d.ts +0 -33
  170. package/dist/rpc-binary-attachments.d.ts.map +0 -1
  171. package/dist/rpc-binary-attachments.js +0 -142
  172. package/dist/rpc-binary-attachments.js.map +0 -1
  173. package/dist/rpc-router.d.ts +0 -31
  174. package/dist/rpc-router.d.ts.map +0 -1
  175. package/dist/rpc-router.js +0 -201
  176. package/dist/rpc-router.js.map +0 -1
  177. package/dist/safe-error.d.ts +0 -8
  178. package/dist/safe-error.d.ts.map +0 -1
  179. package/dist/safe-error.js +0 -20
  180. package/dist/safe-error.js.map +0 -1
  181. package/dist/server-api.d.ts +0 -109
  182. package/dist/server-api.d.ts.map +0 -1
  183. package/dist/server-api.js +0 -520
  184. package/dist/server-api.js.map +0 -1
  185. package/dist/server-connection.d.ts +0 -79
  186. package/dist/server-connection.d.ts.map +0 -1
  187. package/dist/server-connection.js +0 -1023
  188. package/dist/server-connection.js.map +0 -1
  189. package/dist/server-credentials.d.ts +0 -55
  190. package/dist/server-credentials.d.ts.map +0 -1
  191. package/dist/server-credentials.js +0 -108
  192. package/dist/server-credentials.js.map +0 -1
  193. package/dist/service.d.ts +0 -151
  194. package/dist/service.d.ts.map +0 -1
  195. package/dist/service.js +0 -448
  196. package/dist/service.js.map +0 -1
  197. package/dist/session-format-compat.d.ts +0 -3
  198. package/dist/session-format-compat.d.ts.map +0 -1
  199. package/dist/session-format-compat.js +0 -183
  200. package/dist/session-format-compat.js.map +0 -1
  201. package/dist/status-stream.d.ts +0 -48
  202. package/dist/status-stream.d.ts.map +0 -1
  203. package/dist/status-stream.js +0 -133
  204. package/dist/status-stream.js.map +0 -1
  205. package/dist/terminal-policy.d.ts +0 -21
  206. package/dist/terminal-policy.d.ts.map +0 -1
  207. package/dist/terminal-policy.js +0 -68
  208. package/dist/terminal-policy.js.map +0 -1
  209. package/dist/tui-command.d.ts +0 -13
  210. package/dist/tui-command.d.ts.map +0 -1
  211. package/dist/tui-command.js +0 -392
  212. package/dist/tui-command.js.map +0 -1
  213. package/dist/typert-gateway-contract.d.ts +0 -59
  214. package/dist/typert-gateway-contract.d.ts.map +0 -1
  215. package/dist/typert-gateway-contract.js +0 -2
  216. package/dist/typert-gateway-contract.js.map +0 -1
  217. package/dist/typert-gateway-switch.d.ts +0 -85
  218. package/dist/typert-gateway-switch.d.ts.map +0 -1
  219. package/dist/typert-gateway-switch.js +0 -448
  220. package/dist/typert-gateway-switch.js.map +0 -1
  221. package/dist/types.d.ts +0 -20
  222. package/dist/types.d.ts.map +0 -1
  223. package/dist/types.js +0 -2
  224. package/dist/types.js.map +0 -1
  225. package/dist/version.d.ts +0 -12
  226. package/dist/version.d.ts.map +0 -1
  227. package/dist/version.js +0 -12
  228. package/dist/version.js.map +0 -1
  229. package/dist/werift-rtc.d.ts +0 -121
  230. package/dist/werift-rtc.d.ts.map +0 -1
  231. package/dist/werift-rtc.js +0 -490
  232. package/dist/werift-rtc.js.map +0 -1
@@ -1,121 +0,0 @@
1
- /**
2
- * Node RTC factory (webrtc-implementation-plan.md §6.2).
3
- *
4
- * Native libwebrtc is preferred when present because its ICE behavior matches
5
- * browser Remote Web. werift remains the pure-TypeScript fallback for systems
6
- * without a loadable native addon. Both backends are loaded lazily so DSH
7
- * startup remains unaffected when WebRTC is unused or `forceRelay` is enabled.
8
- */
9
- import { type NetworkInterfaceInfo } from 'node:os';
10
- import type { RtcIceCandidateInit, RtcIceServer, RtcPeerConnectionFactory, RtcStats } from '@dsh-remote/webrtc';
11
- interface WeriftModule {
12
- RTCPeerConnection: new (config?: WeriftConfig) => WeriftPeerConnection;
13
- }
14
- interface WeriftConfig {
15
- iceServers?: Array<{
16
- urls: string | string[];
17
- username?: string;
18
- credential?: string;
19
- }>;
20
- iceAdditionalHostAddresses?: string[];
21
- iceFilterCandidatePair?: (pair: WeriftCandidatePair) => boolean;
22
- iceUseIpv4?: boolean;
23
- iceUseIpv6?: boolean;
24
- iceUseLinkLocalAddress?: boolean;
25
- iceInterfaceAddresses?: {
26
- udp4?: string;
27
- udp6?: string;
28
- };
29
- }
30
- interface WeriftCandidate {
31
- host?: string;
32
- type?: string;
33
- relatedAddress?: string;
34
- }
35
- interface WeriftCandidatePair {
36
- localCandidate?: WeriftCandidate;
37
- }
38
- interface WeriftPeerConnection {
39
- connectionState: string;
40
- iceConnectionState: string;
41
- iceGatheringState: string;
42
- signalingState: string;
43
- onconnectionstatechange: (() => void) | null;
44
- oniceconnectionstatechange: (() => void) | null;
45
- onicegatheringstatechange: (() => void) | null;
46
- onicecandidate: ((event: {
47
- candidate?: {
48
- toJSON(): RtcIceCandidateInit;
49
- };
50
- }) => void) | null;
51
- ondatachannel: ((event: {
52
- channel: WeriftDataChannel;
53
- }) => void) | null;
54
- createDataChannel(label: string, options: {
55
- ordered: boolean;
56
- }): WeriftDataChannel;
57
- createOffer(): Promise<{
58
- type: 'offer' | 'answer';
59
- sdp: string;
60
- }>;
61
- createAnswer(): Promise<{
62
- type: 'offer' | 'answer';
63
- sdp: string;
64
- }>;
65
- setLocalDescription(description?: {
66
- type: string;
67
- sdp?: string;
68
- }): Promise<unknown>;
69
- setRemoteDescription(description: {
70
- type: string;
71
- sdp?: string;
72
- }): Promise<void>;
73
- addIceCandidate(candidate?: RtcIceCandidateInit | null): Promise<void>;
74
- getStats(): Promise<RtcStats>;
75
- close(): Promise<void>;
76
- }
77
- interface WeriftDataChannel {
78
- readonly label: string;
79
- readonly ordered: boolean;
80
- readyState: string;
81
- bufferedAmount: number;
82
- onopen: (() => void) | null;
83
- onclose: (() => void) | null;
84
- onerror: (() => void) | null;
85
- onmessage: ((event: {
86
- data: string | Uint8Array;
87
- }) => void) | null;
88
- send(data: Buffer | string): void;
89
- close(): void;
90
- }
91
- /**
92
- * Node RTC factory used by the Plugin/VS Code clients and Host. Native
93
- * libwebrtc is preferred because its ICE behavior matches browser Remote Web;
94
- * werift remains the no-native fallback for environments that cannot load it.
95
- */
96
- export declare function loadNodeRtcFactory(options?: WeriftFactoryOptions): Promise<RtcPeerConnectionFactory | undefined>;
97
- /** Load (once) a werift-backed factory, or `undefined` when it cannot be loaded. */
98
- export declare function loadWeriftFactory(options?: WeriftFactoryOptions): Promise<RtcPeerConnectionFactory | undefined>;
99
- export interface WeriftFactoryOptions {
100
- interfaces?: NodeJS.Dict<NetworkInterfaceInfo[] | undefined>;
101
- preferredHostIpv4Candidates?: readonly string[];
102
- routeTargets?: readonly string[];
103
- routeProbeTimeoutMs?: number;
104
- }
105
- /** Synchronous factory for tests and callers that already resolved werift. */
106
- export declare function buildWeriftFactory(werift: WeriftModule, options?: WeriftFactoryOptions): RtcPeerConnectionFactory;
107
- /**
108
- * Pick the safe IPv4 host addresses for ICE gathering.
109
- *
110
- * On macOS a host exposes many interfaces (WiFi `en0`, Thunderbolt `en1-4`,
111
- * `bridge*`, Apple Wireless Direct Link `awdl0`/`llw0`, and several VPN `utun*`
112
- * tunnels whose small MTUs drop large SCTP packets). Let werift/ICE compare
113
- * real physical interfaces, but filter virtual and link-local Host candidates
114
- * before they can become nominated paths.
115
- */
116
- export declare function detectHostIpv4Candidates(interfaces: NodeJS.Dict<NetworkInterfaceInfo[] | undefined>, preferredHostIpv4Candidates?: readonly string[]): string[];
117
- export declare function detectRouteHostIpv4Candidates(targets: readonly string[], timeoutMs?: number): Promise<string[]>;
118
- export declare function shouldAdvertiseCandidate(candidate: RtcIceCandidateInit, allowedHostIpv4: ReadonlySet<string>): boolean;
119
- export declare function orderIceServersForWerift(iceServers: readonly RtcIceServer[]): RtcIceServer[];
120
- export {};
121
- //# sourceMappingURL=werift-rtc.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"werift-rtc.d.ts","sourceRoot":"","sources":["../src/werift-rtc.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAqB,KAAK,oBAAoB,EAAE,MAAM,SAAS,CAAA;AACtE,OAAO,KAAK,EAIV,mBAAmB,EACnB,YAAY,EAEZ,wBAAwB,EAExB,QAAQ,EACT,MAAM,oBAAoB,CAAA;AAK3B,UAAU,YAAY;IACpB,iBAAiB,EAAE,KAAK,MAAM,CAAC,EAAE,YAAY,KAAK,oBAAoB,CAAA;CACvE;AAED,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvF,0BAA0B,CAAC,EAAE,MAAM,EAAE,CAAA;IACrC,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,OAAO,CAAA;IAC/D,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,qBAAqB,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACzD;AAED,UAAU,eAAe;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,UAAU,mBAAmB;IAC3B,cAAc,CAAC,EAAE,eAAe,CAAA;CACjC;AAED,UAAU,oBAAoB;IAC5B,eAAe,EAAE,MAAM,CAAA;IACvB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,iBAAiB,EAAE,MAAM,CAAA;IACzB,cAAc,EAAE,MAAM,CAAA;IACtB,uBAAuB,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAA;IAC5C,0BAA0B,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAA;IAC/C,yBAAyB,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAA;IAC9C,cAAc,EAAE,CAAC,CAAC,KAAK,EAAE;QAAE,SAAS,CAAC,EAAE;YAAE,MAAM,IAAI,mBAAmB,CAAA;SAAE,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAA;IAC3F,aAAa,EAAE,CAAC,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,iBAAiB,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAA;IACvE,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,iBAAiB,CAAA;IAClF,WAAW,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACjE,YAAY,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAClE,mBAAmB,CAAC,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACnF,oBAAoB,CAAC,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChF,eAAe,CAAC,SAAS,CAAC,EAAE,mBAAmB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACtE,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED,UAAU,iBAAiB;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAA;IAC3B,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAA;IAC5B,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAA;IAC5B,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAA;IAClE,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IACjC,KAAK,IAAI,IAAI,CAAA;CACd;AAoDD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC,CAK1H;AAED,oFAAoF;AACpF,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC,CAczH;AA4DD,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,SAAS,CAAC,CAAA;IAC5D,2BAA2B,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC/C,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,GAAE,oBAAyB,GAAG,wBAAwB,CAgFrH;AA8FD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,SAAS,CAAC,EAC3D,2BAA2B,GAAE,SAAS,MAAM,EAAO,GAClD,MAAM,EAAE,CAwBV;AAED,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,SAAS,SAAM,GACd,OAAO,CAAC,MAAM,EAAE,CAAC,CAMnB;AASD,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,mBAAmB,EAAE,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAKtH;AAiCD,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,SAAS,YAAY,EAAE,GAAG,YAAY,EAAE,CAM5F"}
@@ -1,490 +0,0 @@
1
- /**
2
- * Node RTC factory (webrtc-implementation-plan.md §6.2).
3
- *
4
- * Native libwebrtc is preferred when present because its ICE behavior matches
5
- * browser Remote Web. werift remains the pure-TypeScript fallback for systems
6
- * without a loadable native addon. Both backends are loaded lazily so DSH
7
- * startup remains unaffected when WebRTC is unused or `forceRelay` is enabled.
8
- */
9
- import { createSocket } from 'node:dgram';
10
- import { networkInterfaces } from 'node:os';
11
- import { summarizeAddress, summarizeIceCandidate } from '@dsh-remote/webrtc';
12
- import { normalizeSdpMLineIndex } from '@dsh-remote/protocol';
13
- import { loadExternalNativeRtcFactory } from './native-rtc-helper.js';
14
- let cachedFactory;
15
- let cachedWerift;
16
- let cachedNativeFactory;
17
- /**
18
- * Node RTC factory used by the Plugin/VS Code clients and Host. Native
19
- * libwebrtc is preferred because its ICE behavior matches browser Remote Web;
20
- * werift remains the no-native fallback for environments that cannot load it.
21
- */
22
- export async function loadNodeRtcFactory(options = {}) {
23
- const nativeFactory = isElectronRuntime()
24
- ? await loadExternalNativeRtcFactory().catch(() => undefined)
25
- : await loadNativeRtcFactory().catch(() => undefined);
26
- return nativeFactory ?? await loadWeriftFactory(options);
27
- }
28
- /** Load (once) a werift-backed factory, or `undefined` when it cannot be loaded. */
29
- export async function loadWeriftFactory(options = {}) {
30
- const cacheable = isCacheableFactoryOptions(options);
31
- if (cacheable && cachedFactory !== undefined)
32
- return cachedFactory;
33
- try {
34
- const werift = cachedWerift ?? (await import('werift'));
35
- cachedWerift = werift;
36
- const routeCandidates = options.preferredHostIpv4Candidates
37
- ?? await detectRouteHostIpv4Candidates(options.routeTargets ?? [], options.routeProbeTimeoutMs);
38
- const factory = buildWeriftFactory(werift, { ...options, preferredHostIpv4Candidates: routeCandidates });
39
- if (cacheable)
40
- cachedFactory = factory;
41
- return factory;
42
- }
43
- catch {
44
- return undefined;
45
- }
46
- }
47
- async function loadNativeRtcFactory() {
48
- if (cachedNativeFactory !== undefined)
49
- return cachedNativeFactory;
50
- try {
51
- const wrtc = (await import('@roamhq/wrtc'));
52
- const RTCPeerConnection = wrtc.RTCPeerConnection ?? wrtc.default?.RTCPeerConnection;
53
- if (RTCPeerConnection === undefined)
54
- return undefined;
55
- cachedNativeFactory = buildNativeRtcFactory(RTCPeerConnection);
56
- return cachedNativeFactory;
57
- }
58
- catch {
59
- return undefined;
60
- }
61
- }
62
- function isElectronRuntime() {
63
- const versions = process.versions;
64
- return typeof versions.electron === 'string' || process.env.ELECTRON_RUN_AS_NODE === '1';
65
- }
66
- function buildNativeRtcFactory(RTCPeerConnection) {
67
- return {
68
- create(configuration) {
69
- const raw = new RTCPeerConnection({ iceServers: configuration.iceServers });
70
- return {
71
- get connectionState() { return raw.connectionState; },
72
- get iceConnectionState() { return raw.iceConnectionState; },
73
- get iceGatheringState() { return raw.iceGatheringState; },
74
- get signalingState() { return raw.signalingState; },
75
- set onconnectionstatechange(value) { raw.onconnectionstatechange = value; },
76
- get onconnectionstatechange() { return raw.onconnectionstatechange; },
77
- set oniceconnectionstatechange(value) { raw.oniceconnectionstatechange = value; },
78
- get oniceconnectionstatechange() { return raw.oniceconnectionstatechange; },
79
- set onicegatheringstatechange(value) { raw.onicegatheringstatechange = value; },
80
- get onicegatheringstatechange() { return raw.onicegatheringstatechange; },
81
- set onicecandidate(value) {
82
- raw.onicecandidate = value === null ? null : event => value({
83
- candidate: event.candidate === null ? null : normalizeNativeCandidate(event.candidate),
84
- });
85
- },
86
- get onicecandidate() { return raw.onicecandidate; },
87
- set ondatachannel(value) {
88
- raw.ondatachannel = value === null ? null : event => value({ channel: adaptNativeDataChannel(event.channel) });
89
- },
90
- get ondatachannel() { return raw.ondatachannel; },
91
- createDataChannel(label, options) { return adaptNativeDataChannel(raw.createDataChannel(label, options)); },
92
- createOffer() { return raw.createOffer(); },
93
- createAnswer() { return raw.createAnswer(); },
94
- setLocalDescription(description) { return raw.setLocalDescription(description); },
95
- setRemoteDescription(description) { return raw.setRemoteDescription(description); },
96
- addIceCandidate(candidate) { return raw.addIceCandidate(candidate); },
97
- getStats() { return raw.getStats(); },
98
- close() { raw.close(); },
99
- };
100
- },
101
- };
102
- }
103
- /** Synchronous factory for tests and callers that already resolved werift. */
104
- export function buildWeriftFactory(werift, options = {}) {
105
- return {
106
- create(configuration) {
107
- const hostIpv4Candidates = detectHostIpv4Candidates(options.interfaces ?? networkInterfaces(), options.preferredHostIpv4Candidates);
108
- const allowedHostIpv4 = new Set(hostIpv4Candidates);
109
- const raw = new werift.RTCPeerConnection({
110
- iceServers: orderIceServersForWerift(configuration.iceServers ?? []),
111
- iceUseIpv4: true,
112
- iceUseIpv6: false,
113
- iceUseLinkLocalAddress: false,
114
- ...(hostIpv4Candidates.length === 0
115
- ? {}
116
- : {
117
- iceAdditionalHostAddresses: hostIpv4Candidates,
118
- iceFilterCandidatePair: pair => {
119
- const allowed = shouldUseCandidatePair(pair, allowedHostIpv4);
120
- if (!allowed) {
121
- configuration.onDiagnostic?.({
122
- type: 'candidate-pair-filtered',
123
- localCandidate: summarizeWeriftCandidate(localCandidate(pair)),
124
- reason: 'local-host-not-allowed',
125
- });
126
- }
127
- return allowed;
128
- },
129
- }),
130
- });
131
- let onIceCandidate = null;
132
- let onDataChannel = null;
133
- raw.onicecandidate = event => {
134
- if (onIceCandidate === null)
135
- return;
136
- const candidate = event.candidate === undefined ? null : event.candidate.toJSON();
137
- if (candidate !== null && !shouldAdvertiseCandidate(candidate, allowedHostIpv4)) {
138
- configuration.onDiagnostic?.({
139
- type: 'local-candidate-filtered',
140
- candidate: summarizeIceCandidate(candidate),
141
- reason: 'local-host-not-allowed',
142
- });
143
- return;
144
- }
145
- onIceCandidate({ candidate });
146
- };
147
- raw.ondatachannel = event => {
148
- if (onDataChannel === null)
149
- return;
150
- onDataChannel({ channel: adaptDataChannel(event.channel) });
151
- };
152
- const pc = {
153
- get connectionState() { return raw.connectionState; },
154
- get iceConnectionState() { return raw.iceConnectionState; },
155
- get iceGatheringState() { return raw.iceGatheringState; },
156
- get signalingState() { return raw.signalingState; },
157
- set onconnectionstatechange(value) { raw.onconnectionstatechange = value; },
158
- get onconnectionstatechange() { return raw.onconnectionstatechange; },
159
- set oniceconnectionstatechange(value) { raw.oniceconnectionstatechange = value; },
160
- get oniceconnectionstatechange() { return raw.oniceconnectionstatechange; },
161
- set onicegatheringstatechange(value) { raw.onicegatheringstatechange = value; },
162
- get onicegatheringstatechange() { return raw.onicegatheringstatechange; },
163
- set onicecandidate(value) { onIceCandidate = value; },
164
- get onicecandidate() { return onIceCandidate; },
165
- set ondatachannel(value) { onDataChannel = value; },
166
- get ondatachannel() { return onDataChannel; },
167
- createDataChannel(label, options) {
168
- return adaptDataChannel(raw.createDataChannel(label, { ordered: options?.ordered ?? true }));
169
- },
170
- createOffer() { return raw.createOffer(); },
171
- createAnswer() { return raw.createAnswer(); },
172
- setLocalDescription(description) { return raw.setLocalDescription(description).then(() => undefined); },
173
- setRemoteDescription(description) { return raw.setRemoteDescription(description); },
174
- addIceCandidate(candidate) { return raw.addIceCandidate(candidate); },
175
- getStats() { return raw.getStats(); },
176
- close() { void raw.close().catch(() => undefined); },
177
- };
178
- return pc;
179
- },
180
- };
181
- }
182
- function adaptDataChannel(raw) {
183
- return {
184
- get label() { return raw.label; },
185
- get ordered() { return raw.ordered; },
186
- get readyState() { return raw.readyState; },
187
- get bufferedAmount() { return raw.bufferedAmount; },
188
- binaryType: 'arraybuffer',
189
- set onopen(value) { raw.onopen = value; },
190
- get onopen() { return raw.onopen; },
191
- set onmessage(value) {
192
- raw.onmessage = value === null ? null : event => value({ data: toArrayBuffer(event.data) });
193
- },
194
- get onmessage() { return null; },
195
- set onclose(value) { raw.onclose = value; },
196
- get onclose() { return raw.onclose; },
197
- set onerror(value) { raw.onerror = value; },
198
- get onerror() { return raw.onerror; },
199
- onbufferedamountlow: null,
200
- send(data) {
201
- const bytes = typeof data === 'string' ? Buffer.byteLength(data) : data.byteLength;
202
- try {
203
- raw.send(typeof data === 'string' ? data : Buffer.from(data));
204
- }
205
- catch (error) {
206
- console.error('[werift-send-error] bytes=' + bytes, error instanceof Error ? error.message : error);
207
- throw error;
208
- }
209
- },
210
- close() { raw.close(); },
211
- };
212
- }
213
- function adaptNativeDataChannel(raw) {
214
- let onmessage = null;
215
- return {
216
- get label() { return raw.label; },
217
- get ordered() { return raw.ordered; },
218
- get readyState() { return raw.readyState; },
219
- get bufferedAmount() { return raw.bufferedAmount; },
220
- get binaryType() { return raw.binaryType; },
221
- set binaryType(value) { raw.binaryType = value; },
222
- set onopen(value) { raw.onopen = value; },
223
- get onopen() { return raw.onopen; },
224
- set onmessage(value) {
225
- onmessage = value;
226
- raw.onmessage = value === null ? null : event => value({ data: normalizeNativeMessageData(event.data) });
227
- },
228
- get onmessage() { return onmessage; },
229
- set onclose(value) { raw.onclose = value; },
230
- get onclose() { return raw.onclose; },
231
- set onerror(value) { raw.onerror = value; },
232
- get onerror() { return raw.onerror; },
233
- set onbufferedamountlow(value) { raw.onbufferedamountlow = value; },
234
- get onbufferedamountlow() { return raw.onbufferedamountlow; },
235
- send(data) {
236
- raw.send(typeof data === 'string' ? data : Buffer.from(data));
237
- },
238
- close() { raw.close(); },
239
- };
240
- }
241
- function toArrayBuffer(data) {
242
- if (typeof data === 'string')
243
- return data;
244
- // `Buffer.prototype.slice()` (unlike `Uint8Array.prototype.slice()`) returns a
245
- // *view* over the pooled 8 KiB receive buffer, so slicing the underlying
246
- // ArrayBuffer by byte offset/length is required to extract just the message.
247
- return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
248
- }
249
- function normalizeNativeCandidate(candidate) {
250
- const json = typeof candidate.toJSON === 'function'
251
- ? candidate.toJSON()
252
- : {
253
- candidate: candidate.candidate,
254
- sdpMid: candidate.sdpMid,
255
- sdpMLineIndex: candidate.sdpMLineIndex,
256
- usernameFragment: candidate.usernameFragment,
257
- };
258
- return {
259
- ...json,
260
- sdpMLineIndex: normalizeSdpMLineIndex(json.sdpMLineIndex),
261
- };
262
- }
263
- function normalizeNativeMessageData(data) {
264
- if (typeof data === 'string')
265
- return data;
266
- if (data instanceof ArrayBuffer)
267
- return data;
268
- if (ArrayBuffer.isView(data)) {
269
- return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
270
- }
271
- return new Uint8Array().buffer;
272
- }
273
- /**
274
- * Pick the safe IPv4 host addresses for ICE gathering.
275
- *
276
- * On macOS a host exposes many interfaces (WiFi `en0`, Thunderbolt `en1-4`,
277
- * `bridge*`, Apple Wireless Direct Link `awdl0`/`llw0`, and several VPN `utun*`
278
- * tunnels whose small MTUs drop large SCTP packets). Let werift/ICE compare
279
- * real physical interfaces, but filter virtual and link-local Host candidates
280
- * before they can become nominated paths.
281
- */
282
- export function detectHostIpv4Candidates(interfaces, preferredHostIpv4Candidates = []) {
283
- const candidates = [];
284
- const routePreference = new Map(preferredHostIpv4Candidates.map((ip, index) => [ip, 10_000 - index]));
285
- for (const [name, addresses] of Object.entries(interfaces)) {
286
- const interfaceScore = physicalInterfaceScore(name);
287
- if (interfaceScore === undefined)
288
- continue;
289
- for (const address of addresses ?? []) {
290
- if (address.internal || !isIpv4Family(address.family))
291
- continue;
292
- const ip = address.address;
293
- if (!isUsableIpv4(ip))
294
- continue;
295
- candidates.push({
296
- name,
297
- ip,
298
- score: interfaceScore + (isPrivate(ip) ? 1_000 : 0) + (routePreference.get(ip) ?? 0),
299
- });
300
- }
301
- }
302
- candidates.sort((left, right) => {
303
- const score = right.score - left.score;
304
- if (score !== 0)
305
- return score;
306
- const name = left.name.localeCompare(right.name, 'en');
307
- return name === 0 ? left.ip.localeCompare(right.ip, 'en', { numeric: true }) : name;
308
- });
309
- return [...new Set(candidates.map(candidate => candidate.ip))];
310
- }
311
- export async function detectRouteHostIpv4Candidates(targets, timeoutMs = 500) {
312
- const detected = await Promise.all(targets.map(async (target) => {
313
- const routeTarget = parseRouteTarget(target);
314
- return routeTarget === undefined ? undefined : await detectRouteHostIpv4(routeTarget, timeoutMs).catch(() => undefined);
315
- }));
316
- return [...new Set(detected.filter((ip) => ip !== undefined && isUsableIpv4(ip)))];
317
- }
318
- function shouldUseCandidatePair(pair, allowedHostIpv4) {
319
- if (allowedHostIpv4.size === 0)
320
- return true;
321
- const candidate = localCandidate(pair);
322
- if (candidate === undefined)
323
- return true;
324
- return shouldUseLocalCandidate(candidate, allowedHostIpv4);
325
- }
326
- export function shouldAdvertiseCandidate(candidate, allowedHostIpv4) {
327
- if (allowedHostIpv4.size === 0)
328
- return true;
329
- const parsed = parseIceCandidate(candidate);
330
- if (parsed === undefined)
331
- return true;
332
- return shouldUseLocalCandidate(parsed, allowedHostIpv4);
333
- }
334
- function shouldUseLocalCandidate(candidate, allowedHostIpv4) {
335
- if (candidate.type === 'host')
336
- return candidate.host !== undefined && allowedHostIpv4.has(candidate.host);
337
- if (candidate.type === 'srflx' && candidate.relatedAddress !== undefined) {
338
- return allowedHostIpv4.has(candidate.relatedAddress);
339
- }
340
- return true;
341
- }
342
- function localCandidate(pair) {
343
- try {
344
- return pair.localCandidate;
345
- }
346
- catch {
347
- return undefined;
348
- }
349
- }
350
- function summarizeWeriftCandidate(candidate) {
351
- if (candidate === undefined)
352
- return undefined;
353
- const address = summarizeAddress(candidate.host);
354
- const related = summarizeAddress(candidate.relatedAddress);
355
- return {
356
- candidateType: candidate.type === 'host' || candidate.type === 'srflx' || candidate.type === 'prflx' || candidate.type === 'relay'
357
- ? candidate.type
358
- : 'unknown',
359
- ...address,
360
- ...(candidate.relatedAddress === undefined
361
- ? {}
362
- : { relatedAddressFamily: related.addressFamily, relatedAddressScope: related.addressScope }),
363
- };
364
- }
365
- export function orderIceServersForWerift(iceServers) {
366
- return iceServers.map(server => {
367
- const urls = Array.isArray(server.urls) ? [...server.urls] : [server.urls];
368
- urls.sort((left, right) => iceUrlScore(left) - iceUrlScore(right));
369
- return { ...server, urls: Array.isArray(server.urls) ? urls : urls[0] ?? server.urls };
370
- });
371
- }
372
- function iceUrlScore(url) {
373
- const value = url.trim().toLowerCase();
374
- if (value.startsWith('stun:') || value.startsWith('stuns:'))
375
- return 0;
376
- if (value.startsWith('turn:') && value.includes('transport=tcp'))
377
- return 10;
378
- if (value.startsWith('turns:') && value.includes('transport=tcp'))
379
- return 20;
380
- if (value.startsWith('turn:') && value.includes('transport=udp'))
381
- return 30;
382
- if (value.startsWith('turns:'))
383
- return 40;
384
- if (value.startsWith('turn:'))
385
- return 50;
386
- return 100;
387
- }
388
- function parseRouteTarget(value) {
389
- try {
390
- const url = new URL(value);
391
- const port = Number(url.port || (url.protocol === 'http:' ? '80' : '443'));
392
- if (!Number.isSafeInteger(port) || port <= 0 || port > 65_535 || url.hostname.length === 0)
393
- return undefined;
394
- return { host: url.hostname, port };
395
- }
396
- catch {
397
- return undefined;
398
- }
399
- }
400
- async function detectRouteHostIpv4(target, timeoutMs) {
401
- const socket = createSocket('udp4');
402
- try {
403
- return await new Promise((resolve, reject) => {
404
- const timer = setTimeout(() => {
405
- cleanup();
406
- resolve(undefined);
407
- }, timeoutMs);
408
- const cleanup = () => {
409
- clearTimeout(timer);
410
- socket.off('error', onError);
411
- };
412
- const onError = (error) => {
413
- cleanup();
414
- reject(error);
415
- };
416
- socket.once('error', onError);
417
- socket.connect(target.port, target.host, () => {
418
- cleanup();
419
- const address = socket.address();
420
- resolve(typeof address === 'string' ? undefined : address.address);
421
- });
422
- });
423
- }
424
- finally {
425
- socket.close();
426
- }
427
- }
428
- function isCacheableFactoryOptions(options) {
429
- return options.interfaces === undefined
430
- && options.preferredHostIpv4Candidates === undefined
431
- && options.routeTargets === undefined;
432
- }
433
- function parseIceCandidate(candidate) {
434
- const value = candidate.candidate?.trim();
435
- if (value === undefined || value.length === 0)
436
- return undefined;
437
- const parts = value.replace(/^candidate:/, '').split(/\s+/);
438
- const typeIndex = parts.indexOf('typ');
439
- if (typeIndex < 0)
440
- return undefined;
441
- const host = parts[4];
442
- const type = parts[typeIndex + 1];
443
- const relatedAddressIndex = parts.indexOf('raddr');
444
- return {
445
- ...(host === undefined ? {} : { host }),
446
- ...(type === undefined ? {} : { type }),
447
- ...(relatedAddressIndex < 0 || parts[relatedAddressIndex + 1] === undefined
448
- ? {}
449
- : { relatedAddress: parts[relatedAddressIndex + 1] }),
450
- };
451
- }
452
- function physicalInterfaceScore(name) {
453
- const value = name.toLowerCase();
454
- if (/^(utun|tun|tap|ppp|bridge|awdl|llw|gif|stf|anpi|ap\d|vmnet|veth|docker|br-|vboxnet|lo)/.test(value)) {
455
- return undefined;
456
- }
457
- if (/^(eth|eno|ens|enp)/.test(value))
458
- return 500;
459
- if (/^(en|wlan|wl|wifi|wi-fi)/.test(value))
460
- return 450;
461
- return 300;
462
- }
463
- function isIpv4Family(family) {
464
- return family === 'IPv4' || family === 4;
465
- }
466
- function isUsableIpv4(ip) {
467
- const parts = ip.split('.').map(Number);
468
- if (parts.length !== 4 || parts.some(part => !Number.isInteger(part) || part < 0 || part > 255))
469
- return false;
470
- if (parts[0] === 0 || parts[0] === 127 || parts[0] >= 224)
471
- return false;
472
- if (parts[0] === 169 && parts[1] === 254)
473
- return false;
474
- return !isCgnat(ip);
475
- }
476
- function isCgnat(ip) {
477
- const parts = ip.split('.').map(Number);
478
- return parts.length === 4 && parts[0] === 100 && parts[1] >= 64 && parts[1] <= 127;
479
- }
480
- function isPrivate(ip) {
481
- const parts = ip.split('.').map(Number);
482
- if (parts.length !== 4)
483
- return false;
484
- if (parts[0] === 10)
485
- return true;
486
- if (parts[0] === 192 && parts[1] === 168)
487
- return true;
488
- return parts[0] === 172 && parts[1] >= 16 && parts[1] <= 31;
489
- }
490
- //# sourceMappingURL=werift-rtc.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"werift-rtc.js","sourceRoot":"","sources":["../src/werift-rtc.ts"],"names":[],"mappings":"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"}