diff --git a/README.md b/README.md new file mode 100644 index 0000000..ff6fd42 --- /dev/null +++ b/README.md @@ -0,0 +1,105 @@ +ARC By SourceFuse logo + +# [loopback4-s3](https://github.com/sourcefuse/loopback4-s3) + +

+ +npm version + + +Sonar Quality Gate + + +Synk Status + + +GitHub contributors + + +downloads + + +License + + +Powered By LoopBack 4 + +

+ +## Overview + +A simple loopback-next extension for AWS S3 integration in loopback applications. + +## Install + +```sh +npm install loopback4-s3 +``` + +## Usage + +In order to use this component into your LoopBack application, please follow below steps. + +- Add component to application and provide access keys and other s3 initialization configuration details via AWSS3Bindings.Config binding as mentioned below. You can add any of the options mentioned [here](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Config.html#constructor-property). + +```ts +this.bind(AWSS3Bindings.Config).to({ + accessKeyId: process.env.AWS_ACCESS_KEY_ID, + secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY, + region: process.env.AWS_REGION, +} as AwsS3Config); +this.component(AwsS3Component); +``` + +- After this, you can just inject the S3 provider across application. + +```ts +import {S3WithSigner} from 'loopback4-s3'; + +@inject(AWSS3Bindings.AwsS3Provider) s3: S3WithSigner, +``` + +## Migration to a version after 4.0.0 + +`loopback4-s3@4.0.0` is the last version that would be using aws-sdk v2, after that all the versions are going to be based on [`aws-sdk v3`](https://github.com/aws/aws-sdk-js-v3). + +You should remove any previous installation of `aws-sdk` from your projects if you have it installed just for `loopback4-s3`. + +The client from v3 sdk no longer require the `.promise()` method to return a promise - + +``` +const data = await v2client.command(params).promise() // in v2 + +const data = await v3client.command(params) // v3 +``` + +The client provided by the `loopback4-s3` package extends `S3` class and not `S3Client`, so you do not need to create commands to use this module. + +You can read [this](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/migrating-to-v3.html) guide to know more about migrating your code to `aws-sdk-js-v3`. + +The `getPresignedUrl` method is also missing in `aws-sdk/client-s3` client, so it is provided in the extended client returned by the provider. The documentation for this new `getPresignedUrl` are provided [here](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_s3_request_presigner.html) + +You might also have to install `cmake 3.1+` on your machine if [`aws-crt`](https://www.npmjs.com/package/aws-crt) is not available as a prebuild package for your system. + +## Feedback + +If you've noticed a bug or have a question or have a feature request, [search the issue tracker](https://github.com/sourcefuse/loopback4-s3/issues) to see if someone else in the community has already created a ticket. +If not, go ahead and [make one](https://github.com/sourcefuse/loopback4-s3/issues/new/choose)! +All feature requests are welcome. Implementation time may vary. Feel free to contribute the same, if you can. +If you think this extension is useful, please [star](https://help.github.com/en/articles/about-stars) it. Appreciation really helps in keeping this project alive. + +## Contributing + +Please read [CONTRIBUTING.md](https://github.com/sourcefuse/loopback4-s3/blob/master/.github/CONTRIBUTING.md) for details on the process for submitting pull requests to us. + +## Developing + +For development guidelines, refer [here](https://github.com/sourcefuse/rakuten-pms-api/tree/master/DEVELOPING.md) + +## Code of conduct + +Code of conduct guidelines [here](https://github.com/sourcefuse/loopback4-s3/blob/master/.github/CODE_OF_CONDUCT.md). + +## License + +[MIT](https://github.com/sourcefuse/loopback4-s3/blob/master/LICENSE)