start cleanup

This commit is contained in:
Zack Rauen 2017-11-01 02:55:15 -04:00
parent a12773e4fd
commit 3db34829d4
32 changed files with 3 additions and 1189 deletions

Binary file not shown.

View File

@ -1,2 +0,0 @@
#BetterDiscord
BetterDiscord enhances Discord with several features

Binary file not shown.

View File

@ -1,3 +0,0 @@
.guilds {
background:red !important;
}

View File

@ -1,199 +0,0 @@
var emotesTwitch = null, emotesTwitchSub = null, emotesFfz = null, emotesBttv = null, emotesBttv2 = null;
var twitchEmoteUrlStart = "https://static-cdn.jtvnw.net/emoticons/v1/";
var twitchEmoteUrlEnd = "/1.0";
var ffzEmoteUrlStart = "https://cdn.frankerfacez.com/emoticon/";
var ffzEmoteUrlEnd = "/1";
var bttvEmoteUrlStart = "https://cdn.betterttv.net/emote/";
var bttvEmoteUrlEnd = "/1x";
var _emoteModule;
function EmoteModule() {
}
EmoteModule.prototype.init = function() {
_emoteModule.loadEmoteData();
};
EmoteModule.prototype.obsCallback = function(mutation) {
var self = this;
for(var i = 0 ; i < mutation.addedNodes.length ; ++i) {
var next = mutation.addedNodes.item(i);
if (next) {
var nodes = self.getNodes(next);
for(var node in nodes) {
if (nodes.hasOwnProperty(node)) {
self.injectEmote(nodes[node]);
}
}
}
}
};
EmoteModule.prototype.getNodes = function(node) {
var next;
var nodes = [];
var treeWalker = document.createTreeWalker(node, NodeFilter.SHOW_TEXT, null, false);
while((next = treeWalker.nextNode()) != null) {
nodes.push(next);
}
return nodes;
};
EmoteModule.prototype.injectEmote = function(node) {
if (!node.parentElement) {
return;
}
var parent = node.parentElement;
if (parent.tagName != "SPAN") {
return;
}
if(!$(parent.parentElement).hasClass("markup") && !$(parent.parentElement).hasClass("message-content")) { return; }
var parentInnerHTML = parent.innerHTML;
var words = parentInnerHTML.split(/\s+/g);
if (!words) {
return;
}
words.some(function(word) {
if (word.length < 4) {
return;
}
if(emotesTwitch != null) {
if (emotesTwitch.emotes.hasOwnProperty(word)) {
var len = Math.round(word.length / 4);
parentInnerHTML = parentInnerHTML.replace(word, '<img class="emote" alt="' + word.substr(0, len) + "\uFDD9" + word.substr(len, len) + "\uFDD9" + word.substr(len * 2, len) + "\uFDD9" + word.substr(len * 3) + '" src="' + twitchEmoteUrlStart + emotesTwitch.emotes[word].image_id + twitchEmoteUrlEnd + '" />');
return;
}
}
if(emotesTwitchSub != null) {
if (emotesTwitchSub.hasOwnProperty(word)) {
var len = Math.round(word.length / 4);
parentInnerHTML = parentInnerHTML.replace(word, '<img class="emote" alt="' + word.substr(0, len) + "\uFDD9" + word.substr(len, len) + "\uFDD9" + word.substr(len * 2, len) + "\uFDD9" + word.substr(len * 3) + '" src="' + twitchEmoteUrlStart + emotesTwitchSub[word] + twitchEmoteUrlEnd + '" />');
return;
}
}
if(emotesFfz != null) {
if(emotesFfz.hasOwnProperty(word)) {
var len = Math.round(word.length / 4);
parentInnerHTML = parentInnerHTML.replace(word, '<img class="emote" alt="' + word.substr(0, len) + "\uFDD9" + word.substr(len, len) + "\uFDD9" + word.substr(len * 2, len) + "\uFDD9" + word.substr(len * 3) + '" src="' + ffzEmoteUrlStart + emotesFfz[word] + ffzEmoteUrlEnd + '" />');
return;
}
}
if(emotesBttv != null) {
if(emotesBttv.hasOwnProperty(word)) {
var len = Math.round(word.length / 4);
parentInnerHTML = parentInnerHTML.replace(word, '<img class="emote" alt="' + word.substr(0, len) + "\uFDD9" + word.substr(len, len) + "\uFDD9" + word.substr(len * 2, len) + "\uFDD9" + word.substr(len * 3) + '" src="' + bttvEmoteUrlStart + emotesBttv[word] + bttvEmoteUrlEnd + '" />');
return;
}
}
if(emotesBttv2 != null) {
if(emotesBttv2.hasOwnProperty(word)) {
var len = Math.round(word.length / 4);
parentInnerHTML = parentInnerHTML.replace(word, '<img class="emote" alt="' + word.substr(0, len) + "\uFDD9" + word.substr(len, len) + "\uFDD9" + word.substr(len * 2, len) + "\uFDD9" + word.substr(len * 3) + '" src="' + bttvEmoteUrlStart + emotesBttv2[word] + bttvEmoteUrlEnd + '" />');
return;
}
}
});
parent.innerHTML = parentInnerHTML.replace(new RegExp("\uFDD9", "g"), "");
};
EmoteModule.prototype.loadEmoteData = function(type) {
if(_hash == null) {
_utils.getHash(this.loadEmoteData);
return;
}
switch(type) {
default:
_emoteModule.loadEmoteData("twitch");
break;
case "twitch":
_utils.log("Loading twitch global emotes");
$.getJSON('https://twitchemotes.com/api_cache/v2/global.json', function(data) {
_utils.log("Loaded twitch global emotes");
emotesTwitch = data;
_emoteModule.loadEmoteData("twitch-sub");
});
break;
case "twitch-sub":
emotesTwitchSub = {};
_utils.log("Loading twitch subscriber emotes");
$.getJSON('https://twitchemotes.com/api_cache/v2/subscriber.json', function(data) {
$.each(data.channels, function(key, val){
$.each(val.emotes, function(key, val) {
emotesTwitchSub[val.code] = val.image_id;
});
});
_emoteModule.loadEmoteData("ffz");
});
break;
case "ffz":
emotesFfz = {};
_utils.log("Loading FFZ emotes");
$.getJSON('https://cdn.rawgit.com/Jiiks/BetterDiscordApp/'+_hash+'/data/emotedata_ffz.json', function(data) {
emotesFfz = data;
_emoteModule.loadEmoteData("bttv");
});
break;
case "bttv":
emotesBttv = {};
_utils.log("Loading Basic BTTV emotes");
$.getJSON('https://api.betterttv.net/2/emotes', function(data) {
$.each(data.emotes, function(key, val) {
emotesBttv[val.code] = val.id;
});
_emoteModule.loadEmoteData("bttv2");
});
break;
case "bttv2":
emotesBttv2 = {};
_utils.log("Loading BTTV emotes");
$.getJSON('https://cdn.rawgit.com/Jiiks/BetterDiscordApp/'+_hash+'/data/emotedata_bttv.json', function(data) {
emotesBttv2 = data;
});
break;
}
};
var _utils;
var _hash = null;
function Utils() {}
Utils.prototype.getHash = function(callback) {
_utils.log("Getting HASH");
$.getJSON("https://api.github.com/repos/Jiiks/BetterDiscordApp/commits/master", function(data){
_hash = data.sha;
_utils.log("HASH = " + _hash);
callback();
});
};
Utils.prototype.log = function(message) {
console.log("[BetterDiscord] - " + message);
};
(function() {
_utils = new Utils();
_emoteModule = new EmoteModule();
_emoteModule.init();
var mainObserver = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
_emoteModule.obsCallback(mutation);
});
});
mainObserver.observe(document, { childList: true, subtree: true });
})();

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

