Skip to content
This repository was archived by the owner on Jun 3, 2020. It is now read-only.

Commit b4f4557

Browse files
committed
Update to latest hyperdrive-daemon & client (0.9.16 and 0.10.1)
1 parent 62ab10c commit b4f4557

4 files changed

Lines changed: 7237 additions & 59 deletions

File tree

dat/daemon.js

Lines changed: 33 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,10 @@
1-
const startDaemon = require('hyperdrive-daemon')
1+
const HyperdriveDaemon = require('hyperdrive-daemon')
22
const { createMetadata } = require('hyperdrive-daemon/lib/metadata')
3-
const { loadMetadata, HyperdriveClient } = require('hyperdrive-daemon-client')
3+
const constants = require('hyperdrive-daemon-client/lib/constants')
4+
const { HyperdriveClient } = require('hyperdrive-daemon-client')
45
const datEncoding = require('dat-encoding')
56
const pda = require('pauls-dat-api')
67

7-
// constants
8-
// =
9-
10-
const DAEMON_STORAGE_PATH = require('path').join(require('os').homedir(), '.dat')
11-
const DAEMON_PORT = 3101
12-
138
// typedefs
149
// =
1510

@@ -18,6 +13,7 @@ const DAEMON_PORT = 3101
1813
* @prop {number} sessionId
1914
* @prop {Buffer} key
2015
* @prop {string} url
16+
* @prop {string} domain
2117
* @prop {boolean} writable
2218
* @prop {Object} session
2319
* @prop {function(): Promise<void>} session.close
@@ -57,36 +53,15 @@ var client // client object created by hyperdrive-daemon-client
5753
// =
5854

5955
exports.setup = async function () {
60-
// fetch daemon metadata from disk
61-
var metadata
62-
try {
63-
metadata = await new Promise((resolve, reject) => {
64-
loadMetadata((err, metadata) => {
65-
if (err) reject(err)
66-
else resolve(metadata)
67-
})
68-
})
69-
} catch (e) {
70-
await createMetadata(`localhost:${DAEMON_PORT}`)
71-
metadata = await new Promise((resolve, reject) => {
72-
loadMetadata((err, metadata) => {
73-
if (err) reject(err)
74-
else resolve(metadata)
75-
})
76-
})
77-
}
78-
7956
// instantiate the daemon
80-
// TODO the daemon should be managed in an external promise
81-
await startDaemon({
82-
storage: DAEMON_STORAGE_PATH,
83-
port: DAEMON_PORT,
84-
bootstrap: [],
85-
metadata
86-
})
57+
// TODO the daemon should be managed in an external process
58+
await createMetadata(`localhost:${constants.port}`)
59+
var daemon = new HyperdriveDaemon()
60+
await daemon.start()
61+
process.on('exit', () => daemon.stop())
8762

8863
// TODO
89-
client = new HyperdriveClient(metadata.endpoint, metadata.token)
64+
client = new HyperdriveClient()
9065
await client.ready()
9166
}
9267

@@ -100,23 +75,23 @@ exports.setup = async function () {
10075
* @returns {Promise<DaemonDatArchive>}
10176
*/
10277
exports.createDatArchiveSession = async function (opts) {
103-
const session = await client.drive.get(opts)
104-
const sessionId = session.id
105-
const key = datEncoding.toStr(session.opts.key)
78+
const drive = await client.drive.get(opts)
79+
const key = datEncoding.toStr(drive.key)
10680
var datArchive = {
10781
key: datEncoding.toBuf(key),
10882
url: `dat://${key}`,
109-
writable: true, // TODO
83+
writable: drive.writable,
84+
domain: undefined,
11085

11186
session: {
11287
async close () {
113-
return client.drive.close(sessionId)
88+
return drive.close()
11489
},
11590
async publish () {
116-
return client.drive.publish(sessionId)
91+
return drive.publish()
11792
},
11893
async unpublish () {
119-
return client.drive.unpublish(sessionId)
94+
return drive.unpublish()
12095
}
12196
},
12297

@@ -136,27 +111,28 @@ exports.createDatArchiveSession = async function (opts) {
136111
if (st) fixStatObject(st)
137112
cb(err, st)
138113
})
139-
client.drive.stat(sessionId, ...args)
114+
drive.stat(...args)
140115
},
141-
// readFile: (...args) => client.drive.readFile(sessionId, ...args), TODO opts not accepted by daemon yet
142-
readFile: (path, opts, cb) => {
143-
client.drive.readFile(sessionId, path, cb ? cb : opts)
116+
lstat (path, opts = {}) {
117+
opts.lstat = true
118+
return this.stat(path, opts)
144119
},
120+
// readFile: (...args) => client.drive.readFile(sessionId, ...args), TODO opts not accepted by daemon yet
121+
readFile: (path, opts, cb) => drive.readFile(path, cb ? cb : opts),
145122
// writeFile: (...args) => client.drive.writeFile(sessionId, ...args), TODO encoding/opts not accepted by daemon yet
146-
writeFile: (path, content, encoding, cb) => client.drive.writeFile(sessionId, path, content, cb),
147-
148-
readdir: (...args) => client.drive.readdir(sessionId, ...args),
149-
// ready: makeArchiveProxyCbFn(key, version, 'ready'),
123+
writeFile: (path, content, opts, cb) => drive.writeFile(path, content, cb ? cb : opts),
150124
// download: makeArchiveProxyCbFn(key, version, 'download'),
151125
// history: makeArchiveProxyReadStreamFn(key, version, 'history'),
152-
// createReadStream: makeArchiveProxyReadStreamFn(key, version, 'createReadStream'),
126+
createReadStream: (...args) => drive.createReadStream(...args),
153127
// createDiffStream: makeArchiveProxyReadStreamFn(key, version, 'createDiffStream'),
154-
// createWriteStream: makeArchiveProxyWriteStreamFn(key, version, 'createWriteStream'),
155-
// unlink: makeArchiveProxyCbFn(key, version, 'unlink'),
156-
// mkdir: makeArchiveProxyCbFn(key, version, 'mkdir'),
157-
// rmdir: makeArchiveProxyCbFn(key, version, 'rmdir'),
158-
// lstat: makeArchiveProxyCbFn(key, version, 'lstat'),
159-
// access: makeArchiveProxyCbFn(key, version, 'access')
128+
createWriteStream: (...args) => drive.createWriteStream(...args),
129+
unlink: (...args) => drive.unlink(...args),
130+
readdir: (...args) => drive.readdir(...args),
131+
mkdir: (...args) => drive.mkdir(...args),
132+
rmdir: (...args) => drive.rmdir(...args),
133+
// access: makeArchiveProxyCbFn(key, version, 'access'),
134+
mount: (...args) => drive.mount(...args),
135+
unmount: (...args) => drive.unmount(...args),
160136
}
161137
datArchive.pda = createDatArchiveSessionPDA(datArchive)
162138
return /** @type DaemonDatArchive */(datArchive)

dat/library.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,7 @@ async function loadArchiveInner (key, userSettings = null) {
361361

362362
// create the archive session with the daemon
363363
var archive = await daemon.createDatArchiveSession({key})
364+
key = archive.key
364365

365366
// put the archive on the network
366367
archive.session.publish()

0 commit comments

Comments
 (0)