@solana-mobile/dapp-store-cli 0.14.0 → 0.16.0
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/lib/CliUtils.js +1 -1
- package/lib/package.json +3 -3
- package/lib/upload/CachedStorageDriver.js +194 -29
- package/lib/upload/TurboStorageDriver.js +44 -22
- package/lib/upload/__tests__/CachedStorageDriver.test.js +437 -0
- package/lib/upload/__tests__/TurboStorageDriver.test.js +17 -0
- package/lib/upload/__tests__/contentGateway.test.js +17 -0
- package/lib/upload/contentGateway.js +23 -0
- package/package.json +3 -3
- package/src/CliUtils.ts +1 -1
- package/src/upload/CachedStorageDriver.ts +93 -13
- package/src/upload/TurboStorageDriver.ts +58 -23
- package/src/upload/__tests__/CachedStorageDriver.test.ts +246 -0
- package/src/upload/__tests__/TurboStorageDriver.test.ts +15 -0
- package/src/upload/__tests__/contentGateway.test.ts +31 -0
- package/src/upload/contentGateway.ts +37 -0
package/lib/CliUtils.js
CHANGED
|
@@ -156,7 +156,7 @@ export var Constants = function Constants() {
|
|
|
156
156
|
"use strict";
|
|
157
157
|
_class_call_check(this, Constants);
|
|
158
158
|
};
|
|
159
|
-
_define_property(Constants, "CLI_VERSION", "0.
|
|
159
|
+
_define_property(Constants, "CLI_VERSION", "0.16.0");
|
|
160
160
|
_define_property(Constants, "CONFIG_FILE_NAME", "config.yaml");
|
|
161
161
|
_define_property(Constants, "DEFAULT_RPC_DEVNET", "https://api.devnet.solana.com");
|
|
162
162
|
_define_property(Constants, "DEFAULT_PRIORITY_FEE", 500000);
|
package/lib/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@solana-mobile/dapp-store-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -51,10 +51,10 @@
|
|
|
51
51
|
"ts-node": "^10.9.1"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@ardrive/turbo-sdk": "^1.
|
|
54
|
+
"@ardrive/turbo-sdk": "^1.41.0",
|
|
55
55
|
"@aws-sdk/client-s3": "^3.321.1",
|
|
56
56
|
"@metaplex-foundation/js-plugin-aws": "^0.20.0",
|
|
57
|
-
"@solana-mobile/dapp-store-publishing-tools": "workspace:0.
|
|
57
|
+
"@solana-mobile/dapp-store-publishing-tools": "workspace:0.16.0",
|
|
58
58
|
"@solana/web3.js": "1.92.1",
|
|
59
59
|
"@types/semver": "^7.3.13",
|
|
60
60
|
"ajv": "^8.11.0",
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
function _array_like_to_array(arr, len) {
|
|
2
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
3
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
4
|
+
return arr2;
|
|
5
|
+
}
|
|
6
|
+
function _array_with_holes(arr) {
|
|
7
|
+
if (Array.isArray(arr)) return arr;
|
|
8
|
+
}
|
|
1
9
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
2
10
|
try {
|
|
3
11
|
var info = gen[key](arg);
|
|
@@ -59,20 +67,54 @@ function _define_property(obj, key, value) {
|
|
|
59
67
|
}
|
|
60
68
|
return obj;
|
|
61
69
|
}
|
|
62
|
-
function
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
+
function _instanceof(left, right) {
|
|
71
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
72
|
+
return !!right[Symbol.hasInstance](left);
|
|
73
|
+
} else {
|
|
74
|
+
return left instanceof right;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function _iterable_to_array_limit(arr, i) {
|
|
78
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
79
|
+
if (_i == null) return;
|
|
80
|
+
var _arr = [];
|
|
81
|
+
var _n = true;
|
|
82
|
+
var _d = false;
|
|
83
|
+
var _s, _e;
|
|
84
|
+
try {
|
|
85
|
+
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
86
|
+
_arr.push(_s.value);
|
|
87
|
+
if (i && _arr.length === i) break;
|
|
88
|
+
}
|
|
89
|
+
} catch (err) {
|
|
90
|
+
_d = true;
|
|
91
|
+
_e = err;
|
|
92
|
+
} finally{
|
|
93
|
+
try {
|
|
94
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
95
|
+
} finally{
|
|
96
|
+
if (_d) throw _e;
|
|
70
97
|
}
|
|
71
|
-
ownKeys.forEach(function(key) {
|
|
72
|
-
_define_property(target, key, source[key]);
|
|
73
|
-
});
|
|
74
98
|
}
|
|
75
|
-
return
|
|
99
|
+
return _arr;
|
|
100
|
+
}
|
|
101
|
+
function _non_iterable_rest() {
|
|
102
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
103
|
+
}
|
|
104
|
+
function _sliced_to_array(arr, i) {
|
|
105
|
+
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
|
|
106
|
+
}
|
|
107
|
+
function _type_of(obj) {
|
|
108
|
+
"@swc/helpers - typeof";
|
|
109
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
110
|
+
}
|
|
111
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
112
|
+
if (!o) return;
|
|
113
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
114
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
115
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
116
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
117
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
76
118
|
}
|
|
77
119
|
function _ts_generator(thisArg, body) {
|
|
78
120
|
var f, y, t, _ = {
|
|
@@ -168,6 +210,7 @@ function _ts_generator(thisArg, body) {
|
|
|
168
210
|
import fs from "fs";
|
|
169
211
|
import path from "path";
|
|
170
212
|
import { createHash } from "crypto";
|
|
213
|
+
import { normalizePublicContentUrl } from "./contentGateway.js";
|
|
171
214
|
// TODO(jon): We need to manage the removal / replacement of assets in the manifest
|
|
172
215
|
export var CachedStorageDriver = /*#__PURE__*/ function() {
|
|
173
216
|
"use strict";
|
|
@@ -199,11 +242,96 @@ export var CachedStorageDriver = /*#__PURE__*/ function() {
|
|
|
199
242
|
}).call(this);
|
|
200
243
|
}
|
|
201
244
|
},
|
|
245
|
+
{
|
|
246
|
+
key: "resolveAssetManifestPath",
|
|
247
|
+
value: function resolveAssetManifestPath() {
|
|
248
|
+
var filename = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.assetManifestPath;
|
|
249
|
+
return path.resolve(process.cwd(), filename);
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
key: "normalizeAsset",
|
|
254
|
+
value: function normalizeAsset(filename, asset) {
|
|
255
|
+
if (!asset || (typeof asset === "undefined" ? "undefined" : _type_of(asset)) !== "object") return;
|
|
256
|
+
var candidate = asset;
|
|
257
|
+
var pathValue = typeof candidate.path === "string" ? candidate.path : filename;
|
|
258
|
+
if (typeof candidate.sha256 !== "string" || typeof candidate.uri !== "string") {
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
return {
|
|
262
|
+
path: pathValue,
|
|
263
|
+
sha256: candidate.sha256,
|
|
264
|
+
uri: candidate.uri
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
key: "normalizeAssetManifest",
|
|
270
|
+
value: function normalizeAssetManifest(assetManifest) {
|
|
271
|
+
if (!assetManifest || (typeof assetManifest === "undefined" ? "undefined" : _type_of(assetManifest)) !== "object") return;
|
|
272
|
+
var assets = {};
|
|
273
|
+
var assetEntries = assetManifest.assets && _type_of(assetManifest.assets) === "object" ? Object.entries(assetManifest.assets) : [];
|
|
274
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
275
|
+
try {
|
|
276
|
+
for(var _iterator = assetEntries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
277
|
+
var _step_value = _sliced_to_array(_step.value, 2), filename = _step_value[0], asset = _step_value[1];
|
|
278
|
+
var normalizedAsset = this.normalizeAsset(filename, asset);
|
|
279
|
+
if (normalizedAsset) {
|
|
280
|
+
assets[filename] = normalizedAsset;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
} catch (err) {
|
|
284
|
+
_didIteratorError = true;
|
|
285
|
+
_iteratorError = err;
|
|
286
|
+
} finally{
|
|
287
|
+
try {
|
|
288
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
289
|
+
_iterator.return();
|
|
290
|
+
}
|
|
291
|
+
} finally{
|
|
292
|
+
if (_didIteratorError) {
|
|
293
|
+
throw _iteratorError;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
return {
|
|
298
|
+
schema_version: typeof assetManifest.schema_version === "string" ? assetManifest.schema_version : CachedStorageDriver.SCHEMA_VERSION,
|
|
299
|
+
assets: assets
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
key: "writeAssetManifest",
|
|
305
|
+
value: function writeAssetManifest() {
|
|
306
|
+
return _async_to_generator(function() {
|
|
307
|
+
var normalizedAssetManifest;
|
|
308
|
+
return _ts_generator(this, function(_state) {
|
|
309
|
+
switch(_state.label){
|
|
310
|
+
case 0:
|
|
311
|
+
normalizedAssetManifest = this.normalizeAssetManifest(this.assetManifest);
|
|
312
|
+
if (!normalizedAssetManifest) {
|
|
313
|
+
throw new Error("Asset manifest is not serializable");
|
|
314
|
+
}
|
|
315
|
+
this.assetManifest = normalizedAssetManifest;
|
|
316
|
+
return [
|
|
317
|
+
4,
|
|
318
|
+
fs.promises.writeFile(this.resolveAssetManifestPath(), JSON.stringify(this.assetManifest, null, 2), "utf-8")
|
|
319
|
+
];
|
|
320
|
+
case 1:
|
|
321
|
+
_state.sent();
|
|
322
|
+
return [
|
|
323
|
+
2
|
|
324
|
+
];
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
}).call(this);
|
|
328
|
+
}
|
|
329
|
+
},
|
|
202
330
|
{
|
|
203
331
|
key: "loadAssetManifest",
|
|
204
332
|
value: function loadAssetManifest(filename) {
|
|
205
333
|
try {
|
|
206
|
-
return JSON.parse(fs.readFileSync(filename, "utf-8"));
|
|
334
|
+
return this.normalizeAssetManifest(JSON.parse(fs.readFileSync(this.resolveAssetManifestPath(filename), "utf-8")));
|
|
207
335
|
} catch (error) {
|
|
208
336
|
console.warn("Failed opening ".concat(filename, "; initializing with a blank asset manifest"));
|
|
209
337
|
return;
|
|
@@ -225,7 +353,7 @@ export var CachedStorageDriver = /*#__PURE__*/ function() {
|
|
|
225
353
|
key: "upload",
|
|
226
354
|
value: function upload(file) {
|
|
227
355
|
return _async_to_generator(function() {
|
|
228
|
-
var hash, uploadedAsset, uri;
|
|
356
|
+
var hash, uploadedAsset, normalizedUri, error, message, uri;
|
|
229
357
|
return _ts_generator(this, function(_state) {
|
|
230
358
|
switch(_state.label){
|
|
231
359
|
case 0:
|
|
@@ -240,27 +368,67 @@ export var CachedStorageDriver = /*#__PURE__*/ function() {
|
|
|
240
368
|
case 1:
|
|
241
369
|
return [
|
|
242
370
|
2,
|
|
243
|
-
|
|
371
|
+
normalizePublicContentUrl.apply(void 0, [
|
|
372
|
+
_state.sent()
|
|
373
|
+
])
|
|
244
374
|
];
|
|
245
375
|
case 2:
|
|
246
376
|
hash = createHash("sha256").update(file.buffer).digest("base64");
|
|
247
377
|
uploadedAsset = this.uploadedAsset(file.fileName, {
|
|
248
378
|
sha256: hash
|
|
249
379
|
});
|
|
250
|
-
if (uploadedAsset)
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
380
|
+
if (!uploadedAsset) return [
|
|
381
|
+
3,
|
|
382
|
+
7
|
|
383
|
+
];
|
|
384
|
+
normalizedUri = normalizePublicContentUrl(uploadedAsset.uri);
|
|
385
|
+
if (!(normalizedUri !== uploadedAsset.uri)) return [
|
|
386
|
+
3,
|
|
387
|
+
6
|
|
388
|
+
];
|
|
389
|
+
uploadedAsset.uri = normalizedUri;
|
|
390
|
+
_state.label = 3;
|
|
391
|
+
case 3:
|
|
392
|
+
_state.trys.push([
|
|
393
|
+
3,
|
|
394
|
+
5,
|
|
395
|
+
,
|
|
396
|
+
6
|
|
397
|
+
]);
|
|
398
|
+
return [
|
|
399
|
+
4,
|
|
400
|
+
this.writeAssetManifest()
|
|
401
|
+
];
|
|
402
|
+
case 4:
|
|
403
|
+
_state.sent();
|
|
404
|
+
return [
|
|
405
|
+
3,
|
|
406
|
+
6
|
|
407
|
+
];
|
|
408
|
+
case 5:
|
|
409
|
+
error = _state.sent();
|
|
410
|
+
message = _instanceof(error, Error) ? error.message : String(error);
|
|
411
|
+
console.warn("Failed to rewrite ".concat(this.assetManifestPath, "; continuing with normalized URL: ").concat(message));
|
|
412
|
+
return [
|
|
413
|
+
3,
|
|
414
|
+
6
|
|
415
|
+
];
|
|
416
|
+
case 6:
|
|
417
|
+
console.log("Asset ".concat(file.fileName, " already uploaded at ").concat(normalizedUri));
|
|
418
|
+
return [
|
|
419
|
+
2,
|
|
420
|
+
normalizedUri
|
|
421
|
+
];
|
|
422
|
+
case 7:
|
|
257
423
|
console.log("Uploading ".concat(file.fileName));
|
|
258
424
|
return [
|
|
259
425
|
4,
|
|
260
426
|
this.storageDriver.upload(file)
|
|
261
427
|
];
|
|
262
|
-
case
|
|
263
|
-
uri =
|
|
428
|
+
case 8:
|
|
429
|
+
uri = normalizePublicContentUrl.apply(void 0, [
|
|
430
|
+
_state.sent()
|
|
431
|
+
]);
|
|
264
432
|
this.assetManifest.assets[file.fileName] = {
|
|
265
433
|
path: file.fileName,
|
|
266
434
|
sha256: hash,
|
|
@@ -268,12 +436,9 @@ export var CachedStorageDriver = /*#__PURE__*/ function() {
|
|
|
268
436
|
};
|
|
269
437
|
return [
|
|
270
438
|
4,
|
|
271
|
-
|
|
272
|
-
JSON.stringify({
|
|
273
|
-
assets: _object_spread({}, this.assetManifest.assets)
|
|
274
|
-
}, null, 2), "utf-8")
|
|
439
|
+
this.writeAssetManifest()
|
|
275
440
|
];
|
|
276
|
-
case
|
|
441
|
+
case 9:
|
|
277
442
|
_state.sent();
|
|
278
443
|
console.log("".concat(file.fileName, " uploaded at ").concat(uri));
|
|
279
444
|
return [
|
|
@@ -247,19 +247,32 @@ function _ts_values(o) {
|
|
|
247
247
|
import { TurboFactory, lamportToTokenAmount } from "@ardrive/turbo-sdk";
|
|
248
248
|
import bs58 from "bs58";
|
|
249
249
|
import debugModule from "debug";
|
|
250
|
+
import { buildPublicContentUrl } from "./contentGateway.js";
|
|
250
251
|
var debug = debugModule("cli:turbo-storage");
|
|
252
|
+
var SOL_IN_LAMPORTS = 1000000000;
|
|
253
|
+
var MIN_TOP_UP_LAMPORTS = 1000000;
|
|
254
|
+
var MIN_TOP_UP_SOL = MIN_TOP_UP_LAMPORTS / SOL_IN_LAMPORTS;
|
|
251
255
|
var CONSTANTS = {
|
|
252
256
|
FREE_UPLOAD_LIMIT: 97280,
|
|
253
257
|
UPLOAD_DELAY_MS: 2000,
|
|
254
258
|
MAX_RETRIES: 5,
|
|
255
|
-
SOL_IN_LAMPORTS:
|
|
259
|
+
SOL_IN_LAMPORTS: SOL_IN_LAMPORTS,
|
|
260
|
+
MIN_TOP_UP_SOL: MIN_TOP_UP_SOL,
|
|
261
|
+
MIN_TOP_UP_LAMPORTS: MIN_TOP_UP_LAMPORTS,
|
|
256
262
|
BACKOFF: {
|
|
257
263
|
BASE_MS: 500,
|
|
258
264
|
MAX_MS: 8000
|
|
259
265
|
},
|
|
260
|
-
|
|
261
|
-
devnet:
|
|
262
|
-
|
|
266
|
+
SERVICE_URLS: {
|
|
267
|
+
devnet: {
|
|
268
|
+
gatewayUrl: "https://api.devnet.solana.com",
|
|
269
|
+
uploadServiceConfig: {
|
|
270
|
+
url: "https://upload.ardrive.dev"
|
|
271
|
+
},
|
|
272
|
+
paymentServiceConfig: {
|
|
273
|
+
url: "https://payment.ardrive.dev"
|
|
274
|
+
}
|
|
275
|
+
}
|
|
263
276
|
}
|
|
264
277
|
};
|
|
265
278
|
var delay = function(ms) {
|
|
@@ -282,19 +295,9 @@ export var TurboStorageDriver = /*#__PURE__*/ function() {
|
|
|
282
295
|
this.turbo = TurboFactory.authenticated(_object_spread({
|
|
283
296
|
privateKey: bs58.encode(keypair.secretKey),
|
|
284
297
|
token: "solana"
|
|
285
|
-
},
|
|
298
|
+
}, getTurboServiceConfig(network)));
|
|
286
299
|
}
|
|
287
300
|
_create_class(TurboStorageDriver, [
|
|
288
|
-
{
|
|
289
|
-
key: "getServiceUrls",
|
|
290
|
-
value: function getServiceUrls(isDev) {
|
|
291
|
-
var base = isDev ? "ardrive.dev" : "ardrive.io";
|
|
292
|
-
return {
|
|
293
|
-
uploadUrl: "https://upload.".concat(base),
|
|
294
|
-
paymentUrl: "https://payment.".concat(base)
|
|
295
|
-
};
|
|
296
|
-
}
|
|
297
|
-
},
|
|
298
301
|
{
|
|
299
302
|
key: "getUploadPrice",
|
|
300
303
|
value: function getUploadPrice(bytes) {
|
|
@@ -427,6 +430,12 @@ export var TurboStorageDriver = /*#__PURE__*/ function() {
|
|
|
427
430
|
switch(_state.label){
|
|
428
431
|
case 0:
|
|
429
432
|
_this = this;
|
|
433
|
+
if (wincAmount === 0n) {
|
|
434
|
+
debug("No Winston Credits requested; skipping top-up.");
|
|
435
|
+
return [
|
|
436
|
+
2
|
|
437
|
+
];
|
|
438
|
+
}
|
|
430
439
|
_state.label = 1;
|
|
431
440
|
case 1:
|
|
432
441
|
_state.trys.push([
|
|
@@ -439,7 +448,7 @@ export var TurboStorageDriver = /*#__PURE__*/ function() {
|
|
|
439
448
|
4,
|
|
440
449
|
this.withRetry(function() {
|
|
441
450
|
return _async_to_generator(function() {
|
|
442
|
-
var _this_turbo_getWincForToken, _this_turbo, _this_turbo_topUpWithTokens, _this_turbo1, exchangeRate, wincPerSol,
|
|
451
|
+
var _this_turbo_getWincForToken, _this_turbo, _this_turbo_topUpWithTokens, _this_turbo1, exchangeRate, wincPerSol, solInLamports, numerator, lamportsCalculated, minLamports, lamportsToUse, solAmount;
|
|
443
452
|
return _ts_generator(this, function(_state) {
|
|
444
453
|
switch(_state.label){
|
|
445
454
|
case 0:
|
|
@@ -455,12 +464,23 @@ export var TurboStorageDriver = /*#__PURE__*/ function() {
|
|
|
455
464
|
throw new Error("Unable to get Winston Credits exchange rate");
|
|
456
465
|
}
|
|
457
466
|
wincPerSol = BigInt(String(exchangeRate.winc));
|
|
458
|
-
|
|
459
|
-
|
|
467
|
+
if (wincPerSol <= 0n) {
|
|
468
|
+
throw new Error("Invalid Winston Credits exchange rate");
|
|
469
|
+
}
|
|
470
|
+
solInLamports = BigInt(CONSTANTS.SOL_IN_LAMPORTS);
|
|
471
|
+
numerator = wincAmount * solInLamports;
|
|
472
|
+
lamportsCalculated = (numerator + (wincPerSol - 1n)) / wincPerSol;
|
|
473
|
+
minLamports = BigInt(CONSTANTS.MIN_TOP_UP_LAMPORTS);
|
|
474
|
+
lamportsToUse = lamportsCalculated < minLamports ? minLamports : lamportsCalculated;
|
|
475
|
+
if (lamportsToUse > lamportsCalculated) {
|
|
476
|
+
debug("Applying minimum top-up of ".concat(CONSTANTS.MIN_TOP_UP_SOL, " SOL (").concat(CONSTANTS.MIN_TOP_UP_LAMPORTS, " lamports)"));
|
|
477
|
+
}
|
|
478
|
+
solAmount = Number(lamportsToUse) / CONSTANTS.SOL_IN_LAMPORTS;
|
|
479
|
+
debug("Buying at least ".concat(wincAmount, " Winston Credits (~").concat(solAmount.toFixed(9), " SOL / ").concat(lamportsToUse, " lamports)"));
|
|
460
480
|
return [
|
|
461
481
|
4,
|
|
462
482
|
(_this_turbo_topUpWithTokens = (_this_turbo1 = this.turbo).topUpWithTokens) === null || _this_turbo_topUpWithTokens === void 0 ? void 0 : _this_turbo_topUpWithTokens.call(_this_turbo1, {
|
|
463
|
-
tokenAmount: String(lamportToTokenAmount(
|
|
483
|
+
tokenAmount: String(lamportToTokenAmount(lamportsToUse.toString()))
|
|
464
484
|
})
|
|
465
485
|
];
|
|
466
486
|
case 2:
|
|
@@ -549,7 +569,7 @@ export var TurboStorageDriver = /*#__PURE__*/ function() {
|
|
|
549
569
|
switch(_state.label){
|
|
550
570
|
case 0:
|
|
551
571
|
_loop = function() {
|
|
552
|
-
var item, estimated, _item_file_tags, tags, uploadResult,
|
|
572
|
+
var item, estimated, _item_file_tags, tags, uploadResult, url, error;
|
|
553
573
|
return _ts_generator(this, function(_state) {
|
|
554
574
|
switch(_state.label){
|
|
555
575
|
case 0:
|
|
@@ -602,8 +622,7 @@ export var TurboStorageDriver = /*#__PURE__*/ function() {
|
|
|
602
622
|
];
|
|
603
623
|
case 4:
|
|
604
624
|
uploadResult = _state.sent();
|
|
605
|
-
|
|
606
|
-
url = "".concat(gateway, "/").concat(uploadResult.id);
|
|
625
|
+
url = buildPublicContentUrl(uploadResult.id, _this.network);
|
|
607
626
|
debug("Upload complete: ".concat(url));
|
|
608
627
|
item.resolve(url);
|
|
609
628
|
if (!(_this.uploadQueue.length > 0)) return [
|
|
@@ -694,3 +713,6 @@ export var TurboStorageDriver = /*#__PURE__*/ function() {
|
|
|
694
713
|
]);
|
|
695
714
|
return TurboStorageDriver;
|
|
696
715
|
}();
|
|
716
|
+
export var getTurboServiceConfig = function(network) {
|
|
717
|
+
return network === "devnet" ? CONSTANTS.SERVICE_URLS.devnet : {};
|
|
718
|
+
};
|