@enspirit/seshat v2.8.3
Seshat

:warning: This is a complete rewrite of Seshat. If you're looking for the v1, please head to the v1 branch :warning:
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:
- serving files from a local storage
- serving files from an S3 bucket
- use middlewares to ensure requests come from valid users
- use policies to make a bucket read-only
- rename objects as they are uploaded
- compress objects as they are uploaded
- create thumbnails from uploaded images
- create thumbnails on-the-fly when recovering files
- scan files for viruses using clamav
- encrypt files using SSE-C
- execute actions such as creating empty prefixes and extract objects as zip files
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-databut never returned anything else than a204status code with aLocationheader with the first object's public url. v2 returns an actual JSON payload with an array of object metadata.
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
5 years ago
5 years ago
5 years ago