import { session, protocol } from 'electron' import * as path from 'path' import { readFile } from 'fs' import { URL } from 'url' import log from 'electron-log'; export default function(scheme: string, partit: string | undefined): void { let customeProtocol; if(partit){ customeProtocol = session.fromPartition(partit as string).protocol; } else { customeProtocol = protocol } customeProtocol.registerBufferProtocol( scheme, (request, respond) => { let pathName = new URL(request.url).pathname pathName = decodeURI(pathName) readFile(path.join(__dirname, pathName), (error, data) => { if (error) { console.error( `Failed to read ${pathName} on ${scheme} protocol`, error ) } const extension = path.extname(pathName).toLowerCase() let mimeType = '' if (extension === '.js') { mimeType = 'text/javascript' } else if (extension === '.html') { mimeType = 'text/html' } else if (extension === '.css') { mimeType = 'text/css' } else if (extension === '.svg' || extension === '.svgz') { mimeType = 'image/svg+xml' } else if (extension === '.json') { mimeType = 'application/json' } else if (extension === '.wasm') { mimeType = 'application/wasm' } respond({ mimeType, data }) }) } ) }