Add version links to popup, remove ctx from templates, lint

This commit is contained in:
Ilya Ig. Petrov 2017-02-16 13:10:49 +00:00
parent a850648a4d
commit 879667e704
14 changed files with 102 additions and 50 deletions

View File

@ -12,6 +12,7 @@ const templatePlugin = (context) => through.obj(function(file, encoding, cb) {
const tjson = '.tmpl.json';
if (file.path.endsWith(tjson)) {
const originalPath = file.path;
file.path = file.path.replace(new RegExp(`${tjson}$`), '.json');
if (file.isStream()) {
@ -24,11 +25,19 @@ const templatePlugin = (context) => through.obj(function(file, encoding, cb) {
},
});
const {keys, values} = Object.entries(context).reduce( (acc, [key, value]) => {
acc.keys.push(key);
acc.values.push(value);
return acc;
}, { keys: [], values: [] });
try {
file.contents = new Buffer(
(new Function('ctx', 'return `' + String(file.contents) + '`;'))(stringsContext)
(new Function(...keys, 'return `' + String(file.contents) + '`;'))(...values)
);
} catch(e) {
e.message += '\nIN FILE: ' + originalPath;
return cb(new PluginError(PluginName, e));
}
}
@ -46,23 +55,25 @@ gulp.task('clean', function() {
});
const commonContext = {
const fullContext = {
version: '0.19',
nameSuffixEn: '',
nameSuffixRu: '',
};
const contextMini = Object.assign({
const miniContext = Object.assign({}, fullContext, {
nameSuffixEn: ' MINI',
nameSuffixRu: ' МИНИ',
}, commonContext);
});
gulp.task('_cp-common', ['clean'], function() {
gulp.src(['./src/extension-common/**/*'])
.pipe(templatePlugin(contextMini))
.pipe(templatePlugin(miniContext))
.pipe(gulp.dest('./build/extension-mini'))
gulp.src(['./src/extension-common/**/*'])
.pipe(templatePlugin(commonContext))
.pipe(templatePlugin(fullContext))
.pipe(gulp.dest('./build/extension-full'));
});
@ -70,7 +81,7 @@ gulp.task('_cp-common', ['clean'], function() {
gulp.task('_cp-mini', ['_cp-common'], function() {
gulp.src(['./src/extension-mini/**/*'])
.pipe(templatePlugin(contextMini))
.pipe(templatePlugin(miniContext))
.pipe(gulp.dest('./build/extension-mini'));
});
@ -78,7 +89,7 @@ gulp.task('_cp-mini', ['_cp-common'], function() {
gulp.task('_cp-full', ['_cp-common'], function() {
gulp.src(['./src/extension-full/**/*'])
.pipe(templatePlugin(commonContext))
.pipe(templatePlugin(fullContext))
.pipe(gulp.dest('./build/extension-full'));
});

View File

@ -3,7 +3,7 @@
"version": "0.0.19",
"description": "Development tools for chromium extension",
"scripts": {
"lint": "./node_modules/.bin/eslint ./runet-censorship-bypass/extension/**/*.js --ignore-pattern vendor"
"lint": "./node_modules/.bin/eslint ./src/**/*.js --ignore-pattern vendor"
},
"author": "Ilya Ig. Petrov",
"license": "GPLv3",

View File

@ -2,7 +2,7 @@
{
const IF_DEBUG = true;
const IF_DEBUG = false;
if (!IF_DEBUG) {
// I believe logging objects precludes them from being GCed.
@ -92,7 +92,7 @@
fireEvent(type, ...args) {
document.dispatchEvent( new CustomEvent(type, { detail: args }) );
document.dispatchEvent( new CustomEvent(type, {detail: args}) );
},
@ -162,6 +162,10 @@
};
window.apis = {};
window.apis = {
version: {
ifMini: false,
},
};
}

View File

@ -68,7 +68,7 @@
viewError(type = window.utils.mandatory(), err) {
const errors = err ? { [type]: err } : this.idToError;
const errors = err ? {[type]: err} : this.idToError;
const json = JSON.stringify(errors, errorJsonReplacer, 0);
openAndFocus(

View File

@ -24,7 +24,7 @@
ifUseSecureProxiesOnly: {
dflt: false,
label: 'только шифрованная связь с прокси',
desc: 'Шифровать соединение до прокси от провайдера. Провайдер всё же сможет видеть адреса (но не содержимое) проксируемых ресурсов из протокола DNS. Опция вряд ли может быть вам полезна, т.к. шифруется не весь трафик, а лишь малая его часть.',
desc: 'Шифровать соединение до прокси от провайдера. Провайдер всё же сможет видеть адреса (но не содержимое) проксируемых ресурсов из протокола DNS. Опция вряд ли может быть вам полезна, т.к. шифруется не весь трафик, а лишь разблокируемые ресурсы.',
index: 1,
},
ifProhibitDns: {
@ -42,7 +42,7 @@
ifUseLocalTor: {
dflt: false,
label: 'использовать СВОЙ локальный TOR',
desc: 'Установите <a href="https://ru.wikipedia.org/wiki/Tor">TOR</a> на свой компьютер и используйте его как прокси-сервер. <a href="https://rebrand.ly/ac-tor">ВАЖНО</a>',
desc: 'Установите <a href="https://rebrand.ly/ac-tor">TOR</a> на свой компьютер и используйте его как прокси-сервер. <a href="https://rebrand.ly/ac-tor">ВАЖНО</a>',
index: 4,
},
exceptions: {
@ -323,10 +323,6 @@
const hosts = par.map( (ps) => ps.split(/\s+/)[1] );
window.utils.fireEvent('ip-to-host-replace-all', hosts, throwIfError);
cb(null, null, ...warns);
/*window.apis.ipToHost.replaceAllAsync(
hosts,
(...args) => cb(...args, ...warns)
);*/
}
);

View File

@ -95,7 +95,6 @@
);
window.utils.fireEvent('ip-to-host-update-all', throwIfError);
cb();
//window.apis.ipToHost.updateAllAsync(cb);
};
@ -176,7 +175,7 @@
pacUrls: ['https://antizapret.prostovpn.org/proxy.pac'],
},
Антицензорити: {
label: 'Антицензорити',
label: 'Антицензорити (тормозит)',
desc: 'Основной PAC-скрипт от автора расширения.' +
' Блокировка определятся по доменному имени или IP адресу.' +
' Работает на switch-ах. <br/>' +

View File

@ -14,7 +14,7 @@
() => chrome.contextMenus.create({
id: id,
title: title,
contexts: ['browser_action']
contexts: ['browser_action'],
}, timeouted(() => {
const err = chrome.runtime.lastError;

View File

@ -1,6 +1,6 @@
{
"extName": {
"message": "Runet Censorship Bypass${ctx.nameSuffixEn}"
"message": "Runet Censorship Bypass${nameSuffixEn}"
},
"extDesc": {
"message": "Circumvent Russian Internet Censorship: https://rebrand.ly/ac-wiki"

View File

@ -1,6 +1,6 @@
{
"extName": {
"message": "Обход блокировок Рунета${ctx.nameSuffixRu}"
"message": "Обход блокировок Рунета${nameSuffixRu}"
},
"extDesc": {
"message": "Обход интернет-цензуры в России: https://rebrand.ly/ac-wiki"

View File

@ -5,6 +5,7 @@
<style>
:root {
--ribbon-color: #4169e1;
--blue-bg: dodgerblue;
--default-grey: #bfbfbf;
max-width: 27em;
}
@ -17,8 +18,18 @@
div, section, header, ul, ol {
margin: 0;
padding: 0;
}
header {
margin-bottom: 0.3em
}
ul, ol {
list-style-type: none;
}
:root.if-options-page ul,
:root.if-options-page ol,
#list-of-handlers {
margin-left: 0.4em;
}
li, footer {
display: block;
white-space: nowrap;
@ -65,10 +76,25 @@
border-bottom: 1px solid var(--default-grey);
}
:root.if-options-page .if-not-controlled {
padding-top: 0;
padding-bottom: 0;
}
.if-not-controlled a {
color: white;
}
/* MINI VS FULL */
:root:not(.if-version-mini) .only-for-mini-version {
display: none;
}
:root.if-version-mini .only-for-full-version {
display: none;
}
/* OPTIONS PAGE */
:root:not(.if-options-page) .only-for-options-page {
display: none;
}
@ -83,7 +109,7 @@
}
section[data-for] {
padding: 0.6em 0.5em 1em;
padding: 0.6em 0 1em;
}
:root.if-options-page section[data-for] {
padding-bottom: 0.6em;
@ -121,7 +147,6 @@
}
.nav-labels {
text-align: center;
--blue-bg: dodgerblue;
}
.nav-labels li label {
display: inline-block;
@ -293,7 +318,7 @@
border: none;
width: 100%;
background: inherit;
// The two below align '.' (dot) vertically.
/* The two below align '.' (dot) vertically. */
max-height: var(--exc-hieght) !important;
min-height: var(--exc-hieght) !important;
}
@ -321,28 +346,34 @@
/* CONTROL RAW = BUTTON + LINK */
.control-row {
display: table;
.hor-flex {
display: flex;
align-items: baseline;
justify-content: space-between;
width: 100%;
}
.control-row {
margin: 1em 0 1em 0;
}
.control-row > * {
display: table-cell;
}
.control-row a:nth-child(2) {
margin-left: 1em;
text-align: right;
}
/* STATUS */
#status {
#status-row {
padding: 0 0.3em 1em;
}
#status {
display: inline-block;
}
.other-version {
font-size: 1.7em;
color: var(--ribbon-color);
}
.other-version:hover {
text-decoration: none;
}
</style>
</head>
<body>
<section class="if-not-controlled hor-padded" id="which-extension"></section>
<input type="radio" name="accordion" class="off" id="acc-pac" checked/>
@ -350,7 +381,7 @@
<input type="radio" name="accordion" class="off" id="acc-mods"/>
<input type="radio" name="accordion" class="off" id="acc-ntf"/>
<section class="nav-labels horizontal-list hidden-for-options-page">
<nav class="nav-labels horizontal-list hidden-for-options-page">
<ul>
<li><label for="acc-pac" class="nav-label">PAC-скрипт</label></li>
<li><label for="acc-mods" class="nav-label">Модификаторы</label></li>
@ -358,12 +389,13 @@
<li><label for="acc-ntf" class="nav-label">Уведомления</label></li>
</ul>
<hr/>
</section>
</nav>
<nav class="hor-padded main-nav">
<section data-for="acc-pac">
<header class="only-for-options-page">PAC-скрипт:</header>
<ul id="list-of-providers">
<li><input type="radio" name="pacProvider" id="none" checked> <label for="none">Отключить</label></li>
</ul>
@ -394,7 +426,7 @@
<section data-for="acc-mods">
<ul id="pac-mods">
<li class="control-row">
<li class="control-row hor-flex">
<input type="button" value="Применить" id="apply-mods" disabled/>
<a href id="reset-mods" class="link-button">К изначальным!</a>
</li>
@ -403,9 +435,8 @@
</section>
<section data-for="acc-ntf">
<header>Я ❤️ yведомления:</header>
<ul id="list-of-handlers" style="margin-left: 0.4em; margin-top: 0.4em;"></ul>
<ul id="list-of-handlers"></ul>
</section>
@ -414,9 +445,13 @@
<hr/>
<div class="hor-padded">
<div id="status" style="will-change: contents">Загрузка...</div>
<section class="hor-flex" id="status-row">
<div id="status" style="will-change: contents">Загрузка...</div>
<a class="only-for-mini-version other-version link-button" title="Полная версия" href="https://rebrand.ly/ac-versions">🏋&#xFE0E;</a>
<a class="only-for-full-version other-version link-button" title="Версия для слабых машин" href="https://rebrand.ly/ac-versions">🐌&#xFE0E;</a>
</section>
<footer class="control-row">
<footer class="control-row hor-flex">
<input type="button" value="Готово" class="close-button">
<a href="../troubleshoot/index.html" class="link-button">
Проблемы?

View File

@ -17,7 +17,7 @@ chrome.runtime.getBackgroundPage( (backgroundPage) =>
const setStatusTo = (msg) => {
getStatus().innerHTML = msg || 'Хорошего настроения вам!';
getStatus().innerHTML = msg || 'Поддержи <a href="https://2018.navalny.com" class="link-button">Навального</a> и <a href="https://fbk.info" class="link-button">ФБК</a>!';
};
@ -226,6 +226,12 @@ chrome.runtime.getBackgroundPage( (backgroundPage) =>
};
}
// IF MINI
if (backgroundPage.apis.version.ifMini) {
document.documentElement.classList.add('if-version-mini');
}
// IF INSIDE OPTIONS TAB
const currentTab = await new Promise(

View File

@ -4,7 +4,7 @@
"name": "__MSG_extName__",
"default_locale": "ru",
"description": "__MSG_extDesc__",
"version": "0.0.${ctx.version}",
"version": "0.0.${version}",
"icons": {
"128": "/icons/default-128.png"
},
@ -36,7 +36,7 @@
]
},
"browser_action": {
"default_title": "Этот сайт благословлён ${ctx.version}",
"default_title": "Этот сайт одобрен РПЦ | Версия ${version}",
"default_popup": "/pages/choose-pac-provider/index.html"
},
"options_ui": {

View File

@ -2,6 +2,7 @@
{
window.apis.version.ifMini = true;
chrome.browserAction.setBadgeText({text: 'M'});
}

View File

@ -4,7 +4,7 @@
"name": "__MSG_extName__",
"default_locale": "ru",
"description": "__MSG_extDesc__",
"version": "0.0.${ctx.version}",
"version": "0.0.${version}",
"icons": {
"128": "/icons/default-128.png"
},
@ -35,7 +35,7 @@
]
},
"browser_action": {
"default_title": "Этот сайт благословлён ${ctx.version}-mini",
"default_title": "Этот сайт одобрен РПЦ | Версия ${version}-mini",
"default_popup": "/pages/choose-pac-provider/index.html"
},
"options_ui": {