# dat-storage

> Dat specific storage provider for Hyperdrive

Latest version **1.1.2** (published 2022-01-06) · MIT license · 0 weekly downloads

> **Deprecated.** This package is deprecated.

## Install

```sh
npm install dat-storage
pnpm add dat-storage
yarn add dat-storage
bun add dat-storage
```

## Health

**Score 10/100 (F)** — status: deprecated.

Negative: deprecated.

## Facts

| | |
|---|---|
| Version | 1.1.2 |
| Published | 2022-01-06 |
| First published | 2017-04-11 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 5 |
| Unpacked size | 8.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 34 |
| Author | Mathias Buus |
| Maintainers | leichtgewicht, the-real-dk, pfrazee, frando, cblgh, ninabreznik, rangermauve, serapath, zootella, jhand, juliangruber, mafintosh |

## Links

- npm: https://www.npmjs.com/package/dat-storage
- Repository: https://github.com/datproject/dat-storage
- Issues: https://github.com/datproject/dat-storage/issues
- npm.io page: https://npm.io/package/dat-storage

## Dependencies (5)

- [hyperdrive](https://npm.io/package/hyperdrive.md) ^9.1.1
- [append-tree](https://npm.io/package/append-tree.md) ^2.0.5
- [dat-secret-storage](https://npm.io/package/dat-secret-storage.md) ^4.0.0
- [random-access-file](https://npm.io/package/random-access-file.md) ^2.0.1
- [multi-random-access](https://npm.io/package/multi-random-access.md) ^2.0.3

## Recent versions

- 1.1.2 (latest) — 2022-01-06
- 1.1.1 — 2018-09-05
- 1.1.0 — 2018-09-05
- 1.0.4 — 2018-02-07
- 1.0.3 — 2017-06-09
- 1.0.2 — 2017-05-08
- 1.0.1 — 2017-05-04
- 1.0.0 — 2017-04-29
- 0.0.1 — 2017-04-29
- 0.0.0 — 2017-04-11

## README

[![deprecated](http://badges.github.io/stability-badges/dist/deprecated.svg)](https://dat-ecosystem.org/) 

More info on active projects and modules at [dat-ecosystem.org](https://dat-ecosystem.org/) <img src="https://i.imgur.com/qZWlO1y.jpg" width="30" height="30" /> 

---

# dat-storage

Dat specific storage provider for [Hyperdrive](https://github.com/mafintosh/hyperdrive)

```
npm install dat-storage
```

## Usage

``` js
var storage = require('dat-storage')

// files are stored in ./my-dataset
// metadata (hashes and stuff) are stored in ./my-dataset/.dat
// secret keys are stored in ~/.dat/secret_keys/<discovery-key>
var archive = hyperdrive(storage('my-dataset'))
```

### Custom storage provider

You can require this module in your own storage provider in order to override certain behaviors for some files while still using the default dat storage methods for other files. Here's an example of overriding only the secret key storage and nothing else:

```js
const defaultStorage = require('dat-storage')
const alternativeSecretStorage = require('your-own-custom-random-access-file-module')

module.exports = function keychainStorage() {
  const storage = defaultStorage(...arguments)
  return {
    metadata: function(file, opts) {
      if (file === 'secret_key') alternativeSecretStorage(file)
      return storage.metadata(...arguments)
    },
    content: function(file, opts) {
      return storage.content(...arguments)
    }
  }
}
```

### Options

- `secretDir` - folder to store secret keys in (default is users home dir)
- `prefix` - subfolder to put dat SLEEP files in (default is `.dat/`)

### Secret Keys

By default secret keys are stored in the users home directory via [dat-secret-storage](https://github.com/joehand/dat-secret-storage). To change the directory, pass it as an option:

```js
var storage = require('dat-storage')

var archive = hyperdrive(storage('my-dataset', {secretDir: '/secret_keys'})
```

## License

MIT

---
_Source: https://npm.io/package/dat-storage · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