View File

@ -1,14 +0,0 @@
"use sctrict"
var pageMod = require('sdk/page-mod');
var data = require("sdk/self").data;
function BdPageMod(options, callbacks) {
pageMod.PageMod({
include: '*.discordapp.com',
contentScriptFile: [data.url('../data/js/jquery-2.1.4.min.js'), data.url('../data/js/main.js')],
contentStyleFile: []
});
}
exports.BdPageMod = BdPageMod;

View File

@ -1,9 +0,0 @@
"use strict"
var _bdPagemod = require('./BdPageMod.js');
function BetterDiscord(args) {
_bdPagemod = new _bdPagemod.BdPageMod();
}
exports.BetterDiscord = BetterDiscord;

View File

@ -1,9 +0,0 @@
"use strict";
var _betterDiscord = require("./BetterDiscord.js");
function main(options, callbacks) {
_betterDiscord = new _betterDiscord.BetterDiscord();
}
exports.main = main;

View File

@ -1,18 +0,0 @@
{
"title": "BetterDiscord",
"name": "betterdiscord",
"version": "0.0.3",
"description": "BetterDiscord enhances Discord with several features",
"main": "lib/main",
"author": "JiCode",
"engines": {
"firefox": ">=40.*"
},
"license": "MIT",
"keywords": [
"jetpack"
],
"installs_allowed_from": [
"https://betterdiscord.net"
]
}

