@russ-b/nestjs-common-tools 1.5.0 → 1.5.2
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/dist/modules/index.d.ts +1 -0
- package/dist/modules/index.js +18 -0
- package/dist/modules/index.js.map +1 -0
- package/dist/modules/s3/index.d.ts +2 -0
- package/dist/modules/s3/index.js +19 -0
- package/dist/modules/s3/index.js.map +1 -0
- package/dist/modules/s3/s3.constants.d.ts +2 -0
- package/dist/modules/s3/s3.constants.js +6 -0
- package/dist/modules/s3/s3.constants.js.map +1 -0
- package/dist/modules/s3/s3.interface.d.ts +13 -0
- package/dist/modules/s3/s3.interface.js +3 -0
- package/dist/modules/s3/s3.interface.js.map +1 -0
- package/dist/modules/s3/s3.module.d.ts +5 -0
- package/dist/modules/s3/s3.module.js +52 -0
- package/dist/modules/s3/s3.module.js.map +1 -0
- package/dist/modules/s3/s3.service.d.ts +12 -0
- package/dist/modules/s3/s3.service.js +80 -0
- package/dist/modules/s3/s3.service.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './s3';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./s3"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/modules/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uCAAqB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./s3.module"), exports);
|
|
18
|
+
__exportStar(require("./s3.service"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/s3/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,+CAA6B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3.constants.js","sourceRoot":"","sources":["../../../src/modules/s3/s3.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,WAAW,CAAC;AACxB,QAAA,iBAAiB,GAAG,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ModuleMetadata } from '@nestjs/common';
|
|
2
|
+
export interface S3ModuleOptions {
|
|
3
|
+
region?: string;
|
|
4
|
+
endpoint: string;
|
|
5
|
+
accessKeyId: string;
|
|
6
|
+
secretAccessKey: string;
|
|
7
|
+
forcePathStyle?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface S3ModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
|
|
10
|
+
useFactory: (...args: any[]) => Promise<S3ModuleOptions> | S3ModuleOptions;
|
|
11
|
+
global?: boolean;
|
|
12
|
+
inject?: any[];
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3.interface.js","sourceRoot":"","sources":["../../../src/modules/s3/s3.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var S3Module_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.S3Module = void 0;
|
|
11
|
+
const common_1 = require("@nestjs/common");
|
|
12
|
+
const s3_service_1 = require("./s3.service");
|
|
13
|
+
const s3_constants_1 = require("./s3.constants");
|
|
14
|
+
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
15
|
+
let S3Module = S3Module_1 = class S3Module {
|
|
16
|
+
static forRootAsync(options) {
|
|
17
|
+
return {
|
|
18
|
+
module: S3Module_1,
|
|
19
|
+
imports: options.imports || [],
|
|
20
|
+
global: options.global,
|
|
21
|
+
providers: [
|
|
22
|
+
{
|
|
23
|
+
provide: s3_constants_1.S3_MODULE_OPTIONS,
|
|
24
|
+
useFactory: options.useFactory,
|
|
25
|
+
inject: options.inject || [],
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
provide: s3_constants_1.S3_CLIENT,
|
|
29
|
+
inject: [s3_constants_1.S3_MODULE_OPTIONS],
|
|
30
|
+
useFactory: (opts) => {
|
|
31
|
+
return new client_s3_1.S3Client({
|
|
32
|
+
region: opts.region || 'us-east-1',
|
|
33
|
+
endpoint: opts.endpoint,
|
|
34
|
+
credentials: {
|
|
35
|
+
accessKeyId: opts.accessKeyId,
|
|
36
|
+
secretAccessKey: opts.secretAccessKey,
|
|
37
|
+
},
|
|
38
|
+
forcePathStyle: opts.forcePathStyle ?? true,
|
|
39
|
+
});
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
s3_service_1.S3Service,
|
|
43
|
+
],
|
|
44
|
+
exports: [s3_service_1.S3Service],
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
exports.S3Module = S3Module;
|
|
49
|
+
exports.S3Module = S3Module = S3Module_1 = __decorate([
|
|
50
|
+
(0, common_1.Module)({})
|
|
51
|
+
], S3Module);
|
|
52
|
+
//# sourceMappingURL=s3.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3.module.js","sourceRoot":"","sources":["../../../src/modules/s3/s3.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AACvD,6CAAyC;AACzC,iDAA8D;AAC9D,kDAA8C;AAIvC,IAAM,QAAQ,gBAAd,MAAM,QAAQ;IACnB,MAAM,CAAC,YAAY,CAAC,OAA6B;QAC/C,OAAO;YACL,MAAM,EAAE,UAAQ;YAChB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,gCAAiB;oBAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;iBAC7B;gBACD;oBACE,OAAO,EAAE,wBAAS;oBAClB,MAAM,EAAE,CAAC,gCAAiB,CAAC;oBAC3B,UAAU,EAAE,CAAC,IAAqB,EAAE,EAAE;wBACpC,OAAO,IAAI,oBAAQ,CAAC;4BAClB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,WAAW;4BAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ;4BACvB,WAAW,EAAE;gCACX,WAAW,EAAE,IAAI,CAAC,WAAW;gCAC7B,eAAe,EAAE,IAAI,CAAC,eAAe;6BACtC;4BACD,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI;yBAC5C,CAAC,CAAC;oBACL,CAAC;iBACF;gBACD,sBAAS;aACV;YACD,OAAO,EAAE,CAAC,sBAAS,CAAC;SACrB,CAAC;IACJ,CAAC;CACF,CAAA;AAhCY,4BAAQ;mBAAR,QAAQ;IADpB,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,QAAQ,CAgCpB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { S3Client } from '@aws-sdk/client-s3';
|
|
2
|
+
import { Readable } from 'stream';
|
|
3
|
+
export declare class S3Service {
|
|
4
|
+
private readonly options;
|
|
5
|
+
private readonly s3Client;
|
|
6
|
+
private readonly logger;
|
|
7
|
+
private readonly bucket;
|
|
8
|
+
constructor(options: Record<string, string>, s3Client: S3Client);
|
|
9
|
+
uploadObject(key: string, body: Buffer | Uint8Array | string, contentType?: string): Promise<void>;
|
|
10
|
+
deleteObject(key: string): Promise<void>;
|
|
11
|
+
getObject(key: string): Promise<Readable>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.S3Service = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
18
|
+
const s3_constants_1 = require("./s3.constants");
|
|
19
|
+
let S3Service = class S3Service {
|
|
20
|
+
constructor(options, s3Client) {
|
|
21
|
+
this.options = options;
|
|
22
|
+
this.s3Client = s3Client;
|
|
23
|
+
this.logger = new common_1.Logger(this.constructor.name);
|
|
24
|
+
this.bucket = this.options.bucket;
|
|
25
|
+
}
|
|
26
|
+
async uploadObject(key, body, contentType = 'application/octet-stream') {
|
|
27
|
+
const command = new client_s3_1.PutObjectCommand({
|
|
28
|
+
Bucket: this.bucket,
|
|
29
|
+
Key: key,
|
|
30
|
+
Body: body,
|
|
31
|
+
ContentType: contentType,
|
|
32
|
+
ACL: 'public-read',
|
|
33
|
+
});
|
|
34
|
+
try {
|
|
35
|
+
await this.s3Client.send(command);
|
|
36
|
+
this.logger.log(`Uploaded object: ${key}`);
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
this.logger.error(`Failed to upload object: ${key}`, error);
|
|
40
|
+
throw error;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
async deleteObject(key) {
|
|
44
|
+
const command = new client_s3_1.DeleteObjectCommand({
|
|
45
|
+
Bucket: this.bucket,
|
|
46
|
+
Key: key,
|
|
47
|
+
});
|
|
48
|
+
try {
|
|
49
|
+
await this.s3Client.send(command);
|
|
50
|
+
this.logger.log(`Deleted object: ${key}`);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
this.logger.error(`Failed to delete object: ${key}`, error);
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async getObject(key) {
|
|
58
|
+
const command = new client_s3_1.GetObjectCommand({
|
|
59
|
+
Bucket: this.bucket,
|
|
60
|
+
Key: key,
|
|
61
|
+
});
|
|
62
|
+
try {
|
|
63
|
+
const response = await this.s3Client.send(command);
|
|
64
|
+
this.logger.log(`Fetched object: ${key}`);
|
|
65
|
+
return response.Body;
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
this.logger.error(`Failed to get object: ${key}`, error);
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
exports.S3Service = S3Service;
|
|
74
|
+
exports.S3Service = S3Service = __decorate([
|
|
75
|
+
(0, common_1.Injectable)(),
|
|
76
|
+
__param(0, (0, common_1.Inject)(s3_constants_1.S3_MODULE_OPTIONS)),
|
|
77
|
+
__param(1, (0, common_1.Inject)(s3_constants_1.S3_CLIENT)),
|
|
78
|
+
__metadata("design:paramtypes", [Object, client_s3_1.S3Client])
|
|
79
|
+
], S3Service);
|
|
80
|
+
//# sourceMappingURL=s3.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3.service.js","sourceRoot":"","sources":["../../../src/modules/s3/s3.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4D;AAC5D,kDAK4B;AAC5B,iDAA8D;AAIvD,IAAM,SAAS,GAAf,MAAM,SAAS;IAIpB,YAC6B,OAAgD,EACxD,QAAmC;QADV,YAAO,GAAP,OAAO,CAAwB;QACvC,aAAQ,GAAR,QAAQ,CAAU;QALvC,WAAM,GAAG,IAAI,eAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAO1D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,GAAW,EACX,IAAkC,EAClC,WAAW,GAAG,0BAA0B;QAExC,MAAM,OAAO,GAAG,IAAI,4BAAgB,CAAC;YACnC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,WAAW;YACxB,GAAG,EAAE,aAAa;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;YAC5D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW;QAC5B,MAAM,OAAO,GAAG,IAAI,+BAAmB,CAAC;YACtC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,EAAE,GAAG;SACT,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;YAC5D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAW;QACzB,MAAM,OAAO,GAAG,IAAI,4BAAgB,CAAC;YACnC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,EAAE,GAAG;SACT,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC;YAE1C,OAAO,QAAQ,CAAC,IAAgB,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;YACzD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF,CAAA;AAhEY,8BAAS;oBAAT,SAAS;IADrB,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,eAAM,EAAC,gCAAiB,CAAC,CAAA;IACzB,WAAA,IAAA,eAAM,EAAC,wBAAS,CAAC,CAAA;6CAA4B,oBAAQ;GAN7C,SAAS,CAgErB"}
|