@dyrected/storage-b2 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-b2
2
+
3
+ This is the storage-b2 package/app for the Dyrected ecosystem.
@@ -0,0 +1,25 @@
1
+ import { StorageAdapter, FileData } from '@dyrected/core';
2
+ export interface B2StorageConfig {
3
+ applicationKeyId: string;
4
+ applicationKey: string;
5
+ bucketId: string;
6
+ bucketName: string;
7
+ baseUrl?: string;
8
+ }
9
+ export declare class B2StorageAdapter implements StorageAdapter {
10
+ private config;
11
+ private b2;
12
+ constructor(config: B2StorageConfig);
13
+ upload(args: {
14
+ filename: string;
15
+ buffer: Buffer;
16
+ mimeType: string;
17
+ }): Promise<FileData>;
18
+ delete(args: {
19
+ filename: string;
20
+ }): Promise<void>;
21
+ getURL(args: {
22
+ filename: string;
23
+ }): string;
24
+ }
25
+ //# 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;AAG1D,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAiB,YAAW,cAAc;IAGzC,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,EAAE,CAAK;gBAEK,MAAM,EAAE,eAAe;IAOrC,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;IAwBvF,MAAM,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBvD,MAAM,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CAM3C"}
package/dist/index.js ADDED
@@ -0,0 +1,56 @@
1
+ import B2 from 'backblaze-b2';
2
+ export class B2StorageAdapter {
3
+ config;
4
+ b2;
5
+ constructor(config) {
6
+ this.config = config;
7
+ this.b2 = new B2({
8
+ applicationKeyId: config.applicationKeyId,
9
+ applicationKey: config.applicationKey,
10
+ });
11
+ }
12
+ async upload(args) {
13
+ await this.b2.authorize();
14
+ const uploadUrlResponse = await this.b2.getUploadUrl({
15
+ bucketId: this.config.bucketId,
16
+ });
17
+ const uploadResponse = await this.b2.uploadFile({
18
+ uploadUrl: uploadUrlResponse.data.uploadUrl,
19
+ uploadAuthToken: uploadUrlResponse.data.authorizationToken,
20
+ fileName: args.filename,
21
+ data: args.buffer,
22
+ contentType: args.mimeType,
23
+ });
24
+ return {
25
+ filename: args.filename,
26
+ filesize: args.buffer.length,
27
+ mimeType: args.mimeType,
28
+ url: this.getURL({ filename: args.filename }),
29
+ provider_metadata: uploadResponse.data,
30
+ };
31
+ }
32
+ async delete(args) {
33
+ await this.b2.authorize();
34
+ const fileList = await this.b2.listFileNames({
35
+ bucketId: this.config.bucketId,
36
+ startFileName: args.filename,
37
+ maxFileCount: 1,
38
+ delimiter: '',
39
+ prefix: '',
40
+ });
41
+ const file = fileList.data.files[0];
42
+ if (file && file.fileName === args.filename) {
43
+ await this.b2.deleteFileVersion({
44
+ fileId: file.fileId,
45
+ fileName: file.fileName,
46
+ });
47
+ }
48
+ }
49
+ getURL(args) {
50
+ if (this.config.baseUrl) {
51
+ return `${this.config.baseUrl}/${args.filename}`;
52
+ }
53
+ return `https://f000.backblazeb2.com/file/${this.config.bucketName}/${args.filename}`;
54
+ }
55
+ }
56
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,cAAc,CAAC;AAU9B,MAAM,OAAO,gBAAgB;IAGP;IAFZ,EAAE,CAAK;IAEf,YAAoB,MAAuB;QAAvB,WAAM,GAAN,MAAM,CAAiB;QACzC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;YACf,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,cAAc,EAAE,MAAM,CAAC,cAAc;SACtC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAA4D;QACvE,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;QAE1B,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;YACnD,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;SAC/B,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,MAAO,IAAI,CAAC,EAAU,CAAC,UAAU,CAAC;YACvD,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,SAAS;YAC3C,eAAe,EAAE,iBAAiB,CAAC,IAAI,CAAC,kBAAkB;YAC1D,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,WAAW,EAAE,IAAI,CAAC,QAAQ;SAC3B,CAAC,CAAC;QAEH,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;YAC7C,iBAAiB,EAAE,cAAc,CAAC,IAAI;SACvC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAA0B;QACrC,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;QAE1B,MAAM,QAAQ,GAAG,MAAO,IAAI,CAAC,EAAU,CAAC,aAAa,CAAC;YACpD,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,aAAa,EAAE,IAAI,CAAC,QAAQ;YAC5B,YAAY,EAAE,CAAC;YACf,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,EAAE;SACX,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5C,MAAM,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC;gBAC9B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC;QACL,CAAC;IACH,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,qCAAqC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;IACxF,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "@dyrected/storage-b2",
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
+ "backblaze-b2": "^1.7.0",
12
+ "@dyrected/core": "0.0.1"
13
+ },
14
+ "devDependencies": {
15
+ "@types/backblaze-b2": "^1.5.6",
16
+ "@types/node": "^20.12.12",
17
+ "typescript": "^5.4.5"
18
+ },
19
+ "scripts": {
20
+ "build": "tsc",
21
+ "dev": "tsc --watch"
22
+ }
23
+ }