@solana-mobile/dapp-store-cli 0.1.1-0 → 0.1.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.
Files changed (43) hide show
  1. package/README.md +27 -25
  2. package/bin/dapp-store.js +1 -1
  3. package/lib/esm/commands/create/release.js +2 -3
  4. package/lib/esm/commands/create/release.js.map +1 -1
  5. package/lib/esm/commands/publish/remove.js +2 -2
  6. package/lib/esm/commands/publish/remove.js.map +1 -1
  7. package/lib/esm/commands/publish/submit.js +2 -2
  8. package/lib/esm/commands/publish/submit.js.map +1 -1
  9. package/lib/esm/commands/publish/support.js +2 -2
  10. package/lib/esm/commands/publish/support.js.map +1 -1
  11. package/lib/esm/commands/publish/update.js +2 -2
  12. package/lib/esm/commands/publish/update.js.map +1 -1
  13. package/lib/esm/config/index.js.map +1 -1
  14. package/lib/esm/config/schema.json +11 -40
  15. package/lib/esm/index.js +133 -123
  16. package/lib/esm/index.js.map +1 -1
  17. package/lib/esm/upload/CachedStorageDriver.js +3 -1
  18. package/lib/esm/upload/CachedStorageDriver.js.map +1 -1
  19. package/lib/esm/utils.js +16 -28
  20. package/lib/esm/utils.js.map +1 -1
  21. package/lib/types/commands/create/release.d.ts +1 -2
  22. package/lib/types/commands/create/release.d.ts.map +1 -1
  23. package/lib/types/commands/publish/remove.d.ts.map +1 -1
  24. package/lib/types/commands/publish/submit.d.ts.map +1 -1
  25. package/lib/types/commands/publish/support.d.ts.map +1 -1
  26. package/lib/types/commands/publish/update.d.ts.map +1 -1
  27. package/lib/types/config/index.d.ts +0 -1
  28. package/lib/types/config/index.d.ts.map +1 -1
  29. package/lib/types/upload/CachedStorageDriver.d.ts +1 -1
  30. package/lib/types/upload/CachedStorageDriver.d.ts.map +1 -1
  31. package/lib/types/utils.d.ts +2 -4
  32. package/lib/types/utils.d.ts.map +1 -1
  33. package/package.json +2 -2
  34. package/src/commands/create/release.ts +1 -4
  35. package/src/commands/publish/remove.ts +5 -2
  36. package/src/commands/publish/submit.ts +2 -1
  37. package/src/commands/publish/support.ts +5 -2
  38. package/src/commands/publish/update.ts +2 -1
  39. package/src/config/index.ts +1 -2
  40. package/src/config/schema.json +11 -40
  41. package/src/index.ts +162 -155
  42. package/src/upload/CachedStorageDriver.ts +4 -1
  43. package/src/utils.ts +21 -54
package/README.md CHANGED
@@ -11,7 +11,6 @@
11
11
  - S3 URL -->
12
12
  - when we run the release, SHA hash the previous files and commit to an `.asset-cache`
13
13
 
14
-
15
14
  ## Publishing Notes
16
15
 
17
16
  - https://developer.android.com/guide/topics/resources/multilingual-support#specify-the-languages-your-app-supports
@@ -22,6 +21,7 @@
22
21
 
23
22
  - Node 16+
24
23
  - PNPM
24
+ - Android SDK build tools
25
25
 
