fix zip, get rid of content script remains
This commit is contained in:
parent
27c22c28df
commit
2c35db7797
@ -150,43 +150,10 @@ const webExtensionCryptoWorker = {
|
||||
],
|
||||
};
|
||||
|
||||
const webExtensionContentScript = {
|
||||
input: "dist/node/webex/notify.js",
|
||||
output: {
|
||||
file: "dist/webextension/contentScript.js",
|
||||
format: "iife",
|
||||
exports: "default",
|
||||
name: "webExtensionContentScript",
|
||||
},
|
||||
external: builtins,
|
||||
plugins: [
|
||||
json(),
|
||||
|
||||
nodeResolve({
|
||||
preferBuiltins: true,
|
||||
}),
|
||||
|
||||
terser(),
|
||||
|
||||
replace({
|
||||
"process.env.NODE_ENV": JSON.stringify("production"),
|
||||
}),
|
||||
|
||||
commonjs({
|
||||
include: ["node_modules/**", "dist/node/**"],
|
||||
extensions: [".js"],
|
||||
ignoreGlobal: false, // Default: false
|
||||
sourceMap: false,
|
||||
ignore: ["taler-wallet"],
|
||||
}),
|
||||
],
|
||||
};
|
||||
|
||||
export default [
|
||||
walletCli,
|
||||
walletAndroid,
|
||||
webExtensionPageEntryPoint,
|
||||
webExtensionBackgroundPageScript,
|
||||
webExtensionCryptoWorker,
|
||||
webExtensionContentScript,
|
||||
];
|
||||
|
@ -1,218 +0,0 @@
|
||||
/*
|
||||
This file is part of TALER
|
||||
(C) 2015 GNUnet e.V.
|
||||
|
||||
TALER is free software; you can redistribute it and/or modify it under the
|
||||
terms of the GNU General Public License as published by the Free Software
|
||||
Foundation; either version 3, or (at your option) any later version.
|
||||
|
||||
TALER is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
// tslint:disable:no-unused-expression
|
||||
|
||||
/**
|
||||
* Module that is injected into (all!) pages to allow them
|
||||
* to interact with the GNU Taler wallet via DOM Events.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Imports.
|
||||
*/
|
||||
import * as wxApi from "./wxApi";
|
||||
|
||||
declare let cloneInto: any;
|
||||
|
||||
let logVerbose = false;
|
||||
try {
|
||||
logVerbose = !!localStorage.getItem("taler-log-verbose");
|
||||
} catch (e) {
|
||||
// can't read from local storage
|
||||
}
|
||||
|
||||
if (document.documentElement.getAttribute("data-taler-nojs")) {
|
||||
document.dispatchEvent(new Event("taler-probe-result"));
|
||||
}
|
||||
|
||||
interface Handler {
|
||||
type: string;
|
||||
listener: (e: Event) => void | Promise<void>;
|
||||
}
|
||||
const handlers: Handler[] = [];
|
||||
|
||||
let sheet: CSSStyleSheet | null;
|
||||
|
||||
function initStyle(): void {
|
||||
logVerbose && console.log("taking over styles");
|
||||
const name = "taler-presence-stylesheet";
|
||||
const content = "/* Taler stylesheet controlled by JS */";
|
||||
let style = document.getElementById(name) as HTMLStyleElement | null;
|
||||
if (!style) {
|
||||
style = document.createElement("style");
|
||||
// Needed by WebKit
|
||||
style.appendChild(document.createTextNode(content));
|
||||
style.id = name;
|
||||
document.head.appendChild(style);
|
||||
sheet = style.sheet as CSSStyleSheet;
|
||||
} else {
|
||||
// We've taken over the stylesheet now,
|
||||
// make it clear by clearing all the rules in it
|
||||
// and making it obvious in the DOM.
|
||||
if (style.tagName.toLowerCase() === "style") {
|
||||
style.innerText = content;
|
||||
}
|
||||
if (!style.sheet) {
|
||||
throw Error(
|
||||
"taler-presence-stylesheet should be a style sheet (<link> or <style>)",
|
||||
);
|
||||
}
|
||||
sheet = style.sheet as CSSStyleSheet;
|
||||
while (sheet.cssRules.length > 0) {
|
||||
sheet.deleteRule(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function setStyles(installed: boolean): void {
|
||||
if (!sheet || !sheet.cssRules) {
|
||||
return;
|
||||
}
|
||||
while (sheet.cssRules.length > 0) {
|
||||
sheet.deleteRule(0);
|
||||
}
|
||||
if (installed) {
|
||||
sheet.insertRule(".taler-installed-hide { display: none; }", 0);
|
||||
sheet.insertRule(".taler-probed-hide { display: none; }", 0);
|
||||
} else {
|
||||
sheet.insertRule(".taler-installed-show { display: none; }", 0);
|
||||
}
|
||||
}
|
||||
|
||||
function onceOnComplete(cb: () => void): void {
|
||||
if (document.readyState === "complete") {
|
||||
cb();
|
||||
} else {
|
||||
document.addEventListener("readystatechange", () => {
|
||||
if (document.readyState === "complete") {
|
||||
cb();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function init(): void {
|
||||
onceOnComplete(() => {
|
||||
if (document.documentElement.getAttribute("data-taler-nojs")) {
|
||||
initStyle();
|
||||
setStyles(true);
|
||||
}
|
||||
});
|
||||
registerHandlers();
|
||||
// Hack to know when the extension is unloaded
|
||||
const port = chrome.runtime.connect();
|
||||
|
||||
port.onDisconnect.addListener(() => {
|
||||
logVerbose && console.log("chrome runtime disconnected, removing handlers");
|
||||
if (document.documentElement.getAttribute("data-taler-nojs")) {
|
||||
setStyles(false);
|
||||
}
|
||||
for (const handler of handlers) {
|
||||
document.removeEventListener(handler.type, handler.listener);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
type HandlerFn = (detail: any, sendResponse: (msg: any) => void) => void;
|
||||
|
||||
function registerHandlers(): void {
|
||||
/**
|
||||
* Add a handler for a DOM event, which automatically
|
||||
* handles adding sequence numbers to responses.
|
||||
*/
|
||||
function addHandler(type: string, handler: HandlerFn): void {
|
||||
const handlerWrap = (e: Event): void => {
|
||||
if (!(e instanceof Event)) {
|
||||
console.log("unexpected event", e);
|
||||
throw Error(`invariant violated`);
|
||||
}
|
||||
if (e.type !== type) {
|
||||
console.log("unexpected event type", e);
|
||||
throw Error(`invariant violated`);
|
||||
}
|
||||
let callId: number | undefined;
|
||||
let detail;
|
||||
if (
|
||||
e instanceof CustomEvent &&
|
||||
e.detail &&
|
||||
e.detail.callId !== undefined
|
||||
) {
|
||||
callId = e.detail.callId;
|
||||
detail = e.detail;
|
||||
}
|
||||
const responder = (msg?: any): void => {
|
||||
const fullMsg = Object.assign({}, msg, { callId });
|
||||
let opts = { detail: fullMsg };
|
||||
if ("function" === typeof cloneInto) {
|
||||
opts = cloneInto(opts, document.defaultView);
|
||||
}
|
||||
const evt = new CustomEvent(type + "-result", opts);
|
||||
document.dispatchEvent(evt);
|
||||
};
|
||||
handler(detail, responder);
|
||||
};
|
||||
document.addEventListener(type, handlerWrap);
|
||||
handlers.push({ type, listener: handlerWrap });
|
||||
}
|
||||
|
||||
addHandler("taler-query-id", (msg: any, sendResponse: any) => {
|
||||
// FIXME: maybe include this info in taler-probe?
|
||||
sendResponse({ id: chrome.runtime.id });
|
||||
});
|
||||
|
||||
addHandler("taler-probe", (msg: any, sendResponse: any) => {
|
||||
sendResponse();
|
||||
});
|
||||
|
||||
addHandler("taler-create-reserve", (msg: any) => {
|
||||
const uri = new URL(
|
||||
chrome.extension.getURL("/src/webex/pages/confirm-create-reserve.html"),
|
||||
);
|
||||
uri.searchParams.set("amount", JSON.stringify(msg.amount));
|
||||
uri.searchParams.set("bank_url", document.location.href);
|
||||
uri.searchParams.set(
|
||||
"callback_url",
|
||||
new URL(msg.callback_url, document.location.href).href,
|
||||
);
|
||||
uri.searchParams.set("suggested_exchange_url", msg.suggested_exchange_url);
|
||||
uri.searchParams.set("wt_types", JSON.stringify(msg.wt_types));
|
||||
window.location.href = uri.href;
|
||||
});
|
||||
|
||||
addHandler("taler-add-auditor", (msg: any) => {
|
||||
const uri = new URL(
|
||||
chrome.extension.getURL("/src/webex/pages/add-auditor.html"),
|
||||
);
|
||||
uri.searchParams.set("req", JSON.stringify(msg));
|
||||
window.location.href = uri.href;
|
||||
});
|
||||
|
||||
addHandler("taler-confirm-reserve", async (msg: any, sendResponse: any) => {
|
||||
const reservePub = msg.reserve_pub;
|
||||
if (typeof reservePub !== "string") {
|
||||
console.error(
|
||||
"taler-confirm-reserve expects parameter reserve_pub of type 'string'",
|
||||
);
|
||||
return;
|
||||
}
|
||||
await wxApi.confirmReserve(msg.reserve_pub);
|
||||
sendResponse();
|
||||
});
|
||||
}
|
||||
|
||||
logVerbose && console.log("loading Taler content script");
|
||||
init();
|
@ -15,6 +15,6 @@ cp webextension/manifest.json dist/wx/
|
||||
cp -r webextension/static/* dist/wx/
|
||||
cp -r dist/webextension/* dist/wx/
|
||||
|
||||
cd dist
|
||||
cd dist/wx
|
||||
|
||||
zip -r "taler-wallet-${vers_manifest}.zip" wx
|
||||
zip -r "../taler-wallet-${vers_manifest}.zip" ./*
|
||||
|
Loading…
Reference in New Issue
Block a user