@webextkits/messages-center 0.2.1 → 1.0.0

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.
@@ -1,66 +1,64 @@
1
- var g = Object.defineProperty;
2
- var u = (l, s, t) => s in l ? g(l, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : l[s] = t;
3
- var r = (l, s, t) => u(l, typeof s != "symbol" ? s + "" : s, t);
4
- class p {
5
- constructor(s, t) {
6
- r(this, "listeners", {});
7
- r(this, "tabs", []);
8
- r(this, "slug");
9
- r(this, "isDebugger");
10
- r(this, "callbackMap", /* @__PURE__ */ new Map());
11
- this.slug = s, this.isDebugger = !!t, this.bindMessage(), this.bindEvent();
1
+ class l {
2
+ listeners = {};
3
+ tabs = [];
4
+ slug;
5
+ isDebugger;
6
+ callbackMap = /* @__PURE__ */ new Map();
7
+ constructor(s, e) {
8
+ this.slug = s, this.isDebugger = !!e, this.bindMessage(), this.bindEvent();
12
9
  }
13
- on(s, t) {
10
+ on(s, e) {
14
11
  if (this.listeners[s]) throw new Error(`event listener ${String(s)} already exist!`);
15
- return this.listeners[s] = t, () => {
12
+ return this.listeners[s] = e, () => {
16
13
  delete this.listeners[s];
17
14
  };
18
15
  }
19
- async send(s, ...t) {
20
- this.isDebugger && console.log("发送消息", { action: s, payload: t, tabs: this.tabs });
21
- for (let e of this.tabs) try {
22
- const a = await chrome.tabs.get(e);
23
- a && a.id ? chrome.tabs.sendMessage(a.id, { from: this.slug, payload: { action: s, payload: t } }) : this.deleteTabById(e);
24
- } catch (a) {
25
- console.log(a), this.deleteTabById(e);
16
+ async send(s, ...e) {
17
+ this.isDebugger && console.log("发送消息", { action: s, payload: e, tabs: this.tabs });
18
+ for (let a of this.tabs) try {
19
+ const t = await chrome.tabs.get(a);
20
+ t && t.id ? chrome.tabs.sendMessage(t.id, { from: this.slug, payload: { action: s, payload: e } }) : this.deleteTabById(a);
21
+ } catch (t) {
22
+ console.log(t), this.deleteTabById(a);
26
23
  }
27
24
  }
28
- async sendWithCallback(s, t, ...e) {
29
- const a = c();
30
- this.callbackMap.set(a, t), this.isDebugger && console.log("发送消息", { action: s, payload: e, tabs: this.tabs });
31
- for (let o of this.tabs) try {
32
- const n = await chrome.tabs.get(o);
33
- n && n.id ? chrome.tabs.sendMessage(n.id, { from: this.slug, payload: { action: s, payload: e }, callbackId: a }) : this.deleteTabById(o);
34
- } catch (n) {
35
- console.log(n), this.deleteTabById(o);
25
+ async sendWithCallback(s, e, ...a) {
26
+ const t = r();
27
+ this.callbackMap.set(t, e), this.isDebugger && console.log("发送消息", { action: s, payload: a, tabs: this.tabs });
28
+ for (let n of this.tabs) try {
29
+ const o = await chrome.tabs.get(n);
30
+ o && o.id ? chrome.tabs.sendMessage(o.id, { from: this.slug, payload: { action: s, payload: a }, callbackId: t }) : this.deleteTabById(n);
31
+ } catch (o) {
32
+ console.log(o), this.deleteTabById(n);
36
33
  }
37
34
  }
38
- async sendByTabId(s, t, ...e) {
39
- this.isDebugger && console.log("发送消息(指定 tabId)", { tabId: s, action: t, payload: e });
40
- const a = c();
41
- return new Promise((o, n) => {
42
- this.callbackMap.set(a, function(i) {
43
- o(i);
35
+ async sendByTabId(s, e, ...a) {
36
+ this.isDebugger && console.log("发送消息(指定 tabId)", { tabId: s, action: e, payload: a });
37
+ const t = r();
38
+ return new Promise((n, o) => {
39
+ this.callbackMap.set(t, function(i) {
40
+ n(i);
44
41
  }), chrome.tabs.get(s).then((i) => {
45
- i && i.id ? chrome.tabs.sendMessage(i.id, { from: this.slug, payload: { action: t, payload: e }, callbackId: a }) : this.deleteTabById(s);
42
+ i && i.id ? chrome.tabs.sendMessage(i.id, { from: this.slug, payload: { action: e, payload: a }, callbackId: t }) : this.deleteTabById(s);
46
43
  }).catch((i) => {
47
44
  console.log(i), this.deleteTabById(s);
48
45
  });
49
46
  });
50
47
  }
51
48
  bindMessage() {
52
- chrome.runtime.onMessageExternal.addListener((s, t, e) => {
53
- var a, o, n;
54
- if ((a = t == null ? void 0 : t.tab) != null && a.id) {
55
- if (this.isDebugger && console.log("收到消息", { request: s, sender: t }), s.action === "__connect") return this.tabs.includes(t.tab.id) || this.tabs.push(t.tab.id), e();
56
- if (s.action === "__disconnect") return this.deleteTabById(t.tab.id), e();
49
+ chrome.runtime.onMessageExternal.addListener((s, e, a) => {
50
+ if (e?.tab?.id) {
51
+ if (this.isDebugger && console.log("收到消息", { request: s, sender: e }), s.action === "__connect") return this.tabs.includes(e.tab.id) || this.tabs.push(e.tab.id), a();
52
+ if (s.action === "__disconnect") return this.deleteTabById(e.tab.id), a();
57
53
  if (s.action === "__callback") {
58
- const { callbackId: i, result: d, errorMessage: b, status: h } = s.payload;
59
- return h === "error" ? console.error(b) : this.callbackMap.has(i) && ((o = this.callbackMap.get(i)) == null || o(d, t)), e();
54
+ const { callbackId: t, result: n, errorMessage: o, status: i } = s.payload;
55
+ return i === "error" ? console.error(o) : this.callbackMap.has(t) && this.callbackMap.get(t)?.(n, e), a();
60
56
  }
61
- if (this.listeners[s.action]) return (n = t == null ? void 0 : t.tab) != null && n.id ? (this.tabs.includes(t.tab.id) || this.tabs.push(t.tab.id), this.listeners[s.action].bind({ request: s, sender: t })(...s.payload).then((i) => {
62
- this.isDebugger && console.log("send to callback from background", { request: s, sender: t, res: i }), e(i);
63
- }), !0) : e();
57
+ if (this.listeners[s.action]) return e?.tab?.id ? (this.tabs.includes(e.tab.id) || this.tabs.push(e.tab.id), this.listeners[s.action].bind({ request: s, sender: e })(...s.payload).then((t) => {
58
+ this.isDebugger && console.log("send to callback from background", { request: s, sender: e, res: t }), a({ status: "success", result: t });
59
+ }).catch((t) => {
60
+ console.error(t), a({ status: "error", errorMessage: t.toString() });
61
+ }), !0) : a();
64
62
  }
65
63
  });
66
64
  }
@@ -71,14 +69,14 @@ class p {
71
69
  }
72
70
  deleteTabById(s) {
73
71
  if (this.tabs.includes(s)) {
74
- const t = this.tabs.indexOf(s);
75
- this.tabs.splice(t, 1);
72
+ const e = this.tabs.indexOf(s);
73
+ this.tabs.splice(e, 1);
76
74
  }
77
75
  }
78
76
  }
79
- function c() {
77
+ function r() {
80
78
  return (/* @__PURE__ */ new Date()).getTime().toString() + Math.random().toString(36).substring(2, 15);
81
79
  }
82
80
  export {
83
- p as MessageInstance
81
+ l as MessageInstance
84
82
  };
package/dist/hooks.js CHANGED
@@ -12,17 +12,17 @@ function l(s, i) {
12
12
  if (a === "*") {
13
13
  if (e.protocol !== "http:" && e.protocol !== "https:") return !1;
14
14
  } else if (e.protocol !== `${a}:`) return !1;
15
- return !!function(t, n) {
15
+ return !!(function(t, n) {
16
16
  if (t === "*") return !0;
17
17
  if (t.startsWith("*.")) {
18
18
  const u = t.slice(2);
19
19
  return n === u || n.endsWith("." + u);
20
20
  }
21
21
  return t === n;
22
- }(o, e.hostname) && !!function(t, n) {
22
+ })(o, e.hostname) && !!(function(t, n) {
23
23
  const u = t.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*");
24
24
  return new RegExp(`^${u}$`, "i").test(n);
25
- }(r, e.pathname);
25
+ })(r, e.pathname);
26
26
  }
27
27
  function h(s) {
28
28
  const { hostMatch: i, extensionId: e, isDev: c = !1 } = s;
package/dist/inject.js CHANGED
@@ -1,27 +1,24 @@
1
- var r = Object.defineProperty;
2
- var d = (t, e, s) => e in t ? r(t, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : t[e] = s;
3
- var a = (t, e, s) => d(t, typeof e != "symbol" ? e + "" : e, s);
4
- class h {
5
- constructor(e, s) {
6
- a(this, "id");
7
- a(this, "listeners", {});
8
- a(this, "slug");
9
- a(this, "isDebugger");
10
- this.slug = e, this.isDebugger = !!s, this.id = window[e].id, this.bindEvent();
11
- }
12
- on(e, s) {
13
- return this.listeners[e] = this.listeners[e] || [], this.listeners[e].push(s), () => {
14
- if (this.listeners[e].includes(s)) {
15
- const n = this.listeners[e].indexOf(s);
16
- this.listeners[e].splice(n, 1);
1
+ class o {
2
+ id;
3
+ listeners = {};
4
+ slug;
5
+ isDebugger;
6
+ constructor(e, t) {
7
+ this.slug = e, this.isDebugger = !!t, this.id = window[e].id, this.bindEvent();
8
+ }
9
+ on(e, t) {
10
+ return this.listeners[e] = this.listeners[e] || [], this.listeners[e].push(t), () => {
11
+ if (this.listeners[e].includes(t)) {
12
+ const a = this.listeners[e].indexOf(t);
13
+ this.listeners[e].splice(a, 1);
17
14
  }
18
15
  };
19
16
  }
20
- send(e, ...s) {
21
- return new Promise(async (n) => {
22
- let i = { action: e, payload: s };
23
- this.isDebugger && console.log("发送消息", i), chrome.runtime.sendMessage(this.id, i, {}, (o) => {
24
- this.isDebugger && console.log("收到消息", o), n(o);
17
+ send(e, ...t) {
18
+ return new Promise(async (a, n) => {
19
+ let i = { action: e, payload: t };
20
+ this.isDebugger && console.log(`[${i.action}] - 发送`, i), chrome.runtime.sendMessage(this.id, i, {}, (s) => {
21
+ this.isDebugger && (s?.status === "success" ? console.log(`[${i.action}] - 成功`, s?.result) : console.error(`[${i.action}] - 失败`, s?.errorMessage)), s?.status === "success" ? a(s?.result) : (console.error(s?.errorMessage), n(new Error(s?.errorMessage)));
25
22
  });
26
23
  });
27
24
  }
@@ -39,16 +36,16 @@ class h {
39
36
  }
40
37
  async _handleReceivingMessage(e) {
41
38
  if (e.data && e.data.from === this.slug && e.data.payload) {
42
- const { action: s, payload: n } = e.data.payload, { callbackId: i } = e.data;
43
- if (this.isDebugger && console.log("收到消息", e.data), this.listeners[s]) for (let o of this.listeners[s]) try {
44
- const c = await o(...n);
45
- i && chrome.runtime.sendMessage(this.id, { action: "__callback", payload: { status: "success", callbackId: i, result: c } });
46
- } catch (c) {
47
- i && chrome.runtime.sendMessage(this.id, { action: "__callback", payload: { status: "error", callbackId: i, errorMessage: c.toString(), result: void 0 } }), console.error(c);
39
+ const { action: t, payload: a } = e.data.payload, { callbackId: n } = e.data;
40
+ if (this.isDebugger && console.log("收到消息", e.data), this.listeners[t]) for (let i of this.listeners[t]) try {
41
+ const s = await i(...a);
42
+ n && chrome.runtime.sendMessage(this.id, { action: "__callback", payload: { status: "success", callbackId: n, result: s } });
43
+ } catch (s) {
44
+ n && chrome.runtime.sendMessage(this.id, { action: "__callback", payload: { status: "error", callbackId: n, errorMessage: s.toString(), result: void 0 } }), console.error(s);
48
45
  }
49
46
  }
50
47
  }
51
48
  }
52
49
  export {
53
- h as MessagesInstance
50
+ o as MessagesInstance
54
51
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@webextkits/messages-center",
3
3
  "private": false,
4
- "version": "0.2.1",
4
+ "version": "1.0.0",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  "./background": "./dist/background.js",
@@ -30,11 +30,11 @@
30
30
  ],
31
31
  "devDependencies": {
32
32
  "@rollup/plugin-terser": "^0.4.4",
33
- "@types/node": "^20.8.8",
34
- "esno": "^0.17.0",
35
- "glob": "^10.3.10",
36
- "typescript": "^5.0.2",
37
- "vite": "=5.4.10"
33
+ "@types/node": "^24.10.0",
34
+ "esno": "^4.8.0",
35
+ "glob": "^11.0.3",
36
+ "typescript": "^5.9.3",
37
+ "vite": "^7.2.1"
38
38
  },
39
39
  "scripts": {
40
40
  "build": "esno ./scripts/build.ts && npm run build:type",