Security News
tea.xyz Spam Plagues npm and RubyGems Package Registries
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
@file-storage/core
Advanced tools
Readme
____|_) | ___| |
| | | _ \\___ \ __| _ \ __| _` | _` | _ \
__| | | __/ | | ( | | ( | ( | __/
_| _|_|\___|_____/ \__|\___/ _| \__,_|\__, |\___|
A file system abstraction for Node.js |___/
A simple abstraction to interact with file system inspired by Laravel File System, provide one interface for many kind of drivers: local
, ftp
, sftp
, Amazon S3
, and Google Cloud Storage
, even your custom driver.
$ yarn add @file-storage/core @file-storage/common
# Or npm
$ npm install @file-storage/core @file-storage/common
And upload a file to local, it will be stored in storage
folder in your root project directory by default:
import Storage from '@file-storage/core';
// Upload from file path.
Storage.put('/my-image.png', '/path/of/destination/my-image.png');
// Or from a read-stream/buffer:
Storage.put(stream, '/path/of/destination/my-image.png');
By default only local driver is supported. To use another driver, you need to install corresponding package:
yarn add @file-storage/s3
yarn add @file-storage/ftp
yarn add @file-storage/sftp
yarn add @file-storage/gcs
If there is no configuration, it will uploads to local disk. You can specific yours by using config
method:
import Storage from '@file-storage/core';
import S3Driver, { S3DiskConfig } from '@file-storage/s3';
import LocalDriver, { LocalDiskConfig } from '@file-storage/local';
const localDisk: LocalDiskConfig = {
driver: LocalDriver,
name: 'local',
root: 'public',
};
const s3Disk: S3DiskConfig = {
driver: S3Driver,
name: 'mys3',
bucketName: 'mybucket',
// Uncomment if you want specify credentials manually.
// region: 'ap-southeast-1',
// credentials: {
// accessKeyId: '123abc',
// secretAccessKey: '123abc',
// },
};
Storage.config({
// Default disk that you can access directly via Storage facade.
defaultDiskName: 'mys3',
diskConfigs: [localDisk, s3Disk],
});
// Somewhere in your code...
// Get file from s3:
Storage.get('/path/to/s3-bucket/my-image.png');
Enable unique file name to prevent a file get replaced when uploading same file (or same name).
The unique name generated by uuid
to secure your file path.
Storage.config({
...
uniqueFileName: true,
});
// The uploaded path could be like this: /path/to/e8a3e633-fc7f-4dde-b7f0-d2686bcd6836.jpeg
To interact with a specific disk instead of the default, use disk
method:
Storage.disk('local').get('/path/to/local/my-image.png');
// To adjust the configuration on the fly, you can specify the settings in the second argument:
Storage.disk('local', { uniqueFileName: false }).put(...);
If built-in drivers doesn't match your need, just defines a custom driver by extends Driver
abstract class:
import Storage from '@file-storage/core';
import { Driver, DiskConfig } from '@file-storage/common';
interface MyCustomDiskConfig extends DiskConfig {
driver: typeof MyCustomDriver;
...
}
class MyCustomDriver extends Driver {
constructor(config: MyCustomDiskConfig) {
super(config);
...
}
// Implement all Driver's methods here.
}
And provide it to Storage.diskConfigs:
Storage.config<MyCustomDiskConfig>({
diskConfigs: [
{
driver: MyCustomDriver,
name: 'myCustomDisk',
...
}
],
});
To upload image and also creates many diferent sizes for web resonsive, install this package, it is acting as a plugin, will generates those images automatically. Images will be generated if the size reach given breakpoints. We provide 3 breakpoints by default: large: 1000, medium: 750, small: 500. And the thumbnail is also generaged by default.
$ yarn add @file-storage/image-manipulation
And provide it to Storage config:
import ImageManipulation from '@file-storage/image-manipulation';
Storage.config({
...
plugins: [ImageManipulation],
});
You can customize responsive formats and thumbnail size:
import ImageManipulation from '@file-storage/image-manipulation';
ImageManipulation.config({
breakpoints: {
size1: 500,
size2: 800,
},
thumbnailResizeOptions: {
width: 333,
height: 222,
fit: 'contain',
},
});
customDrivers
option: provides disk defination is enough.customDrivers
option, pass custom driver class directly to diskConfigs.driver
.aws-sdk
to v3.request
module with another module as it was deprecated.MIT
FAQs
> TODO: description
The npm package @file-storage/core receives a total of 258 weekly downloads. As such, @file-storage/core popularity was classified as not popular.
We found that @file-storage/core demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Security News
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
Security News
As cyber threats become more autonomous, AI-powered defenses are crucial for businesses to stay ahead of attackers who can exploit software vulnerabilities at scale.
Security News
UnitedHealth Group disclosed that the ransomware attack on Change Healthcare compromised protected health information for millions in the U.S., with estimated costs to the company expected to reach $1 billion.