@walkhi/code-relax 0.1.0-beta.29 → 0.1.0-beta.30

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 (731) hide show
  1. package/README.md +12 -3
  2. package/dist/bin/codex-remote.mjs +54 -37
  3. package/dist/bin/manage-relay-admin.mjs +20 -20
  4. package/dist/bin/migrate-relay-db.mjs +109 -109
  5. package/dist/bin/publish-android-release.mjs +58 -0
  6. package/dist/bin/self-relay-admin.mjs +8 -8
  7. package/dist/bin/self-relay-demo.mjs +33 -33
  8. package/dist/bin/self-relay-server.mjs +66 -64
  9. package/dist/build-platform.json +1 -0
  10. package/dist/get-lan-networks.ps1 +40 -40
  11. package/dist/shared/file-mentions.cjs +12 -0
  12. package/dist/shared/message-delivery.cjs +17 -1
  13. package/dist/shared/p2p-data-channel.cjs +72 -50
  14. package/dist/shared/p2p-diagnostics.cjs +28 -28
  15. package/dist/shared/p2p-file-channel.cjs +3 -3
  16. package/dist/shared/plan-pricing.cjs +32 -0
  17. package/dist/shared/server-requests.cjs +17 -1
  18. package/dist/skills/code-relax/SKILL.md +3 -3
  19. package/dist/src/background-process.mjs +18 -18
  20. package/dist/src/code-browser.mjs +7 -8
  21. package/dist/src/dots-chat-server.mjs +50 -1
  22. package/dist/src/dots-room-client.mjs +2 -2
  23. package/dist/src/dots-task-catalog.mjs +22 -3
  24. package/dist/src/dots-task-files.mjs +52 -0
  25. package/dist/src/execution-health.mjs +26 -26
  26. package/dist/src/lan-socket-server.mjs +2 -2
  27. package/dist/src/managed-app-server.mjs +9 -6
  28. package/dist/src/message-images.mjs +9 -9
  29. package/dist/src/onboarding.mjs +9 -26
  30. package/dist/src/plan-pricing.mjs +47 -0
  31. package/dist/src/platform/README.md +11 -11
  32. package/dist/src/platform/codex-protocol.mjs +46 -0
  33. package/dist/src/platform/codex-runtime.mjs +3 -0
  34. package/dist/src/platform/credential-store.mjs +3 -0
  35. package/dist/src/platform/desktop-host.mjs +3 -0
  36. package/dist/src/platform/desktop-project-registration.mjs +3 -0
  37. package/dist/src/platform/desktop-project-store.mjs +149 -0
  38. package/dist/src/platform/linux/README.md +3 -3
  39. package/dist/src/platform/macos/README.md +3 -3
  40. package/dist/src/platform/macos/codex-runtime.mjs +125 -0
  41. package/dist/src/platform/macos/credential-store.mjs +10 -0
  42. package/dist/src/platform/macos/desktop-host.mjs +82 -0
  43. package/dist/src/platform/macos/desktop-project-registration.mjs +10 -0
  44. package/dist/src/platform/macos/network-info.mjs +28 -0
  45. package/dist/src/platform/macos/project-locations.mjs +8 -0
  46. package/dist/src/platform/macos/resident-startup.mjs +84 -0
  47. package/dist/src/platform/macos/retained-runtime.mjs +127 -0
  48. package/dist/src/platform/macos/service-host.mjs +18 -0
  49. package/dist/src/platform/macos/system.mjs +29 -0
  50. package/dist/src/platform/macos/user-environment.mjs +7 -0
  51. package/dist/src/platform/native-package.mjs +46 -0
  52. package/dist/src/platform/network-info.mjs +3 -0
  53. package/dist/src/platform/path-identity.mjs +5 -0
  54. package/dist/src/platform/posix/runtime-paths.mjs +25 -0
  55. package/dist/src/platform/project-locations.mjs +3 -0
  56. package/dist/src/platform/runtime-paths.mjs +8 -0
  57. package/dist/src/platform/select.mjs +5 -0
  58. package/dist/src/platform/service-host.mjs +3 -0
  59. package/dist/src/platform/user-environment.mjs +3 -0
  60. package/dist/src/platform/windows/IsolatedProcess.cs +79 -79
  61. package/dist/src/platform/windows/background-process.mjs +30 -30
  62. package/dist/src/platform/windows/codex-runtime.mjs +2 -40
  63. package/dist/src/platform/windows/desktop-helper.mjs +179 -0
  64. package/dist/src/platform/windows/desktop-project-registration.mjs +3 -152
  65. package/dist/src/platform/windows/desktop-runtime.ps1 +10 -10
  66. package/dist/src/platform/windows/desktop-shortcuts.ps1 +7 -7
  67. package/dist/src/platform/windows/network-info.mjs +34 -34
  68. package/dist/src/platform/windows/resident-start.js +20 -20
  69. package/dist/src/platform/windows/resident-start.ps1 +7 -7
  70. package/dist/src/platform/windows/resident-startup.ps1 +83 -83
  71. package/dist/src/platform/windows/resolve-state-root.ps1 +14 -14
  72. package/dist/src/platform/windows/runtime-paths.mjs +20 -20
  73. package/dist/src/platform/windows/rustdesk-video-probe.mjs +168 -0
  74. package/dist/src/platform/windows/service-host.mjs +11 -11
  75. package/dist/src/platform/windows/start-hidden-console.ps1 +49 -49
  76. package/dist/src/platform/windows/stop-desktop.ps1 +22 -22
  77. package/dist/src/platform/windows/user-environment.mjs +50 -50
  78. package/dist/src/platform/windows/user-environment.ps1 +41 -41
  79. package/dist/src/project-create.mjs +4 -4
  80. package/dist/src/runtime-discovery.mjs +47 -43
  81. package/dist/src/self-relay/account-connections.mjs +52 -52
  82. package/dist/src/self-relay/admin-cloud.mjs +101 -101
  83. package/dist/src/self-relay/admin-server.mjs +74 -74
  84. package/dist/src/self-relay/admin-state.mjs +127 -127
  85. package/dist/src/self-relay/android-releases.mjs +61 -0
  86. package/dist/src/self-relay/client.mjs +61 -61
  87. package/dist/src/self-relay/connector.mjs +36 -20
  88. package/dist/src/self-relay/debug-allowlist.mjs +33 -33
  89. package/dist/src/self-relay/demo.mjs +6 -6
  90. package/dist/src/self-relay/device-store.mjs +84 -84
  91. package/dist/src/self-relay/lan-authorizations.mjs +42 -42
  92. package/dist/src/self-relay/lifecycle.mjs +250 -250
  93. package/dist/src/self-relay/long-pairing.mjs +40 -40
  94. package/dist/src/self-relay/mysql-state.mjs +105 -105
  95. package/dist/src/self-relay/p2p-probe.mjs +13 -6
  96. package/dist/src/self-relay/server.mjs +19 -9
  97. package/dist/src/self-relay/usage-daily.mjs +55 -55
  98. package/dist/src/self-relay/windows-route-helper.mjs +75 -75
  99. package/dist/src/self-relay/wire.mjs +36 -36
  100. package/dist/src/server.mjs +132 -32
  101. package/dist/src/service-control.mjs +82 -82
  102. package/dist/src/service-doctor.mjs +51 -13
  103. package/dist/src/service-health.mjs +33 -33
  104. package/dist/src/service-install.mjs +10 -7
  105. package/dist/src/service-lifecycle.mjs +1 -1
  106. package/dist/src/service-restart.mjs +81 -81
  107. package/dist/src/shared-app-server.mjs +16 -7
  108. package/dist/src/shared-recovery.mjs +146 -144
  109. package/dist/src/skill-install.mjs +51 -51
  110. package/dist/src/thread-title-generation.mjs +150 -150
  111. package/dist/src/turn-model-history.mjs +47 -47
  112. package/dist/tools/rtc-route-helper.ps1 +99 -99
  113. package/dist/tools/start-rtc-route-helper.ps1 +15 -15
  114. package/dist/web/vendor/markdown-it.LICENSE.txt +22 -22
  115. package/dist/web/vendor/markdown-it.umd.min.js +13 -13
  116. package/package.json +47 -49
  117. package/tools/postinstall.mjs +127 -127
  118. package/node_modules/@img/colour/LICENSE.md +0 -82
  119. package/node_modules/@img/colour/README.md +0 -15
  120. package/node_modules/@img/colour/color.cjs +0 -1596
  121. package/node_modules/@img/colour/index.cjs +0 -1
  122. package/node_modules/@img/colour/index.d.ts +0 -929
  123. package/node_modules/@img/colour/package.json +0 -58
  124. package/node_modules/@img/sharp-win32-x64/LICENSE +0 -191
  125. package/node_modules/@img/sharp-win32-x64/README.md +0 -59
  126. package/node_modules/@img/sharp-win32-x64/index.cjs +0 -1
  127. package/node_modules/@img/sharp-win32-x64/lib/libvips-42.dll +0 -0
  128. package/node_modules/@img/sharp-win32-x64/lib/libvips-cpp-8.18.6.dll +0 -0
  129. package/node_modules/@img/sharp-win32-x64/lib/sharp-win32-x64-0.35.4.node +0 -0
  130. package/node_modules/@img/sharp-win32-x64/package.json +0 -40
  131. package/node_modules/@img/sharp-win32-x64/versions.json +0 -30
  132. package/node_modules/@node-datachannel/win32-x64-msvc/node_datachannel.node +0 -0
  133. package/node_modules/@node-datachannel/win32-x64-msvc/package.json +0 -20
  134. package/node_modules/ansi-regex/index.d.ts +0 -37
  135. package/node_modules/ansi-regex/index.js +0 -10
  136. package/node_modules/ansi-regex/license +0 -9
  137. package/node_modules/ansi-regex/package.json +0 -55
  138. package/node_modules/ansi-regex/readme.md +0 -78
  139. package/node_modules/ansi-styles/index.d.ts +0 -345
  140. package/node_modules/ansi-styles/index.js +0 -163
  141. package/node_modules/ansi-styles/license +0 -9
  142. package/node_modules/ansi-styles/package.json +0 -56
  143. package/node_modules/ansi-styles/readme.md +0 -152
  144. package/node_modules/camelcase/index.d.ts +0 -63
  145. package/node_modules/camelcase/index.js +0 -76
  146. package/node_modules/camelcase/license +0 -9
  147. package/node_modules/camelcase/package.json +0 -43
  148. package/node_modules/camelcase/readme.md +0 -99
  149. package/node_modules/cliui/CHANGELOG.md +0 -76
  150. package/node_modules/cliui/LICENSE.txt +0 -14
  151. package/node_modules/cliui/README.md +0 -115
  152. package/node_modules/cliui/index.js +0 -354
  153. package/node_modules/cliui/package.json +0 -65
  154. package/node_modules/color-convert/CHANGELOG.md +0 -54
  155. package/node_modules/color-convert/LICENSE +0 -21
  156. package/node_modules/color-convert/README.md +0 -68
  157. package/node_modules/color-convert/conversions.js +0 -839
  158. package/node_modules/color-convert/index.js +0 -81
  159. package/node_modules/color-convert/package.json +0 -48
  160. package/node_modules/color-convert/route.js +0 -97
  161. package/node_modules/color-name/LICENSE +0 -8
  162. package/node_modules/color-name/README.md +0 -11
  163. package/node_modules/color-name/index.js +0 -152
  164. package/node_modules/color-name/package.json +0 -28
  165. package/node_modules/decamelize/index.js +0 -13
  166. package/node_modules/decamelize/license +0 -21
  167. package/node_modules/decamelize/package.json +0 -38
  168. package/node_modules/decamelize/readme.md +0 -48
  169. package/node_modules/detect-libc/LICENSE +0 -201
  170. package/node_modules/detect-libc/README.md +0 -163
  171. package/node_modules/detect-libc/index.d.ts +0 -14
  172. package/node_modules/detect-libc/lib/detect-libc.js +0 -313
  173. package/node_modules/detect-libc/lib/elf.js +0 -39
  174. package/node_modules/detect-libc/lib/filesystem.js +0 -51
  175. package/node_modules/detect-libc/lib/process.js +0 -24
  176. package/node_modules/detect-libc/package.json +0 -44
  177. package/node_modules/dijkstrajs/.travis.yml +0 -4
  178. package/node_modules/dijkstrajs/CONTRIBUTING.md +0 -8
  179. package/node_modules/dijkstrajs/LICENSE.md +0 -19
  180. package/node_modules/dijkstrajs/README.md +0 -18
  181. package/node_modules/dijkstrajs/dijkstra.js +0 -165
  182. package/node_modules/dijkstrajs/package.json +0 -60
  183. package/node_modules/dijkstrajs/test/dijkstra.test.js +0 -96
  184. package/node_modules/emoji-regex/LICENSE-MIT.txt +0 -20
  185. package/node_modules/emoji-regex/README.md +0 -73
  186. package/node_modules/emoji-regex/es2015/index.js +0 -6
  187. package/node_modules/emoji-regex/es2015/text.js +0 -6
  188. package/node_modules/emoji-regex/index.d.ts +0 -23
  189. package/node_modules/emoji-regex/index.js +0 -6
  190. package/node_modules/emoji-regex/package.json +0 -50
  191. package/node_modules/emoji-regex/text.js +0 -6
  192. package/node_modules/find-up/index.d.ts +0 -137
  193. package/node_modules/find-up/index.js +0 -89
  194. package/node_modules/find-up/license +0 -9
  195. package/node_modules/find-up/package.json +0 -53
  196. package/node_modules/find-up/readme.md +0 -156
  197. package/node_modules/get-caller-file/LICENSE.md +0 -6
  198. package/node_modules/get-caller-file/README.md +0 -41
  199. package/node_modules/get-caller-file/index.d.ts +0 -2
  200. package/node_modules/get-caller-file/index.js +0 -22
  201. package/node_modules/get-caller-file/index.js.map +0 -1
  202. package/node_modules/get-caller-file/package.json +0 -42
  203. package/node_modules/is-fullwidth-code-point/index.d.ts +0 -17
  204. package/node_modules/is-fullwidth-code-point/index.js +0 -50
  205. package/node_modules/is-fullwidth-code-point/license +0 -9
  206. package/node_modules/is-fullwidth-code-point/package.json +0 -42
  207. package/node_modules/is-fullwidth-code-point/readme.md +0 -39
  208. package/node_modules/locate-path/index.d.ts +0 -83
  209. package/node_modules/locate-path/index.js +0 -65
  210. package/node_modules/locate-path/license +0 -9
  211. package/node_modules/locate-path/package.json +0 -45
  212. package/node_modules/locate-path/readme.md +0 -122
  213. package/node_modules/node-datachannel/.clang-format +0 -17
  214. package/node_modules/node-datachannel/.editorconfig +0 -12
  215. package/node_modules/node-datachannel/.eslintignore +0 -8
  216. package/node_modules/node-datachannel/.eslintrc.json +0 -27
  217. package/node_modules/node-datachannel/.gitmodules +0 -3
  218. package/node_modules/node-datachannel/.prettierignore +0 -7
  219. package/node_modules/node-datachannel/.prettierrc +0 -13
  220. package/node_modules/node-datachannel/API.md +0 -247
  221. package/node_modules/node-datachannel/BULDING.md +0 -26
  222. package/node_modules/node-datachannel/CMakeLists.txt +0 -153
  223. package/node_modules/node-datachannel/LICENSE +0 -373
  224. package/node_modules/node-datachannel/README.md +0 -129
  225. package/node_modules/node-datachannel/dist/cjs/index.cjs +0 -11
  226. package/node_modules/node-datachannel/dist/cjs/index.cjs.map +0 -1
  227. package/node_modules/node-datachannel/dist/cjs/lib/datachannel-stream.cjs +0 -101
  228. package/node_modules/node-datachannel/dist/cjs/lib/datachannel-stream.cjs.map +0 -1
  229. package/node_modules/node-datachannel/dist/cjs/lib/index.cjs +0 -91
  230. package/node_modules/node-datachannel/dist/cjs/lib/index.cjs.map +0 -1
  231. package/node_modules/node-datachannel/dist/cjs/lib/node-datachannel.cjs +0 -94
  232. package/node_modules/node-datachannel/dist/cjs/lib/node-datachannel.cjs.map +0 -1
  233. package/node_modules/node-datachannel/dist/cjs/lib/websocket-server.cjs +0 -45
  234. package/node_modules/node-datachannel/dist/cjs/lib/websocket-server.cjs.map +0 -1
  235. package/node_modules/node-datachannel/dist/cjs/lib/websocket.cjs +0 -8
  236. package/node_modules/node-datachannel/dist/cjs/lib/websocket.cjs.map +0 -1
  237. package/node_modules/node-datachannel/dist/cjs/polyfill/Events.cjs +0 -86
  238. package/node_modules/node-datachannel/dist/cjs/polyfill/Events.cjs.map +0 -1
  239. package/node_modules/node-datachannel/dist/cjs/polyfill/Exception.cjs +0 -34
  240. package/node_modules/node-datachannel/dist/cjs/polyfill/Exception.cjs.map +0 -1
  241. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCCertificate.cjs +0 -34
  242. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCCertificate.cjs.map +0 -1
  243. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDataChannel.cjs +0 -214
  244. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDataChannel.cjs.map +0 -1
  245. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDtlsTransport.cjs +0 -53
  246. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCDtlsTransport.cjs.map +0 -1
  247. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCError.cjs +0 -83
  248. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCError.cjs.map +0 -1
  249. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceCandidate.cjs +0 -132
  250. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceCandidate.cjs.map +0 -1
  251. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceTransport.cjs +0 -94
  252. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCIceTransport.cjs.map +0 -1
  253. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCPeerConnection.cjs +0 -434
  254. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCPeerConnection.cjs.map +0 -1
  255. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSctpTransport.cjs +0 -59
  256. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSctpTransport.cjs.map +0 -1
  257. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSessionDescription.cjs +0 -45
  258. package/node_modules/node-datachannel/dist/cjs/polyfill/RTCSessionDescription.cjs.map +0 -1
  259. package/node_modules/node-datachannel/dist/cjs/polyfill/index.cjs +0 -42
  260. package/node_modules/node-datachannel/dist/cjs/polyfill/index.cjs.map +0 -1
  261. package/node_modules/node-datachannel/dist/esm/index.mjs +0 -8
  262. package/node_modules/node-datachannel/dist/esm/index.mjs.map +0 -1
  263. package/node_modules/node-datachannel/dist/esm/lib/datachannel-stream.mjs +0 -78
  264. package/node_modules/node-datachannel/dist/esm/lib/datachannel-stream.mjs.map +0 -1
  265. package/node_modules/node-datachannel/dist/esm/lib/index.mjs +0 -64
  266. package/node_modules/node-datachannel/dist/esm/lib/index.mjs.map +0 -1
  267. package/node_modules/node-datachannel/dist/esm/lib/node-datachannel.mjs +0 -78
  268. package/node_modules/node-datachannel/dist/esm/lib/node-datachannel.mjs.map +0 -1
  269. package/node_modules/node-datachannel/dist/esm/lib/websocket-server.mjs +0 -43
  270. package/node_modules/node-datachannel/dist/esm/lib/websocket-server.mjs.map +0 -1
  271. package/node_modules/node-datachannel/dist/esm/lib/websocket.mjs +0 -6
  272. package/node_modules/node-datachannel/dist/esm/lib/websocket.mjs.map +0 -1
  273. package/node_modules/node-datachannel/dist/esm/polyfill/Events.mjs +0 -82
  274. package/node_modules/node-datachannel/dist/esm/polyfill/Events.mjs.map +0 -1
  275. package/node_modules/node-datachannel/dist/esm/polyfill/Exception.mjs +0 -28
  276. package/node_modules/node-datachannel/dist/esm/polyfill/Exception.mjs.map +0 -1
  277. package/node_modules/node-datachannel/dist/esm/polyfill/RTCCertificate.mjs +0 -30
  278. package/node_modules/node-datachannel/dist/esm/polyfill/RTCCertificate.mjs.map +0 -1
  279. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDataChannel.mjs +0 -210
  280. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDataChannel.mjs.map +0 -1
  281. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDtlsTransport.mjs +0 -49
  282. package/node_modules/node-datachannel/dist/esm/polyfill/RTCDtlsTransport.mjs.map +0 -1
  283. package/node_modules/node-datachannel/dist/esm/polyfill/RTCError.mjs +0 -79
  284. package/node_modules/node-datachannel/dist/esm/polyfill/RTCError.mjs.map +0 -1
  285. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceCandidate.mjs +0 -128
  286. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceCandidate.mjs.map +0 -1
  287. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceTransport.mjs +0 -89
  288. package/node_modules/node-datachannel/dist/esm/polyfill/RTCIceTransport.mjs.map +0 -1
  289. package/node_modules/node-datachannel/dist/esm/polyfill/RTCPeerConnection.mjs +0 -430
  290. package/node_modules/node-datachannel/dist/esm/polyfill/RTCPeerConnection.mjs.map +0 -1
  291. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSctpTransport.mjs +0 -55
  292. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSctpTransport.mjs.map +0 -1
  293. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSessionDescription.mjs +0 -41
  294. package/node_modules/node-datachannel/dist/esm/polyfill/RTCSessionDescription.mjs.map +0 -1
  295. package/node_modules/node-datachannel/dist/esm/polyfill/index.mjs +0 -27
  296. package/node_modules/node-datachannel/dist/esm/polyfill/index.mjs.map +0 -1
  297. package/node_modules/node-datachannel/dist/types/lib/datachannel-stream.d.ts +0 -24
  298. package/node_modules/node-datachannel/dist/types/lib/index.d.ts +0 -241
  299. package/node_modules/node-datachannel/dist/types/lib/types.d.ts +0 -119
  300. package/node_modules/node-datachannel/dist/types/lib/websocket-server.d.ts +0 -13
  301. package/node_modules/node-datachannel/dist/types/lib/websocket.d.ts +0 -25
  302. package/node_modules/node-datachannel/dist/types/polyfill/Events.d.ts +0 -15
  303. package/node_modules/node-datachannel/dist/types/polyfill/RTCCertificate.d.ts +0 -9
  304. package/node_modules/node-datachannel/dist/types/polyfill/RTCDataChannel.d.ts +0 -29
  305. package/node_modules/node-datachannel/dist/types/polyfill/RTCDtlsTransport.d.ts +0 -15
  306. package/node_modules/node-datachannel/dist/types/polyfill/RTCError.d.ts +0 -17
  307. package/node_modules/node-datachannel/dist/types/polyfill/RTCIceCandidate.d.ts +0 -21
  308. package/node_modules/node-datachannel/dist/types/polyfill/RTCIceTransport.d.ts +0 -30
  309. package/node_modules/node-datachannel/dist/types/polyfill/RTCPeerConnection.d.ts +0 -64
  310. package/node_modules/node-datachannel/dist/types/polyfill/RTCSctpTransport.d.ts +0 -15
  311. package/node_modules/node-datachannel/dist/types/polyfill/RTCSessionDescription.d.ts +0 -10
  312. package/node_modules/node-datachannel/dist/types/polyfill/index.d.ts +0 -26
  313. package/node_modules/node-datachannel/jest.config.ts +0 -14
  314. package/node_modules/node-datachannel/package.json +0 -133
  315. package/node_modules/node-datachannel/rollup.config.mjs +0 -67
  316. package/node_modules/node-datachannel/src/cpp/data-channel-wrapper.cpp +0 -530
  317. package/node_modules/node-datachannel/src/cpp/data-channel-wrapper.h +0 -63
  318. package/node_modules/node-datachannel/src/cpp/ice-udp-mux-listener-wrapper.cpp +0 -172
  319. package/node_modules/node-datachannel/src/cpp/ice-udp-mux-listener-wrapper.h +0 -43
  320. package/node_modules/node-datachannel/src/cpp/main.cpp +0 -58
  321. package/node_modules/node-datachannel/src/cpp/media-audio-wrapper.cpp +0 -457
  322. package/node_modules/node-datachannel/src/cpp/media-audio-wrapper.h +0 -52
  323. package/node_modules/node-datachannel/src/cpp/media-av1packetization.cpp +0 -24
  324. package/node_modules/node-datachannel/src/cpp/media-av1packetization.h +0 -11
  325. package/node_modules/node-datachannel/src/cpp/media-av1rtppacketizer-wrapper.cpp +0 -126
  326. package/node_modules/node-datachannel/src/cpp/media-av1rtppacketizer-wrapper.h +0 -29
  327. package/node_modules/node-datachannel/src/cpp/media-direction.cpp +0 -43
  328. package/node_modules/node-datachannel/src/cpp/media-direction.h +0 -10
  329. package/node_modules/node-datachannel/src/cpp/media-h264rtppacketizer-wrapper.cpp +0 -126
  330. package/node_modules/node-datachannel/src/cpp/media-h264rtppacketizer-wrapper.h +0 -30
  331. package/node_modules/node-datachannel/src/cpp/media-h265rtppacketizer-wrapper.cpp +0 -126
  332. package/node_modules/node-datachannel/src/cpp/media-h265rtppacketizer-wrapper.h +0 -30
  333. package/node_modules/node-datachannel/src/cpp/media-h26xseparator.cpp +0 -32
  334. package/node_modules/node-datachannel/src/cpp/media-h26xseparator.h +0 -11
  335. package/node_modules/node-datachannel/src/cpp/media-mediahandler-helper.cpp +0 -31
  336. package/node_modules/node-datachannel/src/cpp/media-mediahandler-helper.h +0 -11
  337. package/node_modules/node-datachannel/src/cpp/media-pacinghandler-wrapper.cpp +0 -79
  338. package/node_modules/node-datachannel/src/cpp/media-pacinghandler-wrapper.h +0 -28
  339. package/node_modules/node-datachannel/src/cpp/media-rtcpnackresponder-wrapper.cpp +0 -68
  340. package/node_modules/node-datachannel/src/cpp/media-rtcpnackresponder-wrapper.h +0 -28
  341. package/node_modules/node-datachannel/src/cpp/media-rtcpreceivingsession-wrapper.cpp +0 -57
  342. package/node_modules/node-datachannel/src/cpp/media-rtcpreceivingsession-wrapper.h +0 -28
  343. package/node_modules/node-datachannel/src/cpp/media-rtcpsrreporter-wrapper.cpp +0 -93
  344. package/node_modules/node-datachannel/src/cpp/media-rtcpsrreporter-wrapper.h +0 -30
  345. package/node_modules/node-datachannel/src/cpp/media-rtppacketizationconfig-wrapper.cpp +0 -167
  346. package/node_modules/node-datachannel/src/cpp/media-rtppacketizationconfig-wrapper.h +0 -35
  347. package/node_modules/node-datachannel/src/cpp/media-rtppacketizer-wrapper.cpp +0 -95
  348. package/node_modules/node-datachannel/src/cpp/media-rtppacketizer-wrapper.h +0 -30
  349. package/node_modules/node-datachannel/src/cpp/media-track-wrapper.cpp +0 -458
  350. package/node_modules/node-datachannel/src/cpp/media-track-wrapper.h +0 -61
  351. package/node_modules/node-datachannel/src/cpp/media-video-wrapper.cpp +0 -526
  352. package/node_modules/node-datachannel/src/cpp/media-video-wrapper.h +0 -56
  353. package/node_modules/node-datachannel/src/cpp/peer-connection-wrapper.cpp +0 -1298
  354. package/node_modules/node-datachannel/src/cpp/peer-connection-wrapper.h +0 -89
  355. package/node_modules/node-datachannel/src/cpp/rtc-wrapper.cpp +0 -205
  356. package/node_modules/node-datachannel/src/cpp/rtc-wrapper.h +0 -24
  357. package/node_modules/node-datachannel/src/cpp/thread-safe-callback.cpp +0 -57
  358. package/node_modules/node-datachannel/src/cpp/thread-safe-callback.h +0 -47
  359. package/node_modules/node-datachannel/src/cpp/web-socket-server-wrapper.cpp +0 -275
  360. package/node_modules/node-datachannel/src/cpp/web-socket-server-wrapper.h +0 -41
  361. package/node_modules/node-datachannel/src/cpp/web-socket-wrapper.cpp +0 -796
  362. package/node_modules/node-datachannel/src/cpp/web-socket-wrapper.h +0 -63
  363. package/node_modules/node-datachannel/src/index.ts +0 -9
  364. package/node_modules/node-datachannel/src/lib/datachannel-stream.ts +0 -100
  365. package/node_modules/node-datachannel/src/lib/index.ts +0 -290
  366. package/node_modules/node-datachannel/src/lib/node-datachannel.ts +0 -84
  367. package/node_modules/node-datachannel/src/lib/types.ts +0 -169
  368. package/node_modules/node-datachannel/src/lib/websocket-server.ts +0 -37
  369. package/node_modules/node-datachannel/src/lib/websocket.ts +0 -26
  370. package/node_modules/node-datachannel/src/polyfill/Events.ts +0 -82
  371. package/node_modules/node-datachannel/src/polyfill/Exception.ts +0 -37
  372. package/node_modules/node-datachannel/src/polyfill/README.md +0 -41
  373. package/node_modules/node-datachannel/src/polyfill/RTCCertificate.ts +0 -21
  374. package/node_modules/node-datachannel/src/polyfill/RTCDataChannel.ts +0 -225
  375. package/node_modules/node-datachannel/src/polyfill/RTCDtlsTransport.ts +0 -46
  376. package/node_modules/node-datachannel/src/polyfill/RTCError.ts +0 -78
  377. package/node_modules/node-datachannel/src/polyfill/RTCIceCandidate.ts +0 -128
  378. package/node_modules/node-datachannel/src/polyfill/RTCIceTransport.ts +0 -90
  379. package/node_modules/node-datachannel/src/polyfill/RTCPeerConnection.ts +0 -527
  380. package/node_modules/node-datachannel/src/polyfill/RTCSctpTransport.ts +0 -51
  381. package/node_modules/node-datachannel/src/polyfill/RTCSessionDescription.ts +0 -41
  382. package/node_modules/node-datachannel/src/polyfill/index.ts +0 -38
  383. package/node_modules/node-datachannel/tsconfig.json +0 -21
  384. package/node_modules/p-limit/index.d.ts +0 -38
  385. package/node_modules/p-limit/index.js +0 -57
  386. package/node_modules/p-limit/license +0 -9
  387. package/node_modules/p-limit/package.json +0 -52
  388. package/node_modules/p-limit/readme.md +0 -101
  389. package/node_modules/p-locate/index.d.ts +0 -64
  390. package/node_modules/p-locate/index.js +0 -52
  391. package/node_modules/p-locate/license +0 -9
  392. package/node_modules/p-locate/package.json +0 -53
  393. package/node_modules/p-locate/readme.md +0 -90
  394. package/node_modules/p-try/index.d.ts +0 -39
  395. package/node_modules/p-try/index.js +0 -9
  396. package/node_modules/p-try/license +0 -9
  397. package/node_modules/p-try/package.json +0 -42
  398. package/node_modules/p-try/readme.md +0 -58
  399. package/node_modules/path-exists/index.d.ts +0 -28
  400. package/node_modules/path-exists/index.js +0 -23
  401. package/node_modules/path-exists/license +0 -9
  402. package/node_modules/path-exists/package.json +0 -39
  403. package/node_modules/path-exists/readme.md +0 -52
  404. package/node_modules/pngjs/.eslintignore +0 -2
  405. package/node_modules/pngjs/.eslintrc.json +0 -19
  406. package/node_modules/pngjs/.prettierignore +0 -3
  407. package/node_modules/pngjs/LICENSE +0 -20
  408. package/node_modules/pngjs/README.md +0 -429
  409. package/node_modules/pngjs/browser.js +0 -16096
  410. package/node_modules/pngjs/coverage/lcov-report/base.css +0 -354
  411. package/node_modules/pngjs/coverage/lcov-report/bitmapper.js.html +0 -881
  412. package/node_modules/pngjs/coverage/lcov-report/bitpacker.js.html +0 -554
  413. package/node_modules/pngjs/coverage/lcov-report/block-navigation.js +0 -77
  414. package/node_modules/pngjs/coverage/lcov-report/chunkstream.js.html +0 -647
  415. package/node_modules/pngjs/coverage/lcov-report/constants.js.html +0 -176
  416. package/node_modules/pngjs/coverage/lcov-report/crc.js.html +0 -200
  417. package/node_modules/pngjs/coverage/lcov-report/favicon.png +0 -0
  418. package/node_modules/pngjs/coverage/lcov-report/filter-pack.js.html +0 -593
  419. package/node_modules/pngjs/coverage/lcov-report/filter-parse-async.js.html +0 -152
  420. package/node_modules/pngjs/coverage/lcov-report/filter-parse-sync.js.html +0 -143
  421. package/node_modules/pngjs/coverage/lcov-report/filter-parse.js.html +0 -611
  422. package/node_modules/pngjs/coverage/lcov-report/format-normaliser.js.html +0 -359
  423. package/node_modules/pngjs/coverage/lcov-report/index.html +0 -426
  424. package/node_modules/pngjs/coverage/lcov-report/interlace.js.html +0 -365
  425. package/node_modules/pngjs/coverage/lcov-report/packer-async.js.html +0 -230
  426. package/node_modules/pngjs/coverage/lcov-report/packer-sync.js.html +0 -248
  427. package/node_modules/pngjs/coverage/lcov-report/packer.js.html +0 -467
  428. package/node_modules/pngjs/coverage/lcov-report/paeth-predictor.js.html +0 -128
  429. package/node_modules/pngjs/coverage/lcov-report/parser-async.js.html +0 -575
  430. package/node_modules/pngjs/coverage/lcov-report/parser-sync.js.html +0 -404
  431. package/node_modules/pngjs/coverage/lcov-report/parser.js.html +0 -950
  432. package/node_modules/pngjs/coverage/lcov-report/png-sync.js.html +0 -116
  433. package/node_modules/pngjs/coverage/lcov-report/png.js.html +0 -662
  434. package/node_modules/pngjs/coverage/lcov-report/prettify.css +0 -101
  435. package/node_modules/pngjs/coverage/lcov-report/prettify.js +0 -1007
  436. package/node_modules/pngjs/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  437. package/node_modules/pngjs/coverage/lcov-report/sorter.js +0 -169
  438. package/node_modules/pngjs/coverage/lcov-report/sync-inflate.js.html +0 -584
  439. package/node_modules/pngjs/coverage/lcov-report/sync-reader.js.html +0 -215
  440. package/node_modules/pngjs/coverage/lcov.info +0 -2177
  441. package/node_modules/pngjs/lib/bitmapper.js +0 -267
  442. package/node_modules/pngjs/lib/bitpacker.js +0 -158
  443. package/node_modules/pngjs/lib/chunkstream.js +0 -189
  444. package/node_modules/pngjs/lib/constants.js +0 -32
  445. package/node_modules/pngjs/lib/crc.js +0 -40
  446. package/node_modules/pngjs/lib/filter-pack.js +0 -171
  447. package/node_modules/pngjs/lib/filter-parse-async.js +0 -24
  448. package/node_modules/pngjs/lib/filter-parse-sync.js +0 -21
  449. package/node_modules/pngjs/lib/filter-parse.js +0 -177
  450. package/node_modules/pngjs/lib/format-normaliser.js +0 -93
  451. package/node_modules/pngjs/lib/interlace.js +0 -95
  452. package/node_modules/pngjs/lib/packer-async.js +0 -50
  453. package/node_modules/pngjs/lib/packer-sync.js +0 -56
  454. package/node_modules/pngjs/lib/packer.js +0 -129
  455. package/node_modules/pngjs/lib/paeth-predictor.js +0 -16
  456. package/node_modules/pngjs/lib/parser-async.js +0 -165
  457. package/node_modules/pngjs/lib/parser-sync.js +0 -108
  458. package/node_modules/pngjs/lib/parser.js +0 -290
  459. package/node_modules/pngjs/lib/png-sync.js +0 -12
  460. package/node_modules/pngjs/lib/png.js +0 -194
  461. package/node_modules/pngjs/lib/sync-inflate.js +0 -168
  462. package/node_modules/pngjs/lib/sync-reader.js +0 -45
  463. package/node_modules/pngjs/package.json +0 -73
  464. package/node_modules/qrcode/README.md +0 -770
  465. package/node_modules/qrcode/bin/qrcode +0 -159
  466. package/node_modules/qrcode/helper/to-sjis-browser.js +0 -2
  467. package/node_modules/qrcode/helper/to-sjis.js +0 -105
  468. package/node_modules/qrcode/lib/browser.js +0 -76
  469. package/node_modules/qrcode/lib/can-promise.js +0 -7
  470. package/node_modules/qrcode/lib/core/alignment-pattern.js +0 -83
  471. package/node_modules/qrcode/lib/core/alphanumeric-data.js +0 -59
  472. package/node_modules/qrcode/lib/core/bit-buffer.js +0 -37
  473. package/node_modules/qrcode/lib/core/bit-matrix.js +0 -65
  474. package/node_modules/qrcode/lib/core/byte-data.js +0 -30
  475. package/node_modules/qrcode/lib/core/error-correction-code.js +0 -135
  476. package/node_modules/qrcode/lib/core/error-correction-level.js +0 -50
  477. package/node_modules/qrcode/lib/core/finder-pattern.js +0 -22
  478. package/node_modules/qrcode/lib/core/format-info.js +0 -29
  479. package/node_modules/qrcode/lib/core/galois-field.js +0 -69
  480. package/node_modules/qrcode/lib/core/kanji-data.js +0 -54
  481. package/node_modules/qrcode/lib/core/mask-pattern.js +0 -234
  482. package/node_modules/qrcode/lib/core/mode.js +0 -167
  483. package/node_modules/qrcode/lib/core/numeric-data.js +0 -43
  484. package/node_modules/qrcode/lib/core/polynomial.js +0 -62
  485. package/node_modules/qrcode/lib/core/qrcode.js +0 -495
  486. package/node_modules/qrcode/lib/core/reed-solomon-encoder.js +0 -56
  487. package/node_modules/qrcode/lib/core/regex.js +0 -31
  488. package/node_modules/qrcode/lib/core/segments.js +0 -330
  489. package/node_modules/qrcode/lib/core/utils.js +0 -63
  490. package/node_modules/qrcode/lib/core/version-check.js +0 -9
  491. package/node_modules/qrcode/lib/core/version.js +0 -163
  492. package/node_modules/qrcode/lib/index.js +0 -12
  493. package/node_modules/qrcode/lib/renderer/canvas.js +0 -63
  494. package/node_modules/qrcode/lib/renderer/png.js +0 -78
  495. package/node_modules/qrcode/lib/renderer/svg-tag.js +0 -81
  496. package/node_modules/qrcode/lib/renderer/svg.js +0 -19
  497. package/node_modules/qrcode/lib/renderer/terminal/terminal-small.js +0 -85
  498. package/node_modules/qrcode/lib/renderer/terminal/terminal.js +0 -49
  499. package/node_modules/qrcode/lib/renderer/terminal.js +0 -9
  500. package/node_modules/qrcode/lib/renderer/utf8.js +0 -71
  501. package/node_modules/qrcode/lib/renderer/utils.js +0 -99
  502. package/node_modules/qrcode/lib/server.js +0 -138
  503. package/node_modules/qrcode/license +0 -10
  504. package/node_modules/qrcode/package.json +0 -77
  505. package/node_modules/require-directory/.jshintrc +0 -67
  506. package/node_modules/require-directory/.npmignore +0 -1
  507. package/node_modules/require-directory/.travis.yml +0 -3
  508. package/node_modules/require-directory/LICENSE +0 -22
  509. package/node_modules/require-directory/README.markdown +0 -184
  510. package/node_modules/require-directory/index.js +0 -86
  511. package/node_modules/require-directory/package.json +0 -40
  512. package/node_modules/require-main-filename/CHANGELOG.md +0 -26
  513. package/node_modules/require-main-filename/LICENSE.txt +0 -14
  514. package/node_modules/require-main-filename/README.md +0 -26
  515. package/node_modules/require-main-filename/index.js +0 -18
  516. package/node_modules/require-main-filename/package.json +0 -35
  517. package/node_modules/semver/LICENSE +0 -15
  518. package/node_modules/semver/README.md +0 -680
  519. package/node_modules/semver/bin/semver.js +0 -195
  520. package/node_modules/semver/classes/comparator.js +0 -143
  521. package/node_modules/semver/classes/index.js +0 -7
  522. package/node_modules/semver/classes/range.js +0 -577
  523. package/node_modules/semver/classes/semver.js +0 -350
  524. package/node_modules/semver/functions/clean.js +0 -8
  525. package/node_modules/semver/functions/cmp.js +0 -54
  526. package/node_modules/semver/functions/coerce.js +0 -62
  527. package/node_modules/semver/functions/compare-build.js +0 -9
  528. package/node_modules/semver/functions/compare-loose.js +0 -5
  529. package/node_modules/semver/functions/compare.js +0 -7
  530. package/node_modules/semver/functions/diff.js +0 -60
  531. package/node_modules/semver/functions/eq.js +0 -5
  532. package/node_modules/semver/functions/gt.js +0 -5
  533. package/node_modules/semver/functions/gte.js +0 -5
  534. package/node_modules/semver/functions/inc.js +0 -21
  535. package/node_modules/semver/functions/lt.js +0 -5
  536. package/node_modules/semver/functions/lte.js +0 -5
  537. package/node_modules/semver/functions/major.js +0 -5
  538. package/node_modules/semver/functions/minor.js +0 -5
  539. package/node_modules/semver/functions/neq.js +0 -5
  540. package/node_modules/semver/functions/parse.js +0 -18
  541. package/node_modules/semver/functions/patch.js +0 -5
  542. package/node_modules/semver/functions/prerelease.js +0 -8
  543. package/node_modules/semver/functions/rcompare.js +0 -5
  544. package/node_modules/semver/functions/rsort.js +0 -5
  545. package/node_modules/semver/functions/satisfies.js +0 -12
  546. package/node_modules/semver/functions/sort.js +0 -5
  547. package/node_modules/semver/functions/truncate.js +0 -48
  548. package/node_modules/semver/functions/valid.js +0 -8
  549. package/node_modules/semver/index.js +0 -93
  550. package/node_modules/semver/internal/constants.js +0 -37
  551. package/node_modules/semver/internal/debug.js +0 -11
  552. package/node_modules/semver/internal/identifiers.js +0 -29
  553. package/node_modules/semver/internal/lrucache.js +0 -42
  554. package/node_modules/semver/internal/parse-options.js +0 -17
  555. package/node_modules/semver/internal/re.js +0 -223
  556. package/node_modules/semver/package.json +0 -78
  557. package/node_modules/semver/preload.js +0 -4
  558. package/node_modules/semver/range.bnf +0 -17
  559. package/node_modules/semver/ranges/gtr.js +0 -6
  560. package/node_modules/semver/ranges/intersects.js +0 -9
  561. package/node_modules/semver/ranges/ltr.js +0 -6
  562. package/node_modules/semver/ranges/max-satisfying.js +0 -27
  563. package/node_modules/semver/ranges/min-satisfying.js +0 -26
  564. package/node_modules/semver/ranges/min-version.js +0 -63
  565. package/node_modules/semver/ranges/outside.js +0 -82
  566. package/node_modules/semver/ranges/simplify.js +0 -49
  567. package/node_modules/semver/ranges/subset.js +0 -249
  568. package/node_modules/semver/ranges/to-comparators.js +0 -10
  569. package/node_modules/semver/ranges/valid.js +0 -13
  570. package/node_modules/set-blocking/CHANGELOG.md +0 -26
  571. package/node_modules/set-blocking/LICENSE.txt +0 -14
  572. package/node_modules/set-blocking/README.md +0 -31
  573. package/node_modules/set-blocking/index.js +0 -7
  574. package/node_modules/set-blocking/package.json +0 -42
  575. package/node_modules/sharp/LICENSE +0 -191
  576. package/node_modules/sharp/README.md +0 -112
  577. package/node_modules/sharp/dist/channel.cjs +0 -177
  578. package/node_modules/sharp/dist/channel.mjs +0 -177
  579. package/node_modules/sharp/dist/colour.cjs +0 -199
  580. package/node_modules/sharp/dist/colour.mjs +0 -199
  581. package/node_modules/sharp/dist/composite.cjs +0 -213
  582. package/node_modules/sharp/dist/composite.mjs +0 -213
  583. package/node_modules/sharp/dist/constructor.cjs +0 -511
  584. package/node_modules/sharp/dist/constructor.mjs +0 -511
  585. package/node_modules/sharp/dist/index.cjs +0 -25
  586. package/node_modules/sharp/dist/index.d.cts +0 -1999
  587. package/node_modules/sharp/dist/index.d.mts +0 -2046
  588. package/node_modules/sharp/dist/index.mjs +0 -25
  589. package/node_modules/sharp/dist/input.cjs +0 -819
  590. package/node_modules/sharp/dist/input.mjs +0 -819
  591. package/node_modules/sharp/dist/is.cjs +0 -143
  592. package/node_modules/sharp/dist/is.mjs +0 -143
  593. package/node_modules/sharp/dist/libvips.cjs +0 -212
  594. package/node_modules/sharp/dist/libvips.mjs +0 -212
  595. package/node_modules/sharp/dist/operation.cjs +0 -1002
  596. package/node_modules/sharp/dist/operation.mjs +0 -1002
  597. package/node_modules/sharp/dist/output.cjs +0 -1785
  598. package/node_modules/sharp/dist/output.mjs +0 -1785
  599. package/node_modules/sharp/dist/resize.cjs +0 -617
  600. package/node_modules/sharp/dist/resize.mjs +0 -617
  601. package/node_modules/sharp/dist/sharp.cjs +0 -174
  602. package/node_modules/sharp/dist/sharp.mjs +0 -174
  603. package/node_modules/sharp/dist/utility.cjs +0 -301
  604. package/node_modules/sharp/dist/utility.mjs +0 -301
  605. package/node_modules/sharp/install/build.js +0 -38
  606. package/node_modules/sharp/lib/index.d.ts +0 -1999
  607. package/node_modules/sharp/package.json +0 -227
  608. package/node_modules/sharp/src/binding.gyp +0 -303
  609. package/node_modules/sharp/src/common.cc +0 -1186
  610. package/node_modules/sharp/src/common.h +0 -421
  611. package/node_modules/sharp/src/metadata.cc +0 -404
  612. package/node_modules/sharp/src/metadata.h +0 -95
  613. package/node_modules/sharp/src/operations.cc +0 -516
  614. package/node_modules/sharp/src/operations.h +0 -137
  615. package/node_modules/sharp/src/pipeline.cc +0 -1948
  616. package/node_modules/sharp/src/pipeline.h +0 -422
  617. package/node_modules/sharp/src/sharp.cc +0 -43
  618. package/node_modules/sharp/src/stats.cc +0 -186
  619. package/node_modules/sharp/src/stats.h +0 -62
  620. package/node_modules/sharp/src/utilities.cc +0 -289
  621. package/node_modules/sharp/src/utilities.h +0 -22
  622. package/node_modules/string-width/index.d.ts +0 -29
  623. package/node_modules/string-width/index.js +0 -47
  624. package/node_modules/string-width/license +0 -9
  625. package/node_modules/string-width/package.json +0 -56
  626. package/node_modules/string-width/readme.md +0 -50
  627. package/node_modules/strip-ansi/index.d.ts +0 -17
  628. package/node_modules/strip-ansi/index.js +0 -4
  629. package/node_modules/strip-ansi/license +0 -9
  630. package/node_modules/strip-ansi/package.json +0 -54
  631. package/node_modules/strip-ansi/readme.md +0 -46
  632. package/node_modules/which-module/LICENSE +0 -13
  633. package/node_modules/which-module/README.md +0 -58
  634. package/node_modules/which-module/index.js +0 -9
  635. package/node_modules/which-module/package.json +0 -41
  636. package/node_modules/wrap-ansi/index.js +0 -186
  637. package/node_modules/wrap-ansi/license +0 -9
  638. package/node_modules/wrap-ansi/package.json +0 -61
  639. package/node_modules/wrap-ansi/readme.md +0 -97
  640. package/node_modules/ws/LICENSE +0 -20
  641. package/node_modules/ws/README.md +0 -548
  642. package/node_modules/ws/browser.js +0 -8
  643. package/node_modules/ws/index.js +0 -22
  644. package/node_modules/ws/lib/buffer-util.js +0 -131
  645. package/node_modules/ws/lib/constants.js +0 -19
  646. package/node_modules/ws/lib/event-target.js +0 -292
  647. package/node_modules/ws/lib/extension.js +0 -203
  648. package/node_modules/ws/lib/limiter.js +0 -55
  649. package/node_modules/ws/lib/permessage-deflate.js +0 -530
  650. package/node_modules/ws/lib/receiver.js +0 -743
  651. package/node_modules/ws/lib/sender.js +0 -607
  652. package/node_modules/ws/lib/stream.js +0 -161
  653. package/node_modules/ws/lib/subprotocol.js +0 -62
  654. package/node_modules/ws/lib/validation.js +0 -152
  655. package/node_modules/ws/lib/websocket-server.js +0 -562
  656. package/node_modules/ws/lib/websocket.js +0 -1407
  657. package/node_modules/ws/package.json +0 -74
  658. package/node_modules/ws/wrapper.mjs +0 -21
  659. package/node_modules/y18n/CHANGELOG.md +0 -35
  660. package/node_modules/y18n/LICENSE +0 -13
  661. package/node_modules/y18n/README.md +0 -109
  662. package/node_modules/y18n/index.js +0 -188
  663. package/node_modules/y18n/package.json +0 -39
  664. package/node_modules/yargs/CHANGELOG.md +0 -420
  665. package/node_modules/yargs/LICENSE +0 -21
  666. package/node_modules/yargs/README.md +0 -140
  667. package/node_modules/yargs/build/lib/apply-extends.d.ts +0 -2
  668. package/node_modules/yargs/build/lib/apply-extends.js +0 -65
  669. package/node_modules/yargs/build/lib/argsert.d.ts +0 -2
  670. package/node_modules/yargs/build/lib/argsert.js +0 -65
  671. package/node_modules/yargs/build/lib/command.d.ts +0 -64
  672. package/node_modules/yargs/build/lib/command.js +0 -416
  673. package/node_modules/yargs/build/lib/common-types.d.ts +0 -36
  674. package/node_modules/yargs/build/lib/common-types.js +0 -25
  675. package/node_modules/yargs/build/lib/completion-templates.d.ts +0 -2
  676. package/node_modules/yargs/build/lib/completion-templates.js +0 -50
  677. package/node_modules/yargs/build/lib/completion.d.ts +0 -21
  678. package/node_modules/yargs/build/lib/completion.js +0 -135
  679. package/node_modules/yargs/build/lib/is-promise.d.ts +0 -1
  680. package/node_modules/yargs/build/lib/is-promise.js +0 -9
  681. package/node_modules/yargs/build/lib/levenshtein.d.ts +0 -1
  682. package/node_modules/yargs/build/lib/levenshtein.js +0 -58
  683. package/node_modules/yargs/build/lib/middleware.d.ts +0 -10
  684. package/node_modules/yargs/build/lib/middleware.js +0 -57
  685. package/node_modules/yargs/build/lib/obj-filter.d.ts +0 -1
  686. package/node_modules/yargs/build/lib/obj-filter.js +0 -14
  687. package/node_modules/yargs/build/lib/parse-command.d.ts +0 -11
  688. package/node_modules/yargs/build/lib/parse-command.js +0 -36
  689. package/node_modules/yargs/build/lib/process-argv.d.ts +0 -2
  690. package/node_modules/yargs/build/lib/process-argv.js +0 -31
  691. package/node_modules/yargs/build/lib/usage.d.ts +0 -49
  692. package/node_modules/yargs/build/lib/usage.js +0 -540
  693. package/node_modules/yargs/build/lib/validation.d.ts +0 -34
  694. package/node_modules/yargs/build/lib/validation.js +0 -330
  695. package/node_modules/yargs/build/lib/yargs.d.ts +0 -274
  696. package/node_modules/yargs/build/lib/yargs.js +0 -1190
  697. package/node_modules/yargs/build/lib/yerror.d.ts +0 -4
  698. package/node_modules/yargs/build/lib/yerror.js +0 -11
  699. package/node_modules/yargs/index.js +0 -40
  700. package/node_modules/yargs/locales/be.json +0 -46
  701. package/node_modules/yargs/locales/de.json +0 -46
  702. package/node_modules/yargs/locales/en.json +0 -51
  703. package/node_modules/yargs/locales/es.json +0 -46
  704. package/node_modules/yargs/locales/fi.json +0 -49
  705. package/node_modules/yargs/locales/fr.json +0 -53
  706. package/node_modules/yargs/locales/hi.json +0 -49
  707. package/node_modules/yargs/locales/hu.json +0 -46
  708. package/node_modules/yargs/locales/id.json +0 -50
  709. package/node_modules/yargs/locales/it.json +0 -46
  710. package/node_modules/yargs/locales/ja.json +0 -51
  711. package/node_modules/yargs/locales/ko.json +0 -49
  712. package/node_modules/yargs/locales/nb.json +0 -44
  713. package/node_modules/yargs/locales/nl.json +0 -49
  714. package/node_modules/yargs/locales/nn.json +0 -44
  715. package/node_modules/yargs/locales/pirate.json +0 -13
  716. package/node_modules/yargs/locales/pl.json +0 -49
  717. package/node_modules/yargs/locales/pt.json +0 -45
  718. package/node_modules/yargs/locales/pt_BR.json +0 -48
  719. package/node_modules/yargs/locales/ru.json +0 -46
  720. package/node_modules/yargs/locales/th.json +0 -46
  721. package/node_modules/yargs/locales/tr.json +0 -48
  722. package/node_modules/yargs/locales/zh_CN.json +0 -48
  723. package/node_modules/yargs/locales/zh_TW.json +0 -47
  724. package/node_modules/yargs/package.json +0 -92
  725. package/node_modules/yargs/yargs.js +0 -14
  726. package/node_modules/yargs-parser/CHANGELOG.md +0 -601
  727. package/node_modules/yargs-parser/LICENSE.txt +0 -14
  728. package/node_modules/yargs-parser/README.md +0 -449
  729. package/node_modules/yargs-parser/index.js +0 -1032
  730. package/node_modules/yargs-parser/lib/tokenize-arg-string.js +0 -40
  731. package/node_modules/yargs-parser/package.json +0 -46
