@super-protocol/sdk-js 2.2.0-beta.67 → 2.2.0-beta.69
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/dist/cjs/config.d.ts +0 -1
- package/dist/cjs/config.js +1 -2
- package/dist/cjs/constants.d.ts +2 -0
- package/dist/cjs/constants.js +3 -2
- package/dist/cjs/errors/index.d.ts +4 -0
- package/dist/cjs/errors/index.js +21 -0
- package/dist/cjs/errors/not-found.error.d.ts +3 -0
- package/dist/cjs/errors/not-found.error.js +8 -0
- package/dist/cjs/errors/utils.d.ts +1 -0
- package/dist/cjs/errors/utils.js +22 -0
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/providers/storage/StorageAdapter.d.ts +9 -7
- package/dist/cjs/providers/storage/StorageAdapter.js +27 -29
- package/dist/cjs/providers/storage/StorageContentWriter.d.ts +2 -2
- package/dist/cjs/providers/storage/StorageContentWriter.js +5 -5
- package/dist/cjs/providers/storage/StorageKeyValueAdapter.d.ts +8 -5
- package/dist/cjs/providers/storage/StorageKeyValueAdapter.js +30 -16
- package/dist/cjs/providers/storage/StorjAdapter.d.ts +3 -3
- package/dist/cjs/providers/storage/StorjAdapter.js +15 -9
- package/dist/cjs/providers/storage/fs-storage-provider.d.ts +19 -0
- package/dist/cjs/providers/storage/fs-storage-provider.js +139 -0
- package/dist/cjs/providers/storage/getStorageProvider.js +4 -1
- package/dist/cjs/providers/storage/types.d.ts +22 -0
- package/dist/cjs/tee/TeeBlockVerifier.js +3 -2
- package/dist/mjs/config.d.ts +0 -1
- package/dist/mjs/config.js +1 -2
- package/dist/mjs/constants.d.ts +2 -0
- package/dist/mjs/constants.js +2 -1
- package/dist/mjs/errors/index.d.ts +4 -0
- package/dist/mjs/errors/index.js +16 -0
- package/dist/mjs/errors/not-found.error.d.ts +3 -0
- package/dist/mjs/errors/not-found.error.js +4 -0
- package/dist/mjs/errors/utils.d.ts +1 -0
- package/dist/mjs/errors/utils.js +18 -0
- package/dist/mjs/index.d.ts +2 -0
- package/dist/mjs/index.js +2 -1
- package/dist/mjs/providers/storage/StorageAdapter.d.ts +9 -7
- package/dist/mjs/providers/storage/StorageAdapter.js +27 -29
- package/dist/mjs/providers/storage/StorageContentWriter.d.ts +2 -2
- package/dist/mjs/providers/storage/StorageContentWriter.js +5 -5
- package/dist/mjs/providers/storage/StorageKeyValueAdapter.d.ts +8 -5
- package/dist/mjs/providers/storage/StorageKeyValueAdapter.js +30 -16
- package/dist/mjs/providers/storage/StorjAdapter.d.ts +3 -3
- package/dist/mjs/providers/storage/StorjAdapter.js +15 -9
- package/dist/mjs/providers/storage/fs-storage-provider.d.ts +19 -0
- package/dist/mjs/providers/storage/fs-storage-provider.js +112 -0
- package/dist/mjs/providers/storage/getStorageProvider.js +4 -1
- package/dist/mjs/providers/storage/types.d.ts +22 -0
- package/dist/mjs/tee/TeeBlockVerifier.js +3 -2
- package/package.json +2 -2
package/dist/cjs/config.d.ts
CHANGED
package/dist/cjs/config.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.config = void 0;
|
|
4
4
|
exports.config = {
|
|
5
|
-
TEE_LOADER_TRUSTED_MRSIGNER: '4a5cb479b8a30fa3821b88aa29bad04788ea006a9e09925bf3ec36398fc9d64b',
|
|
6
5
|
TLB_CACHE_SIZE: 100,
|
|
7
6
|
};
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLE1BQU0sR0FBRztJQUNwQixjQUFjLEVBQUUsR0FBRztDQUNwQixDQUFDIn0=
|
package/dist/cjs/constants.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import { Hash } from '@super-protocol/dto-js';
|
|
2
3
|
export declare const defaultBlockchainUrl = "http://127.0.0.1:8545";
|
|
3
4
|
export declare const defaultGasLimit: bigint;
|
|
@@ -17,3 +18,4 @@ export declare const POLYGON_AMOY_CHAIN_ID = 80002;
|
|
|
17
18
|
export declare const AMOY_TX_COST_LIMIT: bigint;
|
|
18
19
|
export declare const AMOY_TX_GAS_LIMIT: bigint;
|
|
19
20
|
export declare const ZERO_HASH: Hash;
|
|
21
|
+
export declare const TEE_LOADER_TRUSTED_MRSIGNER: Buffer;
|
package/dist/cjs/constants.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ZERO_HASH = exports.AMOY_TX_GAS_LIMIT = exports.AMOY_TX_COST_LIMIT = exports.POLYGON_AMOY_CHAIN_ID = exports.POLYGON_MAIN_CHAIN_ID = exports.BLOCKCHAIN_BATCH_REQUEST_TIMEOUT = exports.BLOCKCHAIN_CALL_RETRY_INTERVAL = exports.BLOCKCHAIN_CALL_RETRY_ATTEMPTS = exports.POLYGON_MATIC_EVENT_PATH = exports.BLOCK_SIZE_TO_FETCH_TRANSACTION = exports.ONE_DAY = exports.txIntervalMs = exports.txConcurrency = exports.defaultGasLimitMultiplier = exports.defaultGasPriceMultiplier = exports.defaultGasPrice = exports.defaultGasLimit = exports.defaultBlockchainUrl = void 0;
|
|
3
|
+
exports.TEE_LOADER_TRUSTED_MRSIGNER = exports.ZERO_HASH = exports.AMOY_TX_GAS_LIMIT = exports.AMOY_TX_COST_LIMIT = exports.POLYGON_AMOY_CHAIN_ID = exports.POLYGON_MAIN_CHAIN_ID = exports.BLOCKCHAIN_BATCH_REQUEST_TIMEOUT = exports.BLOCKCHAIN_CALL_RETRY_INTERVAL = exports.BLOCKCHAIN_CALL_RETRY_ATTEMPTS = exports.POLYGON_MATIC_EVENT_PATH = exports.BLOCK_SIZE_TO_FETCH_TRANSACTION = exports.ONE_DAY = exports.txIntervalMs = exports.txConcurrency = exports.defaultGasLimitMultiplier = exports.defaultGasPriceMultiplier = exports.defaultGasPrice = exports.defaultGasLimit = exports.defaultBlockchainUrl = void 0;
|
|
4
4
|
const dto_js_1 = require("@super-protocol/dto-js");
|
|
5
5
|
exports.defaultBlockchainUrl = 'http://127.0.0.1:8545';
|
|
6
6
|
exports.defaultGasLimit = BigInt(7000000);
|
|
@@ -24,4 +24,5 @@ exports.ZERO_HASH = {
|
|
|
24
24
|
algo: dto_js_1.HashAlgorithm.SHA256,
|
|
25
25
|
encoding: dto_js_1.Encoding.base64,
|
|
26
26
|
};
|
|
27
|
-
|
|
27
|
+
exports.TEE_LOADER_TRUSTED_MRSIGNER = Buffer.from('4a5cb479b8a30fa3821b88aa29bad04788ea006a9e09925bf3ec36398fc9d64b', 'hex');
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBdUU7QUFFMUQsUUFBQSxvQkFBb0IsR0FBRyx1QkFBdUIsQ0FBQztBQUMvQyxRQUFBLGVBQWUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbEMsUUFBQSxlQUFlLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3JDLFFBQUEseUJBQXlCLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLFFBQUEseUJBQXlCLEdBQUcsR0FBRyxDQUFDO0FBQ2hDLFFBQUEsYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUNuQixRQUFBLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDbEIsUUFBQSxPQUFPLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDdkIsUUFBQSwrQkFBK0IsR0FBRyxHQUFHLENBQUM7QUFDdEMsUUFBQSx3QkFBd0IsR0FBRyw0Q0FBNEMsQ0FBQztBQUN4RSxRQUFBLDhCQUE4QixHQUFHLEVBQUUsQ0FBQztBQUNwQyxRQUFBLDhCQUE4QixHQUFHLElBQUksQ0FBQztBQUN0QyxRQUFBLGdDQUFnQyxHQUFHLEtBQUssQ0FBQztBQUN6QyxRQUFBLHFCQUFxQixHQUFHLEdBQUcsQ0FBQztBQUM1QixRQUFBLHFCQUFxQixHQUFHLEtBQUssQ0FBQztBQUM5QixRQUFBLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBQ2xELFFBQUEsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3RDLFFBQUEsU0FBUyxHQUFTO0lBQzdCLElBQUksRUFBRSxrRUFBa0U7SUFDeEUsSUFBSSxFQUFFLHNCQUFhLENBQUMsTUFBTTtJQUMxQixRQUFRLEVBQUUsaUJBQVEsQ0FBQyxNQUFNO0NBQzFCLENBQUM7QUFDVyxRQUFBLDJCQUEyQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQ3BELGtFQUFrRSxFQUNsRSxLQUFLLENBQ04sQ0FBQyJ9
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NotFoundError = exports.BaseError = void 0;
|
|
4
|
+
const utils_js_1 = require("./utils.js");
|
|
5
|
+
class BaseError extends Error {
|
|
6
|
+
constructor(error) {
|
|
7
|
+
const message = (0, utils_js_1.getErrorMessage)(error);
|
|
8
|
+
super(message);
|
|
9
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
10
|
+
if (Error.captureStackTrace) {
|
|
11
|
+
Error.captureStackTrace(this, this.constructor);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
throw new Error('captureStackTrace does not exist');
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.BaseError = BaseError;
|
|
19
|
+
var not_found_error_js_1 = require("./not-found.error.js");
|
|
20
|
+
Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: function () { return not_found_error_js_1.NotFoundError; } });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXJyb3JzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUE2QztBQUU3QyxNQUFhLFNBQVUsU0FBUSxLQUFLO0lBQ2xDLFlBQVksS0FBYztRQUN4QixNQUFNLE9BQU8sR0FBRyxJQUFBLDBCQUFlLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRCxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzVCLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xELENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFYRCw4QkFXQztBQUVELDJEQUFxRDtBQUE1QyxtSEFBQSxhQUFhLE9BQUEifQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NotFoundError = void 0;
|
|
4
|
+
const index_js_1 = require("./index.js");
|
|
5
|
+
class NotFoundError extends index_js_1.BaseError {
|
|
6
|
+
}
|
|
7
|
+
exports.NotFoundError = NotFoundError;
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90LWZvdW5kLmVycm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Vycm9ycy9ub3QtZm91bmQuZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXVDO0FBRXZDLE1BQWEsYUFBYyxTQUFRLG9CQUFTO0NBQUc7QUFBL0Msc0NBQStDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getErrorMessage: (error: unknown) => string;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getErrorMessage = void 0;
|
|
4
|
+
const lodash_1 = require("lodash");
|
|
5
|
+
const getErrorMessage = (error) => {
|
|
6
|
+
if (typeof error === 'string') {
|
|
7
|
+
return error;
|
|
8
|
+
}
|
|
9
|
+
const allowedErrorProperties = ['message', 'stack'];
|
|
10
|
+
if ((0, lodash_1.isObject)(error)) {
|
|
11
|
+
for (const field of allowedErrorProperties) {
|
|
12
|
+
const value = (0, lodash_1.get)(error, field);
|
|
13
|
+
if (typeof value === 'string') {
|
|
14
|
+
return value;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return (0, lodash_1.toString)(error);
|
|
18
|
+
}
|
|
19
|
+
return `Unknown error`;
|
|
20
|
+
};
|
|
21
|
+
exports.getErrorMessage = getErrorMessage;
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXJyb3JzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFpRDtBQUUxQyxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQWMsRUFBVSxFQUFFO0lBQ3hELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwRCxJQUFJLElBQUEsaUJBQVEsRUFBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3BCLEtBQUssTUFBTSxLQUFLLElBQUksc0JBQXNCLEVBQUUsQ0FBQztZQUMzQyxNQUFNLEtBQUssR0FBRyxJQUFBLFlBQUcsRUFBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDaEMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDOUIsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBQSxpQkFBUSxFQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDLENBQUM7QUFmVyxRQUFBLGVBQWUsbUJBZTFCIn0=
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -57,6 +57,7 @@ export * as ChunkedStorageProvider from './providers/storage/ChunksDownloadDecor
|
|
|
57
57
|
export { default as StorjAdapter, StorjConfig } from './providers/storage/StorjAdapter.js';
|
|
58
58
|
export { default as StorageMetadataReader, StorageMetadataReaderConfig, } from './providers/storage/StorageMetadataReader.js';
|
|
59
59
|
export { default as StorageKeyValueAdapter } from './providers/storage/StorageKeyValueAdapter.js';
|
|
60
|
+
export { IStorageKeyValueAdapter, IStorageAdapter } from './providers/storage/types.js';
|
|
60
61
|
export { default as StorageAdapter, CacheEvents, StorageAdapterConfig, } from './providers/storage/StorageAdapter.js';
|
|
61
62
|
export { default as StorageContentWriter, StorageContentWriterConfig, ContentWriterType, } from './providers/storage/StorageContentWriter.js';
|
|
62
63
|
export { default as StorageFileAccess } from './types/storage/StorageFileAccess.js';
|
|
@@ -83,3 +84,4 @@ export { default as BrowserEventProvider } from './analytics/eventProviders/Brow
|
|
|
83
84
|
export { default as AxiosTransport } from './analytics/transports/AxiosTransport.js';
|
|
84
85
|
export { default as FetchTransport } from './analytics/transports/FetchTransport.js';
|
|
85
86
|
export * from './utils/cache/index.js';
|
|
87
|
+
export * from './errors/index.js';
|
package/dist/cjs/index.js
CHANGED
|
@@ -161,4 +161,5 @@ Object.defineProperty(exports, "AxiosTransport", { enumerable: true, get: functi
|
|
|
161
161
|
var FetchTransport_js_1 = require("./analytics/transports/FetchTransport.js");
|
|
162
162
|
Object.defineProperty(exports, "FetchTransport", { enumerable: true, get: function () { return __importDefault(FetchTransport_js_1).default; } });
|
|
163
163
|
__exportStar(require("./utils/cache/index.js"), exports);
|
|
164
|
-
|
|
164
|
+
__exportStar(require("./errors/index.js"), exports);
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOEVBQXFGO0FBQTVFLDhJQUFBLE9BQU8sT0FBdUI7QUFFdkMsc0VBQW9EO0FBSXBELHdGQUErRjtBQUF0Rix3SkFBQSxPQUFPLE9BQTRCO0FBRTVDLDhDQUFzRDtBQUE3QyxtSEFBQSxPQUFPLE9BQVU7QUFDMUIsb0RBQWtDO0FBRWxDLHFEQUE0RDtBQUFuRCxnSUFBQSxPQUFPLE9BQWdCO0FBQ2hDLG9EQUFrQztBQUVsQyxtREFBMEQ7QUFBakQsOEhBQUEsT0FBTyxPQUFlO0FBQy9CLG9EQUFrQztBQUVsQyw0REFBbUU7QUFBMUQsMEhBQUEsT0FBTyxPQUFhO0FBQzdCLDhEQUE0QztBQUU1QyxzREFBNkQ7QUFBcEQsb0hBQUEsT0FBTyxPQUFVO0FBQzFCLDJEQUF5QztBQUV6QyxrRUFBeUU7QUFBaEUsZ0lBQUEsT0FBTyxPQUFnQjtBQUNoQyxpRUFBK0M7QUFFL0Msa0VBQXlFO0FBQWhFLGdJQUFBLE9BQU8sT0FBZ0I7QUFDaEMsaUVBQStDO0FBRS9DLHNEQUE2RDtBQUFwRCxvSEFBQSxPQUFPLE9BQVU7QUFDMUIsMkRBQXlDO0FBRXpDLDREQUFtRTtBQUExRCwwSEFBQSxPQUFPLE9BQWE7QUFDN0IsOERBQTRDO0FBRTVDLDBFQUFpRjtBQUF4RSx3SUFBQSxPQUFPLE9BQW9CO0FBQ3BDLHFFQUFtRDtBQUVuRCxvRUFBMkU7QUFBbEUsa0lBQUEsT0FBTyxPQUFpQjtBQUNqQyxrRUFBZ0Q7QUFFaEQsMERBQWlFO0FBQXhELHdIQUFBLE9BQU8sT0FBWTtBQUM1Qiw2REFBMkM7QUFFM0Msb0RBQTJEO0FBQWxELGtIQUFBLE9BQU8sT0FBUztBQUN6QiwwREFBd0M7QUFFeEMsMERBQWlFO0FBQXhELHdIQUFBLE9BQU8sT0FBWTtBQUM1Qiw2REFBMkM7QUFFM0Msc0VBQTZFO0FBQXBFLG9JQUFBLE9BQU8sT0FBa0I7QUFDbEMsbUVBQWlEO0FBRWpELHdGQUErRjtBQUF0RixzSkFBQSxPQUFPLE9BQTJCO0FBQzNDLDRFQUEwRDtBQUUxRCxzRUFBNkU7QUFBcEUsb0lBQUEsT0FBTyxPQUFrQjtBQUNsQyxtRUFBaUQ7QUFFakQsc0ZBQTZGO0FBQXBGLG9KQUFBLE9BQU8sT0FBMEI7QUFDMUMsMkVBQXlEO0FBRXpELG9GQUEyRjtBQUFsRixrSkFBQSxPQUFPLE9BQXlCO0FBQ3pDLDBFQUF3RDtBQUV4RCxzRUFBNkU7QUFBcEUsb0lBQUEsT0FBTyxPQUFrQjtBQUNsQyxtRUFBaUQ7QUFFakQsOENBQXFEO0FBQTVDLGtIQUFBLE9BQU8sT0FBUztBQUN6QixvREFBa0M7QUFFbEMsb0RBQTJEO0FBQWxELHdIQUFBLE9BQU8sT0FBWTtBQUM1Qix1REFBcUM7QUFFckMsb0RBQTJEO0FBQWxELHdIQUFBLE9BQU8sT0FBWTtBQUM1Qix1REFBcUM7QUFFckMsOENBQXFEO0FBQTVDLGtIQUFBLE9BQU8sT0FBUztBQUN6QixvREFBa0M7QUFFbEMsMENBQWlEO0FBQXhDLDhHQUFBLE9BQU8sT0FBTztBQUN2QixrREFBZ0M7QUFFaEMsbURBQWlDO0FBRWpDLHlHQUF5RjtBQUN6Rix1RUFBMkY7QUFBbEYsZ0lBQUEsT0FBTyxPQUFnQjtBQUNoQyx5RkFHc0Q7QUFGcEQsa0pBQUEsT0FBTyxPQUF5QjtBQUdsQywyRkFBa0c7QUFBekYsb0pBQUEsT0FBTyxPQUEwQjtBQUUxQywyRUFJK0M7QUFIN0Msb0lBQUEsT0FBTyxPQUFrQjtBQUN6QixnSEFBQSxXQUFXLE9BQUE7QUFHYix1RkFJcUQ7QUFIbkQsZ0pBQUEsT0FBTyxPQUF3QjtBQUUvQiw0SEFBQSxpQkFBaUIsT0FBQTtBQU1uQixtRkFBMEY7QUFBakYsNElBQUEsT0FBTyxPQUFzQjtBQUV0Qyw2RkFBeUY7QUFBaEYscUlBQUEsdUJBQXVCLE9BQUE7QUFDaEMsNkZBR3dEO0FBRnRELG9JQUFBLHNCQUFzQixPQUFBO0FBQ3RCLHFJQUFBLHVCQUF1QixPQUFBO0FBR3pCLG1FQUFpRDtBQUNqRCxvRUFBb0Q7QUFDcEQsNERBQTRDO0FBRTVDLHFEQUF5RTtBQUFoRSxpSUFBQSxpQ0FBaUMsT0FBQTtBQUUxQywwQkFBd0I7QUFFeEIsMkNBQTJDO0FBQWxDLHFHQUFBLFNBQVMsT0FBQTtBQUNsQix1REFBNkU7QUFBcEUsOEdBQUEsWUFBWSxPQUFBO0FBQUUsOEdBQUEsWUFBWSxPQUFBO0FBQUUsMkdBQUEsU0FBUyxPQUFBO0FBQzlDLDZEQUF5RDtBQUFoRCxtSEFBQSxjQUFjLE9BQUE7QUFDdkIsb0RBQWtDO0FBQ2xDLGlFQUE2RDtBQUFwRCx1SEFBQSxnQkFBZ0IsT0FBQTtBQUV6Qix1REFBcUM7QUFDckMseURBQWdFO0FBQXZELDBIQUFBLE9BQU8sT0FBYTtBQUM3Qix3RkFBK0Y7QUFBdEYsMElBQUEsT0FBTyxPQUFxQjtBQUNyQyw4RkFBcUc7QUFBNUYsZ0pBQUEsT0FBTyxPQUF3QjtBQUN4Qyw4RUFBcUY7QUFBNUUsb0lBQUEsT0FBTyxPQUFrQjtBQUNsQyw4RUFBcUY7QUFBNUUsb0lBQUEsT0FBTyxPQUFrQjtBQUNsQyx5REFBdUM7QUFDdkMsb0RBQWtDIn0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import StorageAccess from '../../types/storage/StorageAccess.js';
|
|
3
|
-
import { Performance } from './types.js';
|
|
3
|
+
import { IStorageAdapter, Performance } from './types.js';
|
|
4
4
|
export interface LRUCacheConfig {
|
|
5
5
|
max: number;
|
|
6
6
|
}
|
|
@@ -12,12 +12,14 @@ export interface StorageAdapterConfig {
|
|
|
12
12
|
readMetadataConcurrency?: number;
|
|
13
13
|
performance?: Performance;
|
|
14
14
|
showLogs?: boolean;
|
|
15
|
+
hasEncryption?: boolean;
|
|
16
|
+
instanceId?: string;
|
|
15
17
|
}
|
|
16
18
|
export declare enum CacheEvents {
|
|
17
19
|
INSTANCES_CHANGED = "INSTANCES_CHANGED",
|
|
18
20
|
KEY_DELETED = "KEY_DELETED"
|
|
19
21
|
}
|
|
20
|
-
export default class StorageAdapter<V extends object> {
|
|
22
|
+
export default class StorageAdapter<V extends object> implements IStorageAdapter<V> {
|
|
21
23
|
private readonly logger?;
|
|
22
24
|
private readonly storageKeyValueAdapter;
|
|
23
25
|
private readonly cache;
|
|
@@ -38,14 +40,14 @@ export default class StorageAdapter<V extends object> {
|
|
|
38
40
|
subscribe(cb: (props: {
|
|
39
41
|
type: CacheEvents;
|
|
40
42
|
message: unknown;
|
|
41
|
-
}) => void):
|
|
43
|
+
}) => void): () => void;
|
|
42
44
|
private publish;
|
|
43
45
|
has(key: string): Promise<boolean>;
|
|
44
|
-
private
|
|
45
|
-
set(key: string, value: V, encryptionKeyBuffer
|
|
46
|
+
private getEncryptionKey;
|
|
47
|
+
set(key: string, value: V, encryptionKeyBuffer?: Buffer): void;
|
|
46
48
|
private setByInstance;
|
|
47
|
-
delete(key: string):
|
|
48
|
-
get(key: string, encryptionKeyBuffer
|
|
49
|
+
delete(key: string): void;
|
|
50
|
+
get(key: string, encryptionKeyBuffer?: Buffer): Promise<(V | null)[] | null>;
|
|
49
51
|
private getQueue;
|
|
50
52
|
private clearQueue;
|
|
51
53
|
private cacheHasNullInstances;
|
|
@@ -41,7 +41,7 @@ var CacheEvents;
|
|
|
41
41
|
CacheEvents["INSTANCES_CHANGED"] = "INSTANCES_CHANGED";
|
|
42
42
|
CacheEvents["KEY_DELETED"] = "KEY_DELETED";
|
|
43
43
|
})(CacheEvents || (exports.CacheEvents = CacheEvents = {}));
|
|
44
|
-
const
|
|
44
|
+
const DEFAULT_READ_METADATA_CONCURRENCY = 16;
|
|
45
45
|
class StorageAdapter {
|
|
46
46
|
logger;
|
|
47
47
|
storageKeyValueAdapter;
|
|
@@ -59,12 +59,15 @@ class StorageAdapter {
|
|
|
59
59
|
eventName = 'storage-adapter';
|
|
60
60
|
performance;
|
|
61
61
|
constructor(storageAccess, config) {
|
|
62
|
-
const { readInterval, writeInterval, lruCache, objectDeletedFlag, readMetadataConcurrency, performance, showLogs = true, } = config;
|
|
62
|
+
const { readInterval, writeInterval, lruCache, objectDeletedFlag, readMetadataConcurrency, performance, showLogs = true, hasEncryption = true, instanceId, } = config;
|
|
63
63
|
this.logger = showLogs ? logger_js_1.default.child({ class: StorageAdapter.name }) : null;
|
|
64
64
|
this.performance = performance;
|
|
65
|
-
this.instanceId = this.generateHash();
|
|
65
|
+
this.instanceId = instanceId ?? this.generateHash();
|
|
66
66
|
this.readInterval = readInterval;
|
|
67
|
-
this.storageKeyValueAdapter = new StorageKeyValueAdapter_js_1.default(storageAccess, {
|
|
67
|
+
this.storageKeyValueAdapter = new StorageKeyValueAdapter_js_1.default(storageAccess, {
|
|
68
|
+
showLogs,
|
|
69
|
+
hasEncryption,
|
|
70
|
+
});
|
|
68
71
|
this.cache = new lru_cache_1.LRUCache(lruCache);
|
|
69
72
|
this.metadataReader = new StorageMetadataReader_js_1.default({
|
|
70
73
|
storageKeyValueAdapter: this.storageKeyValueAdapter,
|
|
@@ -80,7 +83,7 @@ class StorageAdapter {
|
|
|
80
83
|
showLogs,
|
|
81
84
|
});
|
|
82
85
|
this.queueReadMetadata = new p_queue_1.default({
|
|
83
|
-
concurrency: readMetadataConcurrency ||
|
|
86
|
+
concurrency: readMetadataConcurrency || DEFAULT_READ_METADATA_CONCURRENCY,
|
|
84
87
|
});
|
|
85
88
|
}
|
|
86
89
|
generateHash(str) {
|
|
@@ -88,9 +91,9 @@ class StorageAdapter {
|
|
|
88
91
|
.update(str || uuid.v4())
|
|
89
92
|
.digest('hex');
|
|
90
93
|
}
|
|
91
|
-
|
|
94
|
+
subscribe(cb) {
|
|
92
95
|
this.pubSub.subscribe(this.eventName, cb);
|
|
93
|
-
return
|
|
96
|
+
return () => {
|
|
94
97
|
this.pubSub.unsubscribe(this.eventName, cb);
|
|
95
98
|
};
|
|
96
99
|
}
|
|
@@ -110,38 +113,37 @@ class StorageAdapter {
|
|
|
110
113
|
}
|
|
111
114
|
return this.cache.has(key);
|
|
112
115
|
}
|
|
113
|
-
|
|
116
|
+
getEncryptionKey(key, encryptionKeyBuffer) {
|
|
114
117
|
if (!this.encryptionKeys.has(key)) {
|
|
115
|
-
if (!encryptionKeyBuffer)
|
|
118
|
+
if (!encryptionKeyBuffer) {
|
|
116
119
|
return null;
|
|
120
|
+
}
|
|
117
121
|
const encryptionKey = encryptionKeyBuffer.toString('base64');
|
|
118
122
|
this.encryptionKeys.set(key, encryptionKey);
|
|
119
123
|
return encryptionKey;
|
|
120
124
|
}
|
|
121
125
|
return this.encryptionKeys.get(key) || null;
|
|
122
126
|
}
|
|
123
|
-
|
|
127
|
+
set(key, value, encryptionKeyBuffer) {
|
|
124
128
|
if (this.contentWriter.storageWrites.get(key)?.type === StorageContentWriter_js_1.ContentWriterType.NEEDS_DELETE) {
|
|
125
129
|
throw new Error('Object has been deleted');
|
|
126
130
|
}
|
|
127
|
-
const encryptionKey = this.
|
|
128
|
-
if (!encryptionKey)
|
|
129
|
-
throw new Error('Encryption key required');
|
|
131
|
+
const encryptionKey = this.getEncryptionKey(key, encryptionKeyBuffer);
|
|
130
132
|
this.setByInstance(key, this.instanceId, {
|
|
131
133
|
value,
|
|
132
134
|
modifiedTs: Number.MAX_SAFE_INTEGER,
|
|
133
135
|
});
|
|
134
|
-
this.contentWriter.set(key, StorageContentWriter_js_1.ContentWriterType.NEEDS_UPLOAD, encryptionKey);
|
|
136
|
+
this.contentWriter.set(key, StorageContentWriter_js_1.ContentWriterType.NEEDS_UPLOAD, encryptionKey || undefined);
|
|
135
137
|
}
|
|
136
138
|
setByInstance(key, instanceId, value) {
|
|
137
139
|
const instances = this.cache.get(key) || new Map();
|
|
138
140
|
instances.set(instanceId, value);
|
|
139
141
|
this.cache.set(key, instances);
|
|
140
142
|
}
|
|
141
|
-
|
|
143
|
+
delete(key) {
|
|
142
144
|
this.cache.delete(key);
|
|
143
145
|
this.isUpdating.delete(key);
|
|
144
|
-
const encryptionKey = this.
|
|
146
|
+
const encryptionKey = this.getEncryptionKey(key);
|
|
145
147
|
if (encryptionKey) {
|
|
146
148
|
this.contentWriter.set(key, StorageContentWriter_js_1.ContentWriterType.NEEDS_DELETE, encryptionKey);
|
|
147
149
|
this.encryptionKeys.delete(key);
|
|
@@ -153,19 +155,15 @@ class StorageAdapter {
|
|
|
153
155
|
}
|
|
154
156
|
// the first value is always the current instance, if key exists
|
|
155
157
|
async get(key, encryptionKeyBuffer) {
|
|
156
|
-
if (!encryptionKeyBuffer)
|
|
157
|
-
throw new Error('Encryption key required');
|
|
158
158
|
if (this.contentWriter.storageWrites.get(key)?.type === StorageContentWriter_js_1.ContentWriterType.NEEDS_DELETE ||
|
|
159
159
|
!(await this.has(key))) {
|
|
160
160
|
return null;
|
|
161
161
|
}
|
|
162
|
-
const encryptionKey = this.
|
|
163
|
-
if (!encryptionKey)
|
|
164
|
-
throw new Error('Encryption key required');
|
|
162
|
+
const encryptionKey = this.getEncryptionKey(key, encryptionKeyBuffer);
|
|
165
163
|
if (this.cacheHasNullInstances(key)) {
|
|
166
164
|
await this.getQueue(key).add(async () => {
|
|
167
165
|
if (this.cacheHasNullInstances(key)) {
|
|
168
|
-
await this.fetchNullValues(key, encryptionKey);
|
|
166
|
+
await this.fetchNullValues(key, encryptionKey || undefined);
|
|
169
167
|
}
|
|
170
168
|
});
|
|
171
169
|
}
|
|
@@ -196,9 +194,9 @@ class StorageAdapter {
|
|
|
196
194
|
}
|
|
197
195
|
async fetchNullValues(key, encryptionKey) {
|
|
198
196
|
const promises = [];
|
|
199
|
-
this.cache.get(key)?.forEach((instance,
|
|
197
|
+
this.cache.get(key)?.forEach((instance, instanceId) => {
|
|
200
198
|
if (instance.value === null) {
|
|
201
|
-
const fileName = `${key}/${
|
|
199
|
+
const fileName = `${key}/${instanceId}`;
|
|
202
200
|
const startDownload = this.performance?.now();
|
|
203
201
|
promises.push(this.storageKeyValueAdapter
|
|
204
202
|
.get(fileName, encryptionKey)
|
|
@@ -207,7 +205,7 @@ class StorageAdapter {
|
|
|
207
205
|
const finishDownload = this.performance.now();
|
|
208
206
|
logger_js_1.default.info(`Downloading took ${(finishDownload - startDownload).toFixed(1)} ms`);
|
|
209
207
|
}
|
|
210
|
-
this.setByInstance(key,
|
|
208
|
+
this.setByInstance(key, instanceId, {
|
|
211
209
|
...instance,
|
|
212
210
|
value: file,
|
|
213
211
|
});
|
|
@@ -241,7 +239,7 @@ class StorageAdapter {
|
|
|
241
239
|
const initialSize = cachedByKey.size;
|
|
242
240
|
const { updated, deleted } = await this.metadataReader.fetchInstancesUpdates(key, cachedByKey);
|
|
243
241
|
if (deleted.has(key)) {
|
|
244
|
-
|
|
242
|
+
this.delete(key);
|
|
245
243
|
this.publish(CacheEvents.KEY_DELETED, key);
|
|
246
244
|
return;
|
|
247
245
|
}
|
|
@@ -271,11 +269,11 @@ class StorageAdapter {
|
|
|
271
269
|
this.isUpdating.set(key, false);
|
|
272
270
|
}
|
|
273
271
|
}
|
|
274
|
-
|
|
272
|
+
startUpdatesChecking() {
|
|
275
273
|
this.stopUpdatesChecking();
|
|
276
274
|
this.timeout = setTimeout(async () => {
|
|
277
275
|
Array.from(this.cache.keys()).forEach((key) => {
|
|
278
|
-
this.queueReadMetadata.add(async () => {
|
|
276
|
+
void this.queueReadMetadata.add(async () => {
|
|
279
277
|
await this.getQueue(key).add(async () => {
|
|
280
278
|
await this.checkUpdates(key);
|
|
281
279
|
});
|
|
@@ -299,4 +297,4 @@ class StorageAdapter {
|
|
|
299
297
|
}
|
|
300
298
|
}
|
|
301
299
|
exports.default = StorageAdapter;
|
|
302
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RvcmFnZUFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3N0b3JhZ2UvU3RvcmFnZUFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5Q0FBcUM7QUFDckMsMkNBQTZCO0FBQzdCLG1DQUFvQztBQUNwQyxzREFBNEI7QUFDNUIsNEZBQWlFO0FBQ2pFLHFGQUFvRjtBQUNwRiwwRkFBK0Q7QUFFL0QsZ0VBQWlEO0FBRWpELHNFQUEyQztBQWdCM0MsSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLHNEQUF1QyxDQUFBO0lBQ3ZDLDBDQUEyQixDQUFBO0FBQzdCLENBQUMsRUFIVyxXQUFXLDJCQUFYLFdBQVcsUUFHdEI7QUFFRCxNQUFNLGlDQUFpQyxHQUFHLEVBQUUsQ0FBQztBQUU3QyxNQUFxQixjQUFjO0lBQ2hCLE1BQU0sQ0FBaUI7SUFDdkIsc0JBQXNCLENBQTRCO0lBQ2xELEtBQUssQ0FBZ0Q7SUFDckQsY0FBYyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDLENBQUMsaUNBQWlDO0lBQzdFLGFBQWEsQ0FBa0M7SUFDL0MsY0FBYyxDQUFtQztJQUNqRCxVQUFVLENBQVM7SUFDNUIsT0FBTyxHQUF5QyxJQUFJLENBQUM7SUFDNUMsWUFBWSxDQUFTO0lBQ3JCLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBaUIsQ0FBQztJQUNsQyxpQkFBaUIsQ0FBUTtJQUN6QixVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7SUFDeEMsTUFBTSxHQUE0RCxJQUFJLG1CQUFNLEVBQUUsQ0FBQztJQUMvRSxTQUFTLEdBQUcsaUJBQWlCLENBQUM7SUFDOUIsV0FBVyxDQUFlO0lBRTNDLFlBQVksYUFBNEIsRUFBRSxNQUE0QjtRQUNwRSxNQUFNLEVBQ0osWUFBWSxFQUNaLGFBQWEsRUFDYixRQUFRLEVBQ1IsaUJBQWlCLEVBQ2pC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
|
|
300
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RvcmFnZUFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3N0b3JhZ2UvU3RvcmFnZUFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5Q0FBcUM7QUFDckMsMkNBQTZCO0FBQzdCLG1DQUFvQztBQUNwQyxzREFBNEI7QUFDNUIsNEZBQWlFO0FBQ2pFLHFGQUFvRjtBQUNwRiwwRkFBK0Q7QUFFL0QsZ0VBQWlEO0FBRWpELHNFQUEyQztBQWtCM0MsSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLHNEQUF1QyxDQUFBO0lBQ3ZDLDBDQUEyQixDQUFBO0FBQzdCLENBQUMsRUFIVyxXQUFXLDJCQUFYLFdBQVcsUUFHdEI7QUFFRCxNQUFNLGlDQUFpQyxHQUFHLEVBQUUsQ0FBQztBQUU3QyxNQUFxQixjQUFjO0lBQ2hCLE1BQU0sQ0FBaUI7SUFDdkIsc0JBQXNCLENBQTRCO0lBQ2xELEtBQUssQ0FBZ0Q7SUFDckQsY0FBYyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDLENBQUMsaUNBQWlDO0lBQzdFLGFBQWEsQ0FBa0M7SUFDL0MsY0FBYyxDQUFtQztJQUNqRCxVQUFVLENBQVM7SUFDNUIsT0FBTyxHQUF5QyxJQUFJLENBQUM7SUFDNUMsWUFBWSxDQUFTO0lBQ3JCLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBaUIsQ0FBQztJQUNsQyxpQkFBaUIsQ0FBUTtJQUN6QixVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7SUFDeEMsTUFBTSxHQUE0RCxJQUFJLG1CQUFNLEVBQUUsQ0FBQztJQUMvRSxTQUFTLEdBQUcsaUJBQWlCLENBQUM7SUFDOUIsV0FBVyxDQUFlO0lBRTNDLFlBQVksYUFBNEIsRUFBRSxNQUE0QjtRQUNwRSxNQUFNLEVBQ0osWUFBWSxFQUNaLGFBQWEsRUFDYixRQUFRLEVBQ1IsaUJBQWlCLEVBQ2pC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
|
|
@@ -18,7 +18,7 @@ export declare enum ContentWriterType {
|
|
|
18
18
|
interface StorageWriteRecord {
|
|
19
19
|
type: ContentWriterType;
|
|
20
20
|
index: number;
|
|
21
|
-
encryptionKey
|
|
21
|
+
encryptionKey?: string;
|
|
22
22
|
}
|
|
23
23
|
export default class StorageContentWriter<K extends string, V extends object> {
|
|
24
24
|
private timeout;
|
|
@@ -38,7 +38,7 @@ export default class StorageContentWriter<K extends string, V extends object> {
|
|
|
38
38
|
private deleteOutdatedInstances;
|
|
39
39
|
startActualizeCacheTimer(cache: LRUCache<K, Map<string, CacheRecord<V>>>): void;
|
|
40
40
|
stop(): void;
|
|
41
|
-
set(key: K, type: ContentWriterType, encryptionKey
|
|
41
|
+
set(key: K, type: ContentWriterType, encryptionKey?: string): void;
|
|
42
42
|
get(key: K): ContentWriterType | null;
|
|
43
43
|
clear(): void;
|
|
44
44
|
shutdown(cache: LRUCache<K, Map<string, CacheRecord<V>>>): Promise<void>;
|
|
@@ -45,7 +45,7 @@ class StorageContentWriter {
|
|
|
45
45
|
await this.storageKeyValueAdapter.set(`${key}/${this.objectDeletedFlag}`, null, encryptionKey);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
async actualizeCacheUpload(key,
|
|
48
|
+
async actualizeCacheUpload(key, cache, encryptionKey) {
|
|
49
49
|
const instances = cache.get(key);
|
|
50
50
|
const instance = instances?.get(this.instanceId);
|
|
51
51
|
if (!instances || !instance) {
|
|
@@ -70,19 +70,19 @@ class StorageContentWriter {
|
|
|
70
70
|
const logger = this.logger?.child({ method: this.actualizeCache.name });
|
|
71
71
|
if (this.storageWrites.size) {
|
|
72
72
|
Array.from(this.storageWrites.entries()).forEach(([key, { type, index, encryptionKey }]) => {
|
|
73
|
-
this.queueWriteContent.add(async () => {
|
|
73
|
+
void this.queueWriteContent.add(async () => {
|
|
74
74
|
try {
|
|
75
75
|
switch (type) {
|
|
76
76
|
case ContentWriterType.NEEDS_DELETE:
|
|
77
77
|
await this.actualizeCacheDelete(key, encryptionKey);
|
|
78
78
|
break;
|
|
79
79
|
case ContentWriterType.NEEDS_UPLOAD:
|
|
80
|
-
await this.actualizeCacheUpload(key,
|
|
80
|
+
await this.actualizeCacheUpload(key, cache, encryptionKey);
|
|
81
81
|
break;
|
|
82
82
|
default:
|
|
83
83
|
break;
|
|
84
84
|
}
|
|
85
|
-
// delete only if the current index is up
|
|
85
|
+
// delete only if the current index is up-to-date
|
|
86
86
|
if (index === this.storageWrites.get(key)?.index) {
|
|
87
87
|
this.storageWrites.delete(key);
|
|
88
88
|
}
|
|
@@ -165,4 +165,4 @@ class StorageContentWriter {
|
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
167
|
exports.default = StorageContentWriter;
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RvcmFnZUNvbnRlbnRXcml0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3N0b3JhZ2UvU3RvcmFnZUNvbnRlbnRXcml0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0Esc0RBQTRCO0FBQzVCLGdFQUFpRDtBQWVqRCxJQUFZLGlCQUdYO0FBSEQsV0FBWSxpQkFBaUI7SUFDM0Isa0RBQTZCLENBQUE7SUFDN0Isa0RBQTZCLENBQUE7QUFDL0IsQ0FBQyxFQUhXLGlCQUFpQixpQ0FBakIsaUJBQWlCLFFBRzVCO0FBRUQsTUFBTSxpQ0FBaUMsR0FBRyxFQUFFLENBQUM7QUFDN0MsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQVFsRCxNQUFxQixvQkFBb0I7SUFDL0IsT0FBTyxHQUF5QyxJQUFJLENBQUM7SUFDNUMsUUFBUSxDQUFTO0lBQ2pCLHNCQUFzQixDQUE0QjtJQUNsRCxNQUFNLENBQWlCO0lBQ3ZCLFVBQVUsQ0FBUztJQUNuQixpQkFBaUIsQ0FBUztJQUMxQixpQkFBaUIsQ0FBUztJQUMxQixpQkFBaUIsQ0FBUTtJQUN6QixXQUFXLENBQWU7SUFDM0IsYUFBYSxHQUErQixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRXRFLFlBQVksTUFBcUM7UUFDL0MsTUFBTSxFQUNKLHVCQUF1QixFQUN2QixRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWCxRQUFRLEdBQUcsSUFBSSxHQUNoQixHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLG1CQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FB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
|
|
@@ -1,23 +1,26 @@
|
|
|
1
1
|
import { Encryption } from '@super-protocol/dto-js';
|
|
2
2
|
import StorageAccess from '../../types/storage/StorageAccess.js';
|
|
3
3
|
import StorageObject from '../../types/storage/StorageObject.js';
|
|
4
|
+
import { IStorageKeyValueAdapter } from './types.js';
|
|
4
5
|
export interface StorageKeyValueAdapterConfig {
|
|
5
6
|
showLogs?: boolean;
|
|
7
|
+
hasEncryption?: boolean;
|
|
6
8
|
}
|
|
7
|
-
export default class StorageKeyValueAdapter<V extends object> {
|
|
9
|
+
export default class StorageKeyValueAdapter<V extends object> implements IStorageKeyValueAdapter<V> {
|
|
10
|
+
private readonly hasEncryption;
|
|
8
11
|
private readonly storageProvider;
|
|
9
12
|
private readonly logger?;
|
|
10
13
|
constructor(storageAccess: StorageAccess, config?: StorageKeyValueAdapterConfig);
|
|
11
|
-
decrypt(encryption: Encryption, key: string): Promise<V | null>;
|
|
12
|
-
encrypt(data: V | null, key: string): Promise<Encryption>;
|
|
14
|
+
protected decrypt(encryption: Encryption, key: string): Promise<V | null>;
|
|
15
|
+
protected encrypt(data: V | null, key: string): Promise<Encryption>;
|
|
13
16
|
private downloadFromStorage;
|
|
14
17
|
private streamToString;
|
|
15
18
|
private storageUpload;
|
|
16
19
|
private storageDelete;
|
|
17
20
|
private storageDownload;
|
|
18
21
|
private storageListFiles;
|
|
19
|
-
set(key: string, value: V | null, privateKey
|
|
22
|
+
set(key: string, value: V | null, privateKey?: string): Promise<void>;
|
|
20
23
|
delete(key: string): Promise<void>;
|
|
21
|
-
get(key: string, privateKey
|
|
24
|
+
get(key: string, privateKey?: string): Promise<V | null>;
|
|
22
25
|
listFiles(key: string): Promise<StorageObject[]>;
|
|
23
26
|
}
|