npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

pasubot-storage-js

v1.0.0

Published

Isomorphic storage client for Pasubot.

Downloads

55

Readme

storage-js

JS Client library to interact with Pasubot Storage.

Quick Start Guide

Installing the module

npm install pasubot-storage-js

Connecting to the storage backend

import { StorageClient } from 'pasubot-storage-js'

const STORAGE_URL = 'https://<project_ref>.pasubot.co/storage/v1'
const SERVICE_KEY = '<service_role>' //! service key, not anon key

const storageClient = new StorageClient(STORAGE_URL, {
  apikey: SERVICE_KEY,
  Authorization: `Bearer ${SERVICE_KEY}`,
})

Handling resources

Handling Storage Buckets

  • Create a new Storage bucket:

    const { data, error } = await storageClient.createBucket(
      'test_bucket', // Bucket name (must be unique)
      { public: false } // Bucket options
    )
  • Retrieve the details of an existing Storage bucket:

    const { data, error } = await storageClient.getBucket('test_bucket')
  • Update a new Storage bucket:

    const { data, error } = await storageClient.updateBucket(
      'test_bucket', // Bucket name
      { public: false } // Bucket options
    )
  • Remove all objects inside a single bucket:

    const { data, error } = await storageClient.emptyBucket('test_bucket')
  • Delete an existing bucket (a bucket can't be deleted with existing objects inside it):

    const { data, error } = await storageClient.deleteBucket('test_bucket')
  • Retrieve the details of all Storage buckets within an existing project:

    const { data, error } = await storageClient.listBuckets()

Handling Files

  • Upload a file to an existing bucket:

    const fileBody = ... // load your file here
    
    const { data, error } = await storageClient.from('bucket').upload('path/to/file', fileBody)

    Note:
    The path in data.Key is prefixed by the bucket ID and is not the value which should be passed to the download method in order to fetch the file.
    To fetch the file via the download method, use data.path and data.bucketId as follows:

    const { data, error } = await storageClient.from('bucket').upload('/folder/file.txt', fileBody)
    // check for errors
    const { data2, error2 } = await storageClient.from(data.bucketId).download(data.path)

    Note: The upload method also accepts a map of optional parameters.

  • Download a file from an exisiting bucket:

    const { data, error } = await storageClient.from('bucket').download('path/to/file')
  • List all the files within a bucket:

    const { data, error } = await storageClient.from('bucket').list('folder')

    Note: The list method also accepts a map of optional parameters.

  • Replace an existing file at the specified path with a new one:

    const fileBody = ... // load your file here
    
    const { data, error } = await storageClient
      .from('bucket')
      .update('path/to/file', fileBody)

    Note: The upload method also accepts a map of optional parameters.

  • Move an existing file:

    const { data, error } = await storageClient
      .from('bucket')
      .move('old/path/to/file', 'new/path/to/file')
  • Delete files within the same bucket:

    const { data, error } = await storageClient.from('bucket').remove(['path/to/file'])
  • Create signed URL to download file without requiring permissions:

    const expireIn = 60
    
    const { data, error } = await storageClient
      .from('bucket')
      .createSignedUrl('path/to/file', expireIn)
  • Retrieve URLs for assets in public buckets:

    const { data, error } = await storageClient.from('public-bucket').getPublicUrl('path/to/file')

Sponsors

We are building the features of Firebase using enterprise-grade, open source products. We support existing communities wherever possible, and if the products don’t exist we build them and open source them ourselves. Thanks to these sponsors who are making the OSS ecosystem better for everyone.