@@ -1,105 +1,105 @@
1
- import fs from 'node:fs';
2
- import { createHash } from 'node:crypto';
3
- import { fileURLToPath } from 'node:url';
4
- import mysql from 'mysql2/promise';
5
- import { deviceStore } from './device-store.mjs';
6
- import { relayAdminState } from './admin-state.mjs';
7
- import { relaySchemaVersions } from '../../database/versions.mjs';
8
-
9
- const sqlTime = value => value.replace('T', ' ').replace(/Z$/, '');
10
- const isoTime = value => value.replace(' ', 'T') + 'Z';
11
-
12
- export async function openRelayMysql(configFile, initialMaxRelaySessions) {
13
- const config = JSON.parse(fs.readFileSync(configFile, 'utf8'));
14
- if (!config.database || !config.user || !config.password || !(config.socketPath || config.host)) {
15
- throw new Error('Incomplete relay MySQL configuration');
16
- }
17
- const pool = mysql.createPool({ ...config, waitForConnections: true, connectionLimit: 4,
18
- namedPlaceholders: false, dateStrings: true, timezone: 'Z', multipleStatements: false });
19
- try {
20
- const [versions] = await pool.query('SELECT version, sha256 FROM schema_migrations');
21
- const knownVersions = relaySchemaVersions;
22
- if (!versions.some(row => row.version === knownVersions[0]) || versions.length > knownVersions.length) throw new Error('Unexpected relay database schema');
23
- for (const row of versions) {
24
- if (!knownVersions.includes(row.version)) throw new Error('Unexpected relay database schema');
25
- const source = fs.readFileSync(fileURLToPath(new URL(`../../database/${row.version}.sql`, import.meta.url)));
26
- if (row.sha256 !== createHash('sha256').update(source).digest('hex')) throw new Error(`Unexpected relay database schema: ${row.version}`);
27
- }
28
- const [computers] = await pool.query('SELECT id, host_hash, status, revision, created_at, updated_at FROM computers');
29
- const [clients] = await pool.query('SELECT computer_id, client_id, credential_hash, created_at, updated_at FROM mobile_authorizations ORDER BY created_at');
30
- const [official] = await pool.query('SELECT computer_id, environment_id, name, hostname, updated_at FROM official_computers');
31
- const records = new Map(computers.map(row => [row.id, { id: row.id, hostHash: row.host_hash, status: row.status,
32
- revision: Number(row.revision), createdAt: isoTime(row.created_at), updatedAt: isoTime(row.updated_at), clients: [] }]));
33
- for (const row of clients) {
34
- const record = records.get(row.computer_id);
35
- if (!record) throw new Error('Orphan mobile authorization');
36
- record.clients.push({ id: row.client_id, hash: row.credential_hash,
37
- createdAt: isoTime(row.created_at), updatedAt: isoTime(row.updated_at) });
38
- }
39
- for (const row of official) {
40
- const record = records.get(row.computer_id);
41
- if (!record) throw new Error('Orphan official computer');
42
- record.officialComputer = { environmentId: row.environment_id, name: row.name,
43
- hostname: row.hostname, updatedAt: isoTime(row.updated_at) };
44
- }
45
- const validator = deviceStore();
46
- for (const record of records.values()) validator.save(record);
47
-
48
- const [settings] = await pool.query('SELECT max_relay_sessions FROM relay_settings WHERE id = 1');
49
- if (settings.length !== 1) throw new Error('Missing relay settings');
50
- const [rows] = await pool.query('SELECT id, title, message, status, created_at, updated_at, published_at FROM announcements ORDER BY created_at DESC');
51
- const announcements = rows.map(row => ({ id: row.id, title: row.title, message: row.message, status: row.status,
52
- createdAt: isoTime(row.created_at), updatedAt: isoTime(row.updated_at),
53
- publishedAt: row.published_at ? isoTime(row.published_at) : null }));
54
- const active = announcements.find(item => item.status === 'active');
55
- const initial = { version: 3, maxRelaySessions: settings[0].max_relay_sessions, announcements,
56
- announcement: active ? { id: active.id, title: active.title, message: active.message, publishedAt: active.publishedAt } : null };
57
- const admin = relayAdminState(undefined, initialMaxRelaySessions, { initial, persist: async next => {
58
- const connection = await pool.getConnection();
59
- try {
60
- await connection.beginTransaction();
61
- await connection.execute('UPDATE relay_settings SET max_relay_sessions = ?, updated_at = UTC_TIMESTAMP(3) WHERE id = 1', [next.maxRelaySessions]);
62
- await connection.query('DELETE FROM announcements');
63
- for (const item of next.announcements) await connection.execute(
64
- 'INSERT INTO announcements (id,title,message,status,created_at,updated_at,published_at) VALUES (?,?,?,?,?,?,?)',
65
- [item.id, item.title, item.message, item.status, sqlTime(item.createdAt), sqlTime(item.updatedAt),
66
- item.publishedAt ? sqlTime(item.publishedAt) : null]);
67
- await connection.commit();
68
- } catch (error) { await connection.rollback(); throw error; }
69
- finally { connection.release(); }
70
- } });
71
- return {
72
- pool,
73
- schemaVersions: versions.map(row => row.version),
74
- devices: {
75
- entries: () => [...records.values()],
76
- async save(record) {
77
- validator.save(record);
78
- const connection = await pool.getConnection();
79
- try {
80
- await connection.beginTransaction();
81
- await connection.execute(`INSERT INTO computers (id,host_hash,status,revision,created_at,updated_at)
82
- VALUES (?,?,?,?,?,?) ON DUPLICATE KEY UPDATE host_hash=VALUES(host_hash),status=VALUES(status),
83
- revision=VALUES(revision),updated_at=VALUES(updated_at)`,
84
- [record.id, record.hostHash, record.status, record.revision, sqlTime(record.createdAt), sqlTime(record.updatedAt)]);
85
- await connection.execute('DELETE FROM mobile_authorizations WHERE computer_id = ?', [record.id]);
86
- for (const client of record.clients) await connection.execute(
87
- 'INSERT INTO mobile_authorizations (computer_id,client_id,credential_hash,created_at,updated_at) VALUES (?,?,?,?,?)',
88
- [record.id, client.id, client.hash, sqlTime(client.createdAt), sqlTime(client.updatedAt)]);
89
- if (record.officialComputer) {
90
- const item = record.officialComputer;
91
- await connection.execute(`INSERT INTO official_computers (computer_id,environment_id,name,hostname,updated_at)
92
- VALUES (?,?,?,?,?) ON DUPLICATE KEY UPDATE environment_id=VALUES(environment_id),name=VALUES(name),
93
- hostname=VALUES(hostname),updated_at=VALUES(updated_at)`,
94
- [record.id, item.environmentId, item.name, item.hostname, sqlTime(item.updatedAt)]);
95
- }
96
- await connection.commit(); records.set(record.id, record);
97
- } catch (error) { await connection.rollback(); throw error; }
98
- finally { connection.release(); }
99
- },
100
- },
101
- admin,
102
- close: () => pool.end(),
103
- };
104
- } catch (error) { await pool.end(); throw error; }
105
- }
1
+ import fs from 'node:fs';
2
+ import { createHash } from 'node:crypto';
3
+ import { fileURLToPath } from 'node:url';
4
+ import mysql from 'mysql2/promise';
5
+ import { deviceStore } from './device-store.mjs';
6
+ import { relayAdminState } from './admin-state.mjs';
7
+ import { relaySchemaVersions } from '../../database/versions.mjs';
8
+
9
+ const sqlTime = value => value.replace('T', ' ').replace(/Z$/, '');
10
+ const isoTime = value => value.replace(' ', 'T') + 'Z';
11
+
12
+ export async function openRelayMysql(configFile, initialMaxRelaySessions) {
13
+ const config = JSON.parse(fs.readFileSync(configFile, 'utf8'));
14
+ if (!config.database || !config.user || !config.password || !(config.socketPath || config.host)) {
15
+ throw new Error('Incomplete relay MySQL configuration');
16
+ }
17
+ const pool = mysql.createPool({ ...config, waitForConnections: true, connectionLimit: 4,
18
+ namedPlaceholders: false, dateStrings: true, timezone: 'Z', multipleStatements: false });
19
+ try {
20
+ const [versions] = await pool.query('SELECT version, sha256 FROM schema_migrations');
21
+ const knownVersions = relaySchemaVersions;
22
+ if (!versions.some(row => row.version === knownVersions[0]) || versions.length > knownVersions.length) throw new Error('Unexpected relay database schema');
23
+ for (const row of versions) {
24
+ if (!knownVersions.includes(row.version)) throw new Error('Unexpected relay database schema');
25
+ const source = fs.readFileSync(fileURLToPath(new URL(`../../database/${row.version}.sql`, import.meta.url)));
26
+ if (row.sha256 !== createHash('sha256').update(source).digest('hex')) throw new Error(`Unexpected relay database schema: ${row.version}`);
27
+ }
28
+ const [computers] = await pool.query('SELECT id, host_hash, status, revision, created_at, updated_at FROM computers');
29
+ const [clients] = await pool.query('SELECT computer_id, client_id, credential_hash, created_at, updated_at FROM mobile_authorizations ORDER BY created_at');
30
+ const [official] = await pool.query('SELECT computer_id, environment_id, name, hostname, updated_at FROM official_computers');
31
+ const records = new Map(computers.map(row => [row.id, { id: row.id, hostHash: row.host_hash, status: row.status,
32
+ revision: Number(row.revision), createdAt: isoTime(row.created_at), updatedAt: isoTime(row.updated_at), clients: [] }]));
33
+ for (const row of clients) {
34
+ const record = records.get(row.computer_id);
35
+ if (!record) throw new Error('Orphan mobile authorization');
36
+ record.clients.push({ id: row.client_id, hash: row.credential_hash,
37
+ createdAt: isoTime(row.created_at), updatedAt: isoTime(row.updated_at) });
38
+ }
39
+ for (const row of official) {
40
+ const record = records.get(row.computer_id);
41
+ if (!record) throw new Error('Orphan official computer');
42
+ record.officialComputer = { environmentId: row.environment_id, name: row.name,
43
+ hostname: row.hostname, updatedAt: isoTime(row.updated_at) };
44
+ }
45
+ const validator = deviceStore();
46
+ for (const record of records.values()) validator.save(record);
47
+
48
+ const [settings] = await pool.query('SELECT max_relay_sessions FROM relay_settings WHERE id = 1');
49
+ if (settings.length !== 1) throw new Error('Missing relay settings');
50
+ const [rows] = await pool.query('SELECT id, title, message, status, created_at, updated_at, published_at FROM announcements ORDER BY created_at DESC');
51
+ const announcements = rows.map(row => ({ id: row.id, title: row.title, message: row.message, status: row.status,
52
+ createdAt: isoTime(row.created_at), updatedAt: isoTime(row.updated_at),
53
+ publishedAt: row.published_at ? isoTime(row.published_at) : null }));
54
+ const active = announcements.find(item => item.status === 'active');
55
+ const initial = { version: 3, maxRelaySessions: settings[0].max_relay_sessions, announcements,
56
+ announcement: active ? { id: active.id, title: active.title, message: active.message, publishedAt: active.publishedAt } : null };
57
+ const admin = relayAdminState(undefined, initialMaxRelaySessions, { initial, persist: async next => {
58
+ const connection = await pool.getConnection();
59
+ try {
60
+ await connection.beginTransaction();
61
+ await connection.execute('UPDATE relay_settings SET max_relay_sessions = ?, updated_at = UTC_TIMESTAMP(3) WHERE id = 1', [next.maxRelaySessions]);
62
+ await connection.query('DELETE FROM announcements');
63
+ for (const item of next.announcements) await connection.execute(
64
+ 'INSERT INTO announcements (id,title,message,status,created_at,updated_at,published_at) VALUES (?,?,?,?,?,?,?)',
65
+ [item.id, item.title, item.message, item.status, sqlTime(item.createdAt), sqlTime(item.updatedAt),
66
+ item.publishedAt ? sqlTime(item.publishedAt) : null]);
67
+ await connection.commit();
68
+ } catch (error) { await connection.rollback(); throw error; }
69
+ finally { connection.release(); }
70
+ } });
71
+ return {
72
+ pool,
73
+ schemaVersions: versions.map(row => row.version),
74
+ devices: {
75
+ entries: () => [...records.values()],
76
+ async save(record) {
77
+ validator.save(record);
78
+ const connection = await pool.getConnection();
79
+ try {
80
+ await connection.beginTransaction();
81
+ await connection.execute(`INSERT INTO computers (id,host_hash,status,revision,created_at,updated_at)
82
+ VALUES (?,?,?,?,?,?) ON DUPLICATE KEY UPDATE host_hash=VALUES(host_hash),status=VALUES(status),
83
+ revision=VALUES(revision),updated_at=VALUES(updated_at)`,
84
+ [record.id, record.hostHash, record.status, record.revision, sqlTime(record.createdAt), sqlTime(record.updatedAt)]);
85
+ await connection.execute('DELETE FROM mobile_authorizations WHERE computer_id = ?', [record.id]);
86
+ for (const client of record.clients) await connection.execute(
87
+ 'INSERT INTO mobile_authorizations (computer_id,client_id,credential_hash,created_at,updated_at) VALUES (?,?,?,?,?)',
88
+ [record.id, client.id, client.hash, sqlTime(client.createdAt), sqlTime(client.updatedAt)]);
89
+ if (record.officialComputer) {
90
+ const item = record.officialComputer;
91
+ await connection.execute(`INSERT INTO official_computers (computer_id,environment_id,name,hostname,updated_at)
92
+ VALUES (?,?,?,?,?) ON DUPLICATE KEY UPDATE environment_id=VALUES(environment_id),name=VALUES(name),
93
+ hostname=VALUES(hostname),updated_at=VALUES(updated_at)`,
94
+ [record.id, item.environmentId, item.name, item.hostname, sqlTime(item.updatedAt)]);
95
+ }
96
+ await connection.commit(); records.set(record.id, record);
97
+ } catch (error) { await connection.rollback(); throw error; }
98
+ finally { connection.release(); }
99
+ },
100
+ },
101
+ admin,
102
+ close: () => pool.end(),
103
+ };
104
+ } catch (error) { await pool.end(); throw error; }
105
+ }
@@ -8,7 +8,7 @@ const HIGH_WATER = 1024 * 1024;
8
8
  const LOW_WATER = 512 * 1024;
