@keplr-wallet/router 0.9.0 → 0.10.0-rc.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.
- package/build/index.d.ts +1 -3
- package/build/index.js +1 -3
- package/build/index.js.map +1 -1
- package/build/json-uint8-array/hex.d.ts +2 -0
- package/build/json-uint8-array/hex.js +31 -0
- package/build/json-uint8-array/hex.js.map +1 -0
- package/build/json-uint8-array/index.js +4 -3
- package/build/json-uint8-array/index.js.map +1 -1
- package/build/json-uint8-array/json.spec.js +5 -6
- package/build/json-uint8-array/json.spec.js.map +1 -1
- package/build/message.d.ts +5 -0
- package/build/message.js.map +1 -1
- package/build/router/index.d.ts +22 -3
- package/build/router/index.js +54 -12
- package/build/router/index.js.map +1 -1
- package/build/types.d.ts +2 -2
- package/package.json +2 -7
- package/src/index.ts +1 -3
- package/src/json-uint8-array/hex.ts +28 -0
- package/src/json-uint8-array/index.ts +7 -6
- package/src/json-uint8-array/json.spec.ts +0 -1
- package/src/message.ts +6 -0
- package/src/router/index.ts +64 -3
- package/src/types.ts +8 -2
- package/build/env/content-script.d.ts +0 -4
- package/build/env/content-script.js +0 -18
- package/build/env/content-script.js.map +0 -1
- package/build/env/extension.d.ts +0 -5
- package/build/env/extension.js +0 -127
- package/build/env/extension.js.map +0 -1
- package/build/env/extension.spec.d.ts +0 -1
- package/build/env/extension.spec.js +0 -33
- package/build/env/extension.spec.js.map +0 -1
- package/build/env/index.d.ts +0 -3
- package/build/env/index.js +0 -16
- package/build/env/index.js.map +0 -1
- package/build/env/mock.d.ts +0 -7
- package/build/env/mock.js +0 -23
- package/build/env/mock.js.map +0 -1
- package/build/guard/content-script.d.ts +0 -4
- package/build/guard/content-script.js +0 -14
- package/build/guard/content-script.js.map +0 -1
- package/build/guard/extension.d.ts +0 -5
- package/build/guard/extension.js +0 -27
- package/build/guard/extension.js.map +0 -1
- package/build/guard/index.d.ts +0 -3
- package/build/guard/index.js +0 -16
- package/build/guard/index.js.map +0 -1
- package/build/guard/mock.d.ts +0 -5
- package/build/guard/mock.js +0 -10
- package/build/guard/mock.js.map +0 -1
- package/build/mock/mock.spec.d.ts +0 -1
- package/build/mock/mock.spec.js +0 -118
- package/build/mock/mock.spec.js.map +0 -1
- package/build/requester/content-script.d.ts +0 -5
- package/build/requester/content-script.js +0 -51
- package/build/requester/content-script.js.map +0 -1
- package/build/requester/extension.d.ts +0 -6
- package/build/requester/extension.js +0 -59
- package/build/requester/extension.js.map +0 -1
- package/build/requester/index.d.ts +0 -3
- package/build/requester/index.js +0 -16
- package/build/requester/index.js.map +0 -1
- package/build/requester/mock.d.ts +0 -8
- package/build/requester/mock.js +0 -52
- package/build/requester/mock.js.map +0 -1
- package/build/router/extension.d.ts +0 -9
- package/build/router/extension.js +0 -77
- package/build/router/extension.js.map +0 -1
- package/build/router/mock.d.ts +0 -17
- package/build/router/mock.js +0 -59
- package/build/router/mock.js.map +0 -1
- package/build/router/types.d.ts +0 -22
- package/build/router/types.js +0 -57
- package/build/router/types.js.map +0 -1
- package/src/env/content-script.ts +0 -18
- package/src/env/extension.spec.ts +0 -77
- package/src/env/extension.ts +0 -151
- package/src/env/index.ts +0 -3
- package/src/env/mock.ts +0 -23
- package/src/guard/content-script.ts +0 -19
- package/src/guard/extension.ts +0 -36
- package/src/guard/index.ts +0 -3
- package/src/guard/mock.ts +0 -10
- package/src/mock/mock.spec.ts +0 -131
- package/src/requester/content-script.ts +0 -45
- package/src/requester/extension.ts +0 -66
- package/src/requester/index.ts +0 -3
- package/src/requester/mock.ts +0 -48
- package/src/router/extension.ts +0 -72
- package/src/router/mock.ts +0 -55
- package/src/router/types.ts +0 -64
package/build/env/extension.js
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.ExtensionEnv = void 0;
|
|
16
|
-
const popup_1 = require("@keplr-wallet/popup");
|
|
17
|
-
const constant_1 = require("../constant");
|
|
18
|
-
const requester_1 = require("../requester");
|
|
19
|
-
const p_queue_1 = __importDefault(require("p-queue"));
|
|
20
|
-
const openPopupQueue = new p_queue_1.default({
|
|
21
|
-
concurrency: 1,
|
|
22
|
-
});
|
|
23
|
-
// To handle the opening popup more easily,
|
|
24
|
-
// just open the popup one by one.
|
|
25
|
-
function openPopupWindow(url, channel = "default") {
|
|
26
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
-
return yield openPopupQueue.add(() => popup_1.openPopupWindow(url, channel));
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
class ExtensionEnv {
|
|
31
|
-
}
|
|
32
|
-
exports.ExtensionEnv = ExtensionEnv;
|
|
33
|
-
ExtensionEnv.produceEnv = (sender) => {
|
|
34
|
-
const isInternalMsg = ExtensionEnv.checkIsInternalMessage(sender, browser.runtime.id, browser.runtime.getURL("/"));
|
|
35
|
-
// Add additional query string for letting the extension know it is for interaction.
|
|
36
|
-
const queryString = `interaction=true&interactionInternal=${isInternalMsg}`;
|
|
37
|
-
const openAndSendMsg = (url, msg, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
38
|
-
if (url.startsWith("/")) {
|
|
39
|
-
url = url.slice(1);
|
|
40
|
-
}
|
|
41
|
-
url = browser.runtime.getURL("/popup.html#/" + url);
|
|
42
|
-
if (url.includes("?")) {
|
|
43
|
-
url += "&" + queryString;
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
url += "?" + queryString;
|
|
47
|
-
}
|
|
48
|
-
const windowId = yield openPopupWindow(url, options === null || options === void 0 ? void 0 : options.channel);
|
|
49
|
-
const window = yield browser.windows.get(windowId, {
|
|
50
|
-
populate: true,
|
|
51
|
-
});
|
|
52
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
53
|
-
const tabId = window.tabs[0].id;
|
|
54
|
-
// Wait until that tab is loaded
|
|
55
|
-
yield (() => __awaiter(void 0, void 0, void 0, function* () {
|
|
56
|
-
const tab = yield browser.tabs.get(tabId);
|
|
57
|
-
if (tab.status === "complete") {
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
return new Promise((resolve) => {
|
|
61
|
-
browser.tabs.onUpdated.addListener((_tabId, changeInfo) => {
|
|
62
|
-
if (tabId === _tabId && changeInfo.status === "complete") {
|
|
63
|
-
resolve();
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
}))();
|
|
68
|
-
return yield requester_1.InExtensionMessageRequester.sendMessageToTab(tabId, constant_1.APP_PORT, msg);
|
|
69
|
-
});
|
|
70
|
-
if (!isInternalMsg) {
|
|
71
|
-
// If msg is from external (probably from webpage), it opens the popup for extension and send the msg back to the tab opened.
|
|
72
|
-
return {
|
|
73
|
-
isInternalMsg,
|
|
74
|
-
requestInteraction: openAndSendMsg,
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
// If msg is from the extension itself, it can send the msg back to the extension itself.
|
|
79
|
-
// In this case, this expects that there is only one extension popup have been opened.
|
|
80
|
-
const requestInteraction = (url, msg, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
81
|
-
if (options === null || options === void 0 ? void 0 : options.forceOpenWindow) {
|
|
82
|
-
return yield openAndSendMsg(url, msg, options);
|
|
83
|
-
}
|
|
84
|
-
if (url.startsWith("/")) {
|
|
85
|
-
url = url.slice(1);
|
|
86
|
-
}
|
|
87
|
-
url = browser.runtime.getURL("/popup.html#/" + url);
|
|
88
|
-
if (url.includes("?")) {
|
|
89
|
-
url += "&" + queryString;
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
url += "?" + queryString;
|
|
93
|
-
}
|
|
94
|
-
const backgroundPage = yield browser.runtime.getBackgroundPage();
|
|
95
|
-
const windows = browser.extension.getViews().filter((window) => {
|
|
96
|
-
return window.location.href !== backgroundPage.location.href;
|
|
97
|
-
});
|
|
98
|
-
const prefer = windows.find((window) => {
|
|
99
|
-
return window.location.href === sender.url;
|
|
100
|
-
});
|
|
101
|
-
(prefer !== null && prefer !== void 0 ? prefer : windows[0]).location.href = url;
|
|
102
|
-
return yield new requester_1.InExtensionMessageRequester().sendMessage(constant_1.APP_PORT, msg);
|
|
103
|
-
});
|
|
104
|
-
return {
|
|
105
|
-
isInternalMsg,
|
|
106
|
-
requestInteraction,
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
ExtensionEnv.checkIsInternalMessage = (sender, extensionId, extensionUrl) => {
|
|
111
|
-
if (!sender.url) {
|
|
112
|
-
throw new Error("Empty sender url");
|
|
113
|
-
}
|
|
114
|
-
const url = new URL(sender.url);
|
|
115
|
-
if (!url.origin || url.origin === "null") {
|
|
116
|
-
throw new Error("Invalid sender url");
|
|
117
|
-
}
|
|
118
|
-
const browserURL = new URL(extensionUrl);
|
|
119
|
-
if (!browserURL.origin || browserURL.origin === "null") {
|
|
120
|
-
throw new Error("Invalid browser url");
|
|
121
|
-
}
|
|
122
|
-
if (url.origin !== browserURL.origin) {
|
|
123
|
-
return false;
|
|
124
|
-
}
|
|
125
|
-
return sender.id === extensionId;
|
|
126
|
-
};
|
|
127
|
-
//# sourceMappingURL=extension.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../src/env/extension.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,+CAA8E;AAC9E,0CAAuC;AACvC,4CAA2D;AAC3D,sDAA6B;AAE7B,MAAM,cAAc,GAAG,IAAI,iBAAM,CAAC;IAChC,WAAW,EAAE,CAAC;CACf,CAAC,CAAC;AAEH,2CAA2C;AAC3C,kCAAkC;AAClC,SAAe,eAAe,CAC5B,GAAW,EACX,UAAkB,SAAS;;QAE3B,OAAO,MAAM,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,uBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5E,CAAC;CAAA;AAED,MAAa,YAAY;;AAAzB,oCAmIC;AAlIiB,uBAAU,GAAG,CAAC,MAAqB,EAAO,EAAE;IAC1D,MAAM,aAAa,GAAG,YAAY,CAAC,sBAAsB,CACvD,MAAM,EACN,OAAO,CAAC,OAAO,CAAC,EAAE,EAClB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAC5B,CAAC;IAEF,oFAAoF;IACpF,MAAM,WAAW,GAAG,wCAAwC,aAAa,EAAE,CAAC;IAE5E,MAAM,cAAc,GAAyB,CAAO,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;QACvE,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACvB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACpB;QAED,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC;QAEpD,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACrB,GAAG,IAAI,GAAG,GAAG,WAAW,CAAC;SAC1B;aAAM;YACL,GAAG,IAAI,GAAG,GAAG,WAAW,CAAC;SAC1B;QAED,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;YACjD,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QAEH,oEAAoE;QACpE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,EAAG,CAAC;QAElC,gCAAgC;QAChC,MAAM,CAAC,GAAS,EAAE;YAChB,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE;gBAC7B,OAAO;aACR;YAED,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBACnC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE;oBACxD,IAAI,KAAK,KAAK,MAAM,IAAI,UAAU,CAAC,MAAM,KAAK,UAAU,EAAE;wBACxD,OAAO,EAAE,CAAC;qBACX;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAA,CAAC,EAAE,CAAC;QAEL,OAAO,MAAM,uCAA2B,CAAC,gBAAgB,CACvD,KAAK,EACL,mBAAQ,EACR,GAAG,CACJ,CAAC;IACJ,CAAC,CAAA,CAAC;IAEF,IAAI,CAAC,aAAa,EAAE;QAClB,6HAA6H;QAC7H,OAAO;YACL,aAAa;YACb,kBAAkB,EAAE,cAAc;SACnC,CAAC;KACH;SAAM;QACL,yFAAyF;QACzF,sFAAsF;QACtF,MAAM,kBAAkB,GAAyB,CAC/C,GAAG,EACH,GAAG,EACH,OAAO,EACP,EAAE;YACF,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,EAAE;gBAC5B,OAAO,MAAM,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;aAChD;YAED,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBACvB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACpB;YAED,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC;YAEpD,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACrB,GAAG,IAAI,GAAG,GAAG,WAAW,CAAC;aAC1B;iBAAM;gBACL,GAAG,IAAI,GAAG,GAAG,WAAW,CAAC;aAC1B;YAED,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;YACjE,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC7D,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC/D,CAAC,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACrC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,CAAC;YAC7C,CAAC,CAAC,CAAC;YACH,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;YAE3C,OAAO,MAAM,IAAI,uCAA2B,EAAE,CAAC,WAAW,CACxD,mBAAQ,EACR,GAAG,CACJ,CAAC;QACJ,CAAC,CAAA,CAAC;QAEF,OAAO;YACL,aAAa;YACb,kBAAkB;SACnB,CAAC;KACH;AACH,CAAC,CAAC;AAEqB,mCAAsB,GAAG,CAC9C,MAAqB,EACrB,WAAmB,EACnB,YAAoB,EACX,EAAE;IACX,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;KACrC;IACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE;QACxC,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;KACvC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM,EAAE;QACtD,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;KACxC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE;QACpC,OAAO,KAAK,CAAC;KACd;IAED,OAAO,MAAM,CAAC,EAAE,KAAK,WAAW,CAAC;AACnC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const assert_1 = __importDefault(require("assert"));
|
|
7
|
-
const extension_1 = require("./extension");
|
|
8
|
-
describe("Test extension env producer", () => {
|
|
9
|
-
const extensionId = "id";
|
|
10
|
-
const extensionUrl = "https://wallet.keplr.app";
|
|
11
|
-
const validSender = {
|
|
12
|
-
id: extensionId,
|
|
13
|
-
url: extensionUrl,
|
|
14
|
-
};
|
|
15
|
-
it("should return true if the sender is internal else return false", () => {
|
|
16
|
-
assert_1.default.strictEqual(extension_1.ExtensionEnv.checkIsInternalMessage(validSender, extensionId, extensionUrl), true);
|
|
17
|
-
assert_1.default.strictEqual(extension_1.ExtensionEnv.checkIsInternalMessage(Object.assign(Object.assign({}, validSender), { url: "https://other.com" }), extensionId, extensionUrl), false);
|
|
18
|
-
assert_1.default.strictEqual(extension_1.ExtensionEnv.checkIsInternalMessage(Object.assign(Object.assign({}, validSender), { id: "other_id" }), extensionId, extensionUrl), false);
|
|
19
|
-
assert_1.default.strictEqual(extension_1.ExtensionEnv.checkIsInternalMessage({
|
|
20
|
-
id: "other_id",
|
|
21
|
-
url: "https://other.com",
|
|
22
|
-
}, extensionId, extensionUrl), false);
|
|
23
|
-
});
|
|
24
|
-
it("should throw an error if the sender is invalid", () => {
|
|
25
|
-
assert_1.default.throws(() => {
|
|
26
|
-
extension_1.ExtensionEnv.checkIsInternalMessage({}, "id", "https://wallet.keplr.app");
|
|
27
|
-
});
|
|
28
|
-
assert_1.default.throws(() => {
|
|
29
|
-
extension_1.ExtensionEnv.checkIsInternalMessage(Object.assign(Object.assign({}, validSender), { url: "invalid://test.com" }), "id", "https://wallet.keplr.app");
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
//# sourceMappingURL=extension.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extension.spec.js","sourceRoot":"","sources":["../../src/env/extension.spec.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAE5B,2CAA2C;AAG3C,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,MAAM,WAAW,GAAG,IAAI,CAAC;IACzB,MAAM,YAAY,GAAG,0BAA0B,CAAC;IAChD,MAAM,WAAW,GAAkB;QACjC,EAAE,EAAE,WAAW;QACf,GAAG,EAAE,YAAY;KAClB,CAAC;IAEF,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,gBAAM,CAAC,WAAW,CAChB,wBAAY,CAAC,sBAAsB,CACjC,WAAW,EACX,WAAW,EACX,YAAY,CACb,EACD,IAAI,CACL,CAAC;QAEF,gBAAM,CAAC,WAAW,CAChB,wBAAY,CAAC,sBAAsB,iCAE5B,WAAW,KACd,GAAG,EAAE,mBAAmB,KAE1B,WAAW,EACX,YAAY,CACb,EACD,KAAK,CACN,CAAC;QAEF,gBAAM,CAAC,WAAW,CAChB,wBAAY,CAAC,sBAAsB,iCAE5B,WAAW,KACd,EAAE,EAAE,UAAU,KAEhB,WAAW,EACX,YAAY,CACb,EACD,KAAK,CACN,CAAC;QAEF,gBAAM,CAAC,WAAW,CAChB,wBAAY,CAAC,sBAAsB,CACjC;YACE,EAAE,EAAE,UAAU;YACd,GAAG,EAAE,mBAAmB;SACzB,EACD,WAAW,EACX,YAAY,CACb,EACD,KAAK,CACN,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,gBAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,wBAAY,CAAC,sBAAsB,CAAC,EAAE,EAAE,IAAI,EAAE,0BAA0B,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QAEH,gBAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,wBAAY,CAAC,sBAAsB,iCAE5B,WAAW,KACd,GAAG,EAAE,oBAAoB,KAE3B,IAAI,EACJ,0BAA0B,CAC3B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/build/env/index.d.ts
DELETED
package/build/env/index.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
-
};
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
__exportStar(require("./extension"), exports);
|
|
14
|
-
__exportStar(require("./content-script"), exports);
|
|
15
|
-
__exportStar(require("./mock"), exports);
|
|
16
|
-
//# sourceMappingURL=index.js.map
|
package/build/env/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/env/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4B;AAC5B,mDAAiC;AACjC,yCAAuB"}
|
package/build/env/mock.d.ts
DELETED
package/build/env/mock.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MockEnv = void 0;
|
|
4
|
-
const extension_1 = require("./extension");
|
|
5
|
-
class MockEnv {
|
|
6
|
-
constructor(id, url) {
|
|
7
|
-
this.id = id;
|
|
8
|
-
this.url = url;
|
|
9
|
-
}
|
|
10
|
-
envProducer() {
|
|
11
|
-
return (sender) => {
|
|
12
|
-
const isInternalMsg = extension_1.ExtensionEnv.checkIsInternalMessage(sender, this.id, this.url);
|
|
13
|
-
return {
|
|
14
|
-
isInternalMsg,
|
|
15
|
-
requestInteraction: () => {
|
|
16
|
-
throw new Error("TODO: Implement me");
|
|
17
|
-
},
|
|
18
|
-
};
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
exports.MockEnv = MockEnv;
|
|
23
|
-
//# sourceMappingURL=mock.js.map
|
package/build/env/mock.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../../src/env/mock.ts"],"names":[],"mappings":";;;AACA,2CAA2C;AAE3C,MAAa,OAAO;IAClB,YAA+B,EAAU,EAAqB,GAAW;QAA1C,OAAE,GAAF,EAAE,CAAQ;QAAqB,QAAG,GAAH,GAAG,CAAQ;IAAG,CAAC;IAE7E,WAAW;QACT,OAAO,CAAC,MAAqB,EAAO,EAAE;YACpC,MAAM,aAAa,GAAG,wBAAY,CAAC,sBAAsB,CACvD,MAAM,EACN,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,GAAG,CACT,CAAC;YAEF,OAAO;gBACL,aAAa;gBACb,kBAAkB,EAAE,GAAG,EAAE;oBACvB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBACxC,CAAC;aACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CACF;AAnBD,0BAmBC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ContentScriptGuards = void 0;
|
|
4
|
-
class ContentScriptGuards {
|
|
5
|
-
}
|
|
6
|
-
exports.ContentScriptGuards = ContentScriptGuards;
|
|
7
|
-
// Router in content script will reject all messages that can be sent from the external.
|
|
8
|
-
ContentScriptGuards.checkMessageIsInternal = (env, msg, sender) => {
|
|
9
|
-
if (!env.isInternalMsg || msg.approveExternal(env, sender)) {
|
|
10
|
-
throw new Error("Content script can't handle the message that is able to be sent from external");
|
|
11
|
-
}
|
|
12
|
-
return Promise.resolve();
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=content-script.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"content-script.js","sourceRoot":"","sources":["../../src/guard/content-script.ts"],"names":[],"mappings":";;;AAGA,MAAa,mBAAmB;;AAAhC,kDAeC;AAdC,wFAAwF;AACxE,0CAAsB,GAAU,CAC9C,GAAoC,EACpC,GAAqB,EACrB,MAAqB,EACN,EAAE;IACjB,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE;QAC1D,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;KACH;IAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC3B,CAAC,CAAC"}
|
package/build/guard/extension.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ExtensionGuards = void 0;
|
|
4
|
-
class ExtensionGuards {
|
|
5
|
-
}
|
|
6
|
-
exports.ExtensionGuards = ExtensionGuards;
|
|
7
|
-
ExtensionGuards.checkOriginIsValid = (_, msg, sender) => {
|
|
8
|
-
// TODO: When is a url undefined?
|
|
9
|
-
if (!sender.url) {
|
|
10
|
-
throw new Error("url is empty");
|
|
11
|
-
}
|
|
12
|
-
if (!msg.origin) {
|
|
13
|
-
throw new Error("origin is empty");
|
|
14
|
-
}
|
|
15
|
-
const url = new URL(sender.url);
|
|
16
|
-
if (url.origin !== msg.origin) {
|
|
17
|
-
throw new Error("Invalid origin");
|
|
18
|
-
}
|
|
19
|
-
return Promise.resolve();
|
|
20
|
-
};
|
|
21
|
-
ExtensionGuards.checkMessageIsInternal = (env, msg, sender) => {
|
|
22
|
-
if (!env.isInternalMsg && !msg.approveExternal(env, sender)) {
|
|
23
|
-
throw new Error("Permission rejected");
|
|
24
|
-
}
|
|
25
|
-
return Promise.resolve();
|
|
26
|
-
};
|
|
27
|
-
//# sourceMappingURL=extension.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../src/guard/extension.ts"],"names":[],"mappings":";;;AAGA,MAAa,eAAe;;AAA5B,0CAgCC;AA/BiB,kCAAkB,GAAU,CAC1C,CAAkC,EAClC,GAAqB,EACrB,MAAqB,EACN,EAAE;IACjB,iCAAiC;IACjC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;KACjC;IAED,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;KACpC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;KACnC;IACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC3B,CAAC,CAAC;AAEc,sCAAsB,GAAU,CAC9C,GAAoC,EACpC,GAAqB,EACrB,MAAqB,EACN,EAAE;IACjB,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE;QAC3D,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;KACxC;IACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC3B,CAAC,CAAC"}
|
package/build/guard/index.d.ts
DELETED
package/build/guard/index.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
-
};
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
__exportStar(require("./extension"), exports);
|
|
14
|
-
__exportStar(require("./content-script"), exports);
|
|
15
|
-
__exportStar(require("./mock"), exports);
|
|
16
|
-
//# sourceMappingURL=index.js.map
|
package/build/guard/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/guard/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4B;AAC5B,mDAAiC;AACjC,yCAAuB"}
|
package/build/guard/mock.d.ts
DELETED
package/build/guard/mock.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MockGuards = void 0;
|
|
4
|
-
const extension_1 = require("./extension");
|
|
5
|
-
class MockGuards {
|
|
6
|
-
}
|
|
7
|
-
exports.MockGuards = MockGuards;
|
|
8
|
-
MockGuards.checkOriginIsValid = extension_1.ExtensionGuards.checkOriginIsValid;
|
|
9
|
-
MockGuards.checkMessageIsInternal = extension_1.ExtensionGuards.checkMessageIsInternal;
|
|
10
|
-
//# sourceMappingURL=mock.js.map
|
package/build/guard/mock.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../../src/guard/mock.ts"],"names":[],"mappings":";;;AACA,2CAA8C;AAE9C,MAAa,UAAU;;AAAvB,gCAMC;AALiB,6BAAkB,GAChC,2BAAe,CAAC,kBAAkB,CAAC;AAErB,iCAAsB,GACpC,2BAAe,CAAC,sBAAsB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/build/mock/mock.spec.js
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
const assert_1 = __importDefault(require("assert"));
|
|
16
|
-
const message_1 = require("../message");
|
|
17
|
-
const router_1 = require("../router");
|
|
18
|
-
const env_1 = require("../env");
|
|
19
|
-
const requester_1 = require("../requester");
|
|
20
|
-
const guard_1 = require("../guard");
|
|
21
|
-
class MockMessage extends message_1.Message {
|
|
22
|
-
static type() {
|
|
23
|
-
return "mock";
|
|
24
|
-
}
|
|
25
|
-
route() {
|
|
26
|
-
return "mock";
|
|
27
|
-
}
|
|
28
|
-
type() {
|
|
29
|
-
return MockMessage.type();
|
|
30
|
-
}
|
|
31
|
-
validateBasic() {
|
|
32
|
-
// noop
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
class MockExternalMessage extends message_1.Message {
|
|
36
|
-
static type() {
|
|
37
|
-
return "mock-extern";
|
|
38
|
-
}
|
|
39
|
-
route() {
|
|
40
|
-
return "mock-extern";
|
|
41
|
-
}
|
|
42
|
-
type() {
|
|
43
|
-
return MockExternalMessage.type();
|
|
44
|
-
}
|
|
45
|
-
validateBasic() {
|
|
46
|
-
// noop
|
|
47
|
-
}
|
|
48
|
-
approveExternal() {
|
|
49
|
-
return true;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
describe("Test message permission", () => {
|
|
53
|
-
const port = "port";
|
|
54
|
-
const mockId = "mock";
|
|
55
|
-
const mockUrl = "http://mock.com";
|
|
56
|
-
const mockInternalRequester = new requester_1.MockMessageRequester(mockId, mockUrl);
|
|
57
|
-
const mockExternalRequester = new requester_1.MockMessageRequester(mockId, "http://other.com");
|
|
58
|
-
const mockExternalRequester2 = new requester_1.MockMessageRequester("other", mockUrl);
|
|
59
|
-
const mockExternalRequester3 = new requester_1.MockMessageRequester("other", "http://other.com");
|
|
60
|
-
let router;
|
|
61
|
-
beforeEach(() => {
|
|
62
|
-
// Init router for mocking.
|
|
63
|
-
router = new router_1.MockRouter(new env_1.MockEnv(mockId, mockUrl).envProducer());
|
|
64
|
-
router.addGuard(guard_1.MockGuards.checkOriginIsValid);
|
|
65
|
-
router.addGuard(guard_1.MockGuards.checkMessageIsInternal);
|
|
66
|
-
router.registerMessage(MockMessage);
|
|
67
|
-
router.registerMessage(MockExternalMessage);
|
|
68
|
-
router.addHandler("mock", () => true);
|
|
69
|
-
router.addHandler("mock-extern", () => true);
|
|
70
|
-
router.listen(port);
|
|
71
|
-
});
|
|
72
|
-
afterEach(() => {
|
|
73
|
-
if (router) {
|
|
74
|
-
router.unlisten();
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
const testSendMessage = (msg, isAllowExternal) => __awaiter(void 0, void 0, void 0, function* () {
|
|
78
|
-
const result = yield mockInternalRequester.sendMessage(port, msg);
|
|
79
|
-
assert_1.default.strictEqual(result, true);
|
|
80
|
-
if (isAllowExternal) {
|
|
81
|
-
yield assert_1.default.doesNotReject(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
82
|
-
const result = yield mockExternalRequester.sendMessage(port, msg);
|
|
83
|
-
assert_1.default.strictEqual(result, true);
|
|
84
|
-
}));
|
|
85
|
-
yield assert_1.default.doesNotReject(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
86
|
-
const result = yield mockExternalRequester2.sendMessage(port, msg);
|
|
87
|
-
assert_1.default.strictEqual(result, true);
|
|
88
|
-
}));
|
|
89
|
-
yield assert_1.default.doesNotReject(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
90
|
-
const result = yield mockExternalRequester3.sendMessage(port, msg);
|
|
91
|
-
assert_1.default.strictEqual(result, true);
|
|
92
|
-
}));
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
yield assert_1.default.rejects(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
96
|
-
const result = yield mockExternalRequester.sendMessage(port, msg);
|
|
97
|
-
assert_1.default.strictEqual(result, true);
|
|
98
|
-
}));
|
|
99
|
-
yield assert_1.default.rejects(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
100
|
-
const result = yield mockExternalRequester2.sendMessage(port, msg);
|
|
101
|
-
assert_1.default.strictEqual(result, true);
|
|
102
|
-
}));
|
|
103
|
-
yield assert_1.default.rejects(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
104
|
-
const result = yield mockExternalRequester3.sendMessage(port, msg);
|
|
105
|
-
assert_1.default.strictEqual(result, true);
|
|
106
|
-
}));
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
it("Basic message should be allowed only if it is from internal", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
110
|
-
const mockMsg = new MockMessage();
|
|
111
|
-
yield testSendMessage(mockMsg, false);
|
|
112
|
-
}));
|
|
113
|
-
it("External message should be allowed event if it is from external", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
114
|
-
const mockMsg = new MockExternalMessage();
|
|
115
|
-
yield testSendMessage(mockMsg, true);
|
|
116
|
-
}));
|
|
117
|
-
});
|
|
118
|
-
//# sourceMappingURL=mock.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mock.spec.js","sourceRoot":"","sources":["../../src/mock/mock.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { MessageRequester } from "../types";
|
|
2
|
-
import { Message } from "../message";
|
|
3
|
-
export declare class ContentScriptMessageRequester implements MessageRequester {
|
|
4
|
-
sendMessage<M extends Message<unknown>>(port: string, msg: M): Promise<M extends Message<infer R> ? R : never>;
|
|
5
|
-
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.ContentScriptMessageRequester = void 0;
|
|
13
|
-
const json_uint8_array_1 = require("../json-uint8-array");
|
|
14
|
-
// The message requester to send the message to the content scripts.
|
|
15
|
-
// This will send message to the tab with the content script.
|
|
16
|
-
// And, this can't handle the result of the message sending.
|
|
17
|
-
// TODO: Research to improve this requester.
|
|
18
|
-
class ContentScriptMessageRequester {
|
|
19
|
-
sendMessage(port, msg) {
|
|
20
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
-
msg.validateBasic();
|
|
22
|
-
// Set message's origin.
|
|
23
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
24
|
-
// @ts-ignore
|
|
25
|
-
msg["origin"] = window.location.origin;
|
|
26
|
-
const wrappedMsg = json_uint8_array_1.JSONUint8Array.wrap(msg);
|
|
27
|
-
const tabs = yield browser.tabs.query({
|
|
28
|
-
discarded: false,
|
|
29
|
-
status: "complete",
|
|
30
|
-
});
|
|
31
|
-
for (let i = 0; i < tabs.length; i++) {
|
|
32
|
-
const tabId = tabs[i].id;
|
|
33
|
-
if (tabId) {
|
|
34
|
-
try {
|
|
35
|
-
yield browser.tabs.sendMessage(tabId, {
|
|
36
|
-
port,
|
|
37
|
-
type: msg.type(),
|
|
38
|
-
msg: wrappedMsg,
|
|
39
|
-
});
|
|
40
|
-
// Ignore the failure
|
|
41
|
-
}
|
|
42
|
-
catch (_a) { }
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
// This requester can't handle the result of the message.
|
|
46
|
-
return undefined;
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
exports.ContentScriptMessageRequester = ContentScriptMessageRequester;
|
|
51
|
-
//# sourceMappingURL=content-script.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"content-script.js","sourceRoot":"","sources":["../../src/requester/content-script.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,0DAAqD;AAErD,oEAAoE;AACpE,6DAA6D;AAC7D,4DAA4D;AAC5D,4CAA4C;AAC5C,MAAa,6BAA6B;IAClC,WAAW,CACf,IAAY,EACZ,GAAM;;YAEN,GAAG,CAAC,aAAa,EAAE,CAAC;YAEpB,wBAAwB;YACxB,6DAA6D;YAC7D,aAAa;YACb,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAEvC,MAAM,UAAU,GAAG,iCAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAE5C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;gBACpC,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC;YAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzB,IAAI,KAAK,EAAE;oBACT,IAAI;wBACF,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;4BACpC,IAAI;4BACJ,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE;4BAChB,GAAG,EAAE,UAAU;yBAChB,CAAC,CAAC;wBACH,qBAAqB;qBACtB;oBAAC,WAAM,GAAE;iBACX;aACF;YAED,yDAAyD;YACzD,OAAO,SAAgB,CAAC;QAC1B,CAAC;KAAA;CACF;AApCD,sEAoCC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { MessageRequester } from "../types";
|
|
2
|
-
import { Message } from "../message";
|
|
3
|
-
export declare class InExtensionMessageRequester implements MessageRequester {
|
|
4
|
-
sendMessage<M extends Message<unknown>>(port: string, msg: M): Promise<M extends Message<infer R> ? R : never>;
|
|
5
|
-
static sendMessageToTab<M extends Message<unknown>>(tabId: number, port: string, msg: M): Promise<M extends Message<infer R> ? R : never>;
|
|
6
|
-
}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.InExtensionMessageRequester = void 0;
|
|
13
|
-
const json_uint8_array_1 = require("../json-uint8-array");
|
|
14
|
-
class InExtensionMessageRequester {
|
|
15
|
-
sendMessage(port, msg) {
|
|
16
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
17
|
-
msg.validateBasic();
|
|
18
|
-
// Set message's origin.
|
|
19
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
20
|
-
// @ts-ignore
|
|
21
|
-
msg["origin"] = window.location.origin;
|
|
22
|
-
const result = json_uint8_array_1.JSONUint8Array.unwrap(yield browser.runtime.sendMessage({
|
|
23
|
-
port,
|
|
24
|
-
type: msg.type(),
|
|
25
|
-
msg: json_uint8_array_1.JSONUint8Array.wrap(msg),
|
|
26
|
-
}));
|
|
27
|
-
if (!result) {
|
|
28
|
-
throw new Error("Null result");
|
|
29
|
-
}
|
|
30
|
-
if (result.error) {
|
|
31
|
-
throw new Error(result.error);
|
|
32
|
-
}
|
|
33
|
-
return result.return;
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
static sendMessageToTab(tabId, port, msg) {
|
|
37
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
-
msg.validateBasic();
|
|
39
|
-
// Set message's origin.
|
|
40
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
41
|
-
// @ts-ignore
|
|
42
|
-
msg["origin"] = window.location.origin;
|
|
43
|
-
const result = json_uint8_array_1.JSONUint8Array.unwrap(yield browser.tabs.sendMessage(tabId, {
|
|
44
|
-
port,
|
|
45
|
-
type: msg.type(),
|
|
46
|
-
msg: json_uint8_array_1.JSONUint8Array.wrap(msg),
|
|
47
|
-
}));
|
|
48
|
-
if (!result) {
|
|
49
|
-
throw new Error("Null result");
|
|
50
|
-
}
|
|
51
|
-
if (result.error) {
|
|
52
|
-
throw new Error(result.error);
|
|
53
|
-
}
|
|
54
|
-
return result.return;
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
exports.InExtensionMessageRequester = InExtensionMessageRequester;
|
|
59
|
-
//# sourceMappingURL=extension.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../src/requester/extension.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,0DAAqD;AAErD,MAAa,2BAA2B;IAChC,WAAW,CACf,IAAY,EACZ,GAAM;;YAEN,GAAG,CAAC,aAAa,EAAE,CAAC;YAEpB,wBAAwB;YACxB,6DAA6D;YAC7D,aAAa;YACb,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAEvC,MAAM,MAAM,GAAG,iCAAc,CAAC,MAAM,CAClC,MAAM,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;gBAChC,IAAI;gBACJ,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE;gBAChB,GAAG,EAAE,iCAAc,CAAC,IAAI,CAAC,GAAG,CAAC;aAC9B,CAAC,CACH,CAAC;YAEF,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;aAChC;YAED,IAAI,MAAM,CAAC,KAAK,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAC/B;YAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,CAAC;KAAA;IAED,MAAM,CAAO,gBAAgB,CAC3B,KAAa,EACb,IAAY,EACZ,GAAM;;YAEN,GAAG,CAAC,aAAa,EAAE,CAAC;YAEpB,wBAAwB;YACxB,6DAA6D;YAC7D,aAAa;YACb,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAEvC,MAAM,MAAM,GAAG,iCAAc,CAAC,MAAM,CAClC,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;gBACpC,IAAI;gBACJ,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE;gBAChB,GAAG,EAAE,iCAAc,CAAC,IAAI,CAAC,GAAG,CAAC;aAC9B,CAAC,CACH,CAAC;YAEF,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;aAChC;YAED,IAAI,MAAM,CAAC,KAAK,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAC/B;YAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,CAAC;KAAA;CACF;AA7DD,kEA6DC"}
|