@airmoney-degn/airmoney-cli 0.20.0 → 0.21.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/dist/cli/dapp.js CHANGED
@@ -8,16 +8,15 @@ const DappService_1 = require("../service/dapp/DappService");
8
8
  const network_1 = require("../util/network");
9
9
  async function dappStatusCommand() {
10
10
  try {
11
- const { userId, apiKey, rpc } = (0, env_1.validateCredential)();
12
- (0, LogService_1.log)(`User: ${(0, format_1.shortenString)(userId)}`).white();
13
- (0, LogService_1.log)(`Network: ${rpc ? (rpc === 'devnet' ? 'devnet' : 'mainnet') : `<empty> (default: devnet)`}`).white();
14
- const dappService = new DappService_1.DappService(userId, apiKey, rpc);
11
+ const { userId, apiKey, network } = (0, env_1.validateCredential)();
12
+ (0, format_1.logUserAndNetwork)(userId, network);
13
+ const dappService = new DappService_1.DappService(userId, apiKey, network);
15
14
  try {
16
15
  await dappService.validateApiKey();
17
16
  }
18
17
  catch (err) {
19
18
  (0, LogService_1.log)(`${err instanceof Error ? err.message : String(err)}`).red();
20
- (0, LogService_1.log)(`Please setup your key at ${(0, network_1.networkToRpcUrl)(rpc)}`).red();
19
+ (0, LogService_1.log)(`Please setup your key at ${(0, network_1.networkToRpcUrl)(network)}`).red();
21
20
  return;
22
21
  }
23
22
  // Fetch dapp list
@@ -41,11 +41,13 @@ const fs = __importStar(require("fs"));
41
41
  const node_fetch_1 = __importDefault(require("node-fetch"));
42
42
  const md5_1 = __importDefault(require("md5"));
43
43
  const path_1 = __importDefault(require("path"));
44
+ const inquirer_1 = __importDefault(require("inquirer"));
44
45
  const metadata_1 = require("../util/metadata");
45
46
  const tarball_1 = require("../util/tarball");
46
47
  const network_1 = require("../util/network");
47
48
  const env_1 = require("../util/env");
48
49
  const LogService_1 = require("../service/log/LogService");
50
+ const format_1 = require("../util/format");
49
51
  /**
50
52
  * Gets the project path based on location folder
51
53
  */
@@ -55,6 +57,23 @@ function getProjectPath(locationFolder) {
55
57
  }
56
58
  return path_1.default.join(process.cwd(), locationFolder);
57
59
  }
60
+ /**
61
+ * Prompts user for confirmation when uploading from current directory
62
+ */
63
+ async function confirmUploadFromCurrentDirectory(projectPath) {
64
+ (0, LogService_1.log)('⚠️ WARNING: You are about to upload all files from the current directory!').red();
65
+ (0, LogService_1.log)(`Upload folder: ${path_1.default.resolve(projectPath)}`).white();
66
+ (0, LogService_1.log)('To upload a specific folder, use: airmoney-cli upload -f <folder-path>').white();
67
+ const answer = await inquirer_1.default.prompt([
68
+ {
69
+ type: 'confirm',
70
+ name: 'confirmed',
71
+ message: 'Do you want to continue with the upload?',
72
+ default: false,
73
+ },
74
+ ]);
75
+ return answer.confirmed;
76
+ }
58
77
  /**
59
78
  * Loads and validates metadata
60
79
  */
@@ -163,19 +182,27 @@ function cleanupPackageFile(pkgPath) {
163
182
  async function uploadCommand({ network, locationFolder, }) {
164
183
  let packageData = null;
165
184
  try {
166
- (0, network_1.validateNetwork)(network);
167
- const effectiveNetwork = (network || 'devnet');
168
- (0, LogService_1.log)(`Using network: ${effectiveNetwork}`).white();
169
185
  const credentials = (0, env_1.validateCredential)();
170
- const { userId, apiKey } = credentials;
171
- (0, LogService_1.log)(`User ID: ${userId}`).white();
186
+ const { userId, apiKey, network } = credentials;
187
+ (0, format_1.logUserAndNetwork)(userId, network);
172
188
  const projectPath = getProjectPath(locationFolder);
189
+ // Prompt for confirmation if uploading from current directory
190
+ if (!locationFolder) {
191
+ const confirmed = await confirmUploadFromCurrentDirectory(projectPath);
192
+ if (!confirmed) {
193
+ (0, LogService_1.log)('Upload cancelled by user').yellow();
194
+ return;
195
+ }
196
+ }
197
+ else {
198
+ (0, LogService_1.log)(`Upload folder: ${path_1.default.resolve(projectPath)}`).white();
199
+ }
173
200
  const meta = await loadAndValidateMetadata(locationFolder);
174
201
  packageData = await preparePackage(meta, projectPath);
175
202
  (0, LogService_1.log)('Publishing package to DEGN Dapp Store...').white();
176
203
  const encoded = Buffer.from(packageData.fileBuffer).toString('base64');
177
204
  const body = createUploadRequestBody(userId, apiKey, meta, encoded);
178
- await uploadPackageToServer(effectiveNetwork, body);
205
+ await uploadPackageToServer(network || "devnet", body);
179
206
  }
180
207
  catch (err) {
181
208
  const errorMessage = err instanceof Error ? err.message : String(err);
package/dist/config.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "0.20.0"
2
+ "version": "0.21.0"
3
3
  }
@@ -49,6 +49,13 @@ class LogBuilder {
49
49
  this.color = 'white';
50
50
  this.execute();
51
51
  }
52
+ /**
53
+ * Sets the color to yellow and logs
54
+ */
55
+ yellow() {
56
+ this.color = 'yellow';
57
+ this.execute();
58
+ }
52
59
  /**
53
60
  * Executes the log with all formatting applied
54
61
  */
@@ -64,6 +71,9 @@ class LogBuilder {
64
71
  else if (this.color === 'green') {
65
72
  codes.push('32');
66
73
  }
74
+ else if (this.color === 'yellow') {
75
+ codes.push('33');
76
+ }
67
77
  else if (this.color === 'white') {
68
78
  // White is default, no color code needed
69
79
  }
package/dist/util/env.js CHANGED
@@ -37,7 +37,7 @@ exports.configDir = configDir;
37
37
  exports.loadEnvFromConfig = loadEnvFromConfig;
38
38
  exports.getDeveloperAddress = getDeveloperAddress;
39
39
  exports.getApiKey = getApiKey;
40
- exports.getRpc = getRpc;
40
+ exports.getNetwork = getNetwork;
41
41
  exports.validateCredential = validateCredential;
42
42
  const fs = __importStar(require("fs"));
43
43
  const path = __importStar(require("path"));
@@ -74,7 +74,7 @@ function getApiKey() {
74
74
  /**
75
75
  * Gets the RPC/network from environment variables
76
76
  */
77
- function getRpc() {
77
+ function getNetwork() {
78
78
  return process.env.RPC;
79
79
  }
80
80
  /**
@@ -84,17 +84,17 @@ function getRpc() {
84
84
  function validateCredential() {
85
85
  const userId = getDeveloperAddress();
86
86
  const apiKey = getApiKey();
87
- const rpc = getRpc();
87
+ const network = getNetwork();
88
88
  if (!userId || !apiKey) {
89
89
  throw new Error(`Missing credentials. Please setup your key at ${(0, network_1.networkToRpcUrl)('devnet')} for devnet or ${(0, network_1.networkToRpcUrl)('mainnet')} for mainnet`);
90
90
  }
91
- if ((0, network_1.validateNetwork)(rpc)) {
91
+ if ((0, network_1.validateNetwork)(network)) {
92
92
  return {
93
93
  userId,
94
94
  apiKey,
95
- rpc,
95
+ network,
96
96
  };
97
97
  }
98
98
  throw new Error('Invalid network. Must be "devnet" or "mainnet". Your current network is: ' +
99
- rpc);
99
+ network);
100
100
  }
@@ -8,6 +8,7 @@ exports.padString = padString;
8
8
  exports.printTableRow = printTableRow;
9
9
  exports.printSeparator = printSeparator;
10
10
  exports.shortenString = shortenString;
11
+ exports.logUserAndNetwork = logUserAndNetwork;
11
12
  const LogService_1 = require("../service/log/LogService");
12
13
  /**
13
14
  * Strips ANSI color codes from a string
@@ -72,3 +73,18 @@ function shortenString(str, maxLength = 14, prefixLength = 6, suffixLength = 6)
72
73
  }
73
74
  return str.substring(0, prefixLength) + '…' + str.substring(str.length - suffixLength);
74
75
  }
76
+ /**
77
+ * Logs user and network information
78
+ * @param userId - The user ID to display (will be shortened)
79
+ * @param network - The network to display (optional, shows default message if undefined)
80
+ */
81
+ function logUserAndNetwork(userId, network) {
82
+ const displayUserId = shortenString(userId);
83
+ (0, LogService_1.log)(`User: ${displayUserId}`).white();
84
+ if (network) {
85
+ (0, LogService_1.log)(`Network: ${network}`).white();
86
+ }
87
+ else {
88
+ (0, LogService_1.log)(`Network: <empty> (default: devnet)`).white();
89
+ }
90
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@airmoney-degn/airmoney-cli",
3
- "version": "0.20.0",
3
+ "version": "0.21.0",
4
4
  "description": "airmoney-cli is a command-line interface tool designed to facilitate the development and management of decentralized applications (DApps) for Airmoney.",
5
5
  "publishConfig": {
6
6
  "access": "public"