9
9
  const MAX_QUEUED = 16 * 1024 * 1024;
10
10
 
11
- export async function createP2pProbe({ signal, report = () => {}, onData = () => {}, onFileChannel, iceServers = [] }) {
11
+ export async function createP2pProbe({ signal, report = () => {}, onData = () => {}, onFileChannel, iceServers = [], purpose = '' }) {
12
12
  if (!validProbeIceServers(iceServers)) throw new Error('Invalid probe STUN configuration');
13
13
  const { default: rtc } = await import('node-datachannel');
14
14
  const peer = new rtc.PeerConnection('code-relax-probe', {
@@ -25,18 +25,23 @@ export async function createP2pProbe({ signal, report = () => {}, onData = () =>
25
25
  const outbound = [];
26
26
  const files = new Map();
27
27
  const nonce = randomUUID();
28
+ const idle = new P2pDataFramer.IdleWatch(message => {
29
+ if (!channel.sendMessage(JSON.stringify(message))) throw new Error('Idle probe send failed');
30
+ }, () => finish('idle-timeout'));
28
31
  const timer = setTimeout(() => finish(verified ? 'closed' : 'timeout'), 15000);
29
32
  function finish(state) {
30
33
  if (closed) return;
31
- closed = true; clearTimeout(timer); candidates = []; queuedBytes = 0; outbound.length = 0; framer.reset();
34
+ closed = true; clearTimeout(timer); idle.close(); candidates = []; queuedBytes = 0; outbound.length = 0; framer.reset();
32
35
  for (const socket of files.values()) socket.close(1011);
33
36
  files.clear();
34
37
  const summary = diagnostic.snapshot(state);
35
38
  channel?.close(); peer.close(); report(state, summary);
39
+ signal({ kind: 'close' });
36
40
  }
37
41
  function verify() {
38
42
  if (verified || !pingReceived || !pongReceived) return;
39
43
  verified = true; clearTimeout(timer);
44
+ if (remoteDirect) idle.received();
40
45
  report(remoteDirect ? 'direct' : 'verified', diagnostic.snapshot('verified'));
41
46
  pump();
42
47
  for (const raw of files.keys()) activateFile(raw);
@@ -48,9 +53,9 @@ export async function createP2pProbe({ signal, report = () => {}, onData = () =>
48
53
  raw.sendMessage('{"type":"rtc-file-ready"}');
49
54
  }
50
55
  peer.onDataChannel(raw => {
51
- if (closed || !onFileChannel || raw.getLabel() !== 'code-relax-file-v1' || files.size >= 4) { raw.close(); return; }
56
+ if (closed || purpose !== 'file' || !onFileChannel || raw.getLabel() !== 'code-relax-file-v1' || files.size >= 4) { raw.close(); return; }
52
57
  const socket = new FileChannel({ buffered: () => raw.bufferedAmount(),
53
- send: value => typeof value === 'string' ? raw.sendMessage(value) : raw.sendMessageBinary(value), close: () => raw.close() });
58
+ send: value => typeof value === 'string' ? raw.sendMessage(value) : raw.sendMessageBinary(value), close: () => raw.close(), received: () => idle.received() });
54
59
  files.set(raw, socket);
55
60
  socket.addEventListener('close', () => files.delete(raw));
56
61
  try { onFileChannel(socket); }
@@ -76,7 +81,7 @@ export async function createP2pProbe({ signal, report = () => {}, onData = () =>
76
81
  } catch { diagnostic.error = 'channel'; finish('failed'); }
77
82
  }
78
83
  function sendData(payload) {
79
- if (!verified || !remoteDirect || closed || !channel?.isOpen()) return false;
84
+ if (!verified || !remoteDirect || closed || purpose === 'file' || !channel?.isOpen()) return false;
80
85
  let item;
81
86
  try { item = framer.create(payload, `${dataPrefix}-${++dataSerial}`); }
82
87
  catch { return false; }
@@ -98,9 +103,11 @@ export async function createP2pProbe({ signal, report = () => {}, onData = () =>
98
103
  try {
99
104
  if (closed || typeof value !== 'string' || value.length > 65536) throw new Error('Invalid P2P frame');
100
105
  const message = JSON.parse(value);
106
+ if (verified && remoteDirect && idle.accept(message)) return;
101
107
  const data = framer.accept(message);
102
108
  if (data.handled) {
103
- if (!verified || !remoteDirect) throw new Error('P2P transport not verified');
109
+ if (!verified || !remoteDirect || purpose === 'file') throw new Error('P2P transport not verified');
110
+ idle.received();
104
111
  if (data.complete) onData(data.payload);
105
112
  return;
106
113
  }
@@ -1,4 +1,6 @@
1
1
  import { privacyPage } from './privacy-page.mjs';
2
+ import { createAndroidReleaseHandler } from './android-releases.mjs';
3
+ import { androidReleaseStorage } from '../../relay-admin/android-release-storage.mjs';
2
4
  import { longPairing } from './long-pairing.mjs';
3
5
  import http from 'node:http';
4
6
  import fs from 'node:fs';
@@ -21,7 +23,10 @@ import { relayDiagnostics } from './diagnostics.mjs';
21
23
  export async function startSelfRelay({ port = 0, hostKey = secret(), pairingTtlMs = 120000,
22
24
  maxConnections = 128, maxClientsPerHost = 16, maxPayload = 8 * 1024 * 1024, stateFile,
23
25
  maxRelaySessions = 8, adminStateFile, mysqlConfigFile, accountConfigFile, usageDiagnosticKeyFile,
24
- publicRelayUrl = '', appDownloadUrl = '', debugAllowlistFile, longPairingFile, log = () => {} } = {}) {
26
+ publicRelayUrl = '', appDownloadUrl = '', debugAllowlistFile, longPairingFile,
27
+ androidReleaseConfigFile, androidReleaseCredentialFile, log = () => {} } = {}) {
28
+ const androidReleases = createAndroidReleaseHandler({
29
+ ...(androidReleaseConfigFile ? androidReleaseStorage(androidReleaseConfigFile, androidReleaseCredentialFile) : {}), log });
25
30
  const longInvitations = longPairing(longPairingFile);
26
31
  longInvitations.list();
27
32
  function longInvitation(code) {
@@ -107,6 +112,9 @@ export async function startSelfRelay({ port = 0, hostKey = secret(), pairingTtlM
107
112
  }
108
113
  const server = http.createServer((request, response) => {
109
114
  const target = new URL(request.url || '/', `http://${request.headers.host || 'localhost'}`);
115
+ if (target.pathname.startsWith('/code-relax/android/')) {
116
+ void androidReleases(request, response, target); return;
117
+ }
110
118
  if (target.pathname === '/admin' || target.pathname.startsWith('/admin/')) {
111
119
  adminTail = adminTail.then(() => handleAdmin(request, response, target)).catch(() => {
112
120
  if (!response.headersSent) adminReply(response, 500, { error: 'Admin operation failed' });
@@ -746,9 +754,10 @@ export async function startSelfRelay({ port = 0, hostKey = secret(), pairingTtlM
746
754
  p2pProbeRepeat: connection.p2pProbe && connection.repeat });
747
755
  else if (message.type === 'p2p-probe' && connection.p2pProbe && validProbeSignal(message)) {
748
756
  const diagnostic = message.purpose === 'diagnostic';
749
- if (message.purpose && !diagnostic) return fail(1008, 'Invalid probe purpose');
750
- if ((diagnostic ? connection.diagnosticProbeId : connection.probeId) !== message.probeId) return;
751
- if (++connection[diagnostic ? 'diagnosticSignals' : 'signals'] > 150) return fail(1008, 'Probe signal limit');
757
+ const file = message.purpose === 'file';
758
+ if (message.purpose && !diagnostic && !file) return fail(1008, 'Invalid probe purpose');
759
+ if (connection[file ? 'fileProbeId' : diagnostic ? 'diagnosticProbeId' : 'probeId'] !== message.probeId) return;
760
+ if (++connection[file ? 'fileSignals' : diagnostic ? 'diagnosticSignals' : 'signals'] > 150) return fail(1008, 'Probe signal limit');
752
761
  send(connection.ws, { ...message, session: undefined });
753
762
  }
754
763
  else if (message.type === 'detach') connection.ws.close(1011, 'Local Bridge unavailable');
@@ -773,14 +782,15 @@ export async function startSelfRelay({ port = 0, hostKey = secret(), pairingTtlM
773
782
  const connection = room.connections.get(clientId);
774
783
  if (!connection.p2pProbe || !validProbeSignal(message)) return fail(1008, 'Invalid probe signal');
775
784
  const diagnostic = message.purpose === 'diagnostic';
776
- if (message.purpose && !diagnostic) return fail(1008, 'Invalid probe purpose');
777
- const idField = diagnostic ? 'diagnosticProbeId' : 'probeId';
778
- const signalsField = diagnostic ? 'diagnosticSignals' : 'signals';
779
- const startedField = diagnostic ? 'diagnosticProbeStarted' : 'probeStarted';
785
+ const file = message.purpose === 'file';
786
+ if (message.purpose && !diagnostic && !file) return fail(1008, 'Invalid probe purpose');
787
+ const idField = file ? 'fileProbeId' : diagnostic ? 'diagnosticProbeId' : 'probeId';
788
+ const signalsField = file ? 'fileSignals' : diagnostic ? 'diagnosticSignals' : 'signals';
789
+ const startedField = file ? 'fileProbeStarted' : diagnostic ? 'diagnosticProbeStarted' : 'probeStarted';
780
790
  if (message.kind === 'start') {
781
791
  if (connection[idField] && (!connection.repeat || Date.now() - connection[startedField] < 2000)) {
782
792
  send(ws, { type: 'p2p-probe', version: 1, probeId: message.probeId,
783
- ...(diagnostic ? { purpose: 'diagnostic' } : {}), kind: 'close' }); return;
793
+ ...(message.purpose ? { purpose: message.purpose } : {}), kind: 'close' }); return;
784
794
  }
785
795
  connection[idField] = message.probeId; connection[signalsField] = 0; connection[startedField] = Date.now();
786
796
  }
@@ -1,55 +1,55 @@
1
- const dayMs = 86400000;
2
- const chinaOffsetMs = 8 * 3600000;
3
-
4
- export function usageDaySlices(start, end) {
5
- const slices = [];
6
- for (let cursor = start; cursor < end;) {
7
- const date = new Date(cursor + chinaOffsetMs).toISOString().slice(0, 10);
8
- const nextDay = Date.parse(`${date}T00:00:00Z`) + dayMs - chinaOffsetMs;
9
- const until = Math.min(end, nextDay);
10
- slices.push({ date, start: cursor, end: until });
11
- cursor = until;
12
- }
13
- return slices;
14
- }
15
-
16
- const readIntervals = value => Array.isArray(value) ? value : JSON.parse(value || '[]');
17
-
18
- export function mergeUsageIntervals(existing, start, end) {
19
- const sorted = [...existing, [start, end]].sort((a, b) => a[0] - b[0]);
20
- const merged = [];
21
- for (const range of sorted) {
22
- const last = merged.at(-1);
23
- if (last && range[0] <= last[1]) last[1] = Math.max(last[1], range[1]);
24
- else merged.push([...range]);
25
- }
26
- return { intervals: merged, seconds: merged.reduce((sum, [from, until]) => sum + until - from, 0) / 1000 };
27
- }
28
-
29
- export async function recordDailyUsage(db, userId, computerId, free, start, end, now) {
30
- for (const slice of usageDaySlices(start, end)) {
31
- await db.execute(`INSERT IGNORE INTO relay_usage_user_days
32
- (user_id,usage_date,intervals,updated_at) VALUES (?,?,'[]',?)`, [userId, slice.date, now]);
33
- const [userRows] = await db.execute(`SELECT intervals FROM relay_usage_user_days
34
- WHERE user_id=? AND usage_date=? FOR UPDATE`, [userId, slice.date]);
35
- const user = mergeUsageIntervals(readIntervals(userRows[0].intervals), slice.start, slice.end);
36
- await db.execute(`UPDATE relay_usage_user_days SET intervals=?,task_seconds=?,updated_at=?
37
- WHERE user_id=? AND usage_date=?`,
38
- [JSON.stringify(user.intervals), user.seconds, now, userId, slice.date]);
39
-
40
- await db.execute(`INSERT IGNORE INTO relay_usage_computer_days
41
- (computer_id,usage_date,intervals,free_intervals,updated_at) VALUES (?,?,'[]','[]',?)`,
42
- [computerId, slice.date, now]);
43
- const [computerRows] = await db.execute(`SELECT intervals,free_intervals FROM relay_usage_computer_days
44
- WHERE computer_id=? AND usage_date=? FOR UPDATE`, [computerId, slice.date]);
45
- const computer = mergeUsageIntervals(readIntervals(computerRows[0].intervals), slice.start, slice.end);
46
- const freeIntervals = readIntervals(computerRows[0].free_intervals);
47
- const freeComputer = free ? mergeUsageIntervals(freeIntervals, slice.start, slice.end) : null;
48
- await db.execute(`UPDATE relay_usage_computer_days SET intervals=?,task_seconds=?,
49
- free_intervals=?,free_task_seconds=COALESCE(?,free_task_seconds),updated_at=?
50
- WHERE computer_id=? AND usage_date=?`,
51
- [JSON.stringify(computer.intervals), computer.seconds,
52
- JSON.stringify(freeComputer?.intervals || freeIntervals), freeComputer?.seconds ?? null,
53
- now, computerId, slice.date]);
54
- }
55
- }
1
+ const dayMs = 86400000;
2
+ const chinaOffsetMs = 8 * 3600000;
3
+
4
+ export function usageDaySlices(start, end) {
5
+ const slices = [];
6
+ for (let cursor = start; cursor < end;) {
7
+ const date = new Date(cursor + chinaOffsetMs).toISOString().slice(0, 10);
8
+ const nextDay = Date.parse(`${date}T00:00:00Z`) + dayMs - chinaOffsetMs;
9
+ const until = Math.min(end, nextDay);
10
+ slices.push({ date, start: cursor, end: until });
11
+ cursor = until;
12
+ }
13
+ return slices;
14
+ }
15
+
16
+ const readIntervals = value => Array.isArray(value) ? value : JSON.parse(value || '[]');
17
+
18
+ export function mergeUsageIntervals(existing, start, end) {
19
+ const sorted = [...existing, [start, end]].sort((a, b) => a[0] - b[0]);
20
+ const merged = [];
21
+ for (const range of sorted) {
22
+ const last = merged.at(-1);
23
+ if (last && range[0] <= last[1]) last[1] = Math.max(last[1], range[1]);
24
+ else merged.push([...range]);
25
+ }
26
+ return { intervals: merged, seconds: merged.reduce((sum, [from, until]) => sum + until - from, 0) / 1000 };
27
+ }
28
+
29
+ export async function recordDailyUsage(db, userId, computerId, free, start, end, now) {
30
+ for (const slice of usageDaySlices(start, end)) {
31
+ await db.execute(`INSERT IGNORE INTO relay_usage_user_days
32
+ (user_id,usage_date,intervals,updated_at) VALUES (?,?,'[]',?)`, [userId, slice.date, now]);
33
+ const [userRows] = await db.execute(`SELECT intervals FROM relay_usage_user_days
34
+ WHERE user_id=? AND usage_date=? FOR UPDATE`, [userId, slice.date]);
35
+ const user = mergeUsageIntervals(readIntervals(userRows[0].intervals), slice.start, slice.end);
36
+ await db.execute(`UPDATE relay_usage_user_days SET intervals=?,task_seconds=?,updated_at=?
37
+ WHERE user_id=? AND usage_date=?`,
38
+ [JSON.stringify(user.intervals), user.seconds, now, userId, slice.date]);
39
+
40
+ await db.execute(`INSERT IGNORE INTO relay_usage_computer_days
41
+ (computer_id,usage_date,intervals,free_intervals,updated_at) VALUES (?,?,'[]','[]',?)`,
42
+ [computerId, slice.date, now]);
43
+ const [computerRows] = await db.execute(`SELECT intervals,free_intervals FROM relay_usage_computer_days
44
+ WHERE computer_id=? AND usage_date=? FOR UPDATE`, [computerId, slice.date]);
45
+ const computer = mergeUsageIntervals(readIntervals(computerRows[0].intervals), slice.start, slice.end);
46
+ const freeIntervals = readIntervals(computerRows[0].free_intervals);
47
+ const freeComputer = free ? mergeUsageIntervals(freeIntervals, slice.start, slice.end) : null;
48
+ await db.execute(`UPDATE relay_usage_computer_days SET intervals=?,task_seconds=?,
49
+ free_intervals=?,free_task_seconds=COALESCE(?,free_task_seconds),updated_at=?
50
+ WHERE computer_id=? AND usage_date=?`,
51
+ [JSON.stringify(computer.intervals), computer.seconds,
52
+ JSON.stringify(freeComputer?.intervals || freeIntervals), freeComputer?.seconds ?? null,
53
+ now, computerId, slice.date]);
54
+ }
55
+ }
@@ -1,75 +1,75 @@
1
- import net from 'node:net';
2
-
3
- const pipePath = String.raw`\\.\pipe\CodeRelaxRtcRouteHelper`;
4
-
5
- export function createWindowsRouteHelper({ enabled = false, token = '', iceServers = [], report = () => {} } = {}) {
6
- const addresses = new Set();
7
- const routeAddresses = new Set(iceServers.map(stunAddress).filter(publicIpv4));
8
- let chain = Promise.resolve();
9
- const enqueue = task => chain = chain.then(task, task);
10
- if (!enabled || process.platform !== 'win32') return { prepare() { return Promise.resolve(); }, include() { return Promise.resolve(); } };
11
- if (!/^[A-Za-z0-9_-]{32,128}$/.test(token)) throw new Error('Windows RTC 路由辅助凭据无效');
12
- const add = values => enqueue(async () => {
13
- for (const value of values) addresses.add(value);
14
- if (!values.length) return;
15
- const result = await request({ token, action: 'add', addresses: [...addresses], ttlSeconds: 120 });
16
- if (!result.ok) throw new Error(result.error || 'Windows RTC 路由辅助不可用');
17
- report('windows-route-helper', { count: addresses.size });
18
- });
19
- return {
20
- prepare() { return add([...routeAddresses]); },
21
- include(message) {
22
- const discovered = candidateAddresses(message);
23
- return add(discovered.filter(value => !addresses.has(value)));
24
- }
25
- };
26
- }
27
-
28
- function stunAddress(value) {
29
- const match = /^stun:([^:]+):\d{1,5}$/i.exec(value || '');
30
- return match?.[1] || '';
31
- }
32
-
33
- function candidateAddresses(message) {
34
- const text = message?.kind === 'candidate' ? message.candidate : ['offer', 'answer'].includes(message?.kind) ? message.sdp : '';
35
- const result = new Set();
36
- for (const line of String(text || '').split(/\r?\n/)) {
37
- const parts = line.trim().replace(/^a=/, '').split(/\s+/);
38
- if (parts[0]?.startsWith('candidate:') && parts[6] === 'typ' && publicIpv4(parts[4])) result.add(parts[4]);
39
- }
40
- return [...result];
41
- }
42
-
43
- function publicIpv4(value) {
44
- const parts = String(value).split('.').map(Number);
45
- if (parts.length !== 4 || parts.some(part => !Number.isInteger(part) || part < 0 || part > 255)) return false;
46
- const [a, b] = parts;
47
- return a !== 0 && a !== 10 && a !== 127 && a < 224 && !(a === 169 && b === 254) && !(a === 172 && b >= 16 && b <= 31) &&
48
- !(a === 192 && b === 168) && !(a === 100 && b >= 64 && b <= 127) && !(a === 198 && (b === 18 || b === 19));
49
- }
50
-
51
- function request(value) {
52
- return new Promise((resolve, reject) => {
53
- const socket = net.createConnection(pipePath);
54
- let text = '';
55
- let settled = false;
56
- const rejectOnce = error => { if (!settled) { settled = true; reject(error); } };
57
- const resolveOnce = result => { if (!settled) { settled = true; resolve(result); } };
58
- socket.setTimeout(3000);
59
- socket.setEncoding('utf8');
60
- socket.once('connect', () => socket.write(`${JSON.stringify(value)}\n`));
61
- socket.on('data', chunk => {
62
- text += chunk;
63
- const line = text.indexOf('\n');
64
- if (line < 0) return;
65
- try { resolveOnce(JSON.parse(text.slice(0, line))); socket.end(); }
66
- catch { rejectOnce(new Error('Windows RTC 路由辅助响应无效')); socket.destroy(); }
67
- });
68
- socket.once('timeout', () => socket.destroy(new Error('Windows RTC 路由辅助超时')));
69
- socket.once('error', rejectOnce);
70
- socket.once('close', hadError => {
71
- if (hadError || settled) return;
72
- rejectOnce(new Error('Windows RTC 路由辅助响应无效'));
73
- });
74
- });
75
- }
1
+ import net from 'node:net';
2
+
3
+ const pipePath = String.raw`\\.\pipe\CodeRelaxRtcRouteHelper`;
4
+
5
+ export function createWindowsRouteHelper({ enabled = false, token = '', iceServers = [], report = () => {} } = {}) {
6
+ const addresses = new Set();
7
+ const routeAddresses = new Set(iceServers.map(stunAddress).filter(publicIpv4));
8
+ let chain = Promise.resolve();
9
+ const enqueue = task => chain = chain.then(task, task);
10
+ if (!enabled || process.platform !== 'win32') return { prepare() { return Promise.resolve(); }, include() { return Promise.resolve(); } };
11
+ if (!/^[A-Za-z0-9_-]{32,128}$/.test(token)) throw new Error('Windows RTC 路由辅助凭据无效');
12
+ const add = values => enqueue(async () => {
13
+ for (const value of values) addresses.add(value);
14
+ if (!values.length) return;
15
+ const result = await request({ token, action: 'add', addresses: [...addresses], ttlSeconds: 120 });
16
+ if (!result.ok) throw new Error(result.error || 'Windows RTC 路由辅助不可用');
17
+ report('windows-route-helper', { count: addresses.size });
18
+ });
19
+ return {
20
+ prepare() { return add([...routeAddresses]); },
21
+ include(message) {
22
+ const discovered = candidateAddresses(message);
23
+ return add(discovered.filter(value => !addresses.has(value)));
24
+ }
25
+ };
26
+ }
27
+
28
+ function stunAddress(value) {
29
+ const match = /^stun:([^:]+):\d{1,5}$/i.exec(value || '');
30
+ return match?.[1] || '';
31
+ }
32
+
33
+ function candidateAddresses(message) {
34
+ const text = message?.kind === 'candidate' ? message.candidate : ['offer', 'answer'].includes(message?.kind) ? message.sdp : '';
35
+ const result = new Set();
36
+ for (const line of String(text || '').split(/\r?\n/)) {
37
+ const parts = line.trim().replace(/^a=/, '').split(/\s+/);
38
+ if (parts[0]?.startsWith('candidate:') && parts[6] === 'typ' && publicIpv4(parts[4])) result.add(parts[4]);
39
+ }
40
+ return [...result];
41
+ }
42
+
43
+ function publicIpv4(value) {
44
+ const parts = String(value).split('.').map(Number);
45
+ if (parts.length !== 4 || parts.some(part => !Number.isInteger(part) || part < 0 || part > 255)) return false;
46
+ const [a, b] = parts;
47
+ return a !== 0 && a !== 10 && a !== 127 && a < 224 && !(a === 169 && b === 254) && !(a === 172 && b >= 16 && b <= 31) &&
48
+ !(a === 192 && b === 168) && !(a === 100 && b >= 64 && b <= 127) && !(a === 198 && (b === 18 || b === 19));
49
+ }
50
+
51
+ function request(value) {
52
+ return new Promise((resolve, reject) => {
53
+ const socket = net.createConnection(pipePath);
54
+ let text = '';
55
+ let settled = false;
56
+ const rejectOnce = error => { if (!settled) { settled = true; reject(error); } };
57
+ const resolveOnce = result => { if (!settled) { settled = true; resolve(result); } };
58
+ socket.setTimeout(3000);
59
+ socket.setEncoding('utf8');
60
+ socket.once('connect', () => socket.write(`${JSON.stringify(value)}\n`));
61
+ socket.on('data', chunk => {
62
+ text += chunk;
63
+ const line = text.indexOf('\n');
64
+ if (line < 0) return;
65
+ try { resolveOnce(JSON.parse(text.slice(0, line))); socket.end(); }
66
+ catch { rejectOnce(new Error('Windows RTC 路由辅助响应无效')); socket.destroy(); }
67
+ });
68
+ socket.once('timeout', () => socket.destroy(new Error('Windows RTC 路由辅助超时')));
69
+ socket.once('error', rejectOnce);
70
+ socket.once('close', hadError => {
71
+ if (hadError || settled) return;
72
+ rejectOnce(new Error('Windows RTC 路由辅助响应无效'));
73
+ });
74
+ });
75
+ }