github-router 0.3.45 → 0.3.66

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.
@@ -3756,6 +3756,7 @@ function sendToBrowser(msg) {
3756
3756
  process$1.stdout.write(frame);
3757
3757
  }
3758
3758
  const token = randomBytes(32).toString("hex");
3759
+ let extensionLoadedVersion;
3759
3760
  const httpServer = createServer((req, res) => {
3760
3761
  if ((req.headers.authorization ?? "") !== `Bearer ${token}`) {
3761
3762
  res.statusCode = 401;
@@ -3767,10 +3768,32 @@ const httpServer = createServer((req, res) => {
3767
3768
  res.end(JSON.stringify({
3768
3769
  ok: true,
3769
3770
  pid: process$1.pid,
3770
- extension_connected: extensionConnected()
3771
+ extension_connected: extensionConnected(),
3772
+ extension_loaded_version: extensionLoadedVersion,
3773
+ humanlike_tabs: Array.from(humanlikeTabs.entries()).map(([tabId, v]) => ({
3774
+ tabId,
3775
+ vendor: v.vendor,
3776
+ signal: v.signal,
3777
+ since: v.since
3778
+ }))
3771
3779
  }));
3772
3780
  return;
3773
3781
  }
3782
+ if (req.url === "/reload" && req.method === "POST") {
3783
+ try {
3784
+ sendToBrowser({ type: "__reload__" });
3785
+ res.setHeader("content-type", "application/json");
3786
+ res.end(JSON.stringify({ ok: true }));
3787
+ } catch (err) {
3788
+ res.statusCode = 500;
3789
+ res.setHeader("content-type", "application/json");
3790
+ res.end(JSON.stringify({
3791
+ ok: false,
3792
+ error: err instanceof Error ? err.message : String(err)
3793
+ }));
3794
+ }
3795
+ return;
3796
+ }
3774
3797
  res.statusCode = 404;
3775
3798
  res.end("not found");
3776
3799
  });
@@ -3837,10 +3860,24 @@ function extensionConnected() {
3837
3860
  }
3838
3861
  fromBrowserListeners.push((msg) => {
3839
3862
  lastBrowserContactMs = Date.now();
3863
+ if (msg && typeof msg === "object" && msg.type === "__hello__" && typeof msg.version === "string") {
3864
+ extensionLoadedVersion = msg.version;
3865
+ return;
3866
+ }
3867
+ if (msg && typeof msg === "object" && msg.type === "__botDetected__" && typeof msg.tabId === "number") {
3868
+ const m = msg;
3869
+ humanlikeTabs.set(m.tabId, {
3870
+ vendor: typeof m.vendor === "string" ? m.vendor : "unknown",
3871
+ signal: typeof m.signal === "string" ? m.signal : "",
3872
+ since: Date.now()
3873
+ });
3874
+ return;
3875
+ }
3840
3876
  const r = msg;
3841
3877
  if (typeof r.id !== "string") return;
3842
3878
  pendingResolve(r.id, r);
3843
3879
  });
3880
+ const humanlikeTabs = /* @__PURE__ */ new Map();
3844
3881
  httpServer.listen(0, "127.0.0.1", () => {
3845
3882
  const addr = httpServer.address();
3846
3883
  if (!addr || typeof addr === "string") {