@super-protocol/sdk-js 0.15.0 → 0.15.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/build/TIIGenerator.js +129 -239
- package/build/connectors/BaseConnector.js +17 -47
- package/build/connectors/BlockchainConnector.js +222 -348
- package/build/connectors/BlockchainEventsListener.js +38 -92
- package/build/contracts/app.json +466 -35
- package/build/crypto/Crypto.js +63 -135
- package/build/crypto/index.js +1 -1
- package/build/crypto/nodejs/AES.js +62 -119
- package/build/crypto/nodejs/ARIA.js +61 -118
- package/build/crypto/nodejs/ECIES.js +51 -87
- package/build/crypto/nodejs/NativeCrypto.js +64 -118
- package/build/crypto/nodejs/RSA-Hybrid.js +54 -113
- package/build/index.d.ts +5 -0
- package/build/index.js +14 -2
- package/build/logger.d.ts +3 -1
- package/build/logger.js +2 -2
- package/build/models/EtlModel.js +65 -114
- package/build/models/Offer.js +227 -462
- package/build/models/Order.d.ts +4 -0
- package/build/models/Order.js +326 -559
- package/build/models/Provider.d.ts +2 -0
- package/build/models/Provider.js +74 -153
- package/build/models/TCB.js +67 -171
- package/build/models/TeeOffer.d.ts +1 -0
- package/build/models/TeeOffer.js +389 -731
- package/build/proto/Compression.js +20 -21
- package/build/proto/TRI.js +46 -50
- package/build/proto/TeeProperties.js +60 -66
- package/build/providers/storage/ChunksDownloadDecorator.js +125 -235
- package/build/providers/storage/S3StorageProvider.js +173 -298
- package/build/providers/storage/StorageAdapter.d.ts +60 -0
- package/build/providers/storage/StorageAdapter.js +317 -0
- package/build/providers/storage/StorageContentWriter.d.ts +39 -0
- package/build/providers/storage/StorageContentWriter.js +181 -0
- package/build/providers/storage/StorageKeyValueAdapter.d.ts +20 -0
- package/build/providers/storage/StorageKeyValueAdapter.js +152 -0
- package/build/providers/storage/StorageMetadataReader.d.ts +19 -0
- package/build/providers/storage/StorageMetadataReader.js +65 -0
- package/build/providers/storage/StorjAdapter.d.ts +19 -0
- package/build/providers/storage/StorjAdapter.js +62 -0
- package/build/providers/storage/StorjStorageProvider.js +138 -315
- package/build/providers/storage/getStorageProvider.js +7 -7
- package/build/providers/storage/types.d.ts +7 -0
- package/build/providers/storage/types.js +2 -0
- package/build/staticModels/ActiveOffers.js +32 -100
- package/build/staticModels/ActiveOrders.js +42 -120
- package/build/staticModels/BaseStaticModel.js +7 -10
- package/build/staticModels/Consensus.d.ts +4 -1
- package/build/staticModels/Consensus.js +164 -220
- package/build/staticModels/Deposits.js +109 -201
- package/build/staticModels/Marks.js +21 -82
- package/build/staticModels/ModelPackager.js +34 -84
- package/build/staticModels/Offers.js +140 -266
- package/build/staticModels/Orders.d.ts +1 -0
- package/build/staticModels/Orders.js +286 -429
- package/build/staticModels/ProviderRegistry.js +114 -225
- package/build/staticModels/Superpro.js +17 -63
- package/build/staticModels/SuperproToken.js +90 -169
- package/build/staticModels/TeeOffers.js +220 -416
- package/build/store.js +2 -2
- package/build/types/HardwareInfo.js +2 -2
- package/build/types/Order.js +4 -4
- package/build/types/Provider.js +1 -1
- package/build/types/TeeOfferInfo.js +1 -1
- package/build/types/TeeOfferOption.js +2 -2
- package/build/types/TeeOfferSlot.js +2 -2
- package/build/types/ValueOfferSlot.js +3 -3
- package/build/utils/Monitoring.js +24 -28
- package/build/utils/NonceTracker.js +56 -121
- package/build/utils/PubSub.d.ts +9 -0
- package/build/utils/PubSub.js +36 -0
- package/build/utils/TxManager.js +121 -215
- package/build/utils/compressors/GzipCompressor.js +13 -50
- package/build/utils/compressors/UncompressedCompressor.js +10 -13
- package/build/utils/helpers/tryWithInterval.js +34 -78
- package/build/utils/resourceLoaders/BaseResourceLoader.js +26 -78
- package/build/utils/resourceLoaders/StorageProviderLoader.js +33 -97
- package/build/utils/resourceLoaders/UrlResourceLoader.js +29 -93
- package/build/utils/resourceLoaders/getResourceLoader.js +6 -6
- package/build/utils.js +60 -105
- package/package.json +4 -1
|
@@ -0,0 +1,152 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const stream_1 = require("stream");
|
|
16
|
+
const dto_js_1 = require("@super-protocol/dto-js");
|
|
17
|
+
const getStorageProvider_1 = __importDefault(require("./getStorageProvider"));
|
|
18
|
+
const logger_1 = __importDefault(require("../../logger"));
|
|
19
|
+
const Crypto_1 = __importDefault(require("../../crypto/Crypto"));
|
|
20
|
+
class StorageKeyValueAdapter {
|
|
21
|
+
constructor(storageAccess) {
|
|
22
|
+
if (!(storageAccess === null || storageAccess === void 0 ? void 0 : storageAccess.credentials))
|
|
23
|
+
throw new Error("Credentials is empty");
|
|
24
|
+
this.logger = logger_1.default.child({ class: StorageKeyValueAdapter.name });
|
|
25
|
+
this.storageProvider = (0, getStorageProvider_1.default)(storageAccess);
|
|
26
|
+
}
|
|
27
|
+
decrypt(encryption, key) {
|
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
if (!encryption)
|
|
30
|
+
return null;
|
|
31
|
+
if (!key)
|
|
32
|
+
throw new Error("Key cannot be empty!");
|
|
33
|
+
encryption.key = key;
|
|
34
|
+
return JSON.parse(yield Crypto_1.default.decrypt(encryption));
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
encrypt(data, key) {
|
|
38
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
if (data === undefined)
|
|
40
|
+
throw new Error("Data cannot be empty!");
|
|
41
|
+
if (!key)
|
|
42
|
+
throw new Error("Private cannot be empty!");
|
|
43
|
+
return Crypto_1.default.encrypt(JSON.stringify(data), {
|
|
44
|
+
algo: dto_js_1.CryptoAlgorithm.AES,
|
|
45
|
+
encoding: dto_js_1.Encoding.base64,
|
|
46
|
+
key,
|
|
47
|
+
cipher: dto_js_1.Cipher.AES_256_GCM,
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
downloadFromStorage(filepath) {
|
|
52
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
53
|
+
const downloadStream = yield this.storageProvider.downloadFile(filepath, {});
|
|
54
|
+
return this.streamToString(downloadStream);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
streamToString(stream) {
|
|
58
|
+
const chunks = [];
|
|
59
|
+
return new Promise((resolve, reject) => {
|
|
60
|
+
stream.on("data", (chunk) => {
|
|
61
|
+
chunks.push(Buffer.from(chunk));
|
|
62
|
+
});
|
|
63
|
+
stream.on("error", (err) => reject(err));
|
|
64
|
+
stream.on("end", () => resolve(Buffer.concat(chunks).toString("utf8")));
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
storageUpload(key, value, privateKey) {
|
|
68
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
69
|
+
try {
|
|
70
|
+
const encryptedValue = yield this.encrypt(value, privateKey);
|
|
71
|
+
const buffer = Buffer.from(JSON.stringify(encryptedValue));
|
|
72
|
+
yield this.storageProvider.uploadFile(stream_1.Readable.from(buffer), key, buffer.byteLength);
|
|
73
|
+
this.logger.info({ data: key }, "Success uploading to storage");
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
this.logger.error({ err }, "Error uploading to storage");
|
|
77
|
+
throw err;
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
storageDelete(key) {
|
|
82
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
83
|
+
try {
|
|
84
|
+
yield this.storageProvider.deleteObject(key);
|
|
85
|
+
this.logger.info({ data: key }, "Success deleting from storage");
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
this.logger.info({ err }, "Error deleting from storage");
|
|
89
|
+
throw err;
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
storageDownload(key, privateKey) {
|
|
94
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
95
|
+
try {
|
|
96
|
+
const downloaded = yield this.downloadFromStorage(key);
|
|
97
|
+
this.logger.info({ key }, "Success download data from storage");
|
|
98
|
+
if (!downloaded)
|
|
99
|
+
return null;
|
|
100
|
+
const decryptedValue = yield this.decrypt(JSON.parse(downloaded), privateKey);
|
|
101
|
+
return decryptedValue;
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
this.logger.info({
|
|
105
|
+
err,
|
|
106
|
+
key,
|
|
107
|
+
}, "Error download data from storage");
|
|
108
|
+
throw err;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
storageListFiles(key) {
|
|
113
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
114
|
+
try {
|
|
115
|
+
const listObjects = yield this.storageProvider.listObjects(key);
|
|
116
|
+
this.logger.trace({
|
|
117
|
+
data: listObjects,
|
|
118
|
+
key,
|
|
119
|
+
}, "Success list objects from storage");
|
|
120
|
+
return listObjects.filter((obj) => !obj.isFolder);
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
this.logger.info({
|
|
124
|
+
err,
|
|
125
|
+
key,
|
|
126
|
+
}, "Error list objects from storage");
|
|
127
|
+
throw err;
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
set(key, value, privateKey) {
|
|
132
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
133
|
+
return this.storageUpload(key, value, privateKey);
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
delete(key) {
|
|
137
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
138
|
+
return this.storageDelete(key);
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
get(key, privateKey) {
|
|
142
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
143
|
+
return this.storageDownload(key, privateKey);
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
listFiles(key) {
|
|
147
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
148
|
+
return this.storageListFiles(key);
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
exports.default = StorageKeyValueAdapter;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import StorageObject from "../../types/storage/StorageObject";
|
|
2
|
+
import { CacheRecord } from "./types";
|
|
3
|
+
import StorageKeyValueAdapter from "./StorageKeyValueAdapter";
|
|
4
|
+
export interface InstancesUpdates {
|
|
5
|
+
updated: Map<string, StorageObject>;
|
|
6
|
+
deleted: Set<string>;
|
|
7
|
+
}
|
|
8
|
+
export interface StorageMetadataReaderConfig<V extends object> {
|
|
9
|
+
storageKeyValueAdapter: StorageKeyValueAdapter<V>;
|
|
10
|
+
objectDeletedFlag: string;
|
|
11
|
+
}
|
|
12
|
+
export default class StorageMetadataReader<K extends string, V extends object> {
|
|
13
|
+
private readonly logger;
|
|
14
|
+
private readonly storageKeyValueAdapter;
|
|
15
|
+
private readonly objectDeletedFlag;
|
|
16
|
+
constructor(config: StorageMetadataReaderConfig<V>);
|
|
17
|
+
private listInstances;
|
|
18
|
+
fetchInstancesUpdates(key: K, currentInstances: Map<string, CacheRecord<V>>): Promise<InstancesUpdates>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const logger_1 = __importDefault(require("../../logger"));
|
|
16
|
+
class StorageMetadataReader {
|
|
17
|
+
constructor(config) {
|
|
18
|
+
this.logger = logger_1.default.child({ class: StorageMetadataReader.name });
|
|
19
|
+
this.storageKeyValueAdapter = config.storageKeyValueAdapter;
|
|
20
|
+
this.objectDeletedFlag = config.objectDeletedFlag;
|
|
21
|
+
}
|
|
22
|
+
listInstances(key) {
|
|
23
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
+
return this.storageKeyValueAdapter
|
|
25
|
+
.listFiles(`${key}/`)
|
|
26
|
+
.then((objects) => new Map(objects.map((obj) => { var _a; return [((_a = obj.name.split("/")) === null || _a === void 0 ? void 0 : _a.pop()) || obj.name, obj]; })));
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
fetchInstancesUpdates(key, currentInstances) {
|
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
const result = {
|
|
32
|
+
updated: new Map(),
|
|
33
|
+
deleted: new Set(),
|
|
34
|
+
};
|
|
35
|
+
try {
|
|
36
|
+
const directoryInstances = yield this.listInstances(key);
|
|
37
|
+
if (directoryInstances.has(this.objectDeletedFlag)) {
|
|
38
|
+
result.deleted.add(key);
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
directoryInstances.forEach((instance, instanceId) => {
|
|
42
|
+
const currentInstance = currentInstances.get(instanceId);
|
|
43
|
+
if (!currentInstance || currentInstance.modifiedTs < instance.createdAt.getTime()) {
|
|
44
|
+
result.updated.set(instanceId, instance);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
currentInstances.forEach((_, instanceId) => {
|
|
48
|
+
if (!directoryInstances.has(instanceId)) {
|
|
49
|
+
result.deleted.add(instanceId);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
this.logger.trace({
|
|
53
|
+
updated: result.updated.size,
|
|
54
|
+
deleted: result.deleted.size,
|
|
55
|
+
}, "Check result");
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
this.logger.error({ error }, "Error fetching remote copy");
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.default = StorageMetadataReader;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import StorageAccess from "../../types/storage/StorageAccess";
|
|
3
|
+
import { StorageAdapterConfig, CacheEvents } from "./StorageAdapter";
|
|
4
|
+
export type StorjConfig = StorageAdapterConfig;
|
|
5
|
+
export default class StorjAdapter<V extends object> {
|
|
6
|
+
private storageAdapter;
|
|
7
|
+
private readonly logger;
|
|
8
|
+
constructor(storageAccess: StorageAccess, config: StorjConfig);
|
|
9
|
+
subscribe(cb: (props: {
|
|
10
|
+
type: CacheEvents;
|
|
11
|
+
message: unknown;
|
|
12
|
+
}) => void): Promise<() => Promise<void>>;
|
|
13
|
+
get(key: string, encryptionKey: Buffer): Promise<(V | null)[] | null>;
|
|
14
|
+
has(key: string): Promise<boolean>;
|
|
15
|
+
set(key: string, value: V, encryptionKey: Buffer): Promise<void>;
|
|
16
|
+
del(key: string): Promise<void>;
|
|
17
|
+
stop(): void;
|
|
18
|
+
shutdown(): Promise<void>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const logger_1 = __importDefault(require("../../logger"));
|
|
16
|
+
const StorageAdapter_1 = __importDefault(require("./StorageAdapter"));
|
|
17
|
+
class StorjAdapter {
|
|
18
|
+
constructor(storageAccess, config) {
|
|
19
|
+
this.logger = logger_1.default.child({ class: StorjAdapter.name });
|
|
20
|
+
this.storageAdapter = new StorageAdapter_1.default(storageAccess, config);
|
|
21
|
+
this.storageAdapter.run();
|
|
22
|
+
}
|
|
23
|
+
subscribe(cb) {
|
|
24
|
+
var _a;
|
|
25
|
+
return (_a = this.storageAdapter) === null || _a === void 0 ? void 0 : _a.subscribe(cb);
|
|
26
|
+
}
|
|
27
|
+
get(key, encryptionKey) {
|
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
return this.storageAdapter.get(key, encryptionKey).catch((err) => {
|
|
30
|
+
if (err.message.includes("object not found")) {
|
|
31
|
+
this.logger.info({ key }, "Object not found");
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
throw err;
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
has(key) {
|
|
39
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
40
|
+
return this.storageAdapter.has(key);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
set(key, value, encryptionKey) {
|
|
44
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
return this.storageAdapter.set(key, value, encryptionKey);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
del(key) {
|
|
49
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
return this.storageAdapter.delete(key);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
stop() {
|
|
54
|
+
this.storageAdapter.stop();
|
|
55
|
+
}
|
|
56
|
+
shutdown() {
|
|
57
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
58
|
+
yield this.storageAdapter.shutdown();
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.default = StorjAdapter;
|