Socket
Socket
Sign inDemoInstall

do-spaces

Package Overview
Dependencies
39
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    do-spaces

Unofficial package for simple managing file operations hosted on "Digital Ocean Spaces" written in Typescript


Version published
Weekly downloads
51
decreased by-64.83%
Maintainers
1
Install size
96.1 MB
Created
Weekly downloads
 

Readme

Source

do-spaces

Unofficial package for simple managing file operations hosted on "Digital Ocean Spaces" written in Typescript

do-spaces unnoficial package readme banner

Motivation

I've created this package to ease working with spaces. Be more expressive then aws-sdk. And to solve "quirks" aws-sdk have (like uploading with mime-types, delete whole folder...)

Install

npm i do-spaces

Usage

// commonJS
const Spaces = require('do-spaces').default;
// ES6 modules
import Spaces from 'do-spaces';

const spaces = new Spaces({
  // under settings of bucket in digital ocean (e.g. nyc3.digitaloceanspaces.com)
  endpoint: `<endpoint>`,
  // in GLOBAL settings of digital ocean
  accessKey: `<access_key>`,
  // in GLOBAL settings of digital ocean
  secret: `<secret>`,
  // `https://<name_of_the_bucket>.<urlOfDigitalOcean>` (e.g. hello-world.nyc3.digitaloceanspaces.com so bucket is: hello-world );
  bucket: `<name_of_the_bucket>`,
});

Methods

  • every method takes optional awsParams to enhance/replace it's default configuration for underlying method. Configuration docs can be found here
  • path - string, path folder like (ending with /)
  • pathname -- string, full path to file (e.g /test/image.png)
  • all methods returns Promise
const spaces = new Spaces({
    endpoint: `<endpoint>`, // under settings of bucket in digital ocean
    accessKey: `<access_key>`, // in GLOBAL settings of digital ocean
    secret: `<secret>`, // in GLOBAL settings of digital ocean
    bucket: `<name_of_the_bucket>`,
});

// ....

// `s3.putObject`
await spaces.createFolder({
    path: `/some/test/path/`,
    awsParams // optional - `s3.putObject`
});

// ....

// recursively removes all files in specified folder
await spaces.deleteFolder({
  path: `/some/test/path/`,
  awsListParams, //optional - used to list items before deleting - `s3.listObjects`
  awsDeleteParams, // optional - used to delete `s3.deleteObjects`
});

// folders are automatically created, no need to create folders beforehand
// automatically determines mime-type
await spaces.uploadFile({
    pathname: `/some/test/path/myfile.txt`,
    privacy: "public-read", // 'private' | 'public-read' (DO supports only those)
    file,// Blob, string...
    awsParams  // optional - `s3.putObject`
});

await spaces.downloadFile({
    pathname: "/some/test/path/myfile.txt", // or link https://<bucket>.<endpoint>/path/to/file
    awsParams // optional -  `s3.getObject`
});

// if there are more then 1000 files you will receive in response `nextMarker`,
// to continue with listing
await spaces.listFiles({
    maxFiles = 1000, // optional - default is 1000 (max allowed in DO/AWS)
    path: `/some/test/path/` ,
    nextMarker, // optional - from which path it should start listing (supplied)
    awsParams, // optional - `s3.getObjects`
});

await spaces.copyFile({
    pathname: "/test/newFile.txt",
    copiedPathname: "/test/copied.txt",
    privacy: "public-read", // 'private' | 'public-read'
    fromBucket, // optional - different bucket name if copied from elsewhere
    awsParams, // optional -`s3.copyObject`
});

await spaces.deleteFile({
    pathname: "/test/remove_me.txt",
    awsParams // optional `s3.deleteObject`
});

Keywords

FAQs

Last updated on 12 Sep 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc