/ app / main.cjs
main.cjs
 1  const { protocol } = require('electron')
 2  const path = require('path')
 3  const { pathToFileURL } = require('url')
 4  
 5  const P2P_PRIVILEGES = {
 6    standard: true,
 7    secure: true,
 8    allowServiceWorkers: true,
 9    supportFetchAPI: true,
10    bypassCSP: false,
11    corsEnabled: true,
12    stream: true
13  }
14  
15  const BROWSER_PRIVILEGES = {
16    standard: false,
17    secure: true,
18    allowServiceWorkers: false,
19    supportFetchAPI: true,
20    bypassCSP: false,
21    corsEnabled: true
22  }
23  
24  const LOW_PRIVILEGES = {
25    standard: false,
26    secure: false,
27    allowServiceWorkers: false,
28    supportFetchAPI: false,
29    bypassCSP: false,
30    corsEnabled: true
31  }
32  
33  protocol.registerSchemesAsPrivileged([
34    { scheme: 'https+raw', privileges: P2P_PRIVILEGES },
35    { scheme: 'hyper', privileges: P2P_PRIVILEGES },
36    { scheme: 'gemini', privileges: P2P_PRIVILEGES },
37    { scheme: 'ipfs', privileges: P2P_PRIVILEGES },
38    { scheme: 'ipns', privileges: P2P_PRIVILEGES },
39    { scheme: 'ipld', privileges: P2P_PRIVILEGES },
40    { scheme: 'pubsub', privileges: P2P_PRIVILEGES },
41    { scheme: 'bittorrent', privileges: P2P_PRIVILEGES },
42    { scheme: 'bt', privileges: P2P_PRIVILEGES },
43    { scheme: 'ssb', privileges: P2P_PRIVILEGES },
44    { scheme: 'agregore', privileges: BROWSER_PRIVILEGES },
45    { scheme: 'magnet', privileges: LOW_PRIVILEGES }
46  ])
47  
48  const indexFile = path.join(__dirname, 'index.js')
49    .replace(`.asar${path.sep}`, `.asar.unpacked${path.sep}`)
50  
51  import(pathToFileURL(indexFile)).catch((e) => {
52    console.error(e.stack)
53    process.exit(1)
54  })