New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

tspace-nfs

Package Overview
Dependencies
Maintainers
0
Versions
34
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tspace-nfs

tspace-nfs is a Network File System (NFS) and provides both server and client capabilities for accessing files over a network.

  • 1.1.9
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
34
decreased by-56.96%
Maintainers
0
Weekly downloads
 
Created
Source

tspace-nfs

NPM version NPM downloads

tspace-nfs is a NFS stands for Network File System and provides both server and client capabilities for accessing files over a network.

Install

Install with npm:

npm install tspace-nfs --save

Basic Usage

Server

import { NfsServer } from "tspace-nfs";

new NfsServer()
// localhost:8000/studio
.useStudio({
    onCredentials : async ({ username , password }) => {

      // The simple example, you can use any database or another to a wrapper check the credentials for studio.
      const credentials = [
          {
              buckets : ['*'],
              username: 'root',
              password: '',
          }
      ]
  
      const find = credentials.find(v => v.username === username && v.password === password )
  
      const result = {
          logged : find == null ? false : true, // if true can login
          buckets : find == null ? [] : find?.buckets
      }
  
      return result
    },
    onBucketCreated : async ({ token , secret , bucket }) => {

      // The simple example, you can use any database or another to store data.
      console.log({
          token , secret , bucket
      })
    
      return
    },
     onLoadBucketCredentials  : async () => {

    // The simple example, you can use any database or another to get the credentials.
      const credentials = [
          {
              token : 't', 
              secret : 's', 
              bucket : 'b'
          },
          {
              token : 't1', 
              secret : 's1', 
              bucket : 'b1'
          },
          {
              token : 't2', 
              secret : 's2', 
              bucket : 'b2'
          }
      ]

      return credentials 
    }
})
.onLoadBucketLists(async () => {
    // The simple example, you can use any database or another to inform the server about the available bucket lists.
    return await new Promise(r => setTimeout(() => r(['b1','b2']), 200));
})
.onCredentials(async ({ token , secret , bucket }) => {

  // The simple example, you can use any database or another to a wrapper check the credentials.
  const lists = [
    {
      token: 'token-dev',
      secret: 'secret-dev',
      bucket : 'dev'
    }
  ]
  return lists.every(list => list.bucket === bucket && list.secret === secret && list.token === token)
})
.progress() // view the progress of the file upload.
.defaultPage(`<b> hello nfs-server! </b>`)
.directory('upload') // by default nfs
.credentials({
  expired : 60 * 60 * 24, // 24 hours by default 1 hour
  secret  : 'credential-secret'
}) // the credentials will auto refresh every expired
.fileExpired(60 * 15) // 15 minutes by default 1 hour
.listen(8000 , ({ port }) => console.log(`Server is running on port http://localhost:${port}`))

Client

import { NfsClient } from "tspace-nfs";

const nfs = new NfsClient({
  token     : '<YOUR TOKEN>',   // token
  secret    : '<YOUR SECRET>',  // secret
  bucket    : '<YOUR BUCKET>',  // bucket name
  url       : '<YOUR URL>'      // https://nfs-server.example.com
})
.default('_default/uploads') // default folder prefix every the path
.onError((err, nfs) => {
  console.log('nfs client failed to connect')
  console.log(err.message)
  nfs.quit()
})
.onConnect((nfs) => {
  console.log('nfs client connected')
})

// example
(async () => {

  const fileDirectory = 'my-folder/my-cat.png'

  const url = await nfs.toURL(fileDirectory , { 
    download : false,   // default download true 
    expired  : 60 * 60  // seconds default expired 1 hour
    exists   : true     // default exists false for check if the file exists
  }) 
  
  const base64 = await nfs.toBase64(fileDirectory)

  const stream = await nfs.toStream(fileDirectory)

  const file = req.files.file[0] // assume the file from your upload

  const { path , size , name , url } =  await nfs.save({ // can you use nfs.upload too
    file : file.tempFilePath,
    name : 'my-video.mp4',
    folder : 'my-folder'
  })

  await nfs.saveAs({ // can you use nfs.uploadBase64 too
    base64 :  Buffer.from(file.tempFilePath).toString('base64'),
    name   : 'my-video.mp4',
    extension : 'mp4',
    folder : 'my-folder'
  })

  const deleted = await nfs.delete(fileDirectory)

  const folders = await nfs.folders()

  const storage = await nfs.storage()

})()

Keywords

FAQs

Package last updated on 04 Nov 2024

Did you know?

Socket

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc