uplink-js

ES9+ compatible Storj bindings for Node, for use with Tardigrade.

Usage no npm install needed!

<script type="module">
  import uplinkJs from 'https://cdn.skypack.dev/uplink-js';
</script>

README

uplink-js

Build Status Coverage Status

ES9+ compatible Storj bindings for Node, for use with Tardigrade.

Usage

Example

const uplink = require('node-storj');

(async () => {

    // parse access
    const access = await uplink.parseAccess('your-access-here');

    // open project
    const project = await access.openProject();

    // initiate file download
    const download = await project.downloadObject('my-bucket', 'file.txt');

    // read chunks to program output
    for await (const chunk of download) {
        process.stdout.write(chunk);˜
    }

})();

Example with streams

// initiate file download
const download = await project.downloadObject('my-bucket', 'file.txt');

download
    .stream()
    .pipe(process.stdout);

API

Project

Promise<Download> project.downloadObject(bucket, path)

Returns a Promise which resolves to a Download object.

const download = await project.downloadObject('my-bucket', 'my-path');

Promise<Upload> project.uploadObject(bucket, path)

Returns a Promise which resolves to an Upload object.

const upload = await project.uploadObject('my-bucket', 'my-path');

Async Iterable <StorjObject> project.listObjects(bucket, options)

Iterates through all objects in a bucket.

Promise project.deleteObject(bucket, path)

Delete an object.

options
prefix

Specifies from which prefix to list files.

type: string
default: '/'

recursive

type: bool
default: false`

for await (const object of project.listObjects('my-bucket')) {
    console.log(object.key);
}

Download

Implements asyncIterable which yields Buffers as the download is streamed.

for await (const chunk of download) {
    console.log(chunk.toString())
}

ReadableStream download.stream()

Returns a ReadableStream compatible with Node.js libraries and frameworks.

download.stream()
    .pipe(fs.createWriteStream('hello-world.txt'));

Promise<Buffer> download.buffer()

Returns a Promise that resolves to a Buffer containing the entire download.

const buf = await download.buffer();

console.log(buf.toString())

Upload

Promise upload.iterable(iterable)

Uploads from an iterable that yields buffers.

async function* streamData() {
    yield Buffer.from('Hello, ');

    await new Promise(resolve => setTimeout(resolve, 100);

    yield Buffer.from('World!');
}

await upload.iterable(stremData());

WritableStream upload.stream()

Returns a WritableStream compatible with Node.js libraries and frameworks.

fs.createReadStream('my-file.txt')
    .pipe(upload.stream());