@enspirit/seshat
TypeScript icon, indicating that this package has built-in type declarations

2.8.3 • Public • Published

Seshat

SeshatLogo

⚠️ This is a complete rewrite of Seshat. If you're looking for the v1, please head to the v1 branch ⚠️

See the Breaking Changes section for incompatibilities between v1 & v2.


Seshat provides a way to interact with storage (be it local, gcs, s3, ...) using HTTP while providing ways to implement things such as:

  • access-control (not everyone can do the same things on objects)
  • avoid file collision (many people want to upload files with the same name, they shouldn't override each other)
  • transform files upon upload (compressing, image cropping, ...)
  • async vs sync file processing upon uploads
  • ...

How?

Seshat provides a series of middlewares and routers that can be used in any express app in order to serve/accept files.

Vocabulary

Most of the vocabulary used in seshat reuses concept shared by many cloud storage solution such as S3 and GCS such as Bucket and Object.

A Bucket is a storage place where Objects can be written. In Seshat, a Bucket can be backed by a local storage (your disk) an S3 Bucket, a GCS Bucket or even a certain prefix on an S3/GCS bucket.

Policies provides us with an easy way to implement things like access control, ready-only buckets or buckets that only accept a certain kind of objects.

Transformers allow us to transform objects as they are being uploaded or retrieved from a bucket. (eg. resize an image, compress files, ...)

Examples

Please have a look at the examples/ folder, you'll find simple examples showcasing:

Breaking Changes

http protocol

Seshat v2's HTTP layer has some breaking changes compared to v1:

POST

  • v1 supported multiple file uploads via multipart/form-data but never returned anything else than a 204 status code with a Location header with the first object's public url. v2 returns an actual JSON payload with an array of object metadata.

Readme

Keywords

none

Package Sidebar

Install

npm i @enspirit/seshat

Weekly Downloads

6

Version

2.8.3

License

MIT

Unpacked Size

145 kB

Total Files

112

Last publish

Collaborators

  • llambeau
  • ygu
  • blambeau
  • david.parloir