Skip to content

dBrowser Framework

Jared Rice Sr edited this page Jun 30, 2018 · 3 revisions

@dbrowser/framework

dBrowser's core framework. dBrowser extensions are built from this framework, which was factored out of the original core.

Here's how we use it in dBrowser

import {app, protocol} from 'electron'
import dBrowserFramework from '@dbrowser/framework'

const DISALLOWED_SAVE_PATH_NAMES = [
  'home',
  'desktop',
  'documents',
  'downloads',
  'music',
  'pictures',
  'videos'
]

// setup dBrowser framework
await dBrowserFramework.setup({
  // config
  userDataPath: app.getPath('userData'),
  homePath: app.getPath('home'),
  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) {/*...*/}
  },
  rpcAPI: {
    exportAPI(apiName, apiManifest, apiImpl, [guardFn])
  },
  downloadsWebAPI: {...},
  browserWebAPI: {...}
})

// setup the protocol handler
protocol.registerStreamProtocol('dweb', dBrowserFramework.dweb.protocol.electronHandler, err => {
  if (err) throw ProtocolSetupError(err, 'Failed to create protocol: dweb')
})

In the webview preload:

import dBrowserFrameworkWebview from '@dbrowser/framework/webview'

dBrowserFrameworkWebview.setup({
  // APIs
  rpcAPI: {
    importAPI(apiName, apiManifest, opts)
  }
})

API (@dbrowser/framework)

setup()

getEnvVar()

globals

ddbs

ddbs.vaults

ddbs.bookmarks

ddbs.history

ddbs.settings

ddbs.sitedata

ddbs.templates

dweb

dweb.repository

dweb.dns

dweb.folderSync

dweb.garbageCollector

dweb.protocol

dweb.debug

API (@dbrowser/framework/webview)

setup()

Clone this wiki locally