webext-messenger 0.16.0 → 0.17.0-0
Sign up to get free protection for your applications and to get access to all the features.
- package/distribution/thisTarget.js +23 -4
- package/package.json +1 -1
@@ -6,6 +6,27 @@ import { debug } from "./shared.js";
|
|
6
6
|
// This CANNOT be awaited because waiting for it means "I will handle the message."
|
7
7
|
// If a message is received before this is ready, it will just have to be ignored.
|
8
8
|
let thisTarget;
|
9
|
+
function compareTargets(to, thisTarget) {
|
10
|
+
for (const [key, value] of Object.entries(to)) {
|
11
|
+
if (thisTarget[key] === value) {
|
12
|
+
continue;
|
13
|
+
}
|
14
|
+
if (key !== "page") {
|
15
|
+
return false;
|
16
|
+
}
|
17
|
+
const toUrl = new URL(to.page, location.origin);
|
18
|
+
const thisUrl = new URL(thisTarget.page, location.origin);
|
19
|
+
if (toUrl.pathname !== thisUrl.pathname) {
|
20
|
+
return false;
|
21
|
+
}
|
22
|
+
for (const [parameterKey, parameterValue] of toUrl.searchParams) {
|
23
|
+
if (thisUrl.searchParams.get(parameterKey) !== parameterValue) {
|
24
|
+
return false;
|
25
|
+
}
|
26
|
+
}
|
27
|
+
}
|
28
|
+
return true;
|
29
|
+
}
|
9
30
|
export function getActionForMessage(from, { ...to } // Clone object because we're editing it
|
10
31
|
) {
|
11
32
|
var _a;
|
@@ -31,9 +52,7 @@ export function getActionForMessage(from, { ...to } // Clone object because we'r
|
|
31
52
|
to.tabId = thisTarget.tabId;
|
32
53
|
}
|
33
54
|
// Every `target` key must match `thisTarget`
|
34
|
-
const isThisTarget =
|
35
|
-
// @ts-expect-error Optional properties
|
36
|
-
([key, value]) => thisTarget[key] === value);
|
55
|
+
const isThisTarget = compareTargets(to, thisTarget);
|
37
56
|
if (!isThisTarget) {
|
38
57
|
debug("The message’s target is", to, "but this is", thisTarget);
|
39
58
|
}
|
@@ -45,7 +64,7 @@ export async function nameThisTarget() {
|
|
45
64
|
if (!nameRequested && !thisTarget && !isContentScript()) {
|
46
65
|
nameRequested = true;
|
47
66
|
thisTarget = await messenger("__getTabData", {}, { page: "any" });
|
48
|
-
thisTarget.page = location.pathname;
|
67
|
+
thisTarget.page = location.pathname + location.search;
|
49
68
|
}
|
50
69
|
}
|
51
70
|
function __getTabData() {
|