herdr-remote 0.2.39 → 0.3.32

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 (205) hide show
  1. package/README.md +4 -2
  2. package/README.zh-CN.md +2 -2
  3. package/dist/chunks/3FQAXVGC.js +3 -0
  4. package/dist/chunks/42KARAL4.js +31 -0
  5. package/dist/chunks/44IGVPMA.js +5 -0
  6. package/dist/chunks/5LZFJ6UZ.js +3 -0
  7. package/dist/chunks/7SMZ43LI.js +9 -0
  8. package/dist/chunks/AX4EPJCP.js +4 -0
  9. package/dist/chunks/B76DFI4H.js +16 -0
  10. package/dist/chunks/BYGDPZZD.js +3 -0
  11. package/dist/chunks/C2UUZY6J.js +2 -0
  12. package/dist/chunks/CVJ4HBMP.js +3 -0
  13. package/dist/chunks/DGUZCGQN.js +3 -0
  14. package/dist/chunks/FONUO5O5.js +4 -0
  15. package/dist/chunks/H24ZP5D5.js +16 -0
  16. package/dist/chunks/I6NRCYLI.js +3 -0
  17. package/dist/chunks/JJGEV4EZ.js +3 -0
  18. package/dist/chunks/K5RFPHSF.js +5 -0
  19. package/dist/chunks/KGOQKOHH.js +5 -0
  20. package/dist/chunks/KRVF37OW.js +3 -0
  21. package/dist/chunks/KUDCC7ZO.js +6 -0
  22. package/dist/chunks/LPR662JH.js +77 -0
  23. package/dist/chunks/LY2ZGCXN.js +4 -0
  24. package/dist/chunks/M52LJEES.js +6 -0
  25. package/dist/chunks/MCUVFSSK.js +3 -0
  26. package/dist/chunks/MEFDV375.js +10 -0
  27. package/dist/chunks/MKAEXKXG.js +10 -0
  28. package/dist/chunks/O2LNVFUT.js +3 -0
  29. package/dist/chunks/PBMBFWLQ.js +3 -0
  30. package/dist/chunks/PBRQ3HEG.js +3 -0
  31. package/dist/chunks/QCSILMFB.js +3 -0
  32. package/dist/chunks/QRGNEKME.js +5 -0
  33. package/dist/chunks/RMHH3IAX.js +63 -0
  34. package/dist/chunks/TNLCNVA2.js +3 -0
  35. package/dist/chunks/U6QAYG3E.js +3 -0
  36. package/dist/chunks/VD54DF7R.js +45 -0
  37. package/dist/chunks/WY7WHEJ4.js +3 -0
  38. package/dist/cli.js +21 -294
  39. package/dist/connector/admin-broker.js +3 -303
  40. package/dist/connector/main.js +20 -18
  41. package/dist/harfbuzz-subset.wasm +0 -0
  42. package/dist/postinstall.js +17 -0
  43. package/herdr-plugin.toml +1 -1
  44. package/node_modules/herdr-remote-relay/bin/herdr-remote-relay.js +33 -92
  45. package/node_modules/herdr-remote-relay/package.json +3 -46
  46. package/package.json +8 -27
  47. package/dist/agent-status.js +0 -130
  48. package/dist/binary-plist.js +0 -157
  49. package/dist/config.js +0 -278
  50. package/dist/connector/admin-broker-setup.js +0 -40
  51. package/dist/connector/admin-shell.js +0 -67
  52. package/dist/connector/admin-tab.js +0 -90
  53. package/dist/connector/adminBrokerEndpoint.js +0 -68
  54. package/dist/connector/agent-watch.js +0 -123
  55. package/dist/connector/elevatedPty.js +0 -141
  56. package/dist/connector/font-server.js +0 -165
  57. package/dist/connector/herdr-prefix-keys.js +0 -28
  58. package/dist/connector/host-connector.js +0 -433
  59. package/dist/connector/host-hello.js +0 -32
  60. package/dist/connector/lock.js +0 -73
  61. package/dist/connector/sessions.js +0 -381
  62. package/dist/connector/update-report.js +0 -70
  63. package/dist/connector/wire.js +0 -42
  64. package/dist/exit-codes.js +0 -13
  65. package/dist/font-subset.js +0 -116
  66. package/dist/herdr-api.js +0 -254
  67. package/dist/herdr-command.js +0 -245
  68. package/dist/herdr-plugin.js +0 -120
  69. package/dist/herdr-server.js +0 -190
  70. package/dist/i18n/en.js +0 -257
  71. package/dist/i18n/index.js +0 -48
  72. package/dist/i18n/zh.js +0 -256
  73. package/dist/keepalive/detached.js +0 -97
  74. package/dist/keepalive/environment.js +0 -44
  75. package/dist/keepalive/index.js +0 -129
  76. package/dist/keepalive/launchd.js +0 -117
  77. package/dist/keepalive/systemd.js +0 -112
  78. package/dist/keepalive/types.js +0 -1
  79. package/dist/keepalive/windows-service-setup.js +0 -138
  80. package/dist/keepalive/windows-service.js +0 -272
  81. package/dist/keepalive/windows-task.js +0 -191
  82. package/dist/lib/process.js +0 -132
  83. package/dist/lifecycle.js +0 -79
  84. package/dist/net-interfaces.js +0 -82
  85. package/dist/node-pty-loader.js +0 -80
  86. package/dist/pasted-files.js +0 -115
  87. package/dist/paths.js +0 -74
  88. package/dist/pty-session.js +0 -133
  89. package/dist/relay-client.js +0 -106
  90. package/dist/relay-urls.js +0 -99
  91. package/dist/runtime.js +0 -107
  92. package/dist/service.js +0 -267
  93. package/dist/settings-model.js +0 -298
  94. package/dist/socket-discovery.js +0 -70
  95. package/dist/supervisor.js +0 -323
  96. package/dist/terminal-font/deps.js +0 -83
  97. package/dist/terminal-font/files.js +0 -357
  98. package/dist/terminal-font/formats.js +0 -355
  99. package/dist/terminal-font/index.js +0 -187
  100. package/dist/terminal-font/readers.js +0 -373
  101. package/dist/terminal-font/terminals.js +0 -147
  102. package/dist/terminal-palette.js +0 -399
  103. package/dist/tui/App.js +0 -199
  104. package/dist/tui/api.js +0 -91
  105. package/dist/tui/components/TextField.js +0 -50
  106. package/dist/tui/components/common.js +0 -80
  107. package/dist/tui/index.js +0 -36
  108. package/dist/tui/mouse/index.js +0 -164
  109. package/dist/tui/mouse/protocol.js +0 -96
  110. package/dist/tui/mouse/source.js +0 -79
  111. package/dist/tui/screens/About.js +0 -172
  112. package/dist/tui/screens/Herdr.js +0 -75
  113. package/dist/tui/screens/Keepalive.js +0 -141
  114. package/dist/tui/screens/Overview.js +0 -36
  115. package/dist/tui/screens/Pair.js +0 -74
  116. package/dist/tui/screens/Relay.js +0 -243
  117. package/dist/tui/screens/Services.js +0 -63
  118. package/dist/tui/screens/Wizard.js +0 -241
  119. package/dist/tui/terminal.js +0 -39
  120. package/dist/tui/theme.js +0 -33
  121. package/dist/update-command.js +0 -118
  122. package/dist/updater/in-place.js +0 -83
  123. package/dist/updater/npm.js +0 -62
  124. package/dist/updater.js +0 -401
  125. package/node_modules/herdr-remote-relay/README.md +0 -76
  126. package/node_modules/herdr-remote-relay/README.zh-CN.md +0 -76
  127. package/node_modules/herdr-remote-relay/config.example.json +0 -18
  128. package/node_modules/herdr-remote-relay/deploy/cloudflared/config.yml.example +0 -9
  129. package/node_modules/herdr-remote-relay/deploy/docker/compose.yaml +0 -23
  130. package/node_modules/herdr-remote-relay/deploy/nginx/herdr-remote-relay.conf.example +0 -49
  131. package/node_modules/herdr-remote-relay/deploy/systemd/herdr-remote-relay.service +0 -41
  132. package/node_modules/herdr-remote-relay/deploy/systemd/relay.env.example +0 -25
  133. package/node_modules/herdr-remote-relay/dist/auth-store.d.ts +0 -114
  134. package/node_modules/herdr-remote-relay/dist/auth-store.js +0 -289
  135. package/node_modules/herdr-remote-relay/dist/metrics.d.ts +0 -76
  136. package/node_modules/herdr-remote-relay/dist/metrics.js +0 -249
  137. package/node_modules/herdr-remote-relay/dist/protocol/frames.d.ts +0 -27
  138. package/node_modules/herdr-remote-relay/dist/protocol/frames.js +0 -110
  139. package/node_modules/herdr-remote-relay/dist/protocol/herdr-keys.d.ts +0 -8
  140. package/node_modules/herdr-remote-relay/dist/protocol/herdr-keys.js +0 -34
  141. package/node_modules/herdr-remote-relay/dist/protocol/http.d.ts +0 -165
  142. package/node_modules/herdr-remote-relay/dist/protocol/http.js +0 -3
  143. package/node_modules/herdr-remote-relay/dist/protocol/index.d.ts +0 -7
  144. package/node_modules/herdr-remote-relay/dist/protocol/index.js +0 -9
  145. package/node_modules/herdr-remote-relay/dist/protocol/messages.d.ts +0 -362
  146. package/node_modules/herdr-remote-relay/dist/protocol/messages.js +0 -20
  147. package/node_modules/herdr-remote-relay/dist/protocol/paste.d.ts +0 -14
  148. package/node_modules/herdr-remote-relay/dist/protocol/paste.js +0 -50
  149. package/node_modules/herdr-remote-relay/dist/protocol/release.d.ts +0 -8
  150. package/node_modules/herdr-remote-relay/dist/protocol/release.js +0 -17
  151. package/node_modules/herdr-remote-relay/dist/protocol/terminal.d.ts +0 -79
  152. package/node_modules/herdr-remote-relay/dist/protocol/terminal.js +0 -150
  153. package/node_modules/herdr-remote-relay/dist/relay-config.d.ts +0 -74
  154. package/node_modules/herdr-remote-relay/dist/relay-config.js +0 -316
  155. package/node_modules/herdr-remote-relay/dist/relay-server.d.ts +0 -67
  156. package/node_modules/herdr-remote-relay/dist/relay-server.js +0 -196
  157. package/node_modules/herdr-remote-relay/dist/scroll-input.d.ts +0 -17
  158. package/node_modules/herdr-remote-relay/dist/scroll-input.js +0 -124
  159. package/node_modules/herdr-remote-relay/dist/server/client-channel.d.ts +0 -3
  160. package/node_modules/herdr-remote-relay/dist/server/client-channel.js +0 -396
  161. package/node_modules/herdr-remote-relay/dist/server/font-proxy.d.ts +0 -19
  162. package/node_modules/herdr-remote-relay/dist/server/font-proxy.js +0 -155
  163. package/node_modules/herdr-remote-relay/dist/server/host-broadcasts.d.ts +0 -27
  164. package/node_modules/herdr-remote-relay/dist/server/host-broadcasts.js +0 -83
  165. package/node_modules/herdr-remote-relay/dist/server/host-channel.d.ts +0 -3
  166. package/node_modules/herdr-remote-relay/dist/server/host-channel.js +0 -271
  167. package/node_modules/herdr-remote-relay/dist/server/http-api.d.ts +0 -4
  168. package/node_modules/herdr-remote-relay/dist/server/http-api.js +0 -219
  169. package/node_modules/herdr-remote-relay/dist/server/maintenance.d.ts +0 -5
  170. package/node_modules/herdr-remote-relay/dist/server/maintenance.js +0 -64
  171. package/node_modules/herdr-remote-relay/dist/server/requests.d.ts +0 -34
  172. package/node_modules/herdr-remote-relay/dist/server/requests.js +0 -142
  173. package/node_modules/herdr-remote-relay/dist/server/sessions.d.ts +0 -36
  174. package/node_modules/herdr-remote-relay/dist/server/sessions.js +0 -230
  175. package/node_modules/herdr-remote-relay/dist/server/sockets.d.ts +0 -12
  176. package/node_modules/herdr-remote-relay/dist/server/sockets.js +0 -64
  177. package/node_modules/herdr-remote-relay/dist/server/status.d.ts +0 -11
  178. package/node_modules/herdr-remote-relay/dist/server/status.js +0 -99
  179. package/node_modules/herdr-remote-relay/dist/server/transport.d.ts +0 -16
  180. package/node_modules/herdr-remote-relay/dist/server/transport.js +0 -110
  181. package/node_modules/herdr-remote-relay/dist/server/types.d.ts +0 -133
  182. package/node_modules/herdr-remote-relay/dist/server/types.js +0 -3
  183. package/node_modules/herdr-remote-relay/dist/server/version.d.ts +0 -2
  184. package/node_modules/herdr-remote-relay/dist/server/version.js +0 -5
  185. package/node_modules/herdr-remote-relay/dist/state.d.ts +0 -6
  186. package/node_modules/herdr-remote-relay/dist/state.js +0 -47
  187. package/node_modules/ws/LICENSE +0 -20
  188. package/node_modules/ws/README.md +0 -548
  189. package/node_modules/ws/browser.js +0 -8
  190. package/node_modules/ws/index.js +0 -22
  191. package/node_modules/ws/lib/buffer-util.js +0 -131
  192. package/node_modules/ws/lib/constants.js +0 -19
  193. package/node_modules/ws/lib/event-target.js +0 -292
  194. package/node_modules/ws/lib/extension.js +0 -203
  195. package/node_modules/ws/lib/limiter.js +0 -55
  196. package/node_modules/ws/lib/permessage-deflate.js +0 -530
  197. package/node_modules/ws/lib/receiver.js +0 -743
  198. package/node_modules/ws/lib/sender.js +0 -607
  199. package/node_modules/ws/lib/stream.js +0 -161
  200. package/node_modules/ws/lib/subprotocol.js +0 -62
  201. package/node_modules/ws/lib/validation.js +0 -152
  202. package/node_modules/ws/lib/websocket-server.js +0 -562
  203. package/node_modules/ws/lib/websocket.js +0 -1407
  204. package/node_modules/ws/package.json +0 -74
  205. package/node_modules/ws/wrapper.mjs +0 -21
