@super-protocol/sdk-js 0.13.6-beta.1 → 0.13.6-beta.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/build/index.d.ts
CHANGED
|
@@ -59,4 +59,5 @@ export { default as StorageObject } from "./types/storage/StorageObject";
|
|
|
59
59
|
export { default as StorageAccess } from "./types/storage/StorageAccess";
|
|
60
60
|
export { default as getStorageProvider } from "./providers/storage/getStorageProvider";
|
|
61
61
|
export { default as IStorageProvider } from "./providers/storage/IStorageProvider";
|
|
62
|
+
export * from "./providers/storage/StorjS3StorageProvider";
|
|
62
63
|
export * as helpers from "./utils/helpers";
|
package/build/index.js
CHANGED
|
@@ -106,4 +106,5 @@ __exportStar(require("./types/Origins"), exports);
|
|
|
106
106
|
exports.ChunkedStorageProvider = __importStar(require("./providers/storage/ChunksDownloadDecorator"));
|
|
107
107
|
var getStorageProvider_1 = require("./providers/storage/getStorageProvider");
|
|
108
108
|
Object.defineProperty(exports, "getStorageProvider", { enumerable: true, get: function () { return __importDefault(getStorageProvider_1).default; } });
|
|
109
|
+
__exportStar(require("./providers/storage/StorjS3StorageProvider"), exports);
|
|
109
110
|
exports.helpers = __importStar(require("./utils/helpers"));
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { S3 } from "aws-sdk";
|
|
3
|
+
export interface ObjectMetadata {
|
|
4
|
+
name: string;
|
|
5
|
+
size: number;
|
|
6
|
+
createdAt: Date;
|
|
7
|
+
}
|
|
8
|
+
export type S3ClientConfig = {
|
|
9
|
+
accessKeyId: string;
|
|
10
|
+
secretAccessKey: string;
|
|
11
|
+
endpoint: string;
|
|
12
|
+
bucket: string;
|
|
13
|
+
};
|
|
14
|
+
export declare class StorjS3StorageProvider {
|
|
15
|
+
private readonly s3Client;
|
|
16
|
+
private readonly bucket;
|
|
17
|
+
constructor(storageAccess: S3ClientConfig);
|
|
18
|
+
private storageUpload;
|
|
19
|
+
private storageDelete;
|
|
20
|
+
private storageDownload;
|
|
21
|
+
private storageListFiles;
|
|
22
|
+
uploadFile(key: string, value: Buffer): Promise<void>;
|
|
23
|
+
deleteFile(key: string): Promise<void>;
|
|
24
|
+
downloadFile(key: string): Promise<S3.Body>;
|
|
25
|
+
listObjects(key: string): Promise<ObjectMetadata[]>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.StorjS3StorageProvider = void 0;
|
|
40
|
+
var aws_sdk_1 = require("aws-sdk");
|
|
41
|
+
// TODO add streams support https://superprotocol.atlassian.net/browse/SP-3203
|
|
42
|
+
var StorjS3StorageProvider = /** @class */ (function () {
|
|
43
|
+
function StorjS3StorageProvider(storageAccess) {
|
|
44
|
+
var accessKeyId = storageAccess.accessKeyId, secretAccessKey = storageAccess.secretAccessKey, endpoint = storageAccess.endpoint, bucket = storageAccess.bucket;
|
|
45
|
+
if (!accessKeyId)
|
|
46
|
+
throw new Error("Access key id is undefined");
|
|
47
|
+
if (!secretAccessKey)
|
|
48
|
+
throw new Error("Secret access is undefined");
|
|
49
|
+
if (!endpoint)
|
|
50
|
+
throw new Error("Endpoint is undefined");
|
|
51
|
+
if (!bucket)
|
|
52
|
+
throw new Error("Bucket is undefined");
|
|
53
|
+
this.bucket = bucket;
|
|
54
|
+
this.s3Client = new aws_sdk_1.S3({
|
|
55
|
+
credentials: {
|
|
56
|
+
accessKeyId: accessKeyId,
|
|
57
|
+
secretAccessKey: secretAccessKey,
|
|
58
|
+
},
|
|
59
|
+
endpoint: endpoint,
|
|
60
|
+
s3ForcePathStyle: true,
|
|
61
|
+
signatureVersion: "v4",
|
|
62
|
+
httpOptions: { timeout: 0 },
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
StorjS3StorageProvider.prototype.storageUpload = function (remotePath, value) {
|
|
66
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
67
|
+
var result;
|
|
68
|
+
return __generator(this, function (_a) {
|
|
69
|
+
switch (_a.label) {
|
|
70
|
+
case 0: return [4 /*yield*/, this.s3Client
|
|
71
|
+
.putObject({
|
|
72
|
+
ACL: "public-read",
|
|
73
|
+
Body: value,
|
|
74
|
+
Bucket: this.bucket,
|
|
75
|
+
Key: remotePath,
|
|
76
|
+
})
|
|
77
|
+
.promise()];
|
|
78
|
+
case 1:
|
|
79
|
+
result = _a.sent();
|
|
80
|
+
if (result.$response.error) {
|
|
81
|
+
throw result.$response.error;
|
|
82
|
+
}
|
|
83
|
+
return [2 /*return*/];
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
StorjS3StorageProvider.prototype.storageDelete = function (key) {
|
|
89
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
90
|
+
var deleteResult;
|
|
91
|
+
return __generator(this, function (_a) {
|
|
92
|
+
switch (_a.label) {
|
|
93
|
+
case 0: return [4 /*yield*/, this.s3Client
|
|
94
|
+
.deleteObject({
|
|
95
|
+
Bucket: this.bucket,
|
|
96
|
+
Key: key,
|
|
97
|
+
})
|
|
98
|
+
.promise()];
|
|
99
|
+
case 1:
|
|
100
|
+
deleteResult = _a.sent();
|
|
101
|
+
if (deleteResult.$response.error) {
|
|
102
|
+
throw deleteResult.$response.error;
|
|
103
|
+
}
|
|
104
|
+
return [2 /*return*/];
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
};
|
|
109
|
+
StorjS3StorageProvider.prototype.storageDownload = function (filepath) {
|
|
110
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
111
|
+
var downloadStream;
|
|
112
|
+
return __generator(this, function (_a) {
|
|
113
|
+
switch (_a.label) {
|
|
114
|
+
case 0: return [4 /*yield*/, this.s3Client
|
|
115
|
+
.getObject({
|
|
116
|
+
Bucket: this.bucket,
|
|
117
|
+
Key: filepath,
|
|
118
|
+
})
|
|
119
|
+
.promise()];
|
|
120
|
+
case 1:
|
|
121
|
+
downloadStream = _a.sent();
|
|
122
|
+
if (downloadStream.$response.error) {
|
|
123
|
+
throw downloadStream.$response.error;
|
|
124
|
+
}
|
|
125
|
+
return [2 /*return*/, downloadStream.Body || Buffer.from([])];
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
StorjS3StorageProvider.prototype.storageListFiles = function (key) {
|
|
131
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
132
|
+
var prefix, listObjects, result;
|
|
133
|
+
return __generator(this, function (_a) {
|
|
134
|
+
switch (_a.label) {
|
|
135
|
+
case 0:
|
|
136
|
+
prefix = key.endsWith("/") ? key : "".concat(key, "/");
|
|
137
|
+
return [4 /*yield*/, this.s3Client
|
|
138
|
+
.listObjectsV2({
|
|
139
|
+
Bucket: this.bucket,
|
|
140
|
+
Prefix: prefix,
|
|
141
|
+
})
|
|
142
|
+
.promise()];
|
|
143
|
+
case 1:
|
|
144
|
+
listObjects = _a.sent();
|
|
145
|
+
result = [];
|
|
146
|
+
if (listObjects.Contents) {
|
|
147
|
+
result = listObjects.Contents.map(function (object) { return ({
|
|
148
|
+
name: object.Key || "",
|
|
149
|
+
createdAt: object.LastModified || new Date(),
|
|
150
|
+
size: object.Size || 0,
|
|
151
|
+
}); });
|
|
152
|
+
}
|
|
153
|
+
return [2 /*return*/, result];
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
};
|
|
158
|
+
StorjS3StorageProvider.prototype.uploadFile = function (key, value) {
|
|
159
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
160
|
+
return __generator(this, function (_a) {
|
|
161
|
+
return [2 /*return*/, this.storageUpload(key, value)];
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
};
|
|
165
|
+
StorjS3StorageProvider.prototype.deleteFile = function (key) {
|
|
166
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
167
|
+
return __generator(this, function (_a) {
|
|
168
|
+
return [2 /*return*/, this.storageDelete(key)];
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
};
|
|
172
|
+
StorjS3StorageProvider.prototype.downloadFile = function (key) {
|
|
173
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
174
|
+
return __generator(this, function (_a) {
|
|
175
|
+
return [2 /*return*/, this.storageDownload(key)];
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
};
|
|
179
|
+
StorjS3StorageProvider.prototype.listObjects = function (key) {
|
|
180
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
181
|
+
return __generator(this, function (_a) {
|
|
182
|
+
return [2 /*return*/, this.storageListFiles(key)];
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
};
|
|
186
|
+
return StorjS3StorageProvider;
|
|
187
|
+
}());
|
|
188
|
+
exports.StorjS3StorageProvider = StorjS3StorageProvider;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@super-protocol/sdk-js",
|
|
3
|
-
"version": "0.13.6-beta.
|
|
3
|
+
"version": "0.13.6-beta.2",
|
|
4
4
|
"main": "build/index.js",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"files": [
|
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
"@super-protocol/dto-js": "0.0.24",
|
|
56
56
|
"@super-protocol/tee-lib": "^0.1.2",
|
|
57
57
|
"@super-protocol/uplink-nodejs": "1.2.16",
|
|
58
|
+
"aws-sdk": "^2.1418.0",
|
|
58
59
|
"ethers": "^5.5.3",
|
|
59
60
|
"hybrid-crypto-js": "^0.2.4",
|
|
60
61
|
"lodash": "^4.17.21",
|