1.0.0 • Published 4 years ago
dbrowser-core v1.0.0
DBrowserX- Core
DBrowserX- browser's core software. Factored out so that we can build extensions from the same codebase.
Work in progress! Not ready to use.
Here's how we use it in electron (the browser):
import {app, protocol} from 'electron'
import beakerCore from 'dbrowser-core'
const DISALLOWED_SAVE_PATH_NAMES = [
'home',
'desktop',
'documents',
'downloads',
'music',
'pictures',
'videos'
]
// setup dbrowserx-core
await beakerCore.setup({
// config
userDataPath: app.getPath('userData'),
homePath: app.getPath('home'),
templatesPath: path.join(__dirname, 'assets', 'templates'),
disallowedSavePaths: DISALLOWED_SAVE_PATH_NAMES.map(path => app.getPath(path)),
// APIs
permsAPI: {
async checkLabsPerm({perm, labApi, apiDocsUrl, sender}) {/*...*/},
async queryPermission(perm, sender) {/*...*/},
async requestPermission(perm, sender) {/*...*/},
async grantPermission(perm, senderURL) {/*...*/}
},
uiAPI: {
async showModal(sender, modalName, opts) {/*...*/},
async capturePage(url, opts) {/*...*/}
},
rpcAPI: {
exportAPI(apiName, apiManifest, apiImpl, [guardFn])
},
downloadsWebAPI: {...},
browserWebAPI: {...}
})
// setup the protocol handler
protocol.registerStreamProtocol('dat', beakerCore.dat.protocol.electronHandler, err => {
if (err) throw ProtocolSetupError(err, 'Failed to create protocol: dat')
})
In the webview preload:
import beakerCoreWebview from 'dbrowser-core/webview'
beakerCoreWebview.setup({
// APIs
rpcAPI: {
importAPI(apiName, apiManifest, opts)
}
})
API (dbrowser-core)
setup()
getEnvVar()
debugLogger(name)
import {debugLogger} from 'dbrowser-core'
const debug = debugLogger('dat')
// write to the debug log under 'dat'
debug('dat-related stuff')
getLogFilePath()
getLogFileContent(start, end)
globals
dbs
dbs.archives
dbs.bookmarks
dbs.history
dbs.settings
dbs.sitedata
dbs.templates
dat
dat.library
dat.dns
dat.folderSync
dat.garbageCollector
dat.protocol
dat.debug
API (dbrowser-core/webview)
setup()
1.0.0
4 years ago