1
- const s3 = require ( 's3' )
2
- const util = require ( 'util' )
1
+ import * as s3 from 's3'
2
+ import * as util from 'util'
3
3
4
- class Plugin {
5
- constructor ( serverless ) {
6
- this . serverless = serverless
4
+ class S3BucketPlugin {
5
+ private commands : { }
6
+ private hooks : { }
7
7
8
+ constructor ( private serverless : Serverless ) {
8
9
this . commands = {
9
10
sync : { lifecycleEvents : [ 'buckets' ] }
10
11
}
@@ -15,31 +16,31 @@ class Plugin {
15
16
}
16
17
}
17
18
18
- options ( ) {
19
+ private options ( ) {
19
20
return {
20
21
maxAsyncS3 : 20 ,
21
- s3RetryCount : 3 ,
22
- s3RetryDelay : 1000 ,
23
- multipartUploadThreshold : 20971520 ,
24
22
multipartUploadSize : 15728640 ,
23
+ multipartUploadThreshold : 20971520 ,
25
24
s3Options : {
26
25
region : this . serverless . getProvider ( 'aws' ) . getRegion ( )
27
- }
26
+ } ,
27
+ s3RetryCount : 3 ,
28
+ s3RetryDelay : 1000
28
29
}
29
30
}
30
31
31
- client ( ) {
32
+ private client ( ) {
32
33
return s3 . createClient ( this . options ( ) )
33
34
}
34
35
35
- upload ( config ) {
36
- return new Promise ( resolve => {
36
+ private upload ( config : BucketConfig ) {
37
+ return new Promise ( ( resolve ) => {
37
38
this . serverless . cli . log ( util . format ( 'Syncing folder "%s" to S3 bucket "%s"' , config . folder , config . bucket ) )
38
39
39
40
const uploader = this . client ( ) . uploadDir (
40
41
{
41
- localDir : this . serverless . config . servicePath + '/' + config . folder ,
42
42
deleteRemoved : true ,
43
+ localDir : this . serverless . config . servicePath + '/' + config . folder ,
43
44
s3Params : {
44
45
Bucket : config . bucket
45
46
}
@@ -51,11 +52,11 @@ class Plugin {
51
52
} )
52
53
}
53
54
54
- sync ( ) {
55
+ private sync ( ) {
55
56
return Promise . all (
56
57
this . serverless . service . custom [ 's3-sync' ] . map ( this . upload . bind ( this ) )
57
58
)
58
59
}
59
60
}
60
61
61
- module . exports = Plugin
62
+ module . exports = S3BucketPlugin
0 commit comments