@dyrected/storage-s3 0.0.1

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 ADDED
@@ -0,0 +1,3 @@
1
+ # @dyrected/storage-s3
2
+
3
+ This is the storage-s3 package/app for the Dyrected ecosystem.
@@ -0,0 +1,29 @@
1
+ import { StorageAdapter, FileData } from '@dyrected/core';
2
+ export interface S3StorageConfig {
3
+ bucket: string;
4
+ region: string;
5
+ credentials: {
6
+ accessKeyId: string;
7
+ secretAccessKey: string;
8
+ };
9
+ endpoint?: string;
10
+ forcePathStyle?: boolean;
11
+ baseUrl?: string;
12
+ }
13
+ export declare class S3StorageAdapter implements StorageAdapter {
14
+ private config;
15
+ private client;
16
+ constructor(config: S3StorageConfig);
17
+ upload(args: {
18
+ filename: string;
19
+ buffer: Buffer;
20
+ mimeType: string;
21
+ }): Promise<FileData>;
22
+ delete(args: {
23
+ filename: string;
24
+ }): Promise<void>;
25
+ getURL(args: {
26
+ filename: string;
27
+ }): string;
28
+ }
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI1D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAiB,YAAW,cAAc;IAGzC,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,MAAM,CAAW;gBAEL,MAAM,EAAE,eAAe;IASrC,MAAM,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IAqBvF,MAAM,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvD,MAAM,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CAM3C"}
package/dist/index.js ADDED
@@ -0,0 +1,47 @@
1
+ import { S3Client, DeleteObjectCommand } from '@aws-sdk/client-s3';
2
+ import { Upload } from '@aws-sdk/lib-storage';
3
+ export class S3StorageAdapter {
4
+ config;
5
+ client;
6
+ constructor(config) {
7
+ this.config = config;
8
+ this.client = new S3Client({
9
+ region: config.region,
10
+ credentials: config.credentials,
11
+ endpoint: config.endpoint,
12
+ forcePathStyle: config.forcePathStyle,
13
+ });
14
+ }
15
+ async upload(args) {
16
+ const upload = new Upload({
17
+ client: this.client,
18
+ params: {
19
+ Bucket: this.config.bucket,
20
+ Key: args.filename,
21
+ Body: args.buffer,
22
+ ContentType: args.mimeType,
23
+ },
24
+ });
25
+ await upload.done();
26
+ return {
27
+ filename: args.filename,
28
+ filesize: args.buffer.length,
29
+ mimeType: args.mimeType,
30
+ url: this.getURL({ filename: args.filename }),
31
+ };
32
+ }
33
+ async delete(args) {
34
+ const command = new DeleteObjectCommand({
35
+ Bucket: this.config.bucket,
36
+ Key: args.filename,
37
+ });
38
+ await this.client.send(command);
39
+ }
40
+ getURL(args) {
41
+ if (this.config.baseUrl) {
42
+ return `${this.config.baseUrl}/${args.filename}`;
43
+ }
44
+ return `https://${this.config.bucket}.s3.${this.config.region}.amazonaws.com/${args.filename}`;
45
+ }
46
+ }
47
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAc9C,MAAM,OAAO,gBAAgB;IAGP;IAFZ,MAAM,CAAW;IAEzB,YAAoB,MAAuB;QAAvB,WAAM,GAAN,MAAM,CAAiB;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,QAAQ,CAAC;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,cAAc,EAAE,MAAM,CAAC,cAAc;SACtC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAA4D;QACvE,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;gBAC1B,GAAG,EAAE,IAAI,CAAC,QAAQ;gBAClB,IAAI,EAAE,IAAI,CAAC,MAAM;gBACjB,WAAW,EAAE,IAAI,CAAC,QAAQ;aAC3B;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAEpB,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;SAC9C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAA0B;QACrC,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC;YACtC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,GAAG,EAAE,IAAI,CAAC,QAAQ;SACnB,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,IAA0B;QAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnD,CAAC;QACD,OAAO,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,kBAAkB,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjG,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "@dyrected/storage-s3",
3
+ "version": "0.0.1",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "dependencies": {
11
+ "@aws-sdk/client-s3": "^3.577.0",
12
+ "@aws-sdk/lib-storage": "^3.577.0",
13
+ "@dyrected/core": "0.0.1"
14
+ },
15
+ "devDependencies": {
16
+ "@types/node": "^20.12.12",
17
+ "typescript": "^5.4.5"
18
+ },
19
+ "scripts": {
20
+ "build": "tsc",
21
+ "dev": "tsc --watch"
22
+ }
23
+ }