@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 +3 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/package.json +23 -0
package/README.md
ADDED
package/dist/index.d.ts
ADDED
|
@@ -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
|
+
}
|