Skip to content

A storage abstraction layer for Node.js that removes any difference among multiple public cloud storage services and local filesystems

License

Notifications You must be signed in to change notification settings

ducktors/storagebus

Repository files navigation



fox1t_disco_elysium_styled_storagebus_with_boxes_covered_by_clo_8b9e8a49-f59c-44a6-9c6e-58bdedc9ee3f

CI Test Coverage Status Maintainability storagebus storagebus-abstract storagebus-local storagebus-gcs storagebus-s3 storagebus-memory All Contributors

Storagebus is a storage abstraction layer for Node.js that removes any difference among multiple public cloud storage services and local filesystems.

Usage

You can use Storagebus with your filesystem, AWS and GCP:

const { Storage } = require("storage/local");
// const { Storage } = require('storage/aws')
// const { Storage } = require('storage/gcp')
const { Readable } = require("node:stream");

const storage = new Storage({
  rootFolder: "path/to/folder",
});
// const storage = new Storage({
//  bucket: 'your-aws-bucket';
//  region: 'your-aws-region';
//  accessKeyId: 'your-aws-access-key';
//  secretAccessKey: 'your-aws-secret-access-key';
// })
// const storage = new Storage({
//  bucket: 'your-gcp-bucket';
//  projectId: 'your-gcp-project-id';
//  clientEmail: 'your-gcp-client-email';
//  privateKey: 'your-gcp-private-key';
// })

async function main() {
  // Your readable stream
  const readable = Readable.from("Hello, world!");

  // write a file
  const writtenFileString = await storage.write("your-file.txt", readable);

  // read a file from your storage
  const fileReadable = await storage.read("your-file.txt");

  // check for file existance in your storage
  const exist = await storage.exists("your-file.txt");

  // copy file
  const copiedFileString = await storage.copy(
    "your-file.txt",
    "your-file-copy.txt"
  );

  // move a file
  const movedFileString = await storage.move(
    "your-file-copy.txt",
    "moved/your-file-copy.txt"
  );

  // delete a file
  await storage.remove("your-file.txt");
}

Contribute to this project

  1. Clone this repository

    git clone git@github.com:github.com/ducktors/storagebus.git

  2. Move inside repository folder

    cd storagebus

  3. Install dependencies

    pnpm install

  4. Run the project in development mode

    pnpm dev

How to release

The release is performed by the maintainers of the repository. New versions are managed via changesets.

To release a new version, simply choose which package to bump with pnpm release command:

$ pnpm release

> @ducktors/storagebus@0.9.0 release /ducktors-workstation/storagebus
> changeset

🦋  Which packages would you like to include? …
◯ unchanged packages
  ◯ @ducktors/storagebus-abstract
  ◯ @ducktors/storagebus-gcs
  ◯ @ducktors/storagebus-local
  ◯ @ducktors/storagebus-s3

Contributors

Maksim Sinik
Maksim Sinik

💻 ⚠️ 🤔 🚧 🧑‍🏫
Matteo Vivona
Matteo Vivona

🚇 🛡️ 📖
Andrew Hu
Andrew Hu

📖

About

A storage abstraction layer for Node.js that removes any difference among multiple public cloud storage services and local filesystems

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Languages