@solana-mobile/dapp-store-cli 0.9.4 → 0.10.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/CliSetup.js +29 -19
- package/lib/CliUtils.js +9 -6
- package/lib/commands/ValidateCommand.js +3 -3
- package/lib/commands/create/CreateCliApp.js +4 -4
- package/lib/commands/create/CreateCliPublisher.js +4 -4
- package/lib/commands/create/CreateCliRelease.js +4 -4
- package/lib/commands/publish/PublishCliRemove.js +3 -3
- package/lib/commands/publish/PublishCliSubmit.js +16 -6
- package/lib/commands/publish/PublishCliSupport.js +3 -3
- package/lib/commands/publish/PublishCliUpdate.js +16 -6
- package/lib/commands/scaffolding/ScaffoldInit.js +1 -1
- package/lib/config/PublishDetails.js +224 -62
- package/lib/generated/config_obj.json +1 -1
- package/lib/generated/config_schema.json +1 -1
- package/lib/package.json +2 -2
- package/lib/prebuild_schema/publishing_source.yaml +10 -1
- package/lib/prebuild_schema/schemagen.js +4 -4
- package/package.json +2 -2
- package/src/CliSetup.ts +17 -0
- package/src/CliUtils.ts +10 -1
- package/src/commands/publish/PublishCliSubmit.ts +13 -4
- package/src/commands/publish/PublishCliUpdate.ts +13 -4
- package/src/config/PublishDetails.ts +70 -4
- package/src/prebuild_schema/publishing_source.yaml +10 -1
|
@@ -121,13 +121,13 @@ function _ts_generator(thisArg, body) {
|
|
|
121
121
|
trys: [],
|
|
122
122
|
ops: []
|
|
123
123
|
};
|
|
124
|
-
return
|
|
124
|
+
return g = {
|
|
125
125
|
next: verb(0),
|
|
126
126
|
"throw": verb(1),
|
|
127
127
|
"return": verb(2)
|
|
128
128
|
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
129
129
|
return this;
|
|
130
|
-
}), g
|
|
130
|
+
}), g;
|
|
131
131
|
function verb(n) {
|
|
132
132
|
return function(v) {
|
|
133
133
|
return step([
|
|
@@ -209,7 +209,7 @@ function _ts_generator(thisArg, body) {
|
|
|
209
209
|
import { dump, load } from "js-yaml";
|
|
210
210
|
import Ajv from "ajv";
|
|
211
211
|
// eslint-disable-next-line require-extensions/require-extensions
|
|
212
|
-
import { readFile } from
|
|
212
|
+
import { readFile } from 'fs/promises';
|
|
213
213
|
var schemaJson = JSON.parse((await readFile(new URL("../generated/config_schema.json", import.meta.url))).toString());
|
|
214
214
|
import fs from "fs";
|
|
215
215
|
import path from "path";
|
|
@@ -219,6 +219,7 @@ import util from "util";
|
|
|
219
219
|
import { imageSize } from "image-size";
|
|
220
220
|
import { exec } from "child_process";
|
|
221
221
|
import getVideoDimensions from "get-video-dimensions";
|
|
222
|
+
import { PublicKey } from "@solana/web3.js";
|
|
222
223
|
var runImgSize = util.promisify(imageSize);
|
|
223
224
|
var runExec = util.promisify(exec);
|
|
224
225
|
var AaptPrefixes = {
|
|
@@ -235,7 +236,7 @@ var ajv = new Ajv({
|
|
|
235
236
|
strictTuples: false
|
|
236
237
|
});
|
|
237
238
|
var validate = ajv.compile(schemaJson);
|
|
238
|
-
export var loadPublishDetails = function() {
|
|
239
|
+
export var loadPublishDetails = /*#__PURE__*/ function() {
|
|
239
240
|
var _ref = _async_to_generator(function(configPath) {
|
|
240
241
|
var configFile, valid;
|
|
241
242
|
return _ts_generator(this, function(_state) {
|
|
@@ -263,9 +264,9 @@ export var loadPublishDetails = function() {
|
|
|
263
264
|
return _ref.apply(this, arguments);
|
|
264
265
|
};
|
|
265
266
|
}();
|
|
266
|
-
export var loadPublishDetailsWithChecks = function() {
|
|
267
|
+
export var loadPublishDetailsWithChecks = /*#__PURE__*/ function() {
|
|
267
268
|
var _ref = _async_to_generator(function() {
|
|
268
|
-
var buildToolsDir, _config_publisher_media_find, _config_publisher_media, _config_app_media_find, _config_app_media, _config_release_media_find, _config_release_media, _config_release_media1, _config_release_media2, config, apkEntry, apkPath, _, publisherIcon, iconPath, iconBuffer, appIcon, iconPath1, iconBuffer1, releaseIcon, iconPath2, screenshots, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, item, mediaPath, err, videos, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, video, mediaPath1, err, googlePkg, pkgCompare;
|
|
269
|
+
var buildToolsDir, _config_publisher_media_find, _config_publisher_media, _config_app_media_find, _config_app_media, _config_release_media_find, _config_release_media, _config_release_media_find1, _config_release_media1, _config_release_media_find2, _config_release_media2, _config_release_media3, _config_release_media4, config, apkEntry, apkPath, _, publisherIcon, iconPath, iconBuffer, appIcon, iconPath1, iconBuffer1, releaseIcon, iconPath2, banner, bannerPath, featureGraphic, featureGraphicPath, screenshots, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, item, mediaPath, err, videos, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, video, mediaPath1, err, googlePkg, pkgCompare, alpha_testers, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, wallet;
|
|
269
270
|
var _arguments = arguments;
|
|
270
271
|
return _ts_generator(this, function(_state) {
|
|
271
272
|
switch(_state.label){
|
|
@@ -277,6 +278,7 @@ export var loadPublishDetailsWithChecks = function() {
|
|
|
277
278
|
];
|
|
278
279
|
case 1:
|
|
279
280
|
config = _state.sent();
|
|
281
|
+
// We validate that the config is going to have at least one installable asset
|
|
280
282
|
apkEntry = config.release.files.find(function(asset) {
|
|
281
283
|
return asset.purpose === "install";
|
|
282
284
|
});
|
|
@@ -297,7 +299,7 @@ export var loadPublishDetailsWithChecks = function() {
|
|
|
297
299
|
_.android_details = _state.sent();
|
|
298
300
|
_state.label = 3;
|
|
299
301
|
case 3:
|
|
300
|
-
publisherIcon = (
|
|
302
|
+
publisherIcon = (_config_publisher_media = config.publisher.media) === null || _config_publisher_media === void 0 ? void 0 : (_config_publisher_media_find = _config_publisher_media.find(function(asset) {
|
|
301
303
|
return asset.purpose === "icon";
|
|
302
304
|
})) === null || _config_publisher_media_find === void 0 ? void 0 : _config_publisher_media_find.uri;
|
|
303
305
|
if (!publisherIcon) return [
|
|
@@ -320,7 +322,7 @@ export var loadPublishDetailsWithChecks = function() {
|
|
|
320
322
|
config.publisher.icon = toMetaplexFile(iconBuffer, publisherIcon);
|
|
321
323
|
_state.label = 6;
|
|
322
324
|
case 6:
|
|
323
|
-
appIcon = (
|
|
325
|
+
appIcon = (_config_app_media = config.app.media) === null || _config_app_media === void 0 ? void 0 : (_config_app_media_find = _config_app_media.find(function(asset) {
|
|
324
326
|
return asset.purpose === "icon";
|
|
325
327
|
})) === null || _config_app_media_find === void 0 ? void 0 : _config_app_media_find.uri;
|
|
326
328
|
if (!appIcon) return [
|
|
@@ -343,7 +345,7 @@ export var loadPublishDetailsWithChecks = function() {
|
|
|
343
345
|
config.app.icon = toMetaplexFile(iconBuffer1, appIcon);
|
|
344
346
|
_state.label = 9;
|
|
345
347
|
case 9:
|
|
346
|
-
releaseIcon = (
|
|
348
|
+
releaseIcon = (_config_release_media = config.release.media) === null || _config_release_media === void 0 ? void 0 : (_config_release_media_find = _config_release_media.find(function(asset) {
|
|
347
349
|
return asset.purpose === "icon";
|
|
348
350
|
})) === null || _config_release_media_find === void 0 ? void 0 : _config_release_media_find.uri;
|
|
349
351
|
if (!releaseIcon) return [
|
|
@@ -362,6 +364,38 @@ export var loadPublishDetailsWithChecks = function() {
|
|
|
362
364
|
if (!appIcon && !releaseIcon) {
|
|
363
365
|
throw new Error("Please specify at least one media entry of type icon in your configuration file");
|
|
364
366
|
}
|
|
367
|
+
banner = (_config_release_media1 = config.release.media) === null || _config_release_media1 === void 0 ? void 0 : (_config_release_media_find1 = _config_release_media1.find(function(asset) {
|
|
368
|
+
return asset.purpose === "banner";
|
|
369
|
+
})) === null || _config_release_media_find1 === void 0 ? void 0 : _config_release_media_find1.uri;
|
|
370
|
+
if (!banner) return [
|
|
371
|
+
3,
|
|
372
|
+
13
|
|
373
|
+
];
|
|
374
|
+
bannerPath = path.join(process.cwd(), banner);
|
|
375
|
+
return [
|
|
376
|
+
4,
|
|
377
|
+
checkBannerCompatibility(bannerPath)
|
|
378
|
+
];
|
|
379
|
+
case 12:
|
|
380
|
+
_state.sent();
|
|
381
|
+
_state.label = 13;
|
|
382
|
+
case 13:
|
|
383
|
+
featureGraphic = (_config_release_media2 = config.release.media) === null || _config_release_media2 === void 0 ? void 0 : (_config_release_media_find2 = _config_release_media2.find(function(asset) {
|
|
384
|
+
return asset.purpose === "featureGraphic";
|
|
385
|
+
})) === null || _config_release_media_find2 === void 0 ? void 0 : _config_release_media_find2.uri;
|
|
386
|
+
if (!featureGraphic) return [
|
|
387
|
+
3,
|
|
388
|
+
15
|
|
389
|
+
];
|
|
390
|
+
featureGraphicPath = path.join(process.cwd(), featureGraphic);
|
|
391
|
+
return [
|
|
392
|
+
4,
|
|
393
|
+
checkFeatureGraphicCompatibility(featureGraphicPath)
|
|
394
|
+
];
|
|
395
|
+
case 14:
|
|
396
|
+
_state.sent();
|
|
397
|
+
_state.label = 15;
|
|
398
|
+
case 15:
|
|
365
399
|
config.release.media.forEach(function(item) {
|
|
366
400
|
var mediaPath = path.join(process.cwd(), item.uri);
|
|
367
401
|
if (!fs.existsSync(mediaPath)) {
|
|
@@ -374,56 +408,56 @@ export var loadPublishDetailsWithChecks = function() {
|
|
|
374
408
|
throw new Error("Please ensure the file ".concat(item.uri, " is a mp4."));
|
|
375
409
|
}
|
|
376
410
|
});
|
|
377
|
-
screenshots = (
|
|
411
|
+
screenshots = (_config_release_media3 = config.release.media) === null || _config_release_media3 === void 0 ? void 0 : _config_release_media3.filter(function(asset) {
|
|
378
412
|
return asset.purpose === "screenshot";
|
|
379
413
|
});
|
|
380
414
|
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
381
|
-
_state.label =
|
|
382
|
-
case
|
|
415
|
+
_state.label = 16;
|
|
416
|
+
case 16:
|
|
383
417
|
_state.trys.push([
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
418
|
+
16,
|
|
419
|
+
21,
|
|
420
|
+
22,
|
|
421
|
+
23
|
|
388
422
|
]);
|
|
389
423
|
_iterator = screenshots[Symbol.iterator]();
|
|
390
|
-
_state.label =
|
|
391
|
-
case
|
|
424
|
+
_state.label = 17;
|
|
425
|
+
case 17:
|
|
392
426
|
if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done)) return [
|
|
393
427
|
3,
|
|
394
|
-
|
|
428
|
+
20
|
|
395
429
|
];
|
|
396
430
|
item = _step.value;
|
|
397
431
|
mediaPath = path.join(process.cwd(), item.uri);
|
|
398
432
|
return [
|
|
399
433
|
4,
|
|
400
|
-
|
|
434
|
+
checkScreenshotDimensions(mediaPath)
|
|
401
435
|
];
|
|
402
|
-
case
|
|
436
|
+
case 18:
|
|
403
437
|
if (_state.sent()) {
|
|
404
438
|
throw new Error("Screenshot ".concat(mediaPath, " must be at least 1080px in width and height."));
|
|
405
439
|
}
|
|
406
|
-
_state.label =
|
|
407
|
-
case
|
|
440
|
+
_state.label = 19;
|
|
441
|
+
case 19:
|
|
408
442
|
_iteratorNormalCompletion = true;
|
|
409
443
|
return [
|
|
410
444
|
3,
|
|
411
|
-
|
|
445
|
+
17
|
|
412
446
|
];
|
|
413
|
-
case
|
|
447
|
+
case 20:
|
|
414
448
|
return [
|
|
415
449
|
3,
|
|
416
|
-
|
|
450
|
+
23
|
|
417
451
|
];
|
|
418
|
-
case
|
|
452
|
+
case 21:
|
|
419
453
|
err = _state.sent();
|
|
420
454
|
_didIteratorError = true;
|
|
421
455
|
_iteratorError = err;
|
|
422
456
|
return [
|
|
423
457
|
3,
|
|
424
|
-
|
|
458
|
+
23
|
|
425
459
|
];
|
|
426
|
-
case
|
|
460
|
+
case 22:
|
|
427
461
|
try {
|
|
428
462
|
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
429
463
|
_iterator.return();
|
|
@@ -436,57 +470,57 @@ export var loadPublishDetailsWithChecks = function() {
|
|
|
436
470
|
return [
|
|
437
471
|
7
|
|
438
472
|
];
|
|
439
|
-
case
|
|
440
|
-
videos = (
|
|
473
|
+
case 23:
|
|
474
|
+
videos = (_config_release_media4 = config.release.media) === null || _config_release_media4 === void 0 ? void 0 : _config_release_media4.filter(function(asset) {
|
|
441
475
|
return asset.purpose === "video";
|
|
442
476
|
});
|
|
443
477
|
_iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
444
|
-
_state.label =
|
|
445
|
-
case
|
|
478
|
+
_state.label = 24;
|
|
479
|
+
case 24:
|
|
446
480
|
_state.trys.push([
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
481
|
+
24,
|
|
482
|
+
29,
|
|
483
|
+
30,
|
|
484
|
+
31
|
|
451
485
|
]);
|
|
452
486
|
_iterator1 = videos[Symbol.iterator]();
|
|
453
|
-
_state.label =
|
|
454
|
-
case
|
|
487
|
+
_state.label = 25;
|
|
488
|
+
case 25:
|
|
455
489
|
if (!!(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done)) return [
|
|
456
490
|
3,
|
|
457
|
-
|
|
491
|
+
28
|
|
458
492
|
];
|
|
459
493
|
video = _step1.value;
|
|
460
494
|
mediaPath1 = path.join(process.cwd(), video.uri);
|
|
461
495
|
return [
|
|
462
496
|
4,
|
|
463
|
-
|
|
497
|
+
checkVideoDimensions(mediaPath1)
|
|
464
498
|
];
|
|
465
|
-
case
|
|
499
|
+
case 26:
|
|
466
500
|
if (_state.sent()) {
|
|
467
501
|
throw new Error("Video ".concat(mediaPath1, " must be at least 720px in width and height."));
|
|
468
502
|
}
|
|
469
|
-
_state.label =
|
|
470
|
-
case
|
|
503
|
+
_state.label = 27;
|
|
504
|
+
case 27:
|
|
471
505
|
_iteratorNormalCompletion1 = true;
|
|
472
506
|
return [
|
|
473
507
|
3,
|
|
474
|
-
|
|
508
|
+
25
|
|
475
509
|
];
|
|
476
|
-
case
|
|
510
|
+
case 28:
|
|
477
511
|
return [
|
|
478
512
|
3,
|
|
479
|
-
|
|
513
|
+
31
|
|
480
514
|
];
|
|
481
|
-
case
|
|
515
|
+
case 29:
|
|
482
516
|
err = _state.sent();
|
|
483
517
|
_didIteratorError1 = true;
|
|
484
518
|
_iteratorError1 = err;
|
|
485
519
|
return [
|
|
486
520
|
3,
|
|
487
|
-
|
|
521
|
+
31
|
|
488
522
|
];
|
|
489
|
-
case
|
|
523
|
+
case 30:
|
|
490
524
|
try {
|
|
491
525
|
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
492
526
|
_iterator1.return();
|
|
@@ -499,7 +533,7 @@ export var loadPublishDetailsWithChecks = function() {
|
|
|
499
533
|
return [
|
|
500
534
|
7
|
|
501
535
|
];
|
|
502
|
-
case
|
|
536
|
+
case 31:
|
|
503
537
|
if (screenshots.length + videos.length < 4) {
|
|
504
538
|
throw new Error("At least 4 screenshots or videos are required for publishing a new release. Found only ".concat(screenshots.length + videos.length));
|
|
505
539
|
}
|
|
@@ -511,6 +545,36 @@ export var loadPublishDetailsWithChecks = function() {
|
|
|
511
545
|
throw new Error("Please provide a valid Google store package name in the Publisher Portal section of your configuration file.");
|
|
512
546
|
}
|
|
513
547
|
}
|
|
548
|
+
alpha_testers = config.solana_mobile_dapp_publisher_portal.alpha_testers;
|
|
549
|
+
if (alpha_testers !== undefined) {
|
|
550
|
+
_iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = undefined;
|
|
551
|
+
try {
|
|
552
|
+
for(_iterator2 = alpha_testers[Symbol.iterator](); !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true){
|
|
553
|
+
wallet = _step2.value;
|
|
554
|
+
try {
|
|
555
|
+
void new PublicKey(wallet.address);
|
|
556
|
+
} catch (e) {
|
|
557
|
+
throw new Error("invalid alpha tester wallet address <".concat(wallet, ">"));
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
} catch (err) {
|
|
561
|
+
_didIteratorError2 = true;
|
|
562
|
+
_iteratorError2 = err;
|
|
563
|
+
} finally{
|
|
564
|
+
try {
|
|
565
|
+
if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
|
|
566
|
+
_iterator2.return();
|
|
567
|
+
}
|
|
568
|
+
} finally{
|
|
569
|
+
if (_didIteratorError2) {
|
|
570
|
+
throw _iteratorError2;
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
if (alpha_testers.size > 10) {
|
|
575
|
+
throw new Error("Alpha testers are limited to 10 per app submission");
|
|
576
|
+
}
|
|
577
|
+
}
|
|
514
578
|
return [
|
|
515
579
|
2,
|
|
516
580
|
config
|
|
@@ -522,7 +586,7 @@ export var loadPublishDetailsWithChecks = function() {
|
|
|
522
586
|
return _ref.apply(this, arguments);
|
|
523
587
|
};
|
|
524
588
|
}();
|
|
525
|
-
var checkIconCompatibility = function() {
|
|
589
|
+
var checkIconCompatibility = /*#__PURE__*/ function() {
|
|
526
590
|
var _ref = _async_to_generator(function(path, typeString) {
|
|
527
591
|
return _ts_generator(this, function(_state) {
|
|
528
592
|
switch(_state.label){
|
|
@@ -548,6 +612,58 @@ var checkIconCompatibility = function() {
|
|
|
548
612
|
return _ref.apply(this, arguments);
|
|
549
613
|
};
|
|
550
614
|
}();
|
|
615
|
+
var checkBannerCompatibility = /*#__PURE__*/ function() {
|
|
616
|
+
var _ref = _async_to_generator(function(path) {
|
|
617
|
+
return _ts_generator(this, function(_state) {
|
|
618
|
+
switch(_state.label){
|
|
619
|
+
case 0:
|
|
620
|
+
if (!fs.existsSync(path) || !checkImageExtension(path)) {
|
|
621
|
+
throw new Error("Please check the path to your banner image and ensure the file is a jpeg, png, or webp file.");
|
|
622
|
+
}
|
|
623
|
+
return [
|
|
624
|
+
4,
|
|
625
|
+
checkBannerDimensions(path)
|
|
626
|
+
];
|
|
627
|
+
case 1:
|
|
628
|
+
if (_state.sent()) {
|
|
629
|
+
throw new Error("Banner must be 1200px by 600px.");
|
|
630
|
+
}
|
|
631
|
+
return [
|
|
632
|
+
2
|
|
633
|
+
];
|
|
634
|
+
}
|
|
635
|
+
});
|
|
636
|
+
});
|
|
637
|
+
return function checkBannerCompatibility(path) {
|
|
638
|
+
return _ref.apply(this, arguments);
|
|
639
|
+
};
|
|
640
|
+
}();
|
|
641
|
+
var checkFeatureGraphicCompatibility = /*#__PURE__*/ function() {
|
|
642
|
+
var _ref = _async_to_generator(function(path) {
|
|
643
|
+
return _ts_generator(this, function(_state) {
|
|
644
|
+
switch(_state.label){
|
|
645
|
+
case 0:
|
|
646
|
+
if (!fs.existsSync(path) || !checkImageExtension(path)) {
|
|
647
|
+
throw new Error("Please check the path to your featureGraphic image and ensure the file is a jpeg, png, or webp file.");
|
|
648
|
+
}
|
|
649
|
+
return [
|
|
650
|
+
4,
|
|
651
|
+
checkFeatureGraphicDimensions(path)
|
|
652
|
+
];
|
|
653
|
+
case 1:
|
|
654
|
+
if (_state.sent()) {
|
|
655
|
+
throw new Error("Feature Graphic must be 1200px by 1200px.");
|
|
656
|
+
}
|
|
657
|
+
return [
|
|
658
|
+
2
|
|
659
|
+
];
|
|
660
|
+
}
|
|
661
|
+
});
|
|
662
|
+
});
|
|
663
|
+
return function checkFeatureGraphicCompatibility(path) {
|
|
664
|
+
return _ref.apply(this, arguments);
|
|
665
|
+
};
|
|
666
|
+
}();
|
|
551
667
|
var checkImageExtension = function(uri) {
|
|
552
668
|
var fileExt = path.extname(uri).toLowerCase();
|
|
553
669
|
return fileExt == ".png" || fileExt == ".jpg" || fileExt == ".jpeg" || fileExt == ".webp";
|
|
@@ -578,7 +694,7 @@ var checkVideoExtension = function(uri) {
|
|
|
578
694
|
throw new Error("Please ensure all translations of short_description are between 0 and 30 characters");
|
|
579
695
|
}
|
|
580
696
|
};
|
|
581
|
-
var checkIconDimensions = function() {
|
|
697
|
+
var checkIconDimensions = /*#__PURE__*/ function() {
|
|
582
698
|
var _ref = _async_to_generator(function(iconPath) {
|
|
583
699
|
var size, _size_width;
|
|
584
700
|
return _ts_generator(this, function(_state) {
|
|
@@ -601,7 +717,7 @@ var checkIconDimensions = function() {
|
|
|
601
717
|
return _ref.apply(this, arguments);
|
|
602
718
|
};
|
|
603
719
|
}();
|
|
604
|
-
var
|
|
720
|
+
var checkScreenshotDimensions = /*#__PURE__*/ function() {
|
|
605
721
|
var _ref = _async_to_generator(function(imagePath) {
|
|
606
722
|
var size, _size_width, _size_height;
|
|
607
723
|
return _ts_generator(this, function(_state) {
|
|
@@ -620,11 +736,57 @@ var checkScreenshotSize = function() {
|
|
|
620
736
|
}
|
|
621
737
|
});
|
|
622
738
|
});
|
|
623
|
-
return function
|
|
739
|
+
return function checkScreenshotDimensions(imagePath) {
|
|
740
|
+
return _ref.apply(this, arguments);
|
|
741
|
+
};
|
|
742
|
+
}();
|
|
743
|
+
var checkBannerDimensions = /*#__PURE__*/ function() {
|
|
744
|
+
var _ref = _async_to_generator(function(imagePath) {
|
|
745
|
+
var size, _size_width, _size_height;
|
|
746
|
+
return _ts_generator(this, function(_state) {
|
|
747
|
+
switch(_state.label){
|
|
748
|
+
case 0:
|
|
749
|
+
return [
|
|
750
|
+
4,
|
|
751
|
+
runImgSize(imagePath)
|
|
752
|
+
];
|
|
753
|
+
case 1:
|
|
754
|
+
size = _state.sent();
|
|
755
|
+
return [
|
|
756
|
+
2,
|
|
757
|
+
((_size_width = size === null || size === void 0 ? void 0 : size.width) !== null && _size_width !== void 0 ? _size_width : 0) != 1200 || ((_size_height = size === null || size === void 0 ? void 0 : size.height) !== null && _size_height !== void 0 ? _size_height : 0) != 600
|
|
758
|
+
];
|
|
759
|
+
}
|
|
760
|
+
});
|
|
761
|
+
});
|
|
762
|
+
return function checkBannerDimensions(imagePath) {
|
|
763
|
+
return _ref.apply(this, arguments);
|
|
764
|
+
};
|
|
765
|
+
}();
|
|
766
|
+
var checkFeatureGraphicDimensions = /*#__PURE__*/ function() {
|
|
767
|
+
var _ref = _async_to_generator(function(imagePath) {
|
|
768
|
+
var size, _size_width, _size_height;
|
|
769
|
+
return _ts_generator(this, function(_state) {
|
|
770
|
+
switch(_state.label){
|
|
771
|
+
case 0:
|
|
772
|
+
return [
|
|
773
|
+
4,
|
|
774
|
+
runImgSize(imagePath)
|
|
775
|
+
];
|
|
776
|
+
case 1:
|
|
777
|
+
size = _state.sent();
|
|
778
|
+
return [
|
|
779
|
+
2,
|
|
780
|
+
((_size_width = size === null || size === void 0 ? void 0 : size.width) !== null && _size_width !== void 0 ? _size_width : 0) != 1200 || ((_size_height = size === null || size === void 0 ? void 0 : size.height) !== null && _size_height !== void 0 ? _size_height : 0) != 1200
|
|
781
|
+
];
|
|
782
|
+
}
|
|
783
|
+
});
|
|
784
|
+
});
|
|
785
|
+
return function checkFeatureGraphicDimensions(imagePath) {
|
|
624
786
|
return _ref.apply(this, arguments);
|
|
625
787
|
};
|
|
626
788
|
}();
|
|
627
|
-
var
|
|
789
|
+
var checkVideoDimensions = /*#__PURE__*/ function() {
|
|
628
790
|
var _ref = _async_to_generator(function(imagePath) {
|
|
629
791
|
var size, _size_width, _size_height;
|
|
630
792
|
return _ts_generator(this, function(_state) {
|
|
@@ -643,11 +805,11 @@ var checkVideoSize = function() {
|
|
|
643
805
|
}
|
|
644
806
|
});
|
|
645
807
|
});
|
|
646
|
-
return function
|
|
808
|
+
return function checkVideoDimensions(imagePath) {
|
|
647
809
|
return _ref.apply(this, arguments);
|
|
648
810
|
};
|
|
649
811
|
}();
|
|
650
|
-
var getAndroidDetails = function() {
|
|
812
|
+
var getAndroidDetails = /*#__PURE__*/ function() {
|
|
651
813
|
var _ref = _async_to_generator(function(aaptDir, apkPath) {
|
|
652
814
|
var stdout, appPackage, versionCode, versionName, minSdk, permissions, locales, isDebuggable, _locales_values, localeArray, localesSrc, _appPackage_, _minSdk_, _versionCode_, _versionName_, _tmp, e;
|
|
653
815
|
return _ts_generator(this, function(_state) {
|
|
@@ -734,7 +896,7 @@ var getAndroidDetails = function() {
|
|
|
734
896
|
return _ref.apply(this, arguments);
|
|
735
897
|
};
|
|
736
898
|
}();
|
|
737
|
-
var checkAbis = function() {
|
|
899
|
+
var checkAbis = /*#__PURE__*/ function() {
|
|
738
900
|
var _ref = _async_to_generator(function(apkPath) {
|
|
739
901
|
var stdout, amV7libs, x86libs, x8664libs, messages, e;
|
|
740
902
|
return _ts_generator(this, function(_state) {
|
|
@@ -774,7 +936,7 @@ var checkAbis = function() {
|
|
|
774
936
|
] : []), [
|
|
775
937
|
"\n\nAlthough your app works fine on Saga, these library files are unused and increase the size of apk file making the download and update time longer for your app.",
|
|
776
938
|
"\n\nSee https://developer.android.com/games/optimize/64-bit#build-with-64-bit for how to optimize your app."
|
|
777
|
-
]).join(
|
|
939
|
+
]).join('\n');
|
|
778
940
|
showMessage("Unsupported files found in apk", messages, "warning");
|
|
779
941
|
}
|
|
780
942
|
return [
|
|
@@ -798,7 +960,7 @@ var checkAbis = function() {
|
|
|
798
960
|
return _ref.apply(this, arguments);
|
|
799
961
|
};
|
|
800
962
|
}();
|
|
801
|
-
export var extractCertFingerprint = function() {
|
|
963
|
+
export var extractCertFingerprint = /*#__PURE__*/ function() {
|
|
802
964
|
var _ref = _async_to_generator(function(aaptDir, apkPath) {
|
|
803
965
|
var stdout, regex, match;
|
|
804
966
|
return _ts_generator(this, function(_state) {
|
|
@@ -830,7 +992,7 @@ export var extractCertFingerprint = function() {
|
|
|
830
992
|
return _ref.apply(this, arguments);
|
|
831
993
|
};
|
|
832
994
|
}();
|
|
833
|
-
export var writeToPublishDetails = function() {
|
|
995
|
+
export var writeToPublishDetails = /*#__PURE__*/ function() {
|
|
834
996
|
var _ref = _async_to_generator(function(param) {
|
|
835
997
|
var publisher, app, release, lastSubmittedVersionOnChain, lastUpdatedVersionOnStore, currentConfig, _publisher_address, _app_address, _release_address, newConfig;
|
|
836
998
|
return _ts_generator(this, function(_state) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"publisher":{"name":"<<YOUR_PUBLISHER_NAME>>","address":"","website":"<<URL_OF_PUBLISHER_WEBSITE>>","email":"<<EMAIL_ADDRESS_TO_CONTACT_PUBLISHER>>","media":[{"purpose":"icon","uri":"<<RELATIVE_PATH_TO_PUBLISHER_ICON>>"}]},"app":{"name":"<<APP_NAME>>","address":"","android_package":"<<ANDROID_PACKAGE_NAME>>","urls":{"license_url":"<<URL_OF_APP_LICENSE_OR_TERMS_OF_SERVICE>>","copyright_url":"<<URL_OF_COPYRIGHT_DETAILS_FOR_APP>>","privacy_policy_url":"<<URL_OF_APP_PRIVACY_POLICY>>","website":"<<URL_OF_APP_WEBSITE>>"},"media":[{"purpose":"icon","uri":"<<RELATIVE_PATH_TO_APP_ICON>>"}]},"release":{"address":"","media":[{"purpose":"icon","uri":"<<RELATIVE_PATH_TO_RELEASE_ICON>>"},{"purpose":"screenshot","uri":"<<RELATIVE_PATH_TO_SCREENSHOT1>>"},{"purpose":"screenshot","uri":"<<RELATIVE_PATH_TO_SCREENSHOT2>>"},{"purpose":"screenshot","uri":"<<RELATIVE_PATH_TO_SCREENSHOT3>>"},{"purpose":"screenshot","uri":"<<RELATIVE_PATH_TO_SCREENSHOT4>>"},{"purpose":"video","uri":"<<RELATIVE_PATH_TO_VIDEO1>>"}],"files":[{"purpose":"install","uri":"<<RELATIVE_PATH_TO_APK>>"}],"catalog":{"en-US":{"name":"<<APP_NAME>>","short_description":"<<SHORT_APP_DESCRIPTION>>","long_description":"<<LONG_APP_DESCRIPTION>>","new_in_version":"<<WHATS_NEW_IN_THIS_VERSION>>","saga_features":"<<ANY_FEATURES_ONLY_AVAILBLE_WHEN_RUNNING_ON_SAGA>>"}}},"solana_mobile_dapp_publisher_portal":{"google_store_package":"<<ANDROID_PACKAGE_NAME_OF_GOOGLE_PLAY_STORE_VERSION_IF_DIFFERENT>>","testing_instructions":"<<TESTING_INSTRUCTIONS>>"}}
|
|
1
|
+
{"publisher":{"name":"<<YOUR_PUBLISHER_NAME>>","address":"","website":"<<URL_OF_PUBLISHER_WEBSITE>>","email":"<<EMAIL_ADDRESS_TO_CONTACT_PUBLISHER>>","media":[{"purpose":"icon","uri":"<<RELATIVE_PATH_TO_PUBLISHER_ICON>>"}]},"app":{"name":"<<APP_NAME>>","address":"","android_package":"<<ANDROID_PACKAGE_NAME>>","urls":{"license_url":"<<URL_OF_APP_LICENSE_OR_TERMS_OF_SERVICE>>","copyright_url":"<<URL_OF_COPYRIGHT_DETAILS_FOR_APP>>","privacy_policy_url":"<<URL_OF_APP_PRIVACY_POLICY>>","website":"<<URL_OF_APP_WEBSITE>>"},"media":[{"purpose":"icon","uri":"<<RELATIVE_PATH_TO_APP_ICON>>"}]},"release":{"address":"","media":[{"purpose":"icon","uri":"<<RELATIVE_PATH_TO_RELEASE_ICON>>"},{"purpose":"banner","uri":"<<RELATIVE_PATH_TO_BANNER>>"},{"purpose":"featureGraphic","uri":"<<RELATIVE_PATH_TO_FEATURE_GRAPHIC>>"},{"purpose":"screenshot","uri":"<<RELATIVE_PATH_TO_SCREENSHOT1>>"},{"purpose":"screenshot","uri":"<<RELATIVE_PATH_TO_SCREENSHOT2>>"},{"purpose":"screenshot","uri":"<<RELATIVE_PATH_TO_SCREENSHOT3>>"},{"purpose":"screenshot","uri":"<<RELATIVE_PATH_TO_SCREENSHOT4>>"},{"purpose":"video","uri":"<<RELATIVE_PATH_TO_VIDEO1>>"}],"files":[{"purpose":"install","uri":"<<RELATIVE_PATH_TO_APK>>"}],"catalog":{"en-US":{"name":"<<APP_NAME>>","short_description":"<<SHORT_APP_DESCRIPTION>>","long_description":"<<LONG_APP_DESCRIPTION>>","new_in_version":"<<WHATS_NEW_IN_THIS_VERSION>>","saga_features":"<<ANY_FEATURES_ONLY_AVAILBLE_WHEN_RUNNING_ON_SAGA>>"}}},"solana_mobile_dapp_publisher_portal":{"google_store_package":"<<ANDROID_PACKAGE_NAME_OF_GOOGLE_PLAY_STORE_VERSION_IF_DIFFERENT>>","testing_instructions":"<<TESTING_INSTRUCTIONS>>","alpha_testers":[{"address":"<<genesis token wallet address>>","comment":"<<Optional. For internal use only>>"},{"address":"<<genesis token wallet address>>","comment":"<<Optional. For internal use only>>"}]}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"type":"object","properties":{"publisher":{"type":"object","properties":{"name":{"type":"string"},"address":{"type":"string"},"website":{"type":"string"},"email":{"type":"string"},"media":{"type":"array","items":{"type":"object","properties":{"purpose":{"type":"string"},"uri":{"type":"string"}}}}}},"app":{"type":"object","properties":{"name":{"type":"string"},"address":{"type":"string"},"android_package":{"type":"string"},"urls":{"type":"object","properties":{"license_url":{"type":"string"},"copyright_url":{"type":"string"},"privacy_policy_url":{"type":"string"},"website":{"type":"string"}}},"media":{"type":"array","items":{"type":"object","properties":{"purpose":{"type":"string"},"uri":{"type":"string"}}}}}},"release":{"type":"object","properties":{"address":{"type":"string"},"media":{"type":"array","items":{"type":"object","properties":{"purpose":{"type":"string"},"uri":{"type":"string"}},"required":["purpose","uri"]}},"files":{"type":"array","items":{"type":"object","properties":{"purpose":{"type":"string"},"uri":{"type":"string"}}}},"catalog":{"type":"object","properties":{"en-US":{"type":"object","properties":{"name":{"type":"string"},"short_description":{"type":"string"},"long_description":{"type":"string"},"new_in_version":{"type":"string"},"saga_features":{"type":"string"}},"required":["short_description"]}}}}},"solana_mobile_dapp_publisher_portal":{"type":"object","properties":{"google_store_package":{"type":"string"},"testing_instructions":{"type":"string"}}}}}
|
|
1
|
+
{"type":"object","properties":{"publisher":{"type":"object","properties":{"name":{"type":"string"},"address":{"type":"string"},"website":{"type":"string"},"email":{"type":"string"},"media":{"type":"array","items":{"type":"object","properties":{"purpose":{"type":"string"},"uri":{"type":"string"}}}}}},"app":{"type":"object","properties":{"name":{"type":"string"},"address":{"type":"string"},"android_package":{"type":"string"},"urls":{"type":"object","properties":{"license_url":{"type":"string"},"copyright_url":{"type":"string"},"privacy_policy_url":{"type":"string"},"website":{"type":"string"}}},"media":{"type":"array","items":{"type":"object","properties":{"purpose":{"type":"string"},"uri":{"type":"string"}}}}}},"release":{"type":"object","properties":{"address":{"type":"string"},"media":{"type":"array","items":{"type":"object","properties":{"purpose":{"type":"string"},"uri":{"type":"string"}},"required":["purpose","uri"]}},"files":{"type":"array","items":{"type":"object","properties":{"purpose":{"type":"string"},"uri":{"type":"string"}}}},"catalog":{"type":"object","properties":{"en-US":{"type":"object","properties":{"name":{"type":"string"},"short_description":{"type":"string"},"long_description":{"type":"string"},"new_in_version":{"type":"string"},"saga_features":{"type":"string"}},"required":["short_description"]}}}}},"solana_mobile_dapp_publisher_portal":{"type":"object","properties":{"google_store_package":{"type":"string"},"testing_instructions":{"type":"string"},"alpha_testers":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string"},"comment":{"type":"string"}},"required":["address","comment"]}}}}}}
|
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.10.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"dependencies": {
|
|
54
54
|
"@aws-sdk/client-s3": "^3.321.1",
|
|
55
55
|
"@metaplex-foundation/js-plugin-aws": "^0.20.0",
|
|
56
|
-
"@solana-mobile/dapp-store-publishing-tools": "workspace:0.
|
|
56
|
+
"@solana-mobile/dapp-store-publishing-tools": "workspace:0.10.0",
|
|
57
57
|
"@solana/web3.js": "1.92.1",
|
|
58
58
|
"@types/semver": "^7.3.13",
|
|
59
59
|
"ajv": "^8.11.0",
|
|
@@ -23,6 +23,10 @@ release:
|
|
|
23
23
|
media:
|
|
24
24
|
- purpose: icon
|
|
25
25
|
uri: <<RELATIVE_PATH_TO_RELEASE_ICON>>
|
|
26
|
+
- purpose: banner
|
|
27
|
+
uri: <<RELATIVE_PATH_TO_BANNER>>
|
|
28
|
+
- purpose: featureGraphic
|
|
29
|
+
uri: <<RELATIVE_PATH_TO_FEATURE_GRAPHIC>>
|
|
26
30
|
- purpose: screenshot
|
|
27
31
|
uri: <<RELATIVE_PATH_TO_SCREENSHOT1>>
|
|
28
32
|
- purpose: screenshot
|
|
@@ -51,4 +55,9 @@ release:
|
|
|
51
55
|
solana_mobile_dapp_publisher_portal:
|
|
52
56
|
google_store_package: <<ANDROID_PACKAGE_NAME_OF_GOOGLE_PLAY_STORE_VERSION_IF_DIFFERENT>>
|
|
53
57
|
testing_instructions: >-
|
|
54
|
-
<<TESTING_INSTRUCTIONS>>
|
|
58
|
+
<<TESTING_INSTRUCTIONS>>
|
|
59
|
+
alpha_testers:
|
|
60
|
+
- address: <<genesis token wallet address>>
|
|
61
|
+
comment: <<Optional. For internal use only>>
|
|
62
|
+
- address: <<genesis token wallet address>>
|
|
63
|
+
comment: <<Optional. For internal use only>>
|
|
@@ -2,10 +2,10 @@ import fs from "fs";
|
|
|
2
2
|
import yaml from "js-yaml";
|
|
3
3
|
import generateSchema from "generate-schema";
|
|
4
4
|
try {
|
|
5
|
-
var yamlSrc = fs.readFileSync(
|
|
5
|
+
var yamlSrc = fs.readFileSync('./src/prebuild_schema/publishing_source.yaml', 'utf8');
|
|
6
6
|
var convertedYaml = yaml.load(yamlSrc);
|
|
7
|
-
fs.writeFileSync(
|
|
8
|
-
var schema = generateSchema.json(
|
|
7
|
+
fs.writeFileSync('./src/generated/config_obj.json', Buffer.from(JSON.stringify(convertedYaml)), 'utf-8');
|
|
8
|
+
var schema = generateSchema.json('result', convertedYaml);
|
|
9
9
|
// CLI 0.3.0: Adding requirement for `short_description` so validation will catch
|
|
10
10
|
schema["properties"]["release"]["properties"]["catalog"]["properties"]["en-US"].required = [
|
|
11
11
|
"short_description"
|
|
@@ -14,7 +14,7 @@ try {
|
|
|
14
14
|
delete schema.$schema;
|
|
15
15
|
delete schema.title;
|
|
16
16
|
var toWrite = Buffer.from(JSON.stringify(schema));
|
|
17
|
-
fs.writeFileSync(
|
|
17
|
+
fs.writeFileSync('./src/generated/config_schema.json', toWrite, 'utf-8');
|
|
18
18
|
} catch (e) {
|
|
19
19
|
console.log(":: Schema generation step failed ::");
|
|
20
20
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@solana-mobile/dapp-store-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@aws-sdk/client-s3": "^3.321.1",
|
|
48
48
|
"@metaplex-foundation/js-plugin-aws": "^0.20.0",
|
|
49
|
-
"@solana-mobile/dapp-store-publishing-tools": "0.
|
|
49
|
+
"@solana-mobile/dapp-store-publishing-tools": "0.10.0",
|
|
50
50
|
"@solana/web3.js": "1.92.1",
|
|
51
51
|
"@types/semver": "^7.3.13",
|
|
52
52
|
"ajv": "^8.11.0",
|