Skip to content

Commit

Permalink
Fix build issues
Browse files Browse the repository at this point in the history
  • Loading branch information
brookhong committed Dec 13, 2021
1 parent 1c12058 commit 74f406e
Show file tree
Hide file tree
Showing 33 changed files with 492 additions and 367 deletions.
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,12 @@ Surfingkeys is doing its best to make full use of keyboard for web browsing, but

## Installation

<img src="https://raw.githubusercontent.com/brookhong/Surfingkeys/master/sk.svg" width="384">

* [Surfingkeys - Chrome Web Store](https://chrome.google.com/webstore/detail/surfingkeys/gfbliohnnapiefjpjlpjnehglfpaknnc)
* [Surfingkeys – Get this Extension for 🦊 Firefox](https://addons.mozilla.org/en-US/firefox/addon/surfingkeys_ff/)
* [Surfingkeys - Microsoft Edge Addons](https://microsoftedge.microsoft.com/addons/detail/kgnghhfkloifoabeaobjkgagcecbnppg)
* [Surfingkeys on the Mac App Store](https://apps.apple.com/us/app/surfingkeys/id1599827286)

### TABLE OF CONTENTS

Expand Down
149 changes: 84 additions & 65 deletions config/webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ let buildPath = path.resolve(__dirname, '../dist/');

const CopyWebpackPlugin = require('copy-webpack-plugin');
const FileManagerPlugin = require('filemanager-webpack-plugin');
const TerserPlugin = require('terser-webpack-plugin');

function modifyManifest(browser, mode, buffer) {
// copy-webpack-plugin passes a buffer
Expand Down Expand Up @@ -36,21 +37,38 @@ function modifyManifest(browser, mode, buffer) {
return manifest_JSON;
}

function modifyOptionsHtml(browser, buffer) {
let content = buffer.toString();
if (browser === "firefox") {
content = content.split("\n").filter((line) => {
return line.indexOf('https://www.google-analytics.com/analytics.js') === -1;
}).join("\n");
}
return content;
}

module.exports = (env, argv) => {
const mode = argv.mode;
const browser = env.browser ? env.browser : 'chrome';
buildPath += "/" + browser;
return [{
const entry = {
background: `./src/background/${browser}.js`,
content: `./src/content_scripts/${browser}.js`,
'pages/frontend': `./src/content_scripts/ui/frontend.js`,
'pages/options': './src/content_scripts/options.js',
'pages/start': './src/content_scripts/start.js',
'pages/ace': './src/content_scripts/ace.js',
};
const pagesCopyOptions = {
ignore: [
'**/neovim.*',
'**/pdf_viewer.html',
]
};
if (browser === "chrome") {
pagesCopyOptions.ignore = [];
entry['pages/neovim'] = './src/pages/neovim.js';
entry['pages/pdf_viewer'] = './src/content_scripts/pdf_viewer.js';
}
if (browser !== "safari") {
entry['pages/markdown'] = './src/content_scripts/markdown.js';
} else {
pagesCopyOptions.ignore.push('**/markdown.html');
pagesCopyOptions.ignore.push('**/donation.png');
}
console.log(pagesCopyOptions);

const modules = [{
devtool: false,
output: {
path: buildPath,
Expand Down Expand Up @@ -88,21 +106,16 @@ module.exports = (env, argv) => {
],
},
target: 'web',
entry: {
'pages/neovim': './src/pages/neovim.js',
background: `./src/background/${browser}.js`,
content: `./src/content_scripts/${browser}.js`,
'pages/frontend': `./src/content_scripts/ui/frontend.js`,
'pages/options': './src/content_scripts/options.js',
'pages/markdown': './src/content_scripts/markdown.js',
'pages/pdf_viewer': './src/content_scripts/pdf_viewer.js',
'pages/start': './src/content_scripts/start.js',
'pages/ace': './src/content_scripts/ace.js',
entry: entry,
optimization: {
minimizer: [new TerserPlugin({
extractComments: false,
})],
},
plugins: [
new CopyWebpackPlugin({
patterns: [
{ from: 'src/pages', to: 'pages' },
{ from: 'src/pages', to: 'pages', globOptions: pagesCopyOptions },
{ from: 'src/content_scripts/ui/frontend.html', to: 'pages' },
{ from: 'src/content_scripts/ui/frontend.css', to: 'pages' },
{ from: 'node_modules/ace-builds/src-noconflict/worker-javascript.js', to: 'pages' },
Expand All @@ -114,16 +127,13 @@ module.exports = (env, argv) => {
transform (content, path) {
return modifyManifest(browser, mode, content)
}
},
{
from: "src/pages/options.html",
to: "pages",
transform (content, path) {
return modifyOptionsHtml(browser, content)
}
}
]
}),
})
]
}];
if (browser !== "safari") {
modules[0].plugins.push(
new FileManagerPlugin({
events: {
onEnd: {
Expand All @@ -136,39 +146,48 @@ module.exports = (env, argv) => {
},
},
})
]
}, {
devtool: false,
output: {
path: buildPath,
filename: '[name].js',
libraryTarget: 'module',
},
resolve: {
extensions: ['.ts', '.js'],
},
target: 'web',
entry: {
'pages/neovim_lib': './src/nvim/renderer.ts',
},
module: {
rules: [
{
test: /\.ts$/,
exclude: /node_modules/,
loader: 'ts-loader',
},
{
test: /\.css$/,
use: [
{ loader: "style-loader", options: { injectType: "linkTag" } },
{ loader: "file-loader" },
]
},
],
},
experiments: {
outputModule: true,
}
}]
);
}
if (browser === "chrome") {
modules.push({
devtool: false,
output: {
path: buildPath,
filename: '[name].js',
libraryTarget: 'module',
},
resolve: {
extensions: ['.ts', '.js'],
},
target: 'web',
entry: {
'pages/neovim_lib': './src/nvim/renderer.ts',
},
module: {
rules: [
{
test: /\.ts$/,
exclude: /node_modules/,
loader: 'ts-loader',
},
{
test: /\.css$/,
use: [
{ loader: "style-loader", options: { injectType: "linkTag" } },
{ loader: "file-loader" },
]
},
],
},
optimization: {
minimizer: [new TerserPlugin({
extractComments: false,
})],
},
experiments: {
outputModule: true,
}
});
}
return modules;
};
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,13 @@
"clean": "rm -rf dist/*",
"build:doc": "documentation build src/content_scripts/common/api.js src/content_scripts/common/clipboard.js src/content_scripts/common/hints.js src/content_scripts/common/visual.js src/content_scripts/front.js -f md -o docs/api.md",
"build:dev-firefox": "webpack --env=browser=firefox --mode=development --config ./config/webpack.config.js",
"build:dev-safari": "webpack --env=browser=safari --mode=development --config ./config/webpack.config.js",
"build:dev": "webpack --mode=development --config ./config/webpack.config.js",
"build:prod-firefox": "webpack --env=browser=firefox --mode=production --config ./config/webpack.config.js",
"build:prod-safari": "webpack --env=browser=safari --mode=production --config ./config/webpack.config.js",
"build:prod": "webpack --mode=production --config ./config/webpack.config.js",
"build:testdata": "webpack --mode=production --config ./config/webpack.test.config.js",
"build": "npm-run-all clean test build:doc build:prod build:prod-firefox",
"build": "npm-run-all clean test build:doc build:prod build:prod-firefox build:prod-safari",
"test": "jest"
},
"repository": {
Expand Down Expand Up @@ -43,6 +45,7 @@
"documentation": "^13.2.5",
"file-loader": "^6.2.0",
"filemanager-webpack-plugin": "^6.1.7",
"jest": "^27.3.1",
"jest-image-snapshot": "^4.5.1",
"npm-run-all": "^4.1.5",
"puppeteer": "^10.2.0",
Expand Down
3 changes: 3 additions & 0 deletions sk.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified sk.xcf
Binary file not shown.
55 changes: 55 additions & 0 deletions src/background/safari.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import {
_save,
dictFromArray,
extendObject,
getSubSettings,
start
} from './start.js';

function loadRawSettings(keys, cb, defaultSet) {
var rawSet = defaultSet || {};
chrome.storage.local.get(null, function(localSet) {
var localSavedAt = localSet.savedAt || 0;
chrome.storage.sync.get(null, function(syncSet) {
var syncSavedAt = syncSet.savedAt || 0;
if (localSavedAt > syncSavedAt) {
extendObject(rawSet, localSet);
_save(chrome.storage.sync, localSet, function() {
var subset = getSubSettings(rawSet, keys);
if (chrome.runtime.lastError) {
subset.error = "Settings sync may not work thoroughly because of: " + chrome.runtime.lastError.message;
}
cb(subset);
});
} else if (localSavedAt < syncSavedAt) {
extendObject(rawSet, syncSet);
cb(getSubSettings(rawSet, keys));
_save(chrome.storage.local, syncSet);
} else {
extendObject(rawSet, localSet);
cb(getSubSettings(rawSet, keys));
}
});
});
}

function _applyProxySettings(proxyConf) {
}

function _setNewTabUrl(){
return "favorites://";
}

function _getContainerName(self, _response){
}

function getLatestHistoryItem(text, maxResults, cb) {
}

start({
getLatestHistoryItem,
loadRawSettings,
_applyProxySettings,
_setNewTabUrl,
_getContainerName
});
21 changes: 15 additions & 6 deletions src/background/start.js
Original file line number Diff line number Diff line change
Expand Up @@ -524,7 +524,7 @@ function start(browser) {
loadSettings('blocklist', function(data) {
var origin = ".*";
var senderOrigin = sender.origin || new URL(getSenderUrl(sender)).origin;
if (chrome.extension.getURL("").indexOf(senderOrigin) !== 0) {
if (chrome.extension.getURL("/").indexOf(senderOrigin) !== 0 && senderOrigin !== "null") {
origin = senderOrigin;
}
if (data.blocklist.hasOwnProperty(origin)) {
Expand All @@ -543,7 +543,7 @@ function start(browser) {
};
self.toggleMouseQuery = function(message, sender, sendResponse) {
loadSettings('mouseSelectToQuery', function(data) {
if (sender.tab && sender.tab.url.indexOf(chrome.extension.getURL("")) !== 0) {
if (sender.tab && sender.tab.url.indexOf(chrome.extension.getURL("/")) !== 0) {
var mouseSelectToQuery = data.mouseSelectToQuery || [];
var idx = mouseSelectToQuery.indexOf(message.origin);
if (idx === -1) {
Expand Down Expand Up @@ -659,12 +659,18 @@ function start(browser) {
});
};
self.getTopSites = function(message, sender, sendResponse) {
chrome.topSites.get(function(urls) {
urls = _filterByTitleOrUrl(urls, message.query);
if (chrome.topSites) {
chrome.topSites.get(function(urls) {
urls = _filterByTitleOrUrl(urls, message.query);
_response(message, sendResponse, {
urls: urls
});
});
} else {
_response(message, sendResponse, {
urls: urls
urls: []
});
});
}
};


Expand Down Expand Up @@ -1607,6 +1613,9 @@ function start(browser) {
}
chrome.tabs.reload(sender.tab.id);
};
self.writeClipboard = function (message, sender, sendResponse) {
navigator.clipboard.writeText(message.text)
};

self.getContainerName = browser._getContainerName(self, _response);
chrome.runtime.setUninstallURL("http://brookhong.github.io/2018/01/30/why-did-you-uninstall-surfingkeys.html");
Expand Down
Loading

0 comments on commit 74f406e

Please sign in to comment.