Dive into secure and efficient coding practices with our curated list of the top 10 examples showcasing 'interface-datastore' 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.
/* eslint-env mocha */
'use strict'
const chai = require('chai')
chai.use(require('dirty-chai'))
const expect = chai.expect
const path = require('path')
const promisify = require('util').promisify
const noop = () => {}
const mkdirp = require('mkdirp')
const rimraf = promisify(require('rimraf'))
const fs = require('fs')
const fsReadFile = promisify(require('fs').readFile || noop)
const Key = require('interface-datastore').Key
const utils = require('interface-datastore').utils
const ShardingStore = require('datastore-core').ShardingDatastore
const sh = require('datastore-core').shard
const isNode = require('detect-node')
const FsStore = require('../src')
describe('FsDatastore', () => {
if (!isNode) {
it('only supports node.js', () => {
})
return
}
describe('construction', () => {
describe('enabled', () => {
let nodeA
const datastore = new MemoryStore()
before(function (done) {
createNode('/ip4/0.0.0.0/tcp/0', {
datastore
}, (err, node) => {
expect(err).to.not.exist()
nodeA = node
// Rewrite validators
nodeA._dht.validators.v = {
func (key, publicKey, callback) {
setImmediate(callback)
},
sign: false
}
const getIdKeys = (pid) => {
const pkBuffer = Buffer.from('/pk/')
const ipnsBuffer = Buffer.from('/ipns/')
return {
routingPubKey: new Key(Buffer.concat([pkBuffer, pid])), // Added on https://github.com/ipfs/js-ipns/pull/8#issue-213857876 (pkKey will be deprecated in a future release)
pkKey: new Key(rawStdEncoding(Buffer.concat([pkBuffer, pid]))),
routingKey: new Key(Buffer.concat([ipnsBuffer, pid])), // Added on https://github.com/ipfs/js-ipns/pull/6#issue-213631461 (ipnsKey will be deprecated in a future release)
ipnsKey: new Key(rawStdEncoding(Buffer.concat([ipnsBuffer, pid])))
}
}
return new Promise((resolve, reject) => {
const ds = ipfs._repo.datastore
if (!ds) {
return ipfs.once('start', () => {
datastore(ipfs, collaboration).then(resolve).catch(reject)
})
}
// resolve(ds)
resolve(new NamespaceStore(ds, new Key(`peer-base-collab-${collaboration.fqn()}`)))
})
}
const getIdKeys = (pid) => {
const pkBuffer = Buffer.from('/pk/')
const ipnsBuffer = Buffer.from('/ipns/')
return {
routingPubKey: new Key(Buffer.concat([pkBuffer, pid])), // Added on https://github.com/ipfs/js-ipns/pull/8#issue-213857876 (pkKey will be deprecated in a future release)
pkKey: new Key(rawStdEncoding(Buffer.concat([pkBuffer, pid]))),
routingKey: new Key(Buffer.concat([ipnsBuffer, pid])), // Added on https://github.com/ipfs/js-ipns/pull/6#issue-213631461 (ipnsKey will be deprecated in a future release)
ipnsKey: new Key(rawStdEncoding(Buffer.concat([ipnsBuffer, pid])))
}
}
async _getLocal (key) {
// encode key - base32(/ipns/{cid})
const routingKey = new Key('/' + encodeBase32(key), false)
let dsVal
try {
dsVal = await this._datastore.get(routingKey)
} catch (err) {
if (err.code !== 'ERR_NOT_FOUND') {
const errMsg = `unexpected error getting the ipns record for ${routingKey.toString()}`
log.error(errMsg)
throw errcode(new Error(errMsg), 'ERR_UNEXPECTED_ERROR_GETTING_RECORD')
}
const errMsg = `local record requested was not found for ${routingKey.toString()}`
log.error(errMsg)
throw errcode(new Error(errMsg), 'ERR_NOT_FOUND')
}
async _publishPublicKey (key, publicKey) {
if ((!Key.isKey(key))) {
const errMsg = 'datastore key does not have a valid format'
log.error(errMsg)
throw errcode(new Error(errMsg), 'ERR_INVALID_DATASTORE_KEY')
}
if (!publicKey || !publicKey.bytes) {
const errMsg = 'one or more of the provided parameters are not defined'
log.error(errMsg)
throw errcode(new Error(errMsg), 'ERR_UNDEFINED_PARAMETER')
}
// Add public key to routing (buffer key)
try {
const res = await this._routing.put(key.toBuffer(), publicKey.bytes)
async _publishEntry (key, entry) {
if (!(Key.isKey(key))) {
const errMsg = 'datastore key does not have a valid format'
log.error(errMsg)
throw errcode(new Error(errMsg), 'ERR_INVALID_DATASTORE_KEY')
}
let entryData
try {
// Marshal record
entryData = ipns.marshal(entry)
} catch (err) {
log.error(err)
throw err
}
'use strict'
const isIpfs = require('is-ipfs')
const CID = require('cids')
const { DAGNode } = require('ipld-dag-pb')
const { normalizeCidPath } = require('../../utils')
const { Errors } = require('interface-datastore')
const ERR_NOT_FOUND = Errors.notFoundError().code
const { withTimeoutOption } = require('../../utils')
const Format = {
default: '',
edges: ' -> '
}
module.exports = function ({ ipld, resolve, preload }) {
return withTimeoutOption(async function * refs (ipfsPath, options) { // eslint-disable-line require-await
options = options || {}
if (options.maxDepth === 0) {
return
}
if (options.edges && options.format && options.format !== Format.default) {
'use strict'
const PeerId = require('peer-id')
const { Key, Errors } = require('interface-datastore')
const errcode = require('err-code')
const promisify = require('promisify-es6')
const debug = require('debug')
const log = debug('ipfs:ipns:publisher')
log.error = debug('ipfs:ipns:publisher:error')
const ipns = require('ipns')
const ERR_NOT_FOUND = Errors.notFoundError().code
const defaultRecordLifetime = 60 * 60 * 1000
// IpnsPublisher is capable of publishing and resolving names to the IPFS routing system.
class IpnsPublisher {
constructor (routing, datastore) {
this._routing = routing
this._datastore = datastore
}
// publish record with a eol
async publishWithEOL (privKey, value, lifetime) {
if (!privKey || !privKey.bytes) {
throw errcode(new Error('invalid private key'), 'ERR_INVALID_PRIVATE_KEY')
}
const peerId = await promisify(PeerId.createFromPrivKey)(privKey.bytes)