View File

@ -1,19 +0,0 @@
var main = require("../");
exports["test main"] = function(assert) {
assert.pass("Unit test running!");
};
exports["test main async"] = function(assert, done) {
assert.pass("async Unit test running!");
done();
};
exports["test dummy"] = function(assert, done) {
main.dummy("foo", function(text) {
assert.ok((text === "foo"), "Is the text actually 'foo'");
done();
});
};
require("sdk/test").run(exports);

View File

@ -100,8 +100,9 @@ var bttvEmoteUrlEnd = "/1x";
var mainCore;
var settings = {
"Show Error Modal": { "id": "bda-gs-9", "info": "Show a modal with plugin/theme errors on startup.", "implemented": true, "hidden": true, "cat": "core"},
"Save logs locally": { "id": "bda-gs-0", "info": "Saves chat logs locally", "implemented": false, "hidden": false, "cat": "core"},
"Public Servers": { "id": "bda-gs-1", "info": "Display public servers button", "implemented": false, "hidden": false, "cat": "core"},
"Public Servers": { "id": "bda-gs-1", "info": "Display public servers button", "implemented": false, "hidden": false, "cat": "core"},
"Minimal Mode": { "id": "bda-gs-2", "info": "Hide elements and reduce the size of elements.", "implemented": true, "hidden": false, "cat": "core"},
"Voice Mode": { "id": "bda-gs-4", "info": "Only show voice chat", "implemented": true, "hidden": false, "cat": "core"},
"Hide Channels": { "id": "bda-gs-3", "info": "Hide channels in minimal mode", "implemented": true, "hidden": false, "cat": "core"},
@ -143,6 +144,7 @@ var defaultCookie = {
"bda-gs-6": false,
"bda-gs-7": false,
"bda-gs-8": false,
"bda-gs-9": true,
"bda-es-0": true,
"bda-es-1": true,
"bda-es-2": true,

View File

@ -1,45 +0,0 @@
@ECHO off
:prompt
set /P c=Are you sure you want to uninstall BetterDiscord [Y/N]?
echo.
if /I "%c%" EQU "Y" goto :removeBetterDiscord
if /I "%c%" EQU "N" goto :eof
goto :prompt
:removeBetterDiscord
echo Removing BetterDiscord...
echo.
:: Delete %appdata%\BetterDiscord
call:deleteFolder %appdata%\BetterDiscord
:: Remove BetterDiscord from all app versions
for /d %%G in ("%localappdata%\Discord\app-*") do (
call:deleteFolder "%%G\resources\node_modules\BetterDiscord"
call:deleteFolder "%%G\resources\app"
)
goto:end
:: Checks whether a folder exists and deletes it if it does
:deleteFolder
if exist "%~1" (
@RD /S /Q "%~1"
echo Folder "%~1" removed.
) else (
echo Folder "%~1" does not exist.
)
goto:eof
:end
echo.
echo Restarting Discord...
taskkill /f /im Discord.exe 1>nul 2>nul
"%localappdata%\Discord\Update.exe" --processStart Discord.exe
echo.
echo BetterDiscord has been removed!
echo.
pause

View File

View File

@ -1,68 +0,0 @@
var fs = require('fs');
var crypto = require('crypto');
function checksum (str, algorithm, encoding) {
return crypto
.createHash(algorithm || 'md5')
.update(str, 'utf8')
.digest(encoding || 'hex')
}
var dver = "0.0.283";
console.log("BetterDiscord Validator v0.1");
var discordPath = process.env.LOCALAPPDATA + "/Discord/app-" + dver + "/resources";
exists(discordPath + "/app");
exists(discordPath + "/app/app/index.js");
var bdPath = discordPath + "/node_modules/BetterDiscord";
exists(bdPath);
exists(bdPath + "/package.json");
exists(bdPath + "/betterdiscord.js");
exists(bdPath + "/lib");
exists(bdPath + "/lib/BetterDiscord.js");
exists(bdPath + "/lib/config.json");
exists(bdPath + "/lib/Utils.js");
check(discordPath + "/app/app/index.js", "35CAB26E794CDA4123927F2DC932958B");
check(bdPath + "/package.json", "26EF86E0910272D3ACA1B854D2F25340");
check(bdPath + "/betterdiscord.js", "31DD3E3D37D6FD5F6C2784D06F1162C4");
check(bdPath + "/lib/BetterDiscord.js", "84D281EDF38F945A5F6DFAAA2D951A6A");
check(bdPath + "/lib/config.json", "9A6E146B64A2D2D459B081B910D60582");
check(bdPath + "/lib/Utils.js", "FD1FFCE03E999B80636D200F78383BF8");
console.log("Everything seems to be fine");
function exists(path) {
console.log("Checking for " + path);
var exists = fs.existsSync(path);
if(exists) {
console.log(path + " exists");
} else {
console.log(path + " doesn't exists");
process.exit();
}
}
function check(path, cm) {
console.log("Checking " + path + " checksum");
var read = fs.readFileSync(path);
if(cm.toLowerCase() == checksum(read).toLowerCase()) {
console.log(path + " checksum matches");
} else {
console.log(path + " checksum mismatch");
console.log("Expected: " + cm + " Got: " + checksum(read));
process.exit();
}
}

View File

@ -1,5 +0,0 @@
{
plugins: ["transform-remove-strict-mode"],
presets: ["es2015"],
sourceMap: false
}

View File

@ -1,99 +0,0 @@
module.exports = grunt => {
'use strict';
require('load-grunt-tasks')(grunt);
grunt.initConfig({
requirejs: {
compileProject: {
options: {
include: ['src/js/core'],
out: 'intermediate/requirejs.js',
optimize: 'none',
paths: {
'events': 'empty:',
'electron': 'empty:'
}
}
}
},
babel: {
dist: {
files: [{
src: ['intermediate/requirejs.js'],
dest: 'intermediate/babel.js'
}]
}
},
replace: {
dist: {
options: {
patterns: [{
match: /\\n +/g,
replacement: ''
},{
match: / +/g,
replacement: ' '
},{
match: /\/*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*\/+/g,
replacement: ''
}]
},
files: [{
expand: true, src: ['intermediate/babel.js'], dest: ''
}]
},
nongreedy: {
options: {
patterns: [{
match: /\\n +/g,
replacement: ''
},{
match: / +/g,
replacement: ' '
},{
match: /\/\*(.|[\r\n])*?\*\//g,
replacement: ''
}]
},
files: [{
expand: true, src: ['intermediate/babel.js'], dest: ''
}]
}
},
amdclean: {
options: {
wrap: {
start: '(function() {\n\n "use strict";\n\n var electron = require("electron");\n',
end: '\n\n}());'
},
escodegen: {
format: {
indent: {
style: ' ',
base: 1
}
}
},
aggressiveOptimizations: true,
transformAMDChecks: false
},
dist: {
src: 'intermediate/babel.js',
dest: 'dist/js/main.js'
}
},
clean: [
'intermediate'
]
});
grunt.registerTask("js", [ "requirejs", "babel", "replace", "amdclean", "clean" ]);
grunt.registerTask("js-noclean", [ "requirejs", "babel", "replace", "amdclean" ]);
grunt.registerTask("fastjs", ["requirejs", "babel", "replace:nongreedy", "amdclean", "clean" ]);
grunt.registerTask("fastjs-noclean", ["requirejs", "babel", "replace:nongreedy", "amdclean" ]);
};

View File

@ -1 +0,0 @@
v2 preview for external testers

206
v2/dist/js/main.js vendored
View File

@ -1,206 +0,0 @@
(function() {
"use strict";
var electron = require("electron");
var src_js_modules_observermodule, src_js_modules_modules, src_js_utils, src_js_api, src_js_plugin, src_js_event, src_js_core;
var _createClass = function () {
function defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ('value' in descriptor)
descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
return function (Constructor, protoProps, staticProps) {
if (protoProps)
defineProperties(Constructor.prototype, protoProps);
if (staticProps)
defineProperties(Constructor, staticProps);
return Constructor;
};
}();
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError('Cannot call a class as a function');
}
}
src_js_modules_observermodule = function () {
var Observer = function () {
function Observer() {
_classCallCheck(this, Observer);
this.mutationObserver = new MutationObserver(this.observe);
this.mutationObserver.observe(document, {
childList: true,
subtree: true
});
}
_createClass(Observer, [{
key: 'observe',
value: function observe(mutations) {
mutations.forEach(function (mutation) {
BD.event.emit('raw-mutation', mutation);
});
}
}]);
return Observer;
}();
return new Observer();
}();
src_js_modules_modules = function (observerModule) {
var modules = { observerModule: observerModule };
return modules;
}(src_js_modules_observermodule);
src_js_utils = function () {
var Utils = function () {
function Utils() {
_classCallCheck(this, Utils);
}
_createClass(Utils, [
{
key: 'log',
value: function log(msg) {
console.log('%c[BD] %c>> %c' + msg, 'color:#3e82e5; font-weight:700', 'color:#000; font-weight:700', '');
}
},
{
key: 'info',
value: function info(msg) {
console.info('%c[BD] %c>> %c' + msg, 'color:#3e82e5; font-weight:700', 'color:blue; font-weight:700', '');
}
},
{
key: 'warn',
value: function warn(msg) {
console.warn('%c[BD] %c>> %c' + msg, 'color:#3e82e5; font-weight:700', 'color:orange; font-weight:700', '');
}
},
{
key: 'err',
value: function err(msg) {
console.error('%c[BD] %c>> %c' + msg, 'color:#3e82e5; font-weight:700', 'color:red; font-weight:700', '');
}
},
{
key: 'dateString',
get: function get() {
return new Date().toLocaleString('en-GB');
}
},
{
key: 'timeString',
get: function get() {
return new Date().toTimeString().split(' ')[0];
}
}
]);
return Utils;
}();
return new Utils();
}();
src_js_api = function () {
var Api = function Api() {
_classCallCheck(this, Api);
};
return new Api();
}();
src_js_plugin = function () {
var Plugin = function () {
function Plugin(args) {
_classCallCheck(this, Plugin);
this.info = args;
}
_createClass(Plugin, [
{
key: 'author',
get: function get() {
return this.info.author;
}
},
{
key: 'name',
get: function get() {
return this.info.name;
}
},
{
key: 'version',
get: function get() {
return this.info.version;
}
}
]);
return Plugin;
}();
return Plugin;
}();
src_js_event = function () {
var EventEmitter = new require('events').EventEmitter;
var Event = function () {
function Event() {
_classCallCheck(this, Event);
this.eventEmitter = new EventEmitter();
}
_createClass(Event, [
{
key: 'on',
value: function on(eventName, callback) {
this.eventEmitter.on(eventName, callback);
}
},
{
key: 'emit',
value: function emit() {
var _eventEmitter;
(_eventEmitter = this.eventEmitter).emit.apply(_eventEmitter, arguments);
}
}
]);
return Event;
}();
return new Event();
}();
src_js_core = function (modules, utils, api, plugin, event) {
var Core = function () {
function Core(args) {
_classCallCheck(this, Core);
this.utils = utils;
this.event = event;
this.modules = modules;
this.beta = true;
this.alpha = true;
this.plugin = plugin;
}
_createClass(Core, [
{
key: 'init',
value: function init() {
utils.log(this.__versionString + ' Initializing');
}
},
{
key: '__version',
get: function get() {
return '2.0.0';
}
},
{
key: '__versionString',
get: function get() {
return '' + this.__version + (this.alpha ? 'A' : this.beta ? 'B' : '');
}
}
]);
return Core;
}();
window.$B = function (s) {
return $('[data-bd=' + s);
};
window.BD = new Core();
BD.init();
}(src_js_modules_modules, src_js_utils, src_js_api, src_js_plugin, src_js_event);
}());

View File

@ -1,11 +0,0 @@
{
"core": {
"version": "0.3.0"
},
"Core": {
"Version": "0.3.0"
},
"cfg": {
}
}

View File

@ -1,108 +0,0 @@
/* BetterDiscordApp Core
* Version: 2:1.0
* Author: Jiiks | https://jiiks.net
* Date: 31/10/2016
* Last Update: 31/10/2016
* Github: https://github.com/Jiiks/BetterDiscordApp
* Git: https://github.com/Jiiks/BetterDiscordApp.git
* License: MIT
*/
'use strict';
const
_fs = require('fs'),
_config = require('./config.json'),
{ _utils } = require('./utils'),
{ _logger } = require('./utils'),
{ EOL } = require('os'),
_os = require('os');
const _startDate = new Date();
var _cfg;
// Default configs if for some reason we don't receive config params
const _defaults = {
installPath: (_os.platform() === 'win32' ? process.env.APPDATA : _os.platform() === 'darwin' ? `${process.env.HOME}/Library/Preferences`: `/var/local`) + '/BetterDiscord/lib',
dataPath: (_os.platform() === 'win32' ? process.env.APPDATA : _os.platform() === 'darwin' ? `${process.env.HOME}/Library/Preferences`: `/var/local`) + '/BetterDiscord/data',
emotesEnabled: true
};
const _resources = {
"mainjs": {
"path": "js",
"filename": "main.js",
"var": "window.BetterDiscord"
},
"jQuery": {
"path": "vendor",
"filename": "jquery-2.2.4.min.js",
"var": "window.$ = window.jQuery"
}
};
var _self;
class Core {
constructor(args) {
_self = this;
this.continue = true;
_logger.log(`v${this.__version} Loading - OS: ${_os.platform()}`);
this.initConfig(args.cfg);
}
initConfig(args) {
_cfg = _config.cfg;
_cfg.installPath = args.installPath || _defaults.installPath;
_cfg.dataPath = args.dataPath || _defaults.dataPath;
_cfg.emotesEnabled = args.emotesEnabled || _defaults.emotesEnabled;
}
hook(mainWindow) {
if(mainWindow === undefined) {
this.exit("mainWindow is undefined!");
return;
}
this.mainWindow = mainWindow;
this.hookEvent('dom-ready', this.domReady);
}
hookEvent(event, callback) {
if(!this.continue) return;
try {
_logger.log(`Hooking ${event}`);
this.mainWindow.webContents.on(event, callback);
}catch(err) {
this.exit(`Failed to hook event ${event}. Reason: ${err}`);
}
}
domReady() {
for(var key in _resources) {
var resource = _resources[key];
_utils.requireJs(`${_cfg.installPath}/${resource.path}/${resource.filename}`, resource.var, _self.mainWindow);
}
_self.pluginLoader();
}
pluginLoader() {
}
exit(reason, severity) {
this.continue = false;
// TODO show an actual error dialog for user
_logger.log(`Quitting. Reason: ${reason}`, severity || 2);
_logger.save();
}
get __version() {
return _config.core.version;
}
}
exports.BetterDiscord = Core;

View File

@ -1 +0,0 @@
module.exports = require('./core');

View File

@ -1,2 +0,0 @@
var BD = require('./main');
var _bd = new BD.BetterDiscord({ cfg: { } });

View File

@ -1,105 +0,0 @@
/* BetterDiscordApp Utilities
* Version: 2:1.0
* Author: Jiiks | https://jiiks.net
* Date: 31/10/2016
* Last Update: 31/10/2016
* Github: https://github.com/Jiiks/BetterDiscordApp
* Git: https://github.com/Jiiks/BetterDiscordApp.git
* License: MIT
*/
'use strict';
class Utils {
//Get the latest commit hash from github
getHash(callback) {
this.download("api.github.com", "/repos/Jiiks/BetterDiscordApp/commits/master", data => {
//TODO use the new soon to be implemented tryparse
callback(JSON.parse(data).sha);
});
}
download(host, path, callback) {
_logger.log(`Downloading Resource: ${host}${path}`);
var options = {
host: host,
path: path,
headers: this.headers
};
_https.get(options, res => {
var data = "";
res.on('data', chunk => {
data += chunk;
});
res.on('end', () => {
callback(data);
});
}).on('error', () => {
//TODO error logging
callback(null);
});
}
requireJs(file, varstring, _window) {
_logger.log(`Injecting file: ${file}`);
_window.webContents.executeJavaScript(`${varstring} = require("${file}");`);
}
//Returns a datestring: [DD/MM/YYYY - HH:MM:SS]
get dateString() {
var d = new Date();
return `${("00" + (d.getDate())).slice(-2)}/` +
`${("00" + d.getMonth()).slice(-2)}/` +
`${d.getFullYear()} - ` +
`${("00" + d.getHours()).slice(-2)}:` +
`${("00" + d.getMinutes()).slice(-2)}:` +
`${("00" + d.getSeconds()).slice(-2)}`;
}
get headers() {
return { 'user-agent': 'Mozilla/5.0' };
}
}
class Logger {
constructor() {
this.logs = "";
}
log(msg, severity) {
var l = `[BD|${this.severity(severity)}][${_utils.dateString}] >>> ${msg}`;
console.log(l);
this.logs += `${l}${EOL}`;
}
save() {
try {
_fs.writeFileSync('logs.log', this.logs);
}catch(err) {
this.log("Failed to save logs! " + err, 2);
}
}
severity(severity) {
return {
0: "INF",
1: "WRN",
2: "ERR"
}[severity||0];
}
}
const _utils = new Utils(),
_logger = new Logger(),
_fs = require('fs'),
{EOL} = require('os'),
_https = require('https');
exports._utils = _utils;
exports._logger = _logger;

View File

@ -1,23 +0,0 @@
{
"name": "betterdiscord",
"description": "Discord enhancement project. v2 preview",
"version": "0.3.0",
"homepage": "https://github.com/Jiiks/BetterDiscordApp",
"license": "MIT",
"main": "lib/main.js",
"devDependencies": {
"grunt": "^0.4.5",
"load-grunt-tasks": "^3.5.0",
"grunt-requirejs": "^0.4.2",
"grunt-amdclean": "^0.1.2",
"grunt-babel": "^6.0.0",
"babel-preset-es2015": "^6.9.0",
"babel-plugin-transform-remove-strict-mode": "^0.0.2",
"grunt-contrib-concat": "^1.0.1",
"grunt-contrib-sass": "^1.0.0",
"grunt-contrib-uglify": "^1.0.1",
"grunt-contrib-cssmin": "^1.0.1",
"grunt-contrib-clean": "^1.0.0",
"grunt-replace": "^1.0.1"
}
}

View File

@ -1,20 +0,0 @@
/* BetterDiscordApp Client Api
* Version: 2:1.0
* Author: Jiiks | https://jiiks.net
* Date: 31/10/2016
* Last Update: 31/10/2016
* Github: https://github.com/Jiiks/BetterDiscordApp
* Git: https://github.com/Jiiks/BetterDiscordApp.git
* License: MIT
*/
define(() => {
class Api {
}
return new Api();
});

View File

@ -1,50 +0,0 @@
/* BetterDiscordApp Client Core
* Version: 2:1.0
* Author: Jiiks | https://jiiks.net
* Date: 31/10/2016
* Last Update: 31/10/2016
* Github: https://github.com/Jiiks/BetterDiscordApp
* Git: https://github.com/Jiiks/BetterDiscordApp.git
* License: MIT
*/
define([
"./modules/modules",
"./utils",
"./api",
"./plugin",
"./event"
], (modules, utils, api, plugin, event) => {
class Core {
constructor(args) {
this.utils = utils;
this.event = event;
this.modules = modules;
this.beta = true;
this.alpha = true;
this.plugin = plugin;
}
init() {
utils.log(`${this.__versionString} Initializing`);
}
get __version() {
return "2.0.0";
}
get __versionString() {
return `${this.__version}${this.alpha ? "A" : this.beta ? "B" : ""}`;
}
}
window.$B = s => { return $(`[data-bd=${s}`); };
window.BD = new Core();
BD.init();
});

View File

@ -1,33 +0,0 @@
/* BetterDiscordApp Event emitter
* Version: 2:1.0
* Author: Jiiks | https://jiiks.net
* Date: 31/10/2016
* Last Update: 31/10/2016
* Github: https://github.com/Jiiks/BetterDiscordApp
* Git: https://github.com/Jiiks/BetterDiscordApp.git
* License: MIT
*/
define(() => {
const EventEmitter = new require('events').EventEmitter;
class Event {
constructor() {
this.eventEmitter = new EventEmitter;
}
on(eventName, callback) {
this.eventEmitter.on(eventName, callback);
}
emit(...args) {
this.eventEmitter.emit(...args);
}
}
return new Event();
});

View File

@ -1,20 +0,0 @@
/* BetterDiscordApp Client Module Defines
* Version: 2:1.0
* Author: Jiiks | https://jiiks.net
* Date: 31/10/2016
* Last Update: 31/10/2016
* Github: https://github.com/Jiiks/BetterDiscordApp
* Git: https://github.com/Jiiks/BetterDiscordApp.git
* License: MIT
*/
define([
"./observermodule"
], (observerModule) => {
const modules = {
observerModule: observerModule
};
return modules;
});

View File

@ -1,34 +0,0 @@
/* BetterDiscordApp Client Observer
* Version: 2:1.0
* Author: Jiiks | https://jiiks.net
* Date: 31/10/2016
* Last Update: 31/10/2016
* Github: https://github.com/Jiiks/BetterDiscordApp
* Git: https://github.com/Jiiks/BetterDiscordApp.git
* License: MIT
*/
define([], () => {
class Observer {
constructor() {
this.mutationObserver = new MutationObserver(this.observe);
this.mutationObserver.observe(document, {
childList: true,
subtree: true
});
}
observe(mutations) {
mutations.forEach(mutation => {
BD.event.emit("raw-mutation", mutation);
});
}
}
return new Observer();
});

View File

@ -1,36 +0,0 @@
/* BetterDiscordApp Plugin base class
* Version: 2:1.0
* Author: Jiiks | https://jiiks.net
* Date: 31/10/2016
* Last Update: 31/10/2016
* Github: https://github.com/Jiiks/BetterDiscordApp
* Git: https://github.com/Jiiks/BetterDiscordApp.git
* License: MIT
*/
define(() => {
class Plugin {
constructor(args) {
this.info = args;
}
get author() {
return this.info.author;
}
get name() {
return this.info.name;
}
get version() {
return this.info.version;
}
}
return Plugin;
});

View File

@ -1,48 +0,0 @@
/* BetterDiscordApp Client Utilities
* Version: 2:1.0
* Author: Jiiks | https://jiiks.net
* Date: 04/11/2016
* Last Update: 31/10/2016
* Github: https://github.com/Jiiks/BetterDiscordApp
* Git: https://github.com/Jiiks/BetterDiscordApp.git
* License: MIT
*/
define(() => {
class Utils {
constructor() {
}
log(msg) {
console.log(`%c[BD] %c>> %c${msg}`, 'color:#3e82e5; font-weight:700', 'color:#000; font-weight:700', '')
}
info(msg) {
console.info(`%c[BD] %c>> %c${msg}`, 'color:#3e82e5; font-weight:700', 'color:#3e82e5; font-weight:700', '')
}
warn(msg) {
console.warn(`%c[BD] %c>> %c${msg}`, 'color:#3e82e5; font-weight:700', 'color:orange; font-weight:700', '')
}
err(msg) {
console.error(`%c[BD] %c>> %c${msg}`, 'color:#3e82e5; font-weight:700', 'color:red; font-weight:700', '')
}
get dateString() {
return new Date().toLocaleString("en-GB");
}
get timeString() {
return new Date().toTimeString().split(' ')[0];
}
}
return new Utils();
});