@@ -0,0 +1,5 @@
1
+ import { createRequire as __herdrCreateRequire } from 'node:module';
2
+ const require = __herdrCreateRequire(import.meta.url);
3
+ import{n as b,o as Q,p as G,q as K}from"./PBMBFWLQ.js";import{a as E,c as Z}from"./TNLCNVA2.js";import h from"node:fs";import w from"node:path";var Ae=["EBUSY","EPERM","EACCES"];function ee(e){return/\b(EBUSY|EPERM)\b/.test(e??"")}function $e(e,t,o){try{o(e,t)}catch(n){if(!Ae.includes(n.code??""))throw n;h.renameSync(t,`${t}.${process.pid}.old`),o(e,t)}}function P(e,t,o=h.copyFileSync,n=new Set){h.mkdirSync(t,{recursive:!0});let s=new Set;for(let r of h.readdirSync(e,{withFileTypes:!0})){s.add(r.name.toLowerCase());let i=w.join(e,r.name),c=w.join(t,r.name),a=h.lstatSync(c,{throwIfNoEntry:!1});a&&a.isDirectory()!==r.isDirectory()&&h.rmSync(c,{recursive:!0,force:!0}),r.isDirectory()?P(i,c,o,n):$e(i,c,o)}for(let r of h.readdirSync(t))if(!(s.has(r.toLowerCase())||n.has(w.join(t,r))))try{h.rmSync(w.join(t,r),{recursive:!0,force:!0})}catch{}}async function re(e,t,{target:o=E,stage:n=w.join(Z(),"update-stage"),platform:s=process.platform}={}){h.rmSync(n,{recursive:!0,force:!0});try{let r=await t([...e,"--prefix",n]);if(!r.ok)return r;let i=s==="win32"?w.join(n,"node_modules"):w.join(n,"lib","node_modules");try{P(w.join(i,w.basename(o)),o)}catch(c){return{ok:!1,output:`${r.output}
4
+ ${c.message}`}}return r}finally{try{h.rmSync(n,{recursive:!0,force:!0})}catch{}}}import H from"node:fs";import z from"node:path";import{spawn as Fe}from"node:child_process";import{createRequire as Me}from"node:module";import Te from"node:fs";import te from"node:path";function ve({args:e,platform:t=process.platform,env:o=process.env,execPath:n=process.execPath,exists:s=Te.existsSync}){if(t!=="win32")return{command:"npm",args:e};let r=o.npm_execpath;if(r&&/npm-cli\.js$/i.test(r)&&s(r))return{command:n,args:[r,...e]};let i=te.join(te.dirname(n),"node_modules","npm","bin","npm-cli.js");return s(i)?{command:n,args:[i,...e]}:null}function Y(e,t,o,n={}){return new Promise(s=>{let r;try{let l=ve({args:t,...n});if(!l){s({ok:!1,spawnFailed:!0,output:"npm-cli.js was not found next to this Node.js; run npm install -g herdr-remote yourself."});return}r=e(l.command,l.args,{timeout:o,windowsHide:!0})}catch(l){s({ok:!1,spawnFailed:!0,output:String(l?.message||l)});return}let i="",c=!1,a=l=>{c||(c=!0,s(l))},u=l=>{i+=String(l)};r.stdout?.on("data",u),r.stderr?.on("data",u),r.on("error",l=>a({ok:!1,spawnFailed:!0,output:l.message})),r.on("close",l=>a({ok:l===0,output:i.trim()}))})}import p from"node:fs";import{createRequire as Pe}from"node:module";import y from"node:path";import N from"node:fs";import O from"node:path";import xe from"node:zlib";var _=512;function A(e,t,o){let n=e.subarray(t,t+o),s=n.indexOf(0);return n.subarray(0,s===-1?o:s).toString("utf8")}function ne(e,t,o){let n=A(e,t,o).trim();return n?Number.parseInt(n,8):0}function je(e){let t=null,o=0;for(;o<e.length;){let n=e.indexOf(32,o);if(n===-1)break;let s=Number.parseInt(e.subarray(o,n).toString("utf8"),10);if(!(s>0))break;let r=e.subarray(n+1,o+s-1).toString("utf8"),i=r.indexOf("=");r.slice(0,i)==="path"&&(t=r.slice(i+1)),o+=s}return t}function oe(e,t){let o=xe.gunzipSync(e),n=O.resolve(t);N.mkdirSync(n,{recursive:!0});let s=null,r=0;for(;r+_<=o.length;){let i=o.subarray(r,r+_);if(i.every(f=>f===0))break;let c=ne(i,124,12),a=String.fromCharCode(i[156]||48),u=o.subarray(r+_,r+_+c);if(u.length<c)throw new Error("truncated release archive");if(r+=_+Math.ceil(c/_)*_,a==="x"){s=je(u);continue}if(a==="L"){s=A(u,0,u.length);continue}if(a==="g")continue;let l=A(i,345,155),g=s??(l?`${l}/${A(i,0,100)}`:A(i,0,100));s=null;let x=g.replace(/^package\//,"");if(x===g)throw new Error(`unexpected path in release archive: ${g}`);let m=O.resolve(n,x);if(m!==n&&!m.startsWith(`${n}${O.sep}`))throw new Error(`path escapes the release archive: ${g}`);if(a==="5")N.mkdirSync(m,{recursive:!0});else if(a==="0"){N.mkdirSync(O.dirname(m),{recursive:!0});let f=ne(i,100,8)&73?493:420;N.writeFileSync(m,u,{mode:f})}else throw new Error(`unsupported entry type '${a}' in release archive: ${g}`)}}var Ne=["EBUSY","EPERM","EACCES"];function U(e){try{return JSON.parse(p.readFileSync(y.join(e,"package.json"),"utf8"))}catch{return null}}function ie(e){let t=new Set(e.bundleDependencies??[]);return Object.entries(e.dependencies??{}).filter(([o])=>!t.has(o))}function Oe(e,t,o){if(JSON.stringify(e.bin)!==JSON.stringify(t.bin))return!1;let n=Pe(y.join(o,"package.json")).resolve;return ie(t).every(([s,r])=>{if(e.dependencies?.[s]!==r)return!1;try{return n(`${s}/package.json`),!0}catch{return!1}})}function Ce(e,t){let o=[],n=ie(e).map(([s])=>s);for(;n.length>0;){let s=n.shift(),r=y.join(t,"node_modules",s);if(o.includes(s)||!p.existsSync(r))continue;o.push(s);let i=U(r);n.push(...Object.keys({...i?.dependencies,...i?.optionalDependencies}))}return o}async function He(e,t,o){let n=new AbortController,s=setTimeout(()=>n.abort(),o);try{let r=await t(e,{signal:n.signal,headers:{Accept:"application/octet-stream"}});if(!r.ok)throw new Error(`${e}: HTTP ${r.status??"?"}`);return Buffer.from(await r.arrayBuffer())}catch(r){throw r.name==="AbortError"?new Error(`${e}: timed out`):r}finally{clearTimeout(s)}}function se(e,t,o){for(let n of e){let s=y.join(o,"node_modules",n);p.mkdirSync(y.dirname(s),{recursive:!0}),p.renameSync(y.join(t,"node_modules",n),s)}}function Ie(e,t,o,n){let s=`${t}.previous-${process.pid}`;try{p.renameSync(t,s)}catch(r){let i=r.code??"";if(n!=="win32"||!Ne.includes(i))throw r;let c=new Set(o.map(a=>y.join(t,"node_modules",a)));P(e,t,p.copyFileSync,c);return}try{se(o,s,e),p.renameSync(e,t)}catch(r){try{for(let i of o)p.existsSync(y.join(e,"node_modules",i))&&se([i],e,s);p.renameSync(s,t)}catch{}throw r}try{p.rmSync(s,{recursive:!0,force:!0})}catch{}}async function ce({url:e,version:t,target:o=E,fetchImpl:n=globalThis.fetch,timeoutMs:s=18e4,platform:r=process.platform}){let i=y.join(y.dirname(o),`.herdr-remote-update-${process.pid}`);try{p.rmSync(i,{recursive:!0,force:!0}),oe(await He(e,n,s),i);let c=U(i),a=U(o);return c?.name!=="herdr-remote"||t&&c.version!==t?{ok:!1,output:`${e} is not herdr-remote ${t??""}`.trim()}:!a||!Oe(a,c,o)?{ok:!1,needsNpm:!0,output:"the release changes installed dependencies"}:(Ie(i,o,Ce(c,o),r),{ok:!0,output:`installed ${c.version} from ${e}`})}catch(c){return{ok:!1,output:String(c?.message||c)}}finally{try{p.rmSync(i,{recursive:!0,force:!0})}catch{}}}import De from"node:fs";import Le from"node:os";import ae from"node:path";var ue="herdr-remote",fe="https://registry.npmjs.org",pe="https://registry.npmmirror.com";function C(e){if(typeof e!="string")return null;let t=e.trim().replace(/\/+$/,"");return/^https?:\/\//i.test(t)?t:null}function le(e){let t;try{t=De.readFileSync(e,"utf8")}catch{return null}let o=null;for(let n of t.split(/\r?\n/)){let s=n.trim();if(!s||s.startsWith("#")||s.startsWith(";"))continue;let r=/^registry\s*=\s*(.+)$/i.exec(s);r&&(o=C(r[1].replace(/^["']|["']$/g,"")))}return o}function me({env:e=process.env,home:t=Le.homedir(),cwd:o=process.cwd()}={}){let n=[],s=r=>{let i=C(r);i&&!n.includes(i)&&n.push(i)};return s(e.npm_config_registry),s(e.NPM_CONFIG_REGISTRY),s(e.HERDR_REMOTE_REGISTRY),s(le(ae.join(o,".npmrc"))),s(le(ae.join(t,".npmrc"))),s(fe),s(pe),n}async function de(e,{timeoutMs:t,fetchImpl:o}){let n=new AbortController,s=setTimeout(()=>n.abort(),t);try{let r=await o(e,{signal:n.signal,headers:{Accept:"application/json","Cache-Control":"no-cache"}});return r.ok?{ok:!0,body:await r.json()}:{ok:!1,message:`HTTP ${r.status??"?"}`}}catch(r){let i=r;return{ok:!1,message:i?.name==="AbortError"?"timed out":String(i?.message||r)}}finally{clearTimeout(s)}}async function he(e,{timeoutMs:t,fetchImpl:o}){let n=[{url:`${e}/-/package/${ue}/dist-tags`,read:r=>r?.latest},{url:`${e}/${ue}/latest`,read:r=>r?.version}],s=null;for(let r of n){let i=await de(r.url,{timeoutMs:t,fetchImpl:o});if(!i.ok){s=i.message;continue}let c=r.read(i.body);if(typeof c=="string"&&c)return{ok:!0,latest:c};s="registry answered without a version"}return{ok:!1,message:s}}var V=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/;async function ye(e,{timeoutMs:t,fetchImpl:o}){let n=await de(e,{timeoutMs:t,fetchImpl:o});if(!n.ok)return n;let s=n.body?.version;return typeof s=="string"&&V.test(s)?{ok:!0,latest:s}:{ok:!1,message:"release manifest has no version"}}var Be="herdr-remote",Ge="herdr-remote-relay";function Ke(){try{return JSON.parse(H.readFileSync(z.join(E,"package.json"),"utf8")).version}catch{return"0.0.0"}}function Nr(){try{let e=Me(import.meta.url).resolve(`${Ge}/package.json`);return JSON.parse(H.readFileSync(e,"utf8")).version}catch{return null}}function we(){let e=E;if(!e.split(z.sep).includes("node_modules"))return"source";try{if(H.lstatSync(e).isSymbolicLink())return"linked"}catch{}return"npm"}function Or(e=process.env){return e.HERDR_REMOTE_UPDATE_CHECK!=="0"}function Cr(){return we()==="npm"}function $(e,t){let o=r=>String(r).split("-")[0].split(".").map(i=>Number.parseInt(i,10)||0),n=o(e),s=o(t);for(let r=0;r<Math.max(n.length,s.length);r+=1){let i=(n[r]||0)-(s[r]||0);if(i>0)return 1;if(i<0)return-1}return 0}async function Hr({timeoutMs:e=6e3,fetchImpl:t=globalThis.fetch,registries:o,releaseManifest:n=Q,current:s=Ke()}={}){let r=(u,l)=>({ok:!0,current:s,latest:u,source:l,updateAvailable:$(u,s)>0}),i=[];if(n){let u=await ye(n,{timeoutMs:e,fetchImpl:t});if(u.ok)return r(u.latest,b);i.push(`${b}: ${u.message??""}`)}let c=await Promise.all((o??me()).map(async u=>({source:u,...await he(u,{timeoutMs:e,fetchImpl:t})}))),a=null;for(let u of c)u.ok?(!a||$(u.latest,a.latest)>0)&&(a=u):i.push(`${u.source}: ${u.message??""}`);return a?r(a.latest,a.source):{ok:!1,current:s,errorKey:"update.errorNetwork",message:i.join("; ")}}function Ye(e){let t=String(e||"").split(/\r?\n/).map(o=>o.trim()).filter(o=>/^npm (error|ERR!)/.test(o)&&!/complete log of this run/i.test(o)).map(o=>o.replace(/^npm (error|ERR!)\s*/,"")).filter(Boolean);return(t.length>0?t.slice(0,3):String(e||"").trim().split(/\r?\n/).slice(-3)).join(" ")}function Ue(e){return/\bETARGET\b|notarget|No matching version found/i.test(String(e||""))}function Ve(){try{return JSON.parse(H.readFileSync(z.join(E,"package.json"),"utf8")).version}catch{return null}}function Se(e,t,o){let n=o();return e&&n&&$(n,e)<0?{ok:!1,errorKey:"update.errorNotApplied",installed:n,output:t.slice(-2e3)}:{ok:!0,installed:n,output:t.slice(-2e3)}}async function Ir({spawnImpl:e=Fe,timeoutMs:t=18e4,installKindImpl:o=we,source:n="",version:s=null,attempts:r=3,retryDelayMs:i=15e3,sleep:c=m=>new Promise(f=>setTimeout(f,m)),readInstalledVersion:a=Ve,onAttempt:u=()=>{},platform:l=process.platform,inPlace:g=re,installReleaseImpl:x=ce}={}){let m=o();if(m!=="npm")return{ok:!1,errorKey:`update.cannot.${m}`};let f=typeof s=="string"&&V.test(s)?s:null,D=C(n),L,X="";if(!D||D===b){u({source:b,attempt:1});let k=f?K(f):G,R=await x({url:k,version:f,platform:l});if(R.ok)return Se(f,R.output,a);L=R.needsNpm?[b,""]:[""],X=`${k}: ${R.output}
5
+ `}else L=[D];let F={ok:!1,output:""},M=!1;for(let k of L){let R=k===b,B=R?["install","-g",f?K(f):G]:["install","-g",`${Be}@${f||"latest"}`,"--prefer-online"];k&&!R&&B.push("--registry",k);for(let j=1;j<=r;j+=1){u({source:k,attempt:j});let d=await Y(e,B,t);if(!d.ok&&l==="win32"&&ee(d.output)&&(d=await g(B,_e=>Y(e,_e,t))),d.ok)return Se(f,d.output,a);if(F=d,d.spawnFailed)return{ok:!1,errorKey:"update.errorFailed",output:d.output,summary:d.output};if(M=Ue(d.output),!M)break;j<r&&await c(i)}}return{ok:!1,errorKey:M?"update.errorNotYetPublished":"update.errorFailed",output:`${X}${String(F.output||"")}`.slice(-2e3),summary:Ye(F.output)}}import J from"node:fs";import q from"node:os";import S from"node:path";import{spawnSync as ze}from"node:child_process";var T="herdr",Ee="0.9.3",Je=["~/.local/bin","~/.cargo/bin","~/bin","/opt/homebrew/bin","/usr/local/bin","/home/linuxbrew/.linuxbrew/bin","/usr/bin"];function qe(e,t){return e==="~"?t:e.startsWith("~/")?S.join(t,e.slice(2)):e}function v(e=T,t=process.platform){return t!=="win32"?[e]:[/\.exe$/i.test(e)?e:`${e}.exe`]}function I(e){try{return J.statSync(e).isFile()?(J.accessSync(e,J.constants.X_OK),!0):!1}catch{return!1}}function W(e,t=v()){if(!e)return null;for(let o of t){let n=S.join(e,o);if(I(n))return n}return null}function ge(e,t=v()){for(let o of String(e||"").split(S.delimiter)){let n=W(o.trim(),t);if(n)return n}return null}function ke(e=q.homedir(),t=process.platform,o=process.env){return t==="win32"?[S.join(o.LOCALAPPDATA||S.join(e,"AppData","Local"),"Programs","Herdr","bin"),S.join(e,".cargo","bin"),S.join(e,"scoop","shims")]:Je.map(n=>qe(n,e))}function Re(e){return e.includes("/")||e.includes(S.sep)}function We(e,t,o){let n=String(e||"").trim();if(!n)return null;if(Re(n)){let s=S.resolve(n);if(I(s))return s;if(o==="win32"&&S.extname(s)===""){let r=`${s}.exe`;if(I(r))return r}return W(s,v(T,o))}return ge(t,v(n,o))}function be({env:e=process.env,home:t=q.homedir(),platform:o=process.platform,directories:n=ke(t,o,e)}={}){let s=v(T,o),r=We(e.HERDR_BIN_PATH,e.PATH,o);if(r)return{command:r,source:"env",found:!0};let i=ge(e.PATH,s);if(i)return{command:i,source:"path",found:!0};for(let c of n){let a=W(c,s);if(a)return{command:a,source:"fallback",found:!0}}return{command:T,source:"unresolved",found:!1}}function Xe(e){return be(e).command}function Kr(e,t={}){return typeof e=="string"&&Re(e)&&I(e)?{command:e,source:"verified",found:!0}:be(t)}function Ze(e){let t=/(\d+)\.(\d+)\.(\d+)/.exec(String(e||""));return t?`${t[1]}.${t[2]}.${t[3]}`:null}function Qe(e,t=Ee){return e?$(e,t)>=0:!0}function Yr({command:e,timeout:t=1e4,...o}={}){let n=e||Xe(o),s={command:n,version:null,raw:null,supported:!0,ok:!1},r;try{r=ze(n,["--version"],{encoding:"utf8",timeout:t,windowsHide:!0})}catch{return s}if(r.error||r.status!==0&&r.status!==1)return s;let i=`${r.stdout||""}${r.stderr||""}`.trim(),c=Ze(i);return{command:n,version:c,raw:i||null,supported:Qe(c),ok:!0}}function Ur(e){return`Herdr ${e} is older than ${Ee}, which herdr-remote is written against. Run "herdr update" \u2014 window titles, large pastes, taps on a pane and Alt shortcuts all misbehave in browser windows before that release.`}function Vr({env:e=process.env,home:t=q.homedir(),platform:o=process.platform,directories:n=ke(t,o,e)}={}){let s=String(e.HERDR_BIN_PATH||"").trim(),r=[`Herdr executable "${T}" was not found.`];return s&&r.push(`HERDR_BIN_PATH=${s} does not point at an executable.`),r.push(n.length?`Searched PATH and ${n.join(", ")}.`:"Searched PATH."),r.push("Install Herdr or set HERDR_BIN_PATH to its full path, then restart herdr-remote."),r.join(" ")}export{ee as a,Ke as b,Nr as c,we as d,Or as e,Cr as f,$ as g,Hr as h,Ve as i,Ir as j,Ee as k,be as l,Xe as m,Kr as n,Yr as o,Ur as p,Vr as q};
@@ -0,0 +1,3 @@
1
+ import { createRequire as __herdrCreateRequire } from 'node:module';
2
+ const require = __herdrCreateRequire(import.meta.url);
3
+ import{spawnSync as d}from"node:child_process";import a from"node:fs";var $=1e4,S=/herdr-remote-relay\.js|connector[\\/]main\.js|herdr-remote\.js"?\s+run\b/;function g(t){if(!Number.isInteger(t)||t<=0)return!1;try{return process.kill(t,0),!0}catch(e){return e.code==="EPERM"}}function u(t,e){let n=d(t,e,{encoding:"utf8",env:{...process.env,LC_ALL:"C",TZ:"UTC"},stdio:["ignore","pipe","ignore"],timeout:$,windowsHide:!0});return typeof n.stdout=="string"?n.stdout:""}function l(t){let e=new Map;for(let n of t.split(/\r?\n/)){let r=/^\s*(\d+)\s+(\S.*?)\s*$/.exec(n);r&&e.set(Number(r[1]),r[2])}return e}function _(t,e,n){let r="";if(e==="start")try{r=a.readFileSync("/proc/sys/kernel/random/boot_id","utf8").trim()}catch{return p(t,e,n)}let o=new Map;for(let s of t){let i;try{i=a.readFileSync(`/proc/${s}/${e==="start"?"stat":"cmdline"}`,"utf8")}catch{continue}if(e==="command"){o.set(s,i.replaceAll("\0"," ").trim());continue}let c=i.slice(i.lastIndexOf(")")+2).split(" ");c[19]&&o.set(s,`${r}:${c[19]}`)}return o}function p(t,e,n){return l(n("ps",["-o",`pid=,${e==="start"?"lstart":"command"}=`,"-p",t.join(",")]))}function h(t,e,n){let r=e==="start"?`Get-Process -Id ${t.join(",")} -ErrorAction SilentlyContinue | Where-Object StartTime | ForEach-Object { "$($_.Id) $($_.StartTime.ToFileTimeUtc())" }`:`Get-CimInstance Win32_Process -Filter "${t.map(o=>`ProcessId=${o}`).join(" OR ")}" | ForEach-Object { "$($_.ProcessId) $($_.CommandLine)" }`;return l(n("powershell.exe",["-NoProfile","-NonInteractive","-Command",r]))}function f(t,e,n,r){let o=[...new Set(t)].filter(g);return o.length===0?new Map:n==="linux"?_(o,e,r):n==="win32"?h(o,e,r):p(o,e,r)}function m(t,e=process.platform,n=u){return f(t,"start",e,n)}function w(t,e=process.platform,n=u){return f(t,"command",e,n)}function x(t,e=process.platform){return m([t],e).get(t)??null}function C(t){let e=s=>s.map(i=>i.pid).filter(i=>Number.isInteger(i)),n=t.filter(s=>typeof s.processStart!="string"),r=m(e(t.filter(s=>!n.includes(s)))),o=n.length>0?w(e(n)):new Map;return t.filter(s=>n.includes(s)?s.pid!==process.pid&&S.test(o.get(s.pid)??""):r.get(s.pid)===s.processStart)}export{g as a,x as b,C as c};
@@ -0,0 +1,6 @@
1
+ import { createRequire as __herdrCreateRequire } from 'node:module';
2
+ const require = __herdrCreateRequire(import.meta.url);
3
+ import{b as t}from"./7SMZ43LI.js";import"./I6NRCYLI.js";var n=globalThis;n.WebSocket||=t;n.window||=globalThis;n.self||=globalThis;n.window.__REACT_DEVTOOLS_COMPONENT_FILTERS__=[{type:1,value:7,isEnabled:!0},{type:2,value:"InternalApp",isEnabled:!0,isValid:!0},{type:2,value:"InternalAppContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStdoutContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStderrContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStdinContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalFocusContext",isEnabled:!0,isValid:!0}];import a from"react-devtools-core";var l=async()=>new Promise(o=>{let e=new t("ws://localhost:8097"),i=setTimeout(()=>{e.terminate(),o(!1)},2e3);i.unref(),e.on("open",()=>{clearTimeout(i),e.terminate(),o(!0)}),e.on("error",()=>{clearTimeout(i),e.terminate(),o(!1)})});await l()?(a.initialize(),a.connectToDevTools()):console.warn(`DEV is set to true, but the React DevTools server is not running. Start it with:
4
+
5
+ $ npx react-devtools
6
+ `);