@spinajs/fs-s3 2.0.171 → 2.0.172
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/lib/cjs/index.d.ts +7 -9
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js +76 -77
- package/lib/cjs/index.js.map +1 -1
- package/lib/mjs/index.d.ts +7 -9
- package/lib/mjs/index.d.ts.map +1 -1
- package/lib/mjs/index.js +78 -79
- package/lib/mjs/index.js.map +1 -1
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.mjs.tsbuildinfo +1 -1
- package/package.json +7 -6
package/lib/mjs/index.js
CHANGED
|
@@ -10,14 +10,15 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
import { Injectable, PerInstanceCheck } from '@spinajs/di';
|
|
11
11
|
import { Log, Logger } from '@spinajs/log-common';
|
|
12
12
|
import { fs, FileSystem } from '@spinajs/fs';
|
|
13
|
-
import
|
|
13
|
+
import { S3Client, HeadObjectCommand, CopyObjectCommand, DeleteObjectCommand, ListObjectsV2Command, GetObjectCommand } from '@aws-sdk/client-s3';
|
|
14
|
+
import { Upload } from '@aws-sdk/lib-storage';
|
|
14
15
|
import { Config } from '@spinajs/configuration';
|
|
15
16
|
import archiver from 'archiver';
|
|
16
17
|
import { basename } from 'path';
|
|
17
|
-
import {
|
|
18
|
-
import { createReadStream, readFileSync } from 'fs';
|
|
18
|
+
import { InvalidArgument, IOFail, MethodNotImplemented } from '@spinajs/exceptions';
|
|
19
|
+
import { createReadStream, readFileSync, ReadStream } from 'fs';
|
|
19
20
|
import { DateTime } from 'luxon';
|
|
20
|
-
import
|
|
21
|
+
import { Readable } from 'stream';
|
|
21
22
|
/**
|
|
22
23
|
* Abstract layer for file operations.
|
|
23
24
|
* Basic implementation is just wrapper for native node fs functions
|
|
@@ -40,16 +41,7 @@ let fsS3 = class fsS3 extends fs {
|
|
|
40
41
|
this.Options = Options;
|
|
41
42
|
}
|
|
42
43
|
async resolve() {
|
|
43
|
-
|
|
44
|
-
AWS.config.loadFromPath(this.ConfigPath);
|
|
45
|
-
}
|
|
46
|
-
else if (this.AwsConfig) {
|
|
47
|
-
AWS.config.update(this.AwsConfig);
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
throw new UnexpectedServerError(`Configuraiton for aws s3 filesystem not present. Please set fs.s3.config or fs.s3.confgiPath configuration properties.`);
|
|
51
|
-
}
|
|
52
|
-
this.S3 = new AWS.S3();
|
|
44
|
+
this.S3 = new S3Client(this.AwsConfig);
|
|
53
45
|
}
|
|
54
46
|
/**
|
|
55
47
|
*
|
|
@@ -61,22 +53,21 @@ let fsS3 = class fsS3 extends fs {
|
|
|
61
53
|
async download(path) {
|
|
62
54
|
const tmpName = this.TempFs.tmppath();
|
|
63
55
|
const wStream = await this.TempFs.writeStream(tmpName);
|
|
56
|
+
const command = new GetObjectCommand({
|
|
57
|
+
Bucket: this.Options.bucket,
|
|
58
|
+
Key: path,
|
|
59
|
+
});
|
|
60
|
+
const result = await this.S3.send(command);
|
|
64
61
|
return new Promise((resolve, reject) => {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
})
|
|
75
|
-
.on('httpDone', () => {
|
|
76
|
-
wStream.end();
|
|
77
|
-
this.Logger.trace(`Downloaded file from S3 bucket ${this.Options.bucket}, file: ${path}`);
|
|
78
|
-
resolve(tmpName);
|
|
79
|
-
});
|
|
62
|
+
if (result.Body instanceof Readable) {
|
|
63
|
+
result.Body
|
|
64
|
+
.pipe(wStream)
|
|
65
|
+
.on("error", (err) => reject(err))
|
|
66
|
+
.on("close", () => resolve(tmpName));
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
reject(new IOFail(`Cannot download file ${path}, empty response`));
|
|
70
|
+
}
|
|
80
71
|
});
|
|
81
72
|
}
|
|
82
73
|
/**
|
|
@@ -96,17 +87,21 @@ let fsS3 = class fsS3 extends fs {
|
|
|
96
87
|
* Write to file string or buffer
|
|
97
88
|
*/
|
|
98
89
|
async write(path, data, encoding) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
90
|
+
const upload = new Upload({
|
|
91
|
+
client: this.S3,
|
|
92
|
+
params: {
|
|
93
|
+
Bucket: this.Options.bucket,
|
|
94
|
+
Key: path,
|
|
95
|
+
Body: data,
|
|
96
|
+
ContentEncoding: encoding
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
await upload.done();
|
|
105
100
|
}
|
|
106
101
|
async append(path, data, encoding) {
|
|
107
102
|
/**
|
|
108
103
|
* We cannot append to file in s3 directly,
|
|
109
|
-
* we have to download file
|
|
104
|
+
* we have to download file first, append locally, then upload again new file
|
|
110
105
|
*/
|
|
111
106
|
const fLocal = await this.download(path);
|
|
112
107
|
await this.TempFs.append(fLocal, data, encoding);
|
|
@@ -136,19 +131,20 @@ let fsS3 = class fsS3 extends fs {
|
|
|
136
131
|
});
|
|
137
132
|
});
|
|
138
133
|
}
|
|
139
|
-
async writeStream(path, encoding) {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
134
|
+
async writeStream(path, rStream, encoding) {
|
|
135
|
+
if (!(rStream instanceof ReadStream)) {
|
|
136
|
+
throw new InvalidArgument(`rStream should be readable stream`);
|
|
137
|
+
}
|
|
138
|
+
const result = new Upload({
|
|
139
|
+
client: this.S3,
|
|
140
|
+
params: {
|
|
141
|
+
Bucket: this.Options.bucket,
|
|
142
|
+
Key: path,
|
|
143
|
+
Body: rStream,
|
|
144
|
+
ContentEncoding: encoding,
|
|
145
|
+
},
|
|
150
146
|
});
|
|
151
|
-
|
|
147
|
+
await result.done();
|
|
152
148
|
}
|
|
153
149
|
/**
|
|
154
150
|
* Checks if file existst
|
|
@@ -156,15 +152,15 @@ let fsS3 = class fsS3 extends fs {
|
|
|
156
152
|
*/
|
|
157
153
|
async exists(path) {
|
|
158
154
|
try {
|
|
159
|
-
|
|
155
|
+
const command = new HeadObjectCommand({
|
|
160
156
|
Bucket: this.Options.bucket,
|
|
161
157
|
Key: path,
|
|
162
|
-
})
|
|
158
|
+
});
|
|
159
|
+
await this.S3.send(command);
|
|
163
160
|
}
|
|
164
161
|
catch (err) {
|
|
165
|
-
if (err.name === '
|
|
162
|
+
if (err.name === 'NotFound')
|
|
166
163
|
return false;
|
|
167
|
-
}
|
|
168
164
|
}
|
|
169
165
|
return true;
|
|
170
166
|
}
|
|
@@ -179,12 +175,12 @@ let fsS3 = class fsS3 extends fs {
|
|
|
179
175
|
* @param dest - dest path
|
|
180
176
|
*/
|
|
181
177
|
async copy(path, dest) {
|
|
182
|
-
const
|
|
178
|
+
const command = new CopyObjectCommand({
|
|
183
179
|
Bucket: this.Options.bucket,
|
|
184
180
|
CopySource: this.Options.bucket + '/' + path,
|
|
185
181
|
Key: dest,
|
|
186
|
-
};
|
|
187
|
-
await this.S3.
|
|
182
|
+
});
|
|
183
|
+
await this.S3.send(command);
|
|
188
184
|
}
|
|
189
185
|
/**
|
|
190
186
|
* Copy file to another location and deletes src file
|
|
@@ -210,10 +206,11 @@ let fsS3 = class fsS3 extends fs {
|
|
|
210
206
|
await this.TempFs.unlink(path);
|
|
211
207
|
return;
|
|
212
208
|
}
|
|
213
|
-
|
|
209
|
+
const command = new DeleteObjectCommand({
|
|
214
210
|
Key: path,
|
|
215
211
|
Bucket: this.Options.bucket,
|
|
216
|
-
})
|
|
212
|
+
});
|
|
213
|
+
await this.S3.send(command);
|
|
217
214
|
}
|
|
218
215
|
/**
|
|
219
216
|
*
|
|
@@ -221,9 +218,12 @@ let fsS3 = class fsS3 extends fs {
|
|
|
221
218
|
*
|
|
222
219
|
* @param path - dir to remove
|
|
223
220
|
*/
|
|
224
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function
|
|
225
221
|
async rm(_path) {
|
|
226
|
-
|
|
222
|
+
const command = new DeleteObjectCommand({
|
|
223
|
+
Bucket: this.Options.bucket,
|
|
224
|
+
Key: _path
|
|
225
|
+
});
|
|
226
|
+
await this.S3.send(command);
|
|
227
227
|
}
|
|
228
228
|
/**
|
|
229
229
|
*
|
|
@@ -237,10 +237,11 @@ let fsS3 = class fsS3 extends fs {
|
|
|
237
237
|
* Returns file statistics, not all fields may be accesible
|
|
238
238
|
*/
|
|
239
239
|
async stat(path) {
|
|
240
|
-
const
|
|
240
|
+
const command = new HeadObjectCommand({
|
|
241
241
|
Bucket: this.Options.bucket,
|
|
242
|
-
Key: path
|
|
243
|
-
})
|
|
242
|
+
Key: path
|
|
243
|
+
});
|
|
244
|
+
const result = await this.S3.send(command);
|
|
244
245
|
return {
|
|
245
246
|
// no directories in s3
|
|
246
247
|
IsDirectory: false,
|
|
@@ -249,18 +250,18 @@ let fsS3 = class fsS3 extends fs {
|
|
|
249
250
|
// no creation time
|
|
250
251
|
CreationTime: DateTime.min(),
|
|
251
252
|
ModifiedTime: DateTime.fromJSDate(result.LastModified),
|
|
252
|
-
// no access time in
|
|
253
|
+
// no access time in s3s
|
|
253
254
|
AccessTime: DateTime.min(),
|
|
254
255
|
Size: result.ContentLength,
|
|
255
256
|
};
|
|
256
257
|
}
|
|
257
|
-
async getSignedUrl(path) {
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
}
|
|
258
|
+
// protected async getSignedUrl(path: string) {
|
|
259
|
+
// return this.S3.getSignedUrlPromise('getObject', {
|
|
260
|
+
// Bucket: this.Options.bucket,
|
|
261
|
+
// Key: path,
|
|
262
|
+
// Expires: 24 * 60 * 60,
|
|
263
|
+
// });
|
|
264
|
+
// }
|
|
264
265
|
tmppath() {
|
|
265
266
|
throw new MethodNotImplemented('fs s3 does not support temporary paths');
|
|
266
267
|
}
|
|
@@ -270,15 +271,17 @@ let fsS3 = class fsS3 extends fs {
|
|
|
270
271
|
* @param path - path to directory
|
|
271
272
|
*/
|
|
272
273
|
async list(path) {
|
|
273
|
-
const
|
|
274
|
+
const command = new ListObjectsV2Command({
|
|
274
275
|
Bucket: this.Options.bucket,
|
|
275
276
|
Delimiter: '/',
|
|
276
277
|
Prefix: path,
|
|
277
|
-
};
|
|
278
|
-
|
|
279
|
-
const result = await this.S3.listObjectsV2(params).promise();
|
|
278
|
+
});
|
|
279
|
+
const result = await this.S3.send(command);
|
|
280
280
|
return result.Contents.map((x) => x.Key);
|
|
281
281
|
}
|
|
282
|
+
async unzip(_path, _destPath) {
|
|
283
|
+
throw new Error('not implemented');
|
|
284
|
+
}
|
|
282
285
|
async zip(path, zName) {
|
|
283
286
|
const zTmpName = this.TempFs.tmppath();
|
|
284
287
|
const output = await this.TempFs.writeStream(zTmpName);
|
|
@@ -313,12 +316,8 @@ __decorate([
|
|
|
313
316
|
], fsS3.prototype, "Logger", void 0);
|
|
314
317
|
__decorate([
|
|
315
318
|
Config('fs.s3.config'),
|
|
316
|
-
__metadata("design:type",
|
|
319
|
+
__metadata("design:type", Object)
|
|
317
320
|
], fsS3.prototype, "AwsConfig", void 0);
|
|
318
|
-
__decorate([
|
|
319
|
-
Config('fs.s3.configPath'),
|
|
320
|
-
__metadata("design:type", String)
|
|
321
|
-
], fsS3.prototype, "ConfigPath", void 0);
|
|
322
321
|
__decorate([
|
|
323
322
|
FileSystem('fs-temp'),
|
|
324
323
|
__metadata("design:type", fs)
|
package/lib/mjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAqB,UAAU,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|