26
26
  If you have Node 16+, you can [activate PNPM with Corepack](https://pnpm.io/installation#using-corepack):
27
27
 
@@ -36,14 +36,9 @@ Corepack requires a version to enable, so if you don't have [jq](https://stedola
36
36
  corepack prepare pnpm@7.13.4 --activate
37
37
  ```
38
38
 
39
- ## Setup
40
-
41
- ```shell
42
- git clone https://github.com/solana-mobile/app-publishing-spec
43
- cd app-publishing-spec
44
- pnpm install
45
- pnpm run build
46
- pnpm link .
39
+ You must have the Android SDK build tools available for use by the `dapp-store` CLI. If you have Android Studio, these tools are available as part of that installation (for e.g., on MacOS, they can be found in ~/Library/Android/sdk/build-tools/<version>). If you do not have Android Studio installed, or wish to use a standalone version of the Android SDK build tools, please follow the instructions [here](https://developer.android.com/studio/intro/update#sdk-manager). The path to the SDK build tools can be provided either directly to subcommands that require it with the `-b` option, or indirectly via a `.env` file:
40
+ ```
41
+ echo "ANDROID_TOOLS_DIR=<path_to_android_sdk_build_tools_dir>" > .env
47
42
  ```
48
43
 
49
44
  ## Usage
@@ -52,7 +47,23 @@ In your application folder (e.g., `example`):
52
47
 
53
48
  ```shell
54
49
  cd example
55
- pnpm link <path-to-app-publishing-spec>/packages/cli
50
+ pnpm install --save-dev @solana-mobile/dapp-store-cli
51
+ npx dapp-store --help
52
+ ```
53
+
54
+ or with `yarn`
55
+
56
+ ```shell
57
+ cd example
58
+ yarn add @solana-mobile/dapp-store-cli
59
+ yarn run dapp-store --help
60
+ ```
61
+
62
+ or with `npm`
63
+
64
+ ```shell
65
+ cd example
66
+ npm install --save-dev @solana-mobile/dapp-store-cli
56
67
  npx dapp-store --help
57
68
  ```
58
69
 
@@ -68,21 +79,16 @@ Publishers, applications, and releases on the Saga Dapp Store are all represente
68
79
 
69
80
  A typical publishing flow might look like:
70
81
 
71
- 1. Create a publisher (`dapp-store create publisher`)
72
- 2. Create an app (`dapp-store create app`)
73
- 3. Create a release (`dapp-store create release`)
74
- 4. Submit an app for review (`dapp-store submit-for-review`)
82
+ 1. Create a publisher (`dapp-store create publisher ...`)
83
+ 2. Create an app (`dapp-store create app ...`)
84
+ 3. Create a release (`dapp-store create release ...`)
85
+ 4. Submit an app for review (`dapp-store publish submit ...`)
75
86
 
76
87
  Repeat steps 3. and 4. as needed!
77
88
 
78
89
  ## Editor's Note
79
90
 
80
- The `dapp-store` CLI:
81
-
82
- - takes an opinionated approach to file structure optimizing for source control
83
- - handles rote tasks like uploading assets to immutable file storage and i18n
84
-
85
- However, it is by no means the only way to create these NFTs—all information about the requirements are specified in this repository, and the packages have been designed to be portable to other client contexts besides the CLI
91
+ The `dapp-store` CLI handles rote tasks like uploading assets to immutable file storage and i18n. However, it is by no means the only way to create these NFTs—all information about the requirements are specified in this repository, and the packages have been designed to be portable to other client contexts besides the CLI.
86
92
 
87
93
  ## Configuration
88
94
 
@@ -101,8 +107,6 @@ app:
101
107
  name: My new app name
102
108
  address: 4xE4MDVHfFAXMKKzqrJ2v1HxcgYgdoV98nuvd8SRKhWP
103
109
  android_package: com.company.dapp
104
- creators:
105
- - 7pF18kRbv4mWdLPNMa8CjqLotQpznxzzRJqwdMibMitE
106
110
  urls:
107
111
  license_url: http://cdn.org/license.html
108
112
  copyright_url: http://cdn.org/copyright.html
@@ -112,7 +116,6 @@ app:
112
116
  - purpose: icon
113
117
  uri: ./media/app_icon.jpeg
114
118
  release:
115
- version: 1.0.4
116
119
  address: HeXP8pLxxzWPo1j7FwsytrCBN9Q7HZ3MA8TVCVGj5eCA
117
120
  media:
118
121
  - purpose: screenshot
@@ -130,7 +133,7 @@ release:
130
133
  Some wonderful release notes, in long-form
131
134
  new_in_version: |
132
135
  Something new in this version
133
- saga_features_localized: |
136
+ saga_features: |
134
137
  Some information about saga specific features
135
138
  solana_mobile_dapp_publisher_portal:
136
139
  google_store_package: com.company.dapp.otherpkg
@@ -139,4 +142,3 @@ solana_mobile_dapp_publisher_portal:
139
142
  can specify multiple lines of instructions. For example, if a login is
140
143
  needed, you would add those details here.
141
144
  ```
142
-
package/bin/dapp-store.js CHANGED
@@ -1,3 +1,3 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node --experimental-json-modules
2
2
 
3
3
  import "../lib/esm/index.js";
@@ -24,7 +24,7 @@ const createReleaseNft = async ({ appMintAddress, releaseDetails, appDetails, pu
24
24
  });
25
25
  return { releaseAddress: releaseMintAddress.publicKey.toBase58() };
26
26
  };
27
- export const createReleaseCommand = async ({ appMintAddress, version, buildToolsPath, signer, url, dryRun = false, }) => {
27
+ export const createReleaseCommand = async ({ appMintAddress, buildToolsPath, signer, url, dryRun = false, }) => {
28
28
  const connection = new Connection(url);
29
29
  const { release, app, publisher } = await getConfigFile(buildToolsPath);
30
30
  if (!dryRun) {
@@ -34,13 +34,12 @@ export const createReleaseCommand = async ({ appMintAddress, version, buildTools
34
34
  publisher: signer,
35
35
  releaseDetails: {
36
36
  ...release,
37
- version,
38
37
  },
39
38
  appDetails: app,
40
39
  publisherDetails: publisher,
41
40
  });
42
41
  saveToConfig({
43
- release: { address: releaseAddress, version },
42
+ release: { address: releaseAddress },
44
43
  });
45
44
  return { releaseAddress };
46
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"release.js","sourceRoot":"","sources":["../../../../src/commands/create/release.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAC3E,OAAO,EACL,UAAU,EACV,OAAO,EACP,SAAS,EACT,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,YAAY,GACb,MAAM,gBAAgB,CAAC;AAWxB,MAAM,gBAAgB,GAAG,KAAK,EAAE,EAC9B,cAAc,EACd,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,SAAS,GAQV,EAAE,EAAE;IACH,MAAM,kBAAkB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAE9C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAE5D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,aAAa,CACvC;QACE,cAAc,EAAE,IAAI,SAAS,CAAC,cAAc,CAAC;QAC7C,kBAAkB;QAClB,cAAc;QACd,UAAU;QACV,gBAAgB;KACjB,EACD,EAAE,QAAQ,EAAE,SAAS,EAAE,CACxB,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,kBAAkB,EAAE,CAAC;IACxD,MAAM,EAAE,GAAG,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC9C,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;IAEvC,MAAM,KAAK,GAAG,MAAM,yBAAyB,CAAC,UAAU,EAAE,EAAE,EAAE;QAC5D,SAAS;QACT,kBAAkB;KACnB,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC;QACX,KAAK;QACL,kBAAkB,EAAE,kBAAkB,CAAC,SAAS,CAAC,QAAQ,EAAE;KAC5D,CAAC,CAAC;IAEH,OAAO,EAAE,cAAc,EAAE,kBAAkB,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;AACrE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,EACzC,cAAc,EACd,OAAO,EACP,cAAc,EACd,MAAM,EACN,GAAG,EACH,MAAM,GAAG,KAAK,GACY,EAAE,EAAE;IAC9B,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IAEvC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM,aAAa,CAAC,cAAc,CAAC,CAAC;IAExE,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,gBAAgB,CAAC;YAChD,cAAc,EAAE,GAAG,CAAC,OAAO,IAAI,cAAc;YAC7C,UAAU;YACV,SAAS,EAAE,MAAM;YACjB,cAAc,EAAE;gBACd,GAAG,OAAO;gBACV,OAAO;aACR;YACD,UAAU,EAAE,GAAG;YACf,gBAAgB,EAAE,SAAS;SAC5B,CAAC,CAAC;QAEH,YAAY,CAAC;YACX,OAAO,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE;SAC9C,CAAC,CAAC;QAEH,OAAO,EAAE,cAAc,EAAE,CAAC;KAC3B;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"release.js","sourceRoot":"","sources":["../../../../src/commands/create/release.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAC3E,OAAO,EACL,UAAU,EACV,OAAO,EACP,SAAS,EACT,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,YAAY,GACb,MAAM,gBAAgB,CAAC;AAUxB,MAAM,gBAAgB,GAAG,KAAK,EAAE,EAC9B,cAAc,EACd,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,SAAS,GAQV,EAAE,EAAE;IACH,MAAM,kBAAkB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAE9C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAE5D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,aAAa,CACvC;QACE,cAAc,EAAE,IAAI,SAAS,CAAC,cAAc,CAAC;QAC7C,kBAAkB;QAClB,cAAc;QACd,UAAU;QACV,gBAAgB;KACjB,EACD,EAAE,QAAQ,EAAE,SAAS,EAAE,CACxB,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,kBAAkB,EAAE,CAAC;IACxD,MAAM,EAAE,GAAG,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC9C,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;IAEvC,MAAM,KAAK,GAAG,MAAM,yBAAyB,CAAC,UAAU,EAAE,EAAE,EAAE;QAC5D,SAAS;QACT,kBAAkB;KACnB,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC;QACX,KAAK;QACL,kBAAkB,EAAE,kBAAkB,CAAC,SAAS,CAAC,QAAQ,EAAE;KAC5D,CAAC,CAAC;IAEH,OAAO,EAAE,cAAc,EAAE,kBAAkB,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;AACrE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,EACzC,cAAc,EACd,cAAc,EACd,MAAM,EACN,GAAG,EACH,MAAM,GAAG,KAAK,GACY,EAAE,EAAE;IAC9B,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IAEvC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM,aAAa,CAAC,cAAc,CAAC,CAAC;IAExE,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,gBAAgB,CAAC;YAChD,cAAc,EAAE,GAAG,CAAC,OAAO,IAAI,cAAc;YAC7C,UAAU;YACV,SAAS,EAAE,MAAM;YACjB,cAAc,EAAE;gBACd,GAAG,OAAO;aACX;YACD,UAAU,EAAE,GAAG;YACf,gBAAgB,EAAE,SAAS;SAC5B,CAAC,CAAC;QAEH,YAAY,CAAC;YACX,OAAO,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;SACrC,CAAC,CAAC;QAEH,OAAO,EAAE,cAAc,EAAE,CAAC;KAC3B;AACH,CAAC,CAAC"}
@@ -8,10 +8,10 @@ export const publishRemoveCommand = async ({ releaseMintAddress, signer, url, dr
8
8
  return;
9
9
  }
10
10
  const connection = new Connection(url);
11
- const { publisher: publisherDetails } = await getConfigFile();
11
+ const { publisher: publisherDetails, release: releaseDetails, } = await getConfigFile();
12
12
  const sign = ((buf) => nacl.sign(buf, signer.secretKey));
13
13
  await publishRemove({ connection, sign }, {
14
- releaseMintAddress,
14
+ releaseMintAddress: releaseMintAddress ?? releaseDetails.address,
15
15
  publisherDetails,
16
16
  requestorIsAuthorized,
17
17
  criticalUpdate: critical,
@@ -1 +1 @@
1
- {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../../src/commands/publish/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAW,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,IAAI,MAAM,WAAW,CAAC;AAW7B,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,EACzC,kBAAkB,EAClB,MAAM,EACN,GAAG,EACH,MAAM,GAAG,KAAK,EACd,qBAAqB,GAAG,KAAK,EAC7B,QAAQ,GAAG,KAAK,GACU,EAAE,EAAE;IAC9B,IAAI,CAAC,qBAAqB,EAAE;QAC1B,OAAO,CAAC,KAAK,CACX,qGAAqG,CACtG,CAAC;QACF,OAAO;KACR;IAED,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,MAAM,aAAa,EAAE,CAAC;IAC9D,MAAM,IAAI,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,CAA6B,CAAC;IAEhE,MAAM,aAAa,CACjB,EAAE,UAAU,EAAE,IAAI,EAAE,EACpB;QACE,kBAAkB;QAClB,gBAAgB;QAChB,qBAAqB;QACrB,cAAc,EAAE,QAAQ;KACzB,EACD,MAAM,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../../src/commands/publish/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAW,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,IAAI,MAAM,WAAW,CAAC;AAW7B,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,EACzC,kBAAkB,EAClB,MAAM,EACN,GAAG,EACH,MAAM,GAAG,KAAK,EACd,qBAAqB,GAAG,KAAK,EAC7B,QAAQ,GAAG,KAAK,GACU,EAAE,EAAE;IAC9B,IAAI,CAAC,qBAAqB,EAAE;QAC1B,OAAO,CAAC,KAAK,CACX,qGAAqG,CACtG,CAAC;QACF,OAAO;KACR;IAED,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,EACJ,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,cAAc,GACxB,GAAG,MAAM,aAAa,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,CAA6B,CAAC;IAEhE,MAAM,aAAa,CACjB,EAAE,UAAU,EAAE,IAAI,EAAE,EACpB;QACE,kBAAkB,EAAE,kBAAkB,IAAI,cAAc,CAAC,OAAO;QAChE,gBAAgB;QAChB,qBAAqB;QACrB,cAAc,EAAE,QAAQ;KACzB,EACD,MAAM,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -12,10 +12,10 @@ export const publishSubmitCommand = async ({ releaseMintAddress, signer, url, dr
12
12
  return;
13
13
  }
14
14
  const connection = new Connection(url);
15
- const { publisher: publisherDetails, solana_mobile_dapp_publisher_portal: solanaMobileDappPublisherPortalDetails, } = await getConfigFile();
15
+ const { publisher: publisherDetails, release: releaseDetails, solana_mobile_dapp_publisher_portal: solanaMobileDappPublisherPortalDetails, } = await getConfigFile();
16
16
  const sign = ((buf) => nacl.sign(buf, signer.secretKey));
17
17
  await publishSubmit({ connection, sign }, {
18
- releaseMintAddress,
18
+ releaseMintAddress: releaseMintAddress ?? releaseDetails.address,
19
19
  publisherDetails,
20
20
  solanaMobileDappPublisherPortalDetails,
21
21
  compliesWithSolanaDappStorePolicies,
@@ -1 +1 @@
1
- {"version":3,"file":"submit.js","sourceRoot":"","sources":["../../../../src/commands/publish/submit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAW,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAC3E,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAW/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,EACzC,kBAAkB,EAClB,MAAM,EACN,GAAG,EACH,MAAM,GAAG,KAAK,EACd,mCAAmC,GAAG,KAAK,EAC3C,qBAAqB,GAAG,KAAK,GACH,EAAE,EAAE;IAC9B,IAAI,CAAC,mCAAmC,EAAE;QACxC,OAAO,CAAC,KAAK,CACX,yHAAyH,CAC1H,CAAC;QACF,OAAO;KACR;SAAM,IAAI,CAAC,qBAAqB,EAAE;QACjC,OAAO,CAAC,KAAK,CACX,qGAAqG,CACtG,CAAC;QACF,OAAO;KACR;IAED,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,EACJ,SAAS,EAAE,gBAAgB,EAC3B,mCAAmC,EAAE,sCAAsC,GAC5E,GAAG,MAAM,aAAa,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,CAA6B,CAAC;IAEhE,MAAM,aAAa,CACjB,EAAE,UAAU,EAAE,IAAI,EAAE,EACpB;QACE,kBAAkB;QAClB,gBAAgB;QAChB,sCAAsC;QACtC,mCAAmC;QACnC,qBAAqB;KACtB,EACD,MAAM,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"submit.js","sourceRoot":"","sources":["../../../../src/commands/publish/submit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAW,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAC3E,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAW/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,EACzC,kBAAkB,EAClB,MAAM,EACN,GAAG,EACH,MAAM,GAAG,KAAK,EACd,mCAAmC,GAAG,KAAK,EAC3C,qBAAqB,GAAG,KAAK,GACH,EAAE,EAAE;IAC9B,IAAI,CAAC,mCAAmC,EAAE;QACxC,OAAO,CAAC,KAAK,CACX,yHAAyH,CAC1H,CAAC;QACF,OAAO;KACR;SAAM,IAAI,CAAC,qBAAqB,EAAE;QACjC,OAAO,CAAC,KAAK,CACX,qGAAqG,CACtG,CAAC;QACF,OAAO;KACR;IAED,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,EACJ,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,cAAc,EACvB,mCAAmC,EAAE,sCAAsC,GAC5E,GAAG,MAAM,aAAa,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,CAA6B,CAAC;IAEhE,MAAM,aAAa,CACjB,EAAE,UAAU,EAAE,IAAI,EAAE,EACpB;QACE,kBAAkB,EAAE,kBAAkB,IAAI,cAAc,CAAC,OAAO;QAChE,gBAAgB;QAChB,sCAAsC;QACtC,mCAAmC;QACnC,qBAAqB;KACtB,EACD,MAAM,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -8,10 +8,10 @@ export const publishSupportCommand = async ({ releaseMintAddress, signer, url, d
8
8
  return;
9
9
  }
10
10
  const connection = new Connection(url);
11
- const { publisher: publisherDetails } = await getConfigFile();
11
+ const { publisher: publisherDetails, release: releaseDetails, } = await getConfigFile();
12
12
  const sign = ((buf) => nacl.sign(buf, signer.secretKey));
13
13
  await publishSupport({ connection, sign }, {
14
- releaseMintAddress,
14
+ releaseMintAddress: releaseMintAddress ?? releaseDetails.address,
15
15
  publisherDetails,
16
16
  requestorIsAuthorized,
17
17
  requestDetails,
@@ -1 +1 @@
1
- {"version":3,"file":"support.js","sourceRoot":"","sources":["../../../../src/commands/publish/support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAW,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,IAAI,MAAM,WAAW,CAAC;AAW7B,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAE,EAC1C,kBAAkB,EAClB,MAAM,EACN,GAAG,EACH,MAAM,GAAG,KAAK,EACd,qBAAqB,GAAG,KAAK,EAC7B,cAAc,GACa,EAAE,EAAE;IAC/B,IAAI,CAAC,qBAAqB,EAAE;QAC1B,OAAO,CAAC,KAAK,CACX,qGAAqG,CACtG,CAAC;QACF,OAAO;KACR;IAED,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,MAAM,aAAa,EAAE,CAAC;IAC9D,MAAM,IAAI,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,CAA6B,CAAC;IAEhE,MAAM,cAAc,CAClB,EAAE,UAAU,EAAE,IAAI,EAAE,EACpB;QACE,kBAAkB;QAClB,gBAAgB;QAChB,qBAAqB;QACrB,cAAc;KACf,EACD,MAAM,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"support.js","sourceRoot":"","sources":["../../../../src/commands/publish/support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAW,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,IAAI,MAAM,WAAW,CAAC;AAW7B,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAE,EAC1C,kBAAkB,EAClB,MAAM,EACN,GAAG,EACH,MAAM,GAAG,KAAK,EACd,qBAAqB,GAAG,KAAK,EAC7B,cAAc,GACa,EAAE,EAAE;IAC/B,IAAI,CAAC,qBAAqB,EAAE;QAC1B,OAAO,CAAC,KAAK,CACX,qGAAqG,CACtG,CAAC;QACF,OAAO;KACR;IAED,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,EACJ,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,cAAc,GACxB,GAAG,MAAM,aAAa,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,CAA6B,CAAC;IAEhE,MAAM,cAAc,CAClB,EAAE,UAAU,EAAE,IAAI,EAAE,EACpB;QACE,kBAAkB,EAAE,kBAAkB,IAAI,cAAc,CAAC,OAAO;QAChE,gBAAgB;QAChB,qBAAqB;QACrB,cAAc;KACf,EACD,MAAM,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -12,10 +12,10 @@ export const publishUpdateCommand = async ({ releaseMintAddress, signer, url, dr
12
12
  return;
13
13
  }
14
14
  const connection = new Connection(url);
15
- const { publisher: publisherDetails, solana_mobile_dapp_publisher_portal: solanaMobileDappPublisherPortalDetails, } = await getConfigFile();
15
+ const { publisher: publisherDetails, release: releaseDetails, solana_mobile_dapp_publisher_portal: solanaMobileDappPublisherPortalDetails, } = await getConfigFile();
16
16
  const sign = ((buf) => nacl.sign(buf, signer.secretKey));
17
17
  await publishUpdate({ connection, sign }, {
18
- releaseMintAddress,
18
+ releaseMintAddress: releaseMintAddress ?? releaseDetails.address,
19
19
  publisherDetails,
20
20
  solanaMobileDappPublisherPortalDetails,
21
21
  compliesWithSolanaDappStorePolicies,
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/publish/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAW,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,IAAI,MAAM,WAAW,CAAC;AAY7B,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,EACzC,kBAAkB,EAClB,MAAM,EACN,GAAG,EACH,MAAM,GAAG,KAAK,EACd,mCAAmC,GAAG,KAAK,EAC3C,qBAAqB,GAAG,KAAK,EAC7B,QAAQ,GAAG,KAAK,GACU,EAAE,EAAE;IAC9B,IAAI,CAAC,mCAAmC,EAAE;QACxC,OAAO,CAAC,KAAK,CACX,yHAAyH,CAC1H,CAAC;QACF,OAAO;KACR;SAAM,IAAI,CAAC,qBAAqB,EAAE;QACjC,OAAO,CAAC,KAAK,CACX,qGAAqG,CACtG,CAAC;QACF,OAAO;KACR;IAED,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,EACJ,SAAS,EAAE,gBAAgB,EAC3B,mCAAmC,EAAE,sCAAsC,GAC5E,GAAG,MAAM,aAAa,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,CAA6B,CAAC;IAEhE,MAAM,aAAa,CACjB,EAAE,UAAU,EAAE,IAAI,EAAE,EACpB;QACE,kBAAkB;QAClB,gBAAgB;QAChB,sCAAsC;QACtC,mCAAmC;QACnC,qBAAqB;QACrB,cAAc,EAAE,QAAQ;KACzB,EACD,MAAM,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/publish/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAW,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,IAAI,MAAM,WAAW,CAAC;AAY7B,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,EACzC,kBAAkB,EAClB,MAAM,EACN,GAAG,EACH,MAAM,GAAG,KAAK,EACd,mCAAmC,GAAG,KAAK,EAC3C,qBAAqB,GAAG,KAAK,EAC7B,QAAQ,GAAG,KAAK,GACU,EAAE,EAAE;IAC9B,IAAI,CAAC,mCAAmC,EAAE;QACxC,OAAO,CAAC,KAAK,CACX,yHAAyH,CAC1H,CAAC;QACF,OAAO;KACR;SAAM,IAAI,CAAC,qBAAqB,EAAE;QACjC,OAAO,CAAC,KAAK,CACX,qGAAqG,CACtG,CAAC;QACF,OAAO;KACR;IAED,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,EACJ,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,cAAc,EACvB,mCAAmC,EAAE,sCAAsC,GAC5E,GAAG,MAAM,aAAa,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,CAA6B,CAAC;IAEhE,MAAM,aAAa,CACjB,EAAE,UAAU,EAAE,IAAI,EAAE,EACpB;QACE,kBAAkB,EAAE,kBAAkB,IAAI,cAAc,CAAC,OAAO;QAChE,gBAAgB;QAChB,sCAAsC;QACtC,mCAAmC;QACnC,qBAAqB;QACrB,cAAc,EAAE,QAAQ;KACzB,EACD,MAAM,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,iEAAiE;AACjE,OAAO,UAAU,MAAM,eAAe,CAAC;AAWvC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,UAAkB,EAAE,EAAE;IACpD,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAEpC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAW,CAAC,CAAC;IAEnD,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAc,CAAC;IAC7C,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,iEAAiE;AACjE,OAAO,UAAU,MAAM,eAAe,CAAC;AAUvC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,UAAkB,EAAE,EAAE;IACpD,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAEpC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAW,CAAC,CAAC;IAEnD,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAc,CAAC;IAC7C,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
@@ -27,15 +27,9 @@
27
27
  },
28
28
  "uri": {
29
29
  "type": "string"
30
- },
31
- "width": {
32
- "type": "integer"
33
- },
34
- "height": {
35
- "type": "integer"
36
30
  }
37
31
  },
38
- "required": ["purpose", "uri", "width", "height"]
32
+ "required": ["purpose", "uri"]
39
33
  }
40
34
  ]
41
35
  }
@@ -54,14 +48,6 @@
54
48
  "android_package": {
55
49
  "type": "string"
56
50
  },
57
- "creators": {
58
- "type": "array",
59
- "items": [
60
- {
61
- "type": "string"
62
- }
63
- ]
64
- },
65
51
  "urls": {
66
52
  "type": "object",
67
53
  "properties": {
@@ -96,27 +82,18 @@
96
82
  },
97
83
  "uri": {
98
84
  "type": "string"
99
- },
100
- "width": {
101
- "type": "integer"
102
- },
103
- "height": {
104
- "type": "integer"
105
85
  }
106
86
  },
107
- "required": ["purpose", "uri", "width", "height"]
87
+ "required": ["purpose", "uri"]
108
88
  }
109
89
  ]
110
90
  }
111
91
  },
112
- "required": ["name", "android_package", "creators", "urls", "media"]
92
+ "required": ["name", "android_package", "urls", "media"]
113
93
  },
114
94
  "release": {
115
95
  "type": "object",
116
96
  "properties": {
117
- "version": {
118
- "type": "string"
119
- },
120
97
  "address": {
121
98
  "type": "string"
122
99
  },
@@ -131,15 +108,9 @@
131
108
  },
132
109
  "uri": {
133
110
  "type": "string"
134
- },
135
- "width": {
136
- "type": "integer"
137
- },
138
- "height": {
139
- "type": "integer"
140
111
  }
141
112
  },
142
- "required": ["purpose", "uri", "width", "height"]
113
+ "required": ["purpose", "uri"]
143
114
  }
144
115
  ]
145
116
  },
@@ -172,8 +143,8 @@
172
143
  },
173
144
  "catalog": {
174
145
  "type": "object",
175
- "properties": {
176
- "en-US": {
146
+ "patternProperties": {
147
+ "^[a-zA-Z]{2,8}(-[a-zA-Z0-9]{2,8})*$": {
177
148
  "type": "object",
178
149
  "properties": {
179
150
  "name": {
@@ -188,7 +159,7 @@
188
159
  "new_in_version": {
189
160
  "type": "string"
190
161
  },
191
- "saga_features_localized": {
162
+ "saga_features": {
192
163
  "type": "string"
193
164
  }
194
165
  },
@@ -197,14 +168,14 @@
197
168
  "short_description",
198
169
  "long_description",
199
170
  "new_in_version",
200
- "saga_features_localized"
171
+ "saga_features"
201
172
  ]
202
173
  }
203
174
  },
204
- "required": ["en-US"]
175
+ "additionalProperties": false
205
176
  }
206
177
  },
207
- "required": ["version", "media", "files", "catalog"]
178
+ "required": ["media", "files", "catalog"]
208
179
  },
209
180
  "solana_mobile_dapp_publisher_portal": {
210
181
  "type": "object",
@@ -216,7 +187,7 @@
216
187
  "type": "string"
217
188
  }
218
189
  },
219
- "required": ["google_store_package", "testing_instructions"]
190
+ "required": ["testing_instructions"]
220
191
  }
221
192
  },
222
193
  "required": [