@sammacbeth/dat-archive-web
v1.1.2
Published
DatArhive implementation for borwsers that uses dat-gateway
Downloads
3
Readme
dat-archive-web
DatArchive implementation for browsers that uses dat-gateway
Uses a fork of dat-gateway that supports synchronization over websockets.
Based on node-dat-archive
Public gateway: gateway.mauve.moe:3000
npm install --save dat-archive-web
Example
// After including the bundle in a script tag, or requiring it
const archive = new DatArchive('dat://87ed2e3b160f261a032af03921a3bd09227d0a4cde73466c17114816cae43336')
archive.readFile('/index.html')
.then((html) => console.log(html))
API
Implements the same interface as DatArchive in Beaker with the following exceptions:
archive.diff()
,archive.commit()
, andarchive.revert()
are not supportedDatArchive.selectArchive()
returns a new DatArchive every time (You can implement better behavior in the Manager)- By default requires an instance of dat-gateway running on http://localhost:3000
- Uses
DatArchive.setManager()
to set the manager which is an object with the following API:getStorage(key: String) : Promise<Storage>
: Retruns the storage to use with hyperdrive. By default it will persist to memoryselectArchive(options) : Promise<String>
: Returns the URL of a user selected archive. Takes same options as the DatArchive API. By default it returns null to always create a new archivereplicate(key: String) : Stream
: Returns a stream used to replicate the hyperdrive instance. By default it will connect to the gateway over websockets.resolveName(url: String) : Promise<String>
resolves a dat URL with a hostname to a dat URL which uses the public keyonAddArchive(key: String, secretKey: String, options: Object) : Promise<void>
invoked wheneverDatArchive.create()
is invoked. Allows managers to save the dat information to be used inselectArchive()
- An implementation can be found in
DefaultManager
that can be extended to do fancier things. - Can also be used by extending from
DatArchive.DefaultManager
Setting a custom gateway
const DatArchive = require('dat-archive-web')
const DefaultManager = DatArchive.DefaultManager
// Use a public dat gateway so you don't need a local one
const publicGateway = 'gateway.mauve.moe:3000'
DatArchive.setManager(new DefaultManager(publicGateway))
Features
- [x] Support most DatArchvie methods
- [x] Public gateway at http://gateway.mauve.moe:3000/
- [x] Extensiblity for different environments
- [x] Detect HTTP/HTTPS in gateway URL
- [x] Functional DatDNS support (via gateway)
- [x] Data stored in memory by default
- [x] Can persist to IndexedDB (via random-access-idb)
- [x] Full support for versions (Needs testing, but code is there)
- [x] Forking (without preserving change feed)
- [x] DatArchive.selectArchive() (function offloaded to Manager)
Development
- This project uses the
standard
code style - Run the example in node with
npm install && npm run example
- Build the browserify bundle with
npm run build