Dive into secure and efficient coding practices with our curated list of the top 10 examples showcasing 'orbit-db-access-controllers' in functional components in JavaScript. Our advanced machine learning engine meticulously scans each line of code, cross-referencing millions of open source libraries to ensure your implementation is not just functional, but also robust and secure. Elevate your React applications to new heights by mastering the art of handling side effects, API calls, and asynchronous operations with confidence and precision.
async _createStore (type, address, options) {
// Get the type -> class mapping
const Store = databaseTypes[type]
if (!Store) { throw new Error(`Invalid database type '${type}'`) }
let accessController
if (options.accessControllerAddress) {
accessController = await AccessControllers.resolve(this, options.accessControllerAddress, options.accessController)
}
const opts = Object.assign({ replicate: true }, options, {
accessController: accessController,
cache: options.cache,
onClose: this._onClose.bind(this),
onDrop: this._onDrop.bind(this),
onLoad: this._onLoad.bind(this)
})
const identity = options.identity || this.identity
const store = new Store(this._ipfs, identity, address, opts)
store.events.on('write', this._onWrite.bind(this))
// ID of the store is the address as a string
const addr = address.toString()
async _determineAddress (name, type, options = {}) {
if (!OrbitDB.isValidType(type)) { throw new Error(`Invalid database type '${type}'`) }
if (OrbitDBAddress.isValid(name)) { throw new Error('Given database name is an address. Please give only the name of the database!') }
// Create an AccessController, use IPFS AC as the default
options.accessController = Object.assign({}, { name: name, type: 'ipfs' }, options.accessController)
const accessControllerAddress = await AccessControllers.create(this, options.accessController.type, options.accessController || {})
// Save the manifest to IPFS
const manifestHash = await createDBManifest(this._ipfs, name, type, accessControllerAddress, options)
// Create the database address
return OrbitDBAddress.parse(OrbitDBAddress.join(manifestHash, name))
}
const EventEmitter = require('events')
const OrbitDB = require('orbit-db')
const Pubsub = require('orbit-db-pubsub')
const AccessControllers = require('orbit-db-access-controllers')
const resolveDID = require('did-resolver').default
const {
LegacyIPFS3BoxAccessController,
ThreadAccessController,
ModeratorAccessController
} = require('3box-orbitdb-plugins')
AccessControllers.addAccessController({ AccessController: LegacyIPFS3BoxAccessController })
AccessControllers.addAccessController({ AccessController: ThreadAccessController })
AccessControllers.addAccessController({ AccessController: ModeratorAccessController })
const config = require('./config')
const PINNING_NODE = config.pinning_node
const PINNING_ROOM = config.pinning_room
const ORBITDB_OPTS = config.orbitdb_options
const ODB_STORE_OPTS = {
...ORBITDB_OPTS,
accessController: {
type: 'legacy-ipfs-3box',
skipManifest: true
}
}
const entryTypes = {
SPACE: 'space',
ADDRESS_LINK: 'address-link',
AUTH_DATA: 'auth-data'