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

@broadstone/google-cloud-file-service

v2.2.0

Published

This package allows the creation of signed urls to enable uploads, to move files, and to generate download urls for services

Downloads

39

Readme

Package's purpose

This is to prevent lightweight services from having to intake file data in order to store the files, instead we offload this work to google and we simply reference the files stored by an App or third party service.

This package providers benefits such as;

  • Improved upload time (uploading directly to google cloud storage)
  • Minimised dev time requiring just configuration, setup and use of the code where appropriate.
  • Separates the concern of uploading and managing files away from lightweight services

Use cases

  1. Uploading a file to be saved in a Database using item.name as a reference
  2. Uploading a file to be processed by a consuming service

Creating a Signed Temporary Upload

  • Bucket Name = Google Storage Bucket Name
  • Project ID = Google Project ID
  • Storage Credentials = Google Service Account JSON credentials
// First Argument Bucket Name
// Second Argument Project ID
// Third Argument Storage Credentials - File name in current working directory
const uploadService = new GoogleCloudFileService('bucket-name', 'project-id', 'storage-credentials.json');

// First Argument - Content Type
// Second argument Expiry time in microseconds
uploadService.createSignedUpload('image/jpeg', Date.now() + 1000000).then((signedUpload : SignedUpload) => {
    // This returns a SignedUpload object containing;
    return {
        signedUpload.fileName, // the fileName to use as reference when storing the temporary file permanently
        signedUpload.contentType // the file content type used to generate this link
        signedUpload.expiryTime, // the expiry time used to generate this link
        signedUpload.writeUrl, // the write url for uploading the file via a PUT HTTP request
        signedUpload.readUrl // the read url for when a file has been uploaded GET HTTP request
    }
});

Storing an uploaded temporary file

// First argument (fileName generated when using createSignedUpload)
// Second argument (destination folder)
uploadService.storeTemporaryFile(item.fileName, 'proof').then((file: storage.File) => {
    // Save item.name to DB as an example
});

Making files public or private

By default files are made private unless specifically set to public, you would achieve this by;

// storage.File object from storeTemporaryFile above or getFile method
file.makePublic();

Further Reading

  • https://googleapis.dev/nodejs/storage/latest/global.html