/* * notion-enhancer * (c) 2020 dragonwocky (https://dragonwocky.me/) (https://dragonwocky.me/) * under the MIT license */ 'use strict'; const fs = require('fs-extra'), path = require('path'), helpers = require('./helpers.js'), store = require('./store.js'); module.exports = function (__file, __exports) { __file = __file .slice(path.resolve(`${helpers.__notion}/app`).length + 1) .replace(/\\/g, '/'); if (__file === 'main/security.js') { const electron = require('electron'); electron.app.whenReady().then(() => { electron.session .fromPartition('persist:notion') .protocol.registerFileProtocol('enhancement', (req, callback) => { callback({ path: path.resolve( `${__dirname}/../mods/${req.url.slice('enhancement://'.length)}` ), }); }); }); electron.protocol.registerSchemesAsPrivileged([ { scheme: 'notion', privileges: { standard: true, secure: true, allowServiceWorkers: true, supportFetchAPI: true, corsEnabled: true, }, }, { scheme: 'enhancement', privileges: { standard: true, secure: true, allowServiceWorkers: true, supportFetchAPI: true, corsEnabled: true, bypassCSP: true, }, }, ]); } const modules = helpers.getEnhancements(); for (let mod of [ ...modules.loaded.filter((m) => m.tags.includes('core')), ...modules.loaded.filter((m) => !m.tags.includes('core')).reverse(), ]) { if ( mod.id === '0f0bf8b6-eae6-4273-b307-8fc43f2ee082' || store('mods', { [mod.id]: { enabled: false } })[mod.id].enabled ) { if ( __file === 'renderer/preload.js' && fs.pathExistsSync( path.resolve(`${__dirname}/../mods/${mod.dir}/styles.css`) ) ) { document.addEventListener('readystatechange', (event) => { if (document.readyState !== 'complete') return false; for (let rules of [ `enhancement://${mod.dir}/styles.css`, ...(mod.fonts || []), ]) { document .querySelector('head') .appendChild( helpers.createElement(``) ); } }); } if (mod.hacks && mod.hacks[__file]) { mod.hacks[__file]((...args) => { if (!args.length) return store(mod.id, mod.defaults); if (args.length === 1 && typeof args[0] === 'object') return store(mod.id, { ...mod.defaults, ...args[0] }); const other_mod = modules.loaded.find((m) => m.id === args[0]); return store(args[0], { ...(other_mod ? other_mod.defaults : {}), ...args[1], }); }, __exports); } } } };