@dataclouder/nest-storage 0.0.8 → 0.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -0
- package/controllers/storage.controller.d.ts +9 -3
- package/controllers/storage.controller.js +107 -19
- package/controllers/storage.controller.js.map +1 -1
- package/docs/frontend-integration.md +98 -0
- package/docs/index.md +45 -0
- package/docs/storage-diagram.excalidraw +856 -0
- package/docs/storage-providers.md +80 -0
- package/docs/universal-storage.md +48 -0
- package/docs/usage.md +145 -0
- package/index.d.ts +1 -1
- package/index.js +0 -1
- package/index.js.map +1 -1
- package/models/cloud.model.d.ts +10 -1
- package/nest-storage.module.js +4 -2
- package/nest-storage.module.js.map +1 -1
- package/package.json +6 -2
- package/services/cloud-storage.service.d.ts +1 -11
- package/services/cloud-storage.service.js.map +1 -1
- package/services/cloudflare-r2.service.d.ts +1 -2
- package/services/cloudflare-r2.service.js +1 -1
- package/services/cloudflare-r2.service.js.map +1 -1
- package/services/local-storage.service.d.ts +27 -0
- package/services/local-storage.service.js +201 -0
- package/services/local-storage.service.js.map +1 -0
- package/services/storage.factory.d.ts +3 -1
- package/services/storage.factory.js +9 -2
- package/services/storage.factory.js.map +1 -1
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Storage Provider Configuration
|
|
2
|
+
|
|
3
|
+
This document explains how to configure the storage provider for the application. The system is designed to be flexible, allowing you to switch between different storage services by changing an environment variable.
|
|
4
|
+
|
|
5
|
+
## Supported Providers
|
|
6
|
+
|
|
7
|
+
- `GOOGLE`: Uses Google Cloud Storage.
|
|
8
|
+
- `CLOUDFLARE`: Uses Cloudflare R2.
|
|
9
|
+
- `LOCAL`: Uses the server's local file system.
|
|
10
|
+
|
|
11
|
+
## Configuration
|
|
12
|
+
|
|
13
|
+
To select a storage provider, set the `STORAGE_PROVIDER` environment variable in your `.env` file.
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
STORAGE_PROVIDER=GOOGLE
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
or
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
STORAGE_PROVIDER=CLOUDFLARE
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
If `STORAGE_PROVIDER` is not set, the system will default to `GOOGLE`.
|
|
26
|
+
|
|
27
|
+
### Google Cloud Storage
|
|
28
|
+
|
|
29
|
+
No additional environment variables are required if you have the Google Cloud SDK configured on your machine. The service uses Application Default Credentials.
|
|
30
|
+
|
|
31
|
+
### Cloudflare R2
|
|
32
|
+
|
|
33
|
+
To use Cloudflare R2, you must provide the following environment variables:
|
|
34
|
+
|
|
35
|
+
- `CLOUDFLARE_ACCOUNT_ID`: Your Cloudflare account ID.
|
|
36
|
+
- `CLOUDFLARE_R2_ACCESS_KEY_ID`: Your R2 access key ID.
|
|
37
|
+
- `CLOUDFLARE_R2_SECRET_ACCESS_KEY`: Your R2 secret access key.
|
|
38
|
+
- `STORAGE_BUCKET`: The name of your R2 bucket.
|
|
39
|
+
- `R2_PUBLIC_DOMAIN`: The public domain for your R2 bucket, if you have one configured.
|
|
40
|
+
|
|
41
|
+
Example:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
CLOUDFLARE_ACCOUNT_ID=...
|
|
45
|
+
CLOUDFLARE_R2_ACCESS_KEY_ID=...
|
|
46
|
+
CLOUDFLARE_R2_SECRET_ACCESS_KEY=...
|
|
47
|
+
STORAGE_BUCKET=my-r2-bucket
|
|
48
|
+
R2_PUBLIC_DOMAIN=https://my-public-bucket.example.com
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Local Storage
|
|
52
|
+
|
|
53
|
+
To use local storage, set the following environment variables:
|
|
54
|
+
|
|
55
|
+
- `LOCAL_STORAGE_PATH`: The absolute or relative path to the storage directory (defaults to `./uploads`).
|
|
56
|
+
- `LOCAL_STORAGE_BASE_URL`: The base URL used to construct public links (e.g., `http://localhost:3000/storage/files`).
|
|
57
|
+
|
|
58
|
+
Example:
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
LOCAL_STORAGE_PATH=./uploads
|
|
62
|
+
LOCAL_STORAGE_BASE_URL=http://localhost:3000/storage/files
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## How to Use
|
|
66
|
+
|
|
67
|
+
In your services, you can inject the storage service using the `IStorageService` token:
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
import { Inject, Injectable } from '@nestjs/common';
|
|
71
|
+
import { IStorageService } from '@polilan/nest-storage';
|
|
72
|
+
|
|
73
|
+
@Injectable()
|
|
74
|
+
export class MyService {
|
|
75
|
+
constructor(@Inject('IStorageService') private readonly storageService: IStorageService) {}
|
|
76
|
+
|
|
77
|
+
async uploadMyFile(file: Buffer) {
|
|
78
|
+
return this.storageService.uploadFile('my-bucket', 'my-file.txt', file);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Universal Storage Integration
|
|
2
|
+
|
|
3
|
+
The `@polilan/nest-storage` library has been updated to support a "Universal" storage flow, allowing the backend to act as a proxy for file uploads. This is particularly useful for supporting local storage or when you want to centralize storage logic in the backend.
|
|
4
|
+
|
|
5
|
+
## Architecture
|
|
6
|
+
|
|
7
|
+
The system uses a `StorageFactory` to return the appropriate `IStorageService` implementation based on the `STORAGE_PROVIDER` environment variable or a per-request override.
|
|
8
|
+
|
|
9
|
+
### Supported Providers
|
|
10
|
+
- `GOOGLE`: Google Cloud Storage
|
|
11
|
+
- `CLOUDFLARE`: Cloudflare R2
|
|
12
|
+
- `LOCAL`: Local File System (New)
|
|
13
|
+
|
|
14
|
+
## API Endpoints
|
|
15
|
+
|
|
16
|
+
The library now includes a `StorageController` that provides the following endpoints:
|
|
17
|
+
|
|
18
|
+
### 1. Upload File
|
|
19
|
+
`POST /storage/upload`
|
|
20
|
+
|
|
21
|
+
**Body (Multipart Form Data):**
|
|
22
|
+
- `file`: The file to upload.
|
|
23
|
+
- `path` (optional): The target storage path (e.g., `avatars/user-1`).
|
|
24
|
+
- `provider` (optional): Override the default provider (e.g., `LOCAL`).
|
|
25
|
+
|
|
26
|
+
**Behavior:**
|
|
27
|
+
- If the file is an image, it is automatically converted to **WebP** format using Sharp.
|
|
28
|
+
- Returns a `CloudFileStorage` object containing the file URL and metadata.
|
|
29
|
+
|
|
30
|
+
### 2. Serve Local Files
|
|
31
|
+
`GET /storage/files/:filename(*)`
|
|
32
|
+
|
|
33
|
+
**Behavior:**
|
|
34
|
+
- Serves files stored locally in the `LOCAL_STORAGE_PATH` directory.
|
|
35
|
+
- This endpoint is used when `STORAGE_PROVIDER=LOCAL` is active.
|
|
36
|
+
|
|
37
|
+
## Local Storage Configuration
|
|
38
|
+
|
|
39
|
+
To use local storage, add the following to your `.env`:
|
|
40
|
+
|
|
41
|
+
```env
|
|
42
|
+
STORAGE_PROVIDER=LOCAL
|
|
43
|
+
LOCAL_STORAGE_PATH=./uploads
|
|
44
|
+
LOCAL_STORAGE_BASE_URL=http://localhost:3000/storage/files
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
- `LOCAL_STORAGE_PATH`: The directory where files will be saved on the server.
|
|
48
|
+
- `LOCAL_STORAGE_BASE_URL`: The URL used to access these files from the frontend (should point to the `/storage/files` endpoint).
|
package/docs/usage.md
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Usage Guide
|
|
2
|
+
|
|
3
|
+
This guide explains how to use the `@polilan/nest-storage` library to manage files in your application.
|
|
4
|
+
|
|
5
|
+
## Getting Started
|
|
6
|
+
|
|
7
|
+
To use the storage service, you first need to configure the provider as described in the [Storage Providers](./storage-providers.md) documentation.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
Then, you can inject the `IStorageService` into your controllers or services:
|
|
11
|
+
|
|
12
|
+
```typescript
|
|
13
|
+
import { Inject, Injectable } from '@nestjs/common';
|
|
14
|
+
import { IStorageService } from '@polilan/nest-storage';
|
|
15
|
+
|
|
16
|
+
@Injectable()
|
|
17
|
+
export class MyService {
|
|
18
|
+
constructor(
|
|
19
|
+
@Inject('IStorageService') private readonly storageService: IStorageService
|
|
20
|
+
) {}
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Saving Files to Storage
|
|
25
|
+
|
|
26
|
+
The library provides several methods to save files, depending on your needs.
|
|
27
|
+
|
|
28
|
+
### 1. General File Upload
|
|
29
|
+
|
|
30
|
+
Use `uploadFile` for standard file uploads. This method requires an `auditable` object for tracking.
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
const fileBuffer = Buffer.from('Hello World');
|
|
34
|
+
const fileName = 'documents/hello.txt';
|
|
35
|
+
const auditable = { createdBy: 'user-id', updatedBy: 'user-id' };
|
|
36
|
+
|
|
37
|
+
const result = await this.storageService.uploadFile(
|
|
38
|
+
fileName,
|
|
39
|
+
fileBuffer,
|
|
40
|
+
auditable,
|
|
41
|
+
'text/plain'
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
console.log('File URL:', result.url);
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 2. Public File Upload
|
|
48
|
+
|
|
49
|
+
Use `uploadPublicFile` when you want to upload a file and ensure it's publicly accessible.
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
const result = await this.storageService.uploadPublicFile({
|
|
53
|
+
fileName: 'public/avatar.png',
|
|
54
|
+
fileBuffer: imageBuffer,
|
|
55
|
+
contentType: 'image/png',
|
|
56
|
+
metadata: { userId: '123' }
|
|
57
|
+
});
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 3. WebP Image Upload
|
|
61
|
+
|
|
62
|
+
Use `uploadWebpImage` to automatically convert an image to WebP and resize it before uploading. This is recommended for web assets.
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
const result = await this.storageService.uploadWebpImage({
|
|
66
|
+
fileName: 'gallery/photo.jpg',
|
|
67
|
+
imageBuffer: largeImageBuffer,
|
|
68
|
+
resizeWidth: 800, // Optional, defaults to 900
|
|
69
|
+
});
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Deleting From Storage
|
|
73
|
+
|
|
74
|
+
### 1. Delete a Single File
|
|
75
|
+
|
|
76
|
+
Use `deleteStorageFile` by providing the bucket and the path (file name).
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
await this.storageService.deleteStorageFile('my-bucket', 'documents/hello.txt');
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 2. Delete All Files in an Object
|
|
83
|
+
|
|
84
|
+
If you have a complex object that contains paths to several files, you can remove them all at once.
|
|
85
|
+
|
|
86
|
+
```typescript
|
|
87
|
+
const myEntity = {
|
|
88
|
+
name: 'Project Alpha',
|
|
89
|
+
files: [
|
|
90
|
+
{ path: 'file1.pdf', bucket: 'my-bucket' },
|
|
91
|
+
{ path: 'file2.jpg', bucket: 'my-bucket' }
|
|
92
|
+
]
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
await this.storageService.removeAllStorageFilesPresentInObject(myEntity);
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 3. Delete by URL
|
|
99
|
+
|
|
100
|
+
If you only have the public URLs of the files, use `removeAllStorageFilesByUrl`.
|
|
101
|
+
|
|
102
|
+
```typescript
|
|
103
|
+
const urls = [
|
|
104
|
+
'https://storage.googleapis.com/my-bucket/file1.pdf',
|
|
105
|
+
'https://storage.googleapis.com/my-bucket/file2.jpg'
|
|
106
|
+
];
|
|
107
|
+
|
|
108
|
+
await this.storageService.removeAllStorageFilesByUrl({ urls });
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## HTTP API Endpoints
|
|
112
|
+
|
|
113
|
+
The library includes a `StorageController` that exposes endpoints for file management via HTTP.
|
|
114
|
+
|
|
115
|
+
### 1. Upload a Single File
|
|
116
|
+
|
|
117
|
+
- **Endpoint**: `POST /storage/upload`
|
|
118
|
+
- **Body**: `multipart/form-data` with a `file` field.
|
|
119
|
+
- **Query Params**: `path`, `provider`, `keepOriginalName`.
|
|
120
|
+
|
|
121
|
+
**Example (cURL):**
|
|
122
|
+
```bash
|
|
123
|
+
curl -X POST "http://localhost:8091/storage/upload?path=my-folder&keepOriginalName=true" \
|
|
124
|
+
-F "file=@/path/to/your/image.png"
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### 2. Upload Multiple Files
|
|
128
|
+
|
|
129
|
+
- **Endpoint**: `POST /storage/upload-multiple`
|
|
130
|
+
- **Body**: `multipart/form-data` with multiple `file` fields (or multiple fields named `file`).
|
|
131
|
+
- **Query Params**: `path`, `provider`, `keepOriginalName`.
|
|
132
|
+
|
|
133
|
+
**Example (cURL):**
|
|
134
|
+
```bash
|
|
135
|
+
curl -X POST "http://localhost:8091/storage/upload-multiple?path=batch-upload" \
|
|
136
|
+
-F "file=@image1.png" \
|
|
137
|
+
-F "file=@image2.png"
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Other Utility Methods
|
|
141
|
+
|
|
142
|
+
- **`getFile(bucket, path)`**: Downloads a file and returns it as a Buffer.
|
|
143
|
+
- **`fileExists(bucket, path)`**: Checks if a file exists.
|
|
144
|
+
- **`generateSignedUrl(bucket, path, expires)`**: Generates a temporary URL for private files.
|
|
145
|
+
- **`listFiles(bucket, prefix)`**: Lists files in a bucket, optionally filtered by prefix.
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from './nest-storage.module';
|
|
2
|
-
export * from './models/cloud.model';
|
|
2
|
+
export type * from './models/cloud.model';
|
|
3
3
|
export * from './services/cloud-storage.service';
|
|
4
4
|
export * from './services/minio-storage.service';
|
|
5
5
|
export * from './services/cloudflare-r2.service';
|
package/index.js
CHANGED
|
@@ -15,7 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./nest-storage.module"), exports);
|
|
18
|
-
__exportStar(require("./models/cloud.model"), exports);
|
|
19
18
|
__exportStar(require("./services/cloud-storage.service"), exports);
|
|
20
19
|
__exportStar(require("./services/minio-storage.service"), exports);
|
|
21
20
|
__exportStar(require("./services/cloudflare-r2.service"), exports);
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/nest-storage/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/nest-storage/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AAItC,mEAAiD;AACjD,mEAAiD;AACjD,mEAAiD;AACjD,6DAA2C"}
|
package/models/cloud.model.d.ts
CHANGED
|
@@ -30,7 +30,16 @@ export interface ImgGeneratedStorageData extends ImgStorageData {
|
|
|
30
30
|
export interface CloudFileStorage extends FileStorageData, CloudStorage {
|
|
31
31
|
auditable: IAuditable;
|
|
32
32
|
}
|
|
33
|
-
|
|
33
|
+
export interface UploadWebpImageOptions {
|
|
34
|
+
bucketName?: string;
|
|
35
|
+
fileName: string;
|
|
36
|
+
imageBuffer: Buffer;
|
|
37
|
+
resizeWidth?: number;
|
|
38
|
+
contentType?: string;
|
|
39
|
+
metadata?: {
|
|
40
|
+
[key: string]: any;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
34
43
|
export interface UploadPublicFileOptions {
|
|
35
44
|
bucketName?: string;
|
|
36
45
|
fileName: string;
|
package/nest-storage.module.js
CHANGED
|
@@ -11,6 +11,7 @@ const common_1 = require("@nestjs/common");
|
|
|
11
11
|
const cloud_storage_service_1 = require("./services/cloud-storage.service");
|
|
12
12
|
const minio_storage_service_1 = require("./services/minio-storage.service");
|
|
13
13
|
const cloudflare_r2_service_1 = require("./services/cloudflare-r2.service");
|
|
14
|
+
const local_storage_service_1 = require("./services/local-storage.service");
|
|
14
15
|
const storage_factory_1 = require("./services/storage.factory");
|
|
15
16
|
const storage_controller_1 = require("./controllers/storage.controller");
|
|
16
17
|
const config_1 = require("@nestjs/config");
|
|
@@ -20,11 +21,12 @@ exports.NestStorageModule = NestStorageModule;
|
|
|
20
21
|
exports.NestStorageModule = NestStorageModule = __decorate([
|
|
21
22
|
(0, common_1.Module)({
|
|
22
23
|
imports: [config_1.ConfigModule],
|
|
23
|
-
controllers: [storage_controller_1.
|
|
24
|
+
controllers: [storage_controller_1.StorageController],
|
|
24
25
|
providers: [
|
|
25
26
|
cloud_storage_service_1.CloudStorageService,
|
|
26
27
|
minio_storage_service_1.MinioStorageService,
|
|
27
28
|
cloudflare_r2_service_1.CloudflareR2Service,
|
|
29
|
+
local_storage_service_1.LocalStorageService,
|
|
28
30
|
storage_factory_1.StorageFactory,
|
|
29
31
|
{
|
|
30
32
|
provide: 'IStorageService',
|
|
@@ -32,7 +34,7 @@ exports.NestStorageModule = NestStorageModule = __decorate([
|
|
|
32
34
|
inject: [storage_factory_1.StorageFactory],
|
|
33
35
|
},
|
|
34
36
|
],
|
|
35
|
-
exports: [cloud_storage_service_1.CloudStorageService, minio_storage_service_1.MinioStorageService, 'IStorageService', storage_factory_1.StorageFactory, cloudflare_r2_service_1.CloudflareR2Service],
|
|
37
|
+
exports: [cloud_storage_service_1.CloudStorageService, minio_storage_service_1.MinioStorageService, 'IStorageService', storage_factory_1.StorageFactory, cloudflare_r2_service_1.CloudflareR2Service, local_storage_service_1.LocalStorageService],
|
|
36
38
|
})
|
|
37
39
|
], NestStorageModule);
|
|
38
40
|
//# sourceMappingURL=nest-storage.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nest-storage.module.js","sourceRoot":"","sources":["../../../../libs/nest-storage/src/nest-storage.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,4EAAuE;AACvE,4EAAuE;AACvE,4EAAuE;AACvE,gEAA4D;AAC5D,
|
|
1
|
+
{"version":3,"file":"nest-storage.module.js","sourceRoot":"","sources":["../../../../libs/nest-storage/src/nest-storage.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,4EAAuE;AACvE,4EAAuE;AACvE,4EAAuE;AACvE,4EAAuE;AACvE,gEAA4D;AAC5D,yEAAqE;AACrE,2CAA8C;AAmBvC,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CAAI,CAAA;AAArB,8CAAiB;4BAAjB,iBAAiB;IAjB7B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,qBAAY,CAAC;QACvB,WAAW,EAAE,CAAC,sCAAiB,CAAC;QAChC,SAAS,EAAE;YACT,2CAAmB;YACnB,2CAAmB;YACnB,2CAAmB;YACnB,2CAAmB;YACnB,gCAAc;YACd;gBACE,OAAO,EAAE,iBAAiB;gBAC1B,UAAU,EAAE,CAAC,OAAuB,EAAE,EAAE,CAAC,OAAO,CAAC,iBAAiB,EAAE;gBACpE,MAAM,EAAE,CAAC,gCAAc,CAAC;aACzB;SACF;QACD,OAAO,EAAE,CAAC,2CAAmB,EAAE,2CAAmB,EAAE,iBAAiB,EAAE,gCAAc,EAAE,2CAAmB,EAAE,2CAAmB,CAAC;KACjI,CAAC;GACW,iBAAiB,CAAI"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dataclouder/nest-storage",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.10",
|
|
4
4
|
"description": "NestJS library for storage services",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
7
7
|
"files": [
|
|
8
8
|
"**/*.js",
|
|
9
9
|
"**/*.d.ts",
|
|
10
|
-
"**/*.js.map"
|
|
10
|
+
"**/*.js.map",
|
|
11
|
+
"README.md",
|
|
12
|
+
"docs"
|
|
11
13
|
],
|
|
12
14
|
"scripts": {
|
|
13
15
|
"build": "tsc -p tsconfig.lib.json",
|
|
@@ -26,6 +28,8 @@
|
|
|
26
28
|
"peerDependencies": {
|
|
27
29
|
"@nestjs/common": ">=11.0.0",
|
|
28
30
|
"@nestjs/core": ">=11.0.0",
|
|
31
|
+
"fastify": ">=5.0.0",
|
|
32
|
+
"@fastify/multipart": ">=9.0.0",
|
|
29
33
|
"rxjs": ">=7.0.0"
|
|
30
34
|
},
|
|
31
35
|
"dependencies": {
|
|
@@ -1,16 +1,6 @@
|
|
|
1
1
|
import { IAuditable } from '@dataclouder/nest-core';
|
|
2
2
|
import { ConfigService } from '@nestjs/config';
|
|
3
|
-
import { BasicStorage, CloudFileStorage, IStorageService, UploadPublicFileOptions } from '../models/cloud.model';
|
|
4
|
-
export interface UploadWebpImageOptions {
|
|
5
|
-
bucketName?: string;
|
|
6
|
-
fileName: string;
|
|
7
|
-
imageBuffer: Buffer;
|
|
8
|
-
resizeWidth?: number;
|
|
9
|
-
contentType?: string;
|
|
10
|
-
metadata?: {
|
|
11
|
-
[key: string]: any;
|
|
12
|
-
};
|
|
13
|
-
}
|
|
3
|
+
import { BasicStorage, CloudFileStorage, IStorageService, UploadPublicFileOptions, UploadWebpImageOptions } from '../models/cloud.model';
|
|
14
4
|
export declare class CloudStorageService implements IStorageService {
|
|
15
5
|
private readonly configService;
|
|
16
6
|
private storage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-storage.service.js","sourceRoot":"","sources":["../../../../../libs/nest-storage/src/services/cloud-storage.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AACA,2CAAoD;AACpD,2CAA+C;AAC/C,mDAAgD;AAChD,+BAAgC;
|
|
1
|
+
{"version":3,"file":"cloud-storage.service.js","sourceRoot":"","sources":["../../../../../libs/nest-storage/src/services/cloud-storage.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { IAuditable } from '@dataclouder/nest-core';
|
|
2
|
-
import { IStorageService, BasicStorage, CloudFileStorage, UploadPublicFileOptions } from '../models/cloud.model';
|
|
3
|
-
import { UploadWebpImageOptions } from './cloud-storage.service';
|
|
2
|
+
import { IStorageService, BasicStorage, CloudFileStorage, UploadPublicFileOptions, UploadWebpImageOptions } from '../models/cloud.model';
|
|
4
3
|
import { ConfigService } from '@nestjs/config';
|
|
5
4
|
export declare class CloudflareR2Service implements IStorageService {
|
|
6
5
|
private readonly configService;
|
|
@@ -104,7 +104,7 @@ let CloudflareR2Service = CloudflareR2Service_1 = class CloudflareR2Service {
|
|
|
104
104
|
Metadata: metadata,
|
|
105
105
|
});
|
|
106
106
|
const response = await this.s3Client.send(command);
|
|
107
|
-
this.logger.log(
|
|
107
|
+
this.logger.log(`Upload response: ${response.$metadata.httpStatusCode}`);
|
|
108
108
|
const publicUrl = `${this.r2PublicDomain}/${fileName}`;
|
|
109
109
|
return {
|
|
110
110
|
bucket: bucketToUse,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare-r2.service.js","sourceRoot":"","sources":["../../../../../libs/nest-storage/src/services/cloudflare-r2.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AACA,2CAAoD;AACpD,kDAAgJ;AAChJ,wEAA6D;AAC7D,+BAAgC;
|
|
1
|
+
{"version":3,"file":"cloudflare-r2.service.js","sourceRoot":"","sources":["../../../../../libs/nest-storage/src/services/cloudflare-r2.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AACA,2CAAoD;AACpD,kDAAgJ;AAChJ,wEAA6D;AAC7D,+BAAgC;AAEhC,2CAA+C;AAC/C,oDAAoD;AAG7C,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAMD;IALrB,QAAQ,CAAW;IACnB,cAAc,CAAS;IACvB,aAAa,CAAS;IACtB,MAAM,GAAG,IAAI,eAAM,CAAC,qBAAmB,CAAC,IAAI,CAAC,CAAC;IAEtD,YAA6B,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAS,eAAe,CAAC,CAAC;QAClE,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAS,kBAAkB,CAAC,CAAC;QACvE,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAS,sBAAsB,CAAC,CAAC;QAC/E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAS,kBAAkB,CAAC,CAAC;QACzE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAS,gBAAgB,CAAC,CAAC;QAEtE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE;YACvC,SAAS;YACT,WAAW;YACX,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;YAC1D,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,WAAW,SAAS,2BAA2B;SAC1D,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAQ,CAAC;YAC3B,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,WAAW,SAAS,2BAA2B;YACzD,WAAW,EAAE;gBACX,WAAW;gBACX,eAAe;aAChB;SACF,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,UAAU,CACrB,QAAgB,EAChB,UAAkB,EAClB,SAAqB,EACrB,WAAoB,EACpB,UAAmB;QAEnB,MAAM,WAAW,GAAG,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC;QACrD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,iBAAiB,GAAG,IAAA,gCAAgB,EAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,4BAAgB,CAAC;YACnC,MAAM,EAAE,WAAW;YACnB,GAAG,EAAE,iBAAiB;YACtB,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,WAAW;SACzB,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAS,kBAAkB,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,GAAG,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACjD,OAAO;YACL,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,YAAY;YACtB,SAAS;SACV,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,OAA+B;QAC1D,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,GAAG,GAAG,EAAE,WAAW,GAAG,YAAY,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAEnG,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAE/C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAC;QAC/G,CAAC;QAGD,MAAM,oBAAoB,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxE,MAAM,YAAY,GAAG,GAAG,oBAAoB,OAAO,CAAC;QAEpD,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QAGjG,OAAO,IAAI,CAAC,gBAAgB,CAAC;YAC3B,UAAU,EAAE,WAAW;YACvB,QAAQ,EAAE,YAAY;YACtB,UAAU,EAAE,UAAU;YACtB,WAAW;YACX,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAKM,KAAK,CAAC,uBAAuB,CAClC,UAAkB,EAClB,QAAgB,EAChB,UAAkB,EAClB,WAAoB,EACpB,QAAiC;QAEjC,OAAO,IAAI,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5F,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,OAAgC;QAC5D,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAC5E,MAAM,WAAW,GAAG,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC;QACrD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,4BAAgB,CAAC;YACnC,MAAM,EAAE,WAAW;YACnB,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,WAAW;YACxB,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC;QAEzE,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,cAAc,IAAI,QAAQ,EAAE,CAAC;QAEvD,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,QAAQ;YACd,GAAG,EAAE,SAAS;YACd,QAAQ,EAAE,YAAY;SACvB,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,UAAkB,EAAE,QAAgB;QACjE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,IAAI,+BAAmB,CAAC;YACtC,MAAM,EAAE,UAAU;YAClB,GAAG,EAAE,QAAQ;SACd,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAGM,KAAK,CAAC,oCAAoC,CAAC,IAAS;QAKzD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gHAAgH,CAAC,CAAC;QACnI,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAEM,KAAK,CAAC,0BAA0B,CAAC,GAAQ;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,UAAU;aACxB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACX,MAAM,SAAS,GAAG,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5D,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAE7B,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAEO,2BAA2B,CAAC,GAAW;QAC7C,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;YAClC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YAC1B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,GAAQ;QACrC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,MAAM,eAAe,GAAU,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,CAAC,OAAY,EAAE,EAAE;YAC9B,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;gBAAE,OAAO;YACpD,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACnD,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChC,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC;QACF,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,OAAO,eAAe,CAAC;IACzB,CAAC;IAEM,WAAW,CAAC,IAAkB;QACnC,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC9B,OAAO,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;gBACvD,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,UAAkB,EAAE,QAAgB;QACvD,MAAM,OAAO,GAAG,IAAI,4BAAgB,CAAC;YACnC,MAAM,EAAE,UAAU;YAClB,GAAG,EAAE,QAAQ;SACd,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACjE,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,UAAkB,EAAE,QAAgB,EAAE,gBAAgB,GAAG,EAAE;QACxF,MAAM,OAAO,GAAG,IAAI,4BAAgB,CAAC;YACnC,MAAM,EAAE,UAAU;YAClB,GAAG,EAAE,QAAQ;SACd,CAAC,CAAC;QACH,OAAO,IAAA,mCAAY,EAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,gBAAgB,GAAG,EAAE,EAAE,CAAC,CAAC;IACpF,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,UAAkB,EAAE,MAAe;QACxD,MAAM,OAAO,GAAG,IAAI,gCAAoB,CAAC;YACvC,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,EAAE,IAAI,CAAC,GAAG;YACd,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,YAAY;SAC3B,CAAC,CAAC,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,UAAkB,EAAE,QAAgB;QAC1D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,6BAAiB,CAAC;gBACpC,MAAM,EAAE,UAAU;gBAClB,GAAG,EAAE,QAAQ;aACd,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC9B,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF,CAAA;AA9PY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;qCAOiC,sBAAa;GAN9C,mBAAmB,CA8P/B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ConfigService } from '@nestjs/config';
|
|
2
|
+
import { IAuditable } from '@dataclouder/nest-core';
|
|
3
|
+
import { BasicStorage, CloudFileStorage, IStorageService, UploadPublicFileOptions, UploadWebpImageOptions } from '../models/cloud.model';
|
|
4
|
+
export declare class LocalStorageService implements IStorageService {
|
|
5
|
+
private readonly configService;
|
|
6
|
+
private readonly logger;
|
|
7
|
+
private readonly uploadDir;
|
|
8
|
+
private readonly baseUrl;
|
|
9
|
+
constructor(configService: ConfigService);
|
|
10
|
+
uploadFile(fileName: string, fileBuffer: Buffer, auditable: IAuditable, contentType?: string, _bucketName?: string): Promise<CloudFileStorage>;
|
|
11
|
+
uploadWebpImage(options: UploadWebpImageOptions): Promise<Partial<CloudFileStorage>>;
|
|
12
|
+
uploadFileAndMakePublic(_bucketName: string, fileName: string, fileBuffer: Buffer, contentType?: string, metadata?: {
|
|
13
|
+
[key: string]: any;
|
|
14
|
+
}): Promise<Partial<CloudFileStorage>>;
|
|
15
|
+
uploadPublicFile(options: UploadPublicFileOptions): Promise<Partial<CloudFileStorage>>;
|
|
16
|
+
deleteStorageFile(_bucketName: string, fileName: string): Promise<any>;
|
|
17
|
+
removeAllStorageFilesPresentInObject(obj: any): Promise<any>;
|
|
18
|
+
removeAllStorageFilesByUrl(obj: any): Promise<any>;
|
|
19
|
+
private extractFileNameFromUrl;
|
|
20
|
+
private findAllObjectsWithUrls;
|
|
21
|
+
private findAllObjectsWithPaths;
|
|
22
|
+
extractPath(file: BasicStorage): string | undefined;
|
|
23
|
+
getFile(_bucketName: string, fileName: string): Promise<Buffer>;
|
|
24
|
+
generateSignedUrl(_bucketName: string, fileName: string, _expiresInMinutes?: number): Promise<string>;
|
|
25
|
+
listFiles(_bucketName: string, _prefix?: string): Promise<any[]>;
|
|
26
|
+
fileExists(_bucketName: string, fileName: string): Promise<boolean>;
|
|
27
|
+
}
|