1.0.0 • Published 4 years ago

dbrowser-core v1.0.0

Weekly downloads
4
License
MIT
Repository
github
Last release
4 years ago

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()