@airmoney-degn/airmoney-cli 0.10.2 → 0.10.4
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/bin/darwin-arm64 +0 -0
- package/dist/bin/darwin-x64 +0 -0
- package/dist/bin/linux-x64 +0 -0
- package/dist/bin/win32-x64 +0 -0
- package/dist/cli/wallet.js +17 -4
- package/dist/index.js +1 -1
- package/package.json +3 -3
- package/dist/darwin-arm64 +0 -0
- package/dist/linux-x64 +0 -0
- package/dist/package.json +0 -65
- package/dist/src/cli/create.js +0 -105
- package/dist/src/cli/serve.js +0 -165
- package/dist/src/cli/setup.js +0 -56
- package/dist/src/cli/upload.js +0 -121
- package/dist/src/cli/wallet.js +0 -126
- package/dist/src/index.js +0 -95
- package/dist/src/types.js +0 -13
- package/dist/src/util/env.js +0 -56
- package/dist/src/util/metadata.js +0 -64
- package/dist/src/util/server.js +0 -74
- package/dist/src/util/tarball.js +0 -102
- package/dist/win32-x64 +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/cli/wallet.js
CHANGED
|
@@ -61,6 +61,11 @@ async function deleteWallet(address, chainName) {
|
|
|
61
61
|
async function listWallet(chainName) {
|
|
62
62
|
const config = (0, env_1.configDir)();
|
|
63
63
|
const walletPath = path_1.default.join(config, 'wallet', chainName);
|
|
64
|
+
if (!(0, fs_1.existsSync)(walletPath)) {
|
|
65
|
+
(0, fs_1.mkdirSync)(walletPath, {
|
|
66
|
+
recursive: true,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
64
69
|
const files = (0, fs_1.readdirSync)(walletPath)
|
|
65
70
|
.map(file => file.split('.json')[0])
|
|
66
71
|
.forEach(file => console.log(file));
|
|
@@ -70,7 +75,9 @@ async function importWalletSk(PrivateKey, chainName) {
|
|
|
70
75
|
const config = (0, env_1.configDir)();
|
|
71
76
|
const walletPath = path_1.default.join(config, chainName);
|
|
72
77
|
if (!(0, fs_1.existsSync)(walletPath)) {
|
|
73
|
-
(0, fs_1.mkdirSync)(walletPath
|
|
78
|
+
(0, fs_1.mkdirSync)(walletPath, {
|
|
79
|
+
recursive: true,
|
|
80
|
+
});
|
|
74
81
|
}
|
|
75
82
|
if (chainName == 'evm') {
|
|
76
83
|
await importEvmWallet(PrivateKey);
|
|
@@ -83,7 +90,9 @@ async function importEvmWallet(PrivateKey) {
|
|
|
83
90
|
const config = (0, env_1.configDir)();
|
|
84
91
|
const walletPath = path_1.default.join(config, 'wallet', 'evm');
|
|
85
92
|
if (!(0, fs_1.existsSync)(walletPath)) {
|
|
86
|
-
(0, fs_1.mkdirSync)(walletPath
|
|
93
|
+
(0, fs_1.mkdirSync)(walletPath, {
|
|
94
|
+
recursive: true,
|
|
95
|
+
});
|
|
87
96
|
}
|
|
88
97
|
if (PrivateKey.startsWith('0x') == false) {
|
|
89
98
|
PrivateKey = '0x' + PrivateKey;
|
|
@@ -98,7 +107,9 @@ async function importSvmWallet(privateKey) {
|
|
|
98
107
|
const config = (0, env_1.configDir)();
|
|
99
108
|
const walletPath = path_1.default.join(config, 'wallet', 'svm');
|
|
100
109
|
if (!(0, fs_1.existsSync)(walletPath)) {
|
|
101
|
-
(0, fs_1.mkdirSync)(walletPath
|
|
110
|
+
(0, fs_1.mkdirSync)(walletPath, {
|
|
111
|
+
recursive: true
|
|
112
|
+
});
|
|
102
113
|
}
|
|
103
114
|
const bytes = bs58.decode(privateKey);
|
|
104
115
|
const wallet = web3_js_1.Keypair.fromSecretKey(bytes);
|
|
@@ -111,7 +122,9 @@ async function exportWalletSk(address, chainName) {
|
|
|
111
122
|
const config = (0, env_1.configDir)();
|
|
112
123
|
const walletPath = path_1.default.join(config, 'wallet', chainName);
|
|
113
124
|
if (!(0, fs_1.existsSync)(walletPath)) {
|
|
114
|
-
(0, fs_1.mkdirSync)(walletPath
|
|
125
|
+
(0, fs_1.mkdirSync)(walletPath, {
|
|
126
|
+
recursive: true
|
|
127
|
+
});
|
|
115
128
|
}
|
|
116
129
|
let walletFile;
|
|
117
130
|
try {
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@ const program = new commander_1.Command();
|
|
|
14
14
|
program
|
|
15
15
|
.name('airmoney-cli')
|
|
16
16
|
.description('airmoney-cli is a command-line interface tool designed to facilitate the development and management of decentralized applications (DApps) for Airmoney.')
|
|
17
|
-
.version("0.10.
|
|
17
|
+
.version("0.10.4");
|
|
18
18
|
program
|
|
19
19
|
.command('setup')
|
|
20
20
|
.description('Setup env with userAddress, apiKey, rpc')
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@airmoney-degn/airmoney-cli",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.4",
|
|
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"
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
},
|
|
11
11
|
"scripts": {
|
|
12
12
|
"format": "prettier --write \"src/**/*\"",
|
|
13
|
-
"start": "
|
|
14
|
-
"build": "tsc && cp -r bin/ dist/ && chmod -R +x dist",
|
|
13
|
+
"start": "npm run build && node dist/index.js",
|
|
14
|
+
"build": "rm -rf dist && tsc && cp -r bin/ dist/bin/ && chmod -R +x dist",
|
|
15
15
|
"release": "npm run build && npm publish"
|
|
16
16
|
},
|
|
17
17
|
"keywords": [
|
package/dist/darwin-arm64
DELETED
|
Binary file
|
package/dist/linux-x64
DELETED
|
Binary file
|
package/dist/package.json
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@airmoney-degn/airmoney-cli",
|
|
3
|
-
"version": "0.10.0",
|
|
4
|
-
"description": "airmoney-cli is a command-line interface tool designed to facilitate the development and management of decentralized applications (DApps) for Airmoney.",
|
|
5
|
-
"publishConfig": {
|
|
6
|
-
"access": "public"
|
|
7
|
-
},
|
|
8
|
-
"bin": {
|
|
9
|
-
"airmoney-cli": "./dist/index.js"
|
|
10
|
-
},
|
|
11
|
-
"scripts": {
|
|
12
|
-
"format": "prettier --write \"src/**/*\"",
|
|
13
|
-
"start": "tsc && cp -r bin/ dist/ && chmod -R +x dist && node dist/index.js",
|
|
14
|
-
"build": "tsc && cp -r bin/ dist/ && chmod -R +x dist",
|
|
15
|
-
"release": "npm run build && npm publish"
|
|
16
|
-
},
|
|
17
|
-
"keywords": [
|
|
18
|
-
"CLI"
|
|
19
|
-
],
|
|
20
|
-
"author": "Hadi Hosseini <help@degn.com>",
|
|
21
|
-
"license": "MIT",
|
|
22
|
-
"files": [
|
|
23
|
-
"dist/**/*",
|
|
24
|
-
"public/simulator/**/*"
|
|
25
|
-
],
|
|
26
|
-
"dependencies": {
|
|
27
|
-
"@solana/signers": "2.1.1",
|
|
28
|
-
"@solana/web3.js": "1.98.2",
|
|
29
|
-
"base64-js": "^1.5.1",
|
|
30
|
-
"bs58": "5.0.0",
|
|
31
|
-
"commander": "^11.0.0",
|
|
32
|
-
"cors": "^2.8.5",
|
|
33
|
-
"dotenv": "^16.3.1",
|
|
34
|
-
"ethers": "6.14.3",
|
|
35
|
-
"expres": "^0.0.5",
|
|
36
|
-
"express": "^4.21.2",
|
|
37
|
-
"express-http-proxy": "^2.1.1",
|
|
38
|
-
"express-ws": "^5.0.2",
|
|
39
|
-
"form-data": "^4.0.0",
|
|
40
|
-
"http-proxy-middleware": "^3.0.3",
|
|
41
|
-
"inquirer": "^8.0.0",
|
|
42
|
-
"md5": "^2.3.0",
|
|
43
|
-
"node-fetch": "^2.6.7",
|
|
44
|
-
"open": "^8.4.0",
|
|
45
|
-
"tar": "^6.1.13",
|
|
46
|
-
"websocket": "^1.0.35",
|
|
47
|
-
"ws": "^8.18.1"
|
|
48
|
-
},
|
|
49
|
-
"devDependencies": {
|
|
50
|
-
"@airmoney-degn/controller-sdk": "^5.4.1",
|
|
51
|
-
"@types/bs58": "5.0.0",
|
|
52
|
-
"@types/cors": "^2.8.17",
|
|
53
|
-
"@types/express": "^5.0.0",
|
|
54
|
-
"@types/express-http-proxy": "^1.6.6",
|
|
55
|
-
"@types/express-ws": "^3.0.5",
|
|
56
|
-
"@types/inquirer": "^8.1.3",
|
|
57
|
-
"@types/md5": "^2.3.2",
|
|
58
|
-
"@types/node": "^18.19.70",
|
|
59
|
-
"@types/node-fetch": "^2.6.12",
|
|
60
|
-
"@types/tar": "^6.1.13",
|
|
61
|
-
"@types/websocket": "^1.0.10",
|
|
62
|
-
"prettier": "^3.6.1",
|
|
63
|
-
"typescript": "^5.0.4"
|
|
64
|
-
}
|
|
65
|
-
}
|
package/dist/src/cli/create.js
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.createCommand = createCommand;
|
|
37
|
-
const fs = __importStar(require("fs"));
|
|
38
|
-
const path = __importStar(require("path"));
|
|
39
|
-
const types_1 = require("../types");
|
|
40
|
-
const child_process_1 = require("child_process");
|
|
41
|
-
/**
|
|
42
|
-
* Command for creating a new project.
|
|
43
|
-
* Now no longer requires userId + apiKey from caller;
|
|
44
|
-
* it will read them from environment variables:
|
|
45
|
-
* process.env.DEVELOPER_ADDRESS
|
|
46
|
-
* process.env.API_KEY
|
|
47
|
-
*/
|
|
48
|
-
async function createCommand(name, network, template, locationFolder) {
|
|
49
|
-
// read from env (the .env was placed in config by `setup`).
|
|
50
|
-
const userId = process.env.DEVELOPER_ADDRESS || '';
|
|
51
|
-
const apiKey = process.env.API_KEY || '';
|
|
52
|
-
if (!userId || !apiKey) {
|
|
53
|
-
console.error("Missing user or API key from env. Did you run 'airmoney-cli setup'?");
|
|
54
|
-
process.exit(1);
|
|
55
|
-
}
|
|
56
|
-
const identifier = `com.degn.${name}`;
|
|
57
|
-
console.log(`Initializing project: ${name} (network=${network})`);
|
|
58
|
-
console.log(`Using .env user: ${userId}`);
|
|
59
|
-
const folderName = locationFolder || name;
|
|
60
|
-
const projectPath = path.join(process.cwd(), folderName);
|
|
61
|
-
if (template) {
|
|
62
|
-
console.log('cloning project');
|
|
63
|
-
(0, child_process_1.execSync)(`git clone --separate-git-dir=$(mktemp -u) https://github.com/Air-Money/airmoney-dapp-quickstart ${folderName}`);
|
|
64
|
-
if (fs.lstatSync(path.join(projectPath, '.git')).isDirectory()) {
|
|
65
|
-
fs.rmdirSync(path.join(projectPath, '.git'));
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
fs.rmSync(path.join(projectPath, '.git'));
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
fs.mkdirSync(projectPath, { recursive: true });
|
|
73
|
-
// replicate Rust logic
|
|
74
|
-
const indexHtml = `
|
|
75
|
-
<html>
|
|
76
|
-
<head>
|
|
77
|
-
<title>Sample ${name}</title>
|
|
78
|
-
</head>
|
|
79
|
-
<body>
|
|
80
|
-
<p>Hello from ${name}</p>
|
|
81
|
-
</body>
|
|
82
|
-
</html>
|
|
83
|
-
`.trim();
|
|
84
|
-
fs.writeFileSync(path.join(projectPath, 'index.html'), indexHtml, 'utf8');
|
|
85
|
-
// assets
|
|
86
|
-
const assetsDir = path.join(projectPath, 'assets');
|
|
87
|
-
fs.mkdirSync(assetsDir, { recursive: true });
|
|
88
|
-
fs.writeFileSync(path.join(assetsDir, 'main.js'), '// sample main.js\n', 'utf8');
|
|
89
|
-
fs.writeFileSync(path.join(assetsDir, 'style.css'), '/* sample style.css */\n', 'utf8');
|
|
90
|
-
}
|
|
91
|
-
// metadata
|
|
92
|
-
const pkg = (0, types_1.createPackage)(name, identifier);
|
|
93
|
-
const metaStr = JSON.stringify(pkg, null, 2);
|
|
94
|
-
fs.writeFileSync(path.join(projectPath, 'metadata.json'), metaStr, 'utf8');
|
|
95
|
-
console.log(`Project '${name}' created successfully.`);
|
|
96
|
-
console.log(`\nNext steps:`);
|
|
97
|
-
console.log(` cd ${name}`);
|
|
98
|
-
if (template) {
|
|
99
|
-
console.log(' npm install');
|
|
100
|
-
console.log(` npm run serve`);
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
console.log(' airmoney-cli serve');
|
|
104
|
-
}
|
|
105
|
-
}
|
package/dist/src/cli/serve.js
DELETED
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.serveCommand = serveCommand;
|
|
40
|
-
const path_1 = __importDefault(require("path"));
|
|
41
|
-
const open_1 = __importDefault(require("open"));
|
|
42
|
-
// var cors = require('cors')
|
|
43
|
-
// import * as cors from "cors"
|
|
44
|
-
const cors_1 = __importDefault(require("cors"));
|
|
45
|
-
const express_1 = __importDefault(require("express"));
|
|
46
|
-
const express_ws_1 = __importDefault(require("express-ws"));
|
|
47
|
-
const metadata_1 = require("../util/metadata");
|
|
48
|
-
const server_1 = require("../util/server");
|
|
49
|
-
const http_proxy_middleware_1 = require("http-proxy-middleware");
|
|
50
|
-
const ChildProcess = __importStar(require("child_process"));
|
|
51
|
-
const fs_1 = require("fs");
|
|
52
|
-
const env_1 = require("../util/env");
|
|
53
|
-
/**
|
|
54
|
-
* Helper to get the path to the "public/simulator" folder
|
|
55
|
-
* from the distributed code. We use __dirname, then move
|
|
56
|
-
* up two levels to the project root, then into public/simulator.
|
|
57
|
-
*/
|
|
58
|
-
function getSimulatorDir() {
|
|
59
|
-
// after tsc compile, serve.js is in dist/cli/
|
|
60
|
-
// we step up two dirs to get back to the project root
|
|
61
|
-
// then go into public/simulator
|
|
62
|
-
const base = path_1.default.resolve(__dirname, '..', '..');
|
|
63
|
-
return path_1.default.join(base, 'public', 'simulator');
|
|
64
|
-
}
|
|
65
|
-
async function serveCommand(noBrowser, locationFolder, appUrl) {
|
|
66
|
-
const simulatorPort = 4041;
|
|
67
|
-
const simulatorExpress = (0, express_ws_1.default)((0, express_1.default)()).app;
|
|
68
|
-
simulatorExpress.use((0, cors_1.default)());
|
|
69
|
-
simulatorExpress.use(express_1.default.json());
|
|
70
|
-
let simulatorClient;
|
|
71
|
-
simulatorExpress.ws('/ws', function (ws, req) {
|
|
72
|
-
simulatorClient = ws;
|
|
73
|
-
ws.on('message', function (msg) {
|
|
74
|
-
console.log(msg);
|
|
75
|
-
});
|
|
76
|
-
console.log('socket', req.body);
|
|
77
|
-
});
|
|
78
|
-
const simulatorDir = getSimulatorDir();
|
|
79
|
-
simulatorExpress.use('/simulator', express_1.default.static(simulatorDir));
|
|
80
|
-
////////////////////////////////////////////////////////////////
|
|
81
|
-
let projectFolder = process.cwd();
|
|
82
|
-
if (locationFolder != undefined) {
|
|
83
|
-
projectFolder = path_1.default.join(process.cwd(), locationFolder);
|
|
84
|
-
}
|
|
85
|
-
const metadata = (0, metadata_1.loadMetadata)();
|
|
86
|
-
if (!metadata) {
|
|
87
|
-
console.log('[Warning] No metadata found. Skipping some possible checks.');
|
|
88
|
-
}
|
|
89
|
-
if (appUrl != undefined) {
|
|
90
|
-
const proxyMiddleware = (0, http_proxy_middleware_1.createProxyMiddleware)({
|
|
91
|
-
xfwd: true,
|
|
92
|
-
target: appUrl,
|
|
93
|
-
changeOrigin: true,
|
|
94
|
-
pathFilter: '/',
|
|
95
|
-
});
|
|
96
|
-
simulatorExpress.use('/', proxyMiddleware);
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
simulatorExpress.use('/', express_1.default.static(projectFolder));
|
|
100
|
-
}
|
|
101
|
-
const simulatorServer = simulatorExpress.listen(simulatorPort, () => {
|
|
102
|
-
const url = `http://localhost:${simulatorPort}/simulator`;
|
|
103
|
-
console.log(`Starting simulator server at ${url}`);
|
|
104
|
-
if (!noBrowser) {
|
|
105
|
-
(0, open_1.default)(url)
|
|
106
|
-
.then(() => {
|
|
107
|
-
// success opening URL
|
|
108
|
-
})
|
|
109
|
-
.catch(err => {
|
|
110
|
-
console.error('Failed to open web browser', err);
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
////////////////////////////////////////////////////////////////
|
|
115
|
-
const airmoneyServicePort = 4040;
|
|
116
|
-
const airmoneyServiceExpress = (0, express_1.default)();
|
|
117
|
-
airmoneyServiceExpress.use((0, cors_1.default)());
|
|
118
|
-
airmoneyServiceExpress.use(express_1.default.json());
|
|
119
|
-
airmoneyServiceExpress.post('/', async (req, res) => {
|
|
120
|
-
let rpcReq = req.body;
|
|
121
|
-
let event;
|
|
122
|
-
let simulator = true;
|
|
123
|
-
switch (rpcReq.method) {
|
|
124
|
-
case 'setImage':
|
|
125
|
-
case 'setAnimate':
|
|
126
|
-
event = (0, server_1.displayImage)(rpcReq, metadata.name);
|
|
127
|
-
break;
|
|
128
|
-
}
|
|
129
|
-
if (simulator) {
|
|
130
|
-
if (event != null) {
|
|
131
|
-
if (simulatorClient) {
|
|
132
|
-
simulatorClient.send(JSON.stringify(event));
|
|
133
|
-
res.status(200).json({ success: true });
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
console.log('Warning: No simulator client connected');
|
|
138
|
-
res.status(503).json({ error: 'Simulator not connected' });
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
res.status(500).json({ error: 'Failed to process request' });
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
res.json({ jsonrpc: '2.0', result: event, id: 1 });
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
const airmoneyServiceServer = airmoneyServiceExpress.listen(airmoneyServicePort, () => {
|
|
153
|
-
const url = `http://localhost:${airmoneyServicePort}`;
|
|
154
|
-
console.log(`Starting airmoney service server at ${url}`);
|
|
155
|
-
});
|
|
156
|
-
////////////////////////////////////////////////////////////////
|
|
157
|
-
const cryptoServiceBin = `${process.platform}-${process.arch}`;
|
|
158
|
-
const bin = path_1.default.join(__dirname, '..', 'bin', cryptoServiceBin);
|
|
159
|
-
if (!(0, fs_1.existsSync)(bin)) {
|
|
160
|
-
console.log('crypto service not found at ' + bin);
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
ChildProcess.exec(bin, { env: { SECURE_STORAGE: (0, env_1.configDir)() } });
|
|
164
|
-
}
|
|
165
|
-
}
|
package/dist/src/cli/setup.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.setupCommand = setupCommand;
|
|
37
|
-
const fs = __importStar(require("fs"));
|
|
38
|
-
const path = __importStar(require("path"));
|
|
39
|
-
const env_1 = require("../util/env");
|
|
40
|
-
async function setupCommand(network, userId, apiKey) {
|
|
41
|
-
const dir = (0, env_1.configDir)();
|
|
42
|
-
if (!dir)
|
|
43
|
-
return;
|
|
44
|
-
// ensure directory
|
|
45
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
46
|
-
const envPath = path.join(dir, '.env');
|
|
47
|
-
try {
|
|
48
|
-
fs.writeFileSync(envPath, `DEVELOPER_ADDRESS=${userId}\nAPI_KEY=${apiKey}\nRPC=${network}\n`, 'utf8');
|
|
49
|
-
console.log(`.env created at ${envPath}`);
|
|
50
|
-
}
|
|
51
|
-
catch (err) {
|
|
52
|
-
console.error(`error when writing .env to ${envPath}`);
|
|
53
|
-
console.error(err);
|
|
54
|
-
process.exit(1);
|
|
55
|
-
}
|
|
56
|
-
}
|
package/dist/src/cli/upload.js
DELETED
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.uploadCommand = uploadCommand;
|
|
40
|
-
const fs = __importStar(require("fs"));
|
|
41
|
-
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
42
|
-
const md5_1 = __importDefault(require("md5")); // default import fixes TS call
|
|
43
|
-
const metadata_1 = require("../util/metadata");
|
|
44
|
-
const tarball_1 = require("../util/tarball");
|
|
45
|
-
const path_1 = __importDefault(require("path"));
|
|
46
|
-
/**
|
|
47
|
-
* Upload command now reads userId, apiKey from environment or store config,
|
|
48
|
-
* ignoring the older CLI inputs.
|
|
49
|
-
*/
|
|
50
|
-
async function uploadCommand(network, locationFolder, buttonImages) {
|
|
51
|
-
console.log('Loading metadata...');
|
|
52
|
-
const userId = process.env.DEVELOPER_ADDRESS || '';
|
|
53
|
-
const apiKey = process.env.API_KEY || '';
|
|
54
|
-
console.log('User ID:', userId);
|
|
55
|
-
if (!userId || !apiKey) {
|
|
56
|
-
console.error("Missing user or API key from env. Did you run 'airmoney-cli setup'?");
|
|
57
|
-
process.exit(1);
|
|
58
|
-
}
|
|
59
|
-
let projectPath = process.cwd();
|
|
60
|
-
if (locationFolder != undefined) {
|
|
61
|
-
projectPath = path_1.default.join(projectPath, locationFolder);
|
|
62
|
-
}
|
|
63
|
-
if (buttonImages === undefined) {
|
|
64
|
-
buttonImages = 'assets';
|
|
65
|
-
}
|
|
66
|
-
console.log(buttonImages);
|
|
67
|
-
const meta = (0, metadata_1.loadMetadata)();
|
|
68
|
-
if (!meta) {
|
|
69
|
-
console.error('No metadata.json found. Aborting.');
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
const pkgName = (0, metadata_1.getPackageName)(meta);
|
|
73
|
-
console.log(`Packing ${pkgName}...`);
|
|
74
|
-
await (0, tarball_1.packProject)(meta, projectPath, buttonImages);
|
|
75
|
-
const pkgPath = path_1.default.join(process.cwd(), pkgName);
|
|
76
|
-
// read tar
|
|
77
|
-
const fileBuffer = fs.readFileSync(pkgPath);
|
|
78
|
-
const fileHash = (0, md5_1.default)(fileBuffer);
|
|
79
|
-
console.log('Package Hash:', fileHash);
|
|
80
|
-
console.log('Publishing package to DEGN Dapp Store...');
|
|
81
|
-
// encode base64
|
|
82
|
-
const encoded = Buffer.from(fileBuffer).toString('base64');
|
|
83
|
-
// In Rust, we do a JSON-RPC call. Let's replicate:
|
|
84
|
-
const metaJson = JSON.stringify(meta);
|
|
85
|
-
const body = JSON.stringify({
|
|
86
|
-
jsonrpc: '2.0',
|
|
87
|
-
id: 1,
|
|
88
|
-
method: 'uploadPackage',
|
|
89
|
-
params: [userId, apiKey, metaJson, encoded],
|
|
90
|
-
});
|
|
91
|
-
try {
|
|
92
|
-
const res = await (0, node_fetch_1.default)(network, {
|
|
93
|
-
method: 'POST',
|
|
94
|
-
body,
|
|
95
|
-
headers: {
|
|
96
|
-
'Content-Type': 'application/json',
|
|
97
|
-
},
|
|
98
|
-
});
|
|
99
|
-
if (!res.ok) {
|
|
100
|
-
console.error('Error uploading package:', await res.text());
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
const json = await res.json();
|
|
104
|
-
if (json.result === true) {
|
|
105
|
-
console.log('Package uploaded successfully');
|
|
106
|
-
console.log('Open : https://dash-devnet.air.fun/');
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
console.error('Error uploding package');
|
|
110
|
-
if (json.error.code == -32602) {
|
|
111
|
-
console.error('invalid api key, please visit https://dash-devnet.air.fun/ and setup env with the new key');
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
console.error('unknow error, please contact support');
|
|
115
|
-
console.error(json.error);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
catch (err) {
|
|
119
|
-
console.error('Error:', err);
|
|
120
|
-
}
|
|
121
|
-
}
|
package/dist/src/cli/wallet.js
DELETED
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.deleteWallet = deleteWallet;
|
|
40
|
-
exports.listWallet = listWallet;
|
|
41
|
-
exports.importWalletSk = importWalletSk;
|
|
42
|
-
exports.importSvmWallet = importSvmWallet;
|
|
43
|
-
exports.exportWalletSk = exportWalletSk;
|
|
44
|
-
const fs_1 = require("fs");
|
|
45
|
-
const env_1 = require("../util/env");
|
|
46
|
-
const path_1 = __importDefault(require("path"));
|
|
47
|
-
const ethers_1 = require("ethers");
|
|
48
|
-
const bs58 = __importStar(require("bs58"));
|
|
49
|
-
const web3_js_1 = require("@solana/web3.js");
|
|
50
|
-
async function deleteWallet(address, chainName) {
|
|
51
|
-
const config = (0, env_1.configDir)();
|
|
52
|
-
const walletPath = path_1.default.join(config, chainName);
|
|
53
|
-
const files = (0, fs_1.readdirSync)(walletPath).filter(file => file == address + '.json');
|
|
54
|
-
if (files.length == 0) {
|
|
55
|
-
console.log('Wallet not found');
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
const walletFile = path_1.default.join(walletPath, files[0]);
|
|
59
|
-
(0, fs_1.rmSync)(walletFile);
|
|
60
|
-
}
|
|
61
|
-
async function listWallet(chainName) {
|
|
62
|
-
const config = (0, env_1.configDir)();
|
|
63
|
-
const walletPath = path_1.default.join(config, 'wallet', chainName);
|
|
64
|
-
const files = (0, fs_1.readdirSync)(walletPath)
|
|
65
|
-
.map(file => file.split('.json')[0])
|
|
66
|
-
.forEach(file => console.log(file));
|
|
67
|
-
return files;
|
|
68
|
-
}
|
|
69
|
-
async function importWalletSk(PrivateKey, chainName) {
|
|
70
|
-
const config = (0, env_1.configDir)();
|
|
71
|
-
const walletPath = path_1.default.join(config, chainName);
|
|
72
|
-
if (!(0, fs_1.existsSync)(walletPath)) {
|
|
73
|
-
(0, fs_1.mkdirSync)(walletPath);
|
|
74
|
-
}
|
|
75
|
-
if (chainName == 'evm') {
|
|
76
|
-
await importEvmWallet(PrivateKey);
|
|
77
|
-
}
|
|
78
|
-
else if (chainName == 'svm') {
|
|
79
|
-
await importSvmWallet(PrivateKey);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
async function importEvmWallet(PrivateKey) {
|
|
83
|
-
const config = (0, env_1.configDir)();
|
|
84
|
-
const walletPath = path_1.default.join(config, 'wallet', 'evm');
|
|
85
|
-
if (!(0, fs_1.existsSync)(walletPath)) {
|
|
86
|
-
(0, fs_1.mkdirSync)(walletPath);
|
|
87
|
-
}
|
|
88
|
-
if (PrivateKey.startsWith('0x') == false) {
|
|
89
|
-
PrivateKey = '0x' + PrivateKey;
|
|
90
|
-
}
|
|
91
|
-
const wallet = new ethers_1.ethers.Wallet(PrivateKey);
|
|
92
|
-
(0, fs_1.writeFileSync)(path_1.default.join(walletPath, wallet.address + '.json'), JSON.stringify({
|
|
93
|
-
address: wallet.address,
|
|
94
|
-
private_key: wallet.privateKey,
|
|
95
|
-
}, null, 2));
|
|
96
|
-
}
|
|
97
|
-
async function importSvmWallet(privateKey) {
|
|
98
|
-
const config = (0, env_1.configDir)();
|
|
99
|
-
const walletPath = path_1.default.join(config, 'wallet', 'svm');
|
|
100
|
-
if (!(0, fs_1.existsSync)(walletPath)) {
|
|
101
|
-
(0, fs_1.mkdirSync)(walletPath);
|
|
102
|
-
}
|
|
103
|
-
const bytes = bs58.decode(privateKey);
|
|
104
|
-
const wallet = web3_js_1.Keypair.fromSecretKey(bytes);
|
|
105
|
-
(0, fs_1.writeFileSync)(path_1.default.join(walletPath, wallet.publicKey + '.json'), JSON.stringify({
|
|
106
|
-
address: wallet.publicKey,
|
|
107
|
-
private_key: wallet.publicKey,
|
|
108
|
-
}, null, 2));
|
|
109
|
-
}
|
|
110
|
-
async function exportWalletSk(address, chainName) {
|
|
111
|
-
const config = (0, env_1.configDir)();
|
|
112
|
-
const walletPath = path_1.default.join(config, 'wallet', chainName);
|
|
113
|
-
if (!(0, fs_1.existsSync)(walletPath)) {
|
|
114
|
-
(0, fs_1.mkdirSync)(walletPath);
|
|
115
|
-
}
|
|
116
|
-
let walletFile;
|
|
117
|
-
try {
|
|
118
|
-
walletFile = (0, fs_1.readFileSync)(path_1.default.join(walletPath, address + '.json'));
|
|
119
|
-
}
|
|
120
|
-
catch (e) {
|
|
121
|
-
console.log('Wallet not found');
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
const wallet = JSON.parse(walletFile.toString());
|
|
125
|
-
console.log(wallet.private_key);
|
|
126
|
-
}
|
package/dist/src/index.js
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
const commander_1 = require("commander");
|
|
5
|
-
const env_1 = require("./util/env");
|
|
6
|
-
const create_1 = require("./cli/create");
|
|
7
|
-
const serve_1 = require("./cli/serve");
|
|
8
|
-
const upload_1 = require("./cli/upload");
|
|
9
|
-
const setup_1 = require("./cli/setup");
|
|
10
|
-
const wallet_1 = require("./cli/wallet");
|
|
11
|
-
const package_json_1 = require("../package.json");
|
|
12
|
-
// Load environment from config
|
|
13
|
-
(0, env_1.loadEnvFromConfig)();
|
|
14
|
-
const program = new commander_1.Command();
|
|
15
|
-
program
|
|
16
|
-
.name('airmoney-cli')
|
|
17
|
-
.description('airmoney-cli is a command-line interface tool designed to facilitate the development and management of decentralized applications (DApps) for Airmoney.')
|
|
18
|
-
.version(package_json_1.version);
|
|
19
|
-
program
|
|
20
|
-
.command('setup')
|
|
21
|
-
.description('Setup env with userAddress, apiKey, rpc')
|
|
22
|
-
.requiredOption('-u, --user <string>', 'developer user')
|
|
23
|
-
.requiredOption('-k, --key <string>', 'API key')
|
|
24
|
-
.option('-n, --network <string>', 'network devnet|mainnet', 'devnet')
|
|
25
|
-
.action(opts => {
|
|
26
|
-
const { user, key, network } = opts;
|
|
27
|
-
(0, setup_1.setupCommand)(network, user, key);
|
|
28
|
-
});
|
|
29
|
-
program
|
|
30
|
-
.command('create')
|
|
31
|
-
.description('Initialize a new project')
|
|
32
|
-
.requiredOption('-N, --name <string>', 'Project name')
|
|
33
|
-
.option('-n, --network <string>', 'network devnet|mainnet', 'devnet')
|
|
34
|
-
.option('-f, --app-path <string>', 'path where project will be created')
|
|
35
|
-
.option('--template', 'initialize project based on git quickstart')
|
|
36
|
-
.action(async (opts) => {
|
|
37
|
-
const { name, network, appPath, template } = opts;
|
|
38
|
-
await (0, create_1.createCommand)(name, network, template, appPath);
|
|
39
|
-
});
|
|
40
|
-
program
|
|
41
|
-
.command('serve')
|
|
42
|
-
.description('Serve locally in the simulator')
|
|
43
|
-
.option('-f, --index-app-path <string>', 'path for the index.html', './')
|
|
44
|
-
.option('--no-browser', 'stop browser from being open')
|
|
45
|
-
.option('-u, --app-url <string>', 'url where the app is running')
|
|
46
|
-
.action(async (opts) => {
|
|
47
|
-
let { indexAppPath, browser, appUrl } = opts;
|
|
48
|
-
if (indexAppPath == './') {
|
|
49
|
-
indexAppPath = undefined;
|
|
50
|
-
}
|
|
51
|
-
if (indexAppPath && appUrl) {
|
|
52
|
-
console.error('both --index-app-path and --app-url must not be used simuntaniusly');
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
await (0, serve_1.serveCommand)(!browser, indexAppPath, appUrl);
|
|
56
|
-
});
|
|
57
|
-
program
|
|
58
|
-
.command('wallet')
|
|
59
|
-
.description('handle wallet')
|
|
60
|
-
.option('-l, --list', 'show wallet list')
|
|
61
|
-
.option('-d, --delete <string>', 'delete wallet')
|
|
62
|
-
.option('-i, --import <string>', 'import wallet')
|
|
63
|
-
.option('-e, --export <string>', 'export wallet')
|
|
64
|
-
.option('-c, --chain [evm | svm]', 'chain name ', 'evm')
|
|
65
|
-
.action(async (opts) => {
|
|
66
|
-
const { list, delete: del, import: importWallet, export: exportWallet, chain, } = opts;
|
|
67
|
-
if (list) {
|
|
68
|
-
await (0, wallet_1.listWallet)(chain);
|
|
69
|
-
}
|
|
70
|
-
else if (del) {
|
|
71
|
-
await (0, wallet_1.deleteWallet)(del, chain);
|
|
72
|
-
}
|
|
73
|
-
else if (importWallet) {
|
|
74
|
-
await (0, wallet_1.importWalletSk)(importWallet, chain);
|
|
75
|
-
}
|
|
76
|
-
else if (exportWallet) {
|
|
77
|
-
await (0, wallet_1.exportWalletSk)(exportWallet, chain);
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
program
|
|
81
|
-
.command('upload')
|
|
82
|
-
.description('Publish the app to the DEGN Dapp Store')
|
|
83
|
-
.option('-n, --network <string>', 'network devnet|mainnet', 'https://rpc-dev.air.fun')
|
|
84
|
-
.option('-f, --index-app-path <string>', 'path for the index.html', './')
|
|
85
|
-
.option('-i, --button-image <string>', 'path for the button images', 'assets')
|
|
86
|
-
.action(async (opts) => {
|
|
87
|
-
let { network, indexAppPath, buttonImage } = opts;
|
|
88
|
-
if (indexAppPath == './') {
|
|
89
|
-
indexAppPath = undefined;
|
|
90
|
-
}
|
|
91
|
-
// user and key are read from store config within uploadCommand
|
|
92
|
-
await (0, upload_1.uploadCommand)(network, indexAppPath, buttonImage);
|
|
93
|
-
});
|
|
94
|
-
program.addHelpText('after', 'for more help access https://dash-devnet.air.fun/');
|
|
95
|
-
program.parse(process.argv);
|
package/dist/src/types.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createPackage = createPackage;
|
|
4
|
-
function createPackage(name, identifier) {
|
|
5
|
-
return {
|
|
6
|
-
name,
|
|
7
|
-
identifier,
|
|
8
|
-
author: '',
|
|
9
|
-
version: '0.1.0',
|
|
10
|
-
maintainer: '',
|
|
11
|
-
url: '',
|
|
12
|
-
};
|
|
13
|
-
}
|
package/dist/src/util/env.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.configDir = configDir;
|
|
37
|
-
exports.loadEnvFromConfig = loadEnvFromConfig;
|
|
38
|
-
const fs = __importStar(require("fs"));
|
|
39
|
-
const path = __importStar(require("path"));
|
|
40
|
-
const os = __importStar(require("os"));
|
|
41
|
-
const dotenv = __importStar(require("dotenv"));
|
|
42
|
-
function configDir() {
|
|
43
|
-
// similar to Rust's ProjectDirs::from("fun", "air", "simulator");
|
|
44
|
-
// We'll do a rough approach
|
|
45
|
-
const baseDir = path.join(os.homedir(), '.config', 'air-simulator');
|
|
46
|
-
return baseDir;
|
|
47
|
-
}
|
|
48
|
-
function loadEnvFromConfig() {
|
|
49
|
-
const dir = configDir();
|
|
50
|
-
if (!dir)
|
|
51
|
-
return;
|
|
52
|
-
const envPath = path.join(dir, '.env');
|
|
53
|
-
if (fs.existsSync(envPath)) {
|
|
54
|
-
dotenv.config({ path: envPath });
|
|
55
|
-
}
|
|
56
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.loadMetadata = loadMetadata;
|
|
37
|
-
exports.saveMetadata = saveMetadata;
|
|
38
|
-
exports.getPackageName = getPackageName;
|
|
39
|
-
const fs = __importStar(require("fs"));
|
|
40
|
-
const path = __importStar(require("path"));
|
|
41
|
-
function loadMetadata(projectPath = '.') {
|
|
42
|
-
try {
|
|
43
|
-
const filePath = path.join(projectPath, 'metadata.json');
|
|
44
|
-
if (!fs.existsSync(filePath)) {
|
|
45
|
-
console.log('Please run this command in Project directory');
|
|
46
|
-
return null;
|
|
47
|
-
}
|
|
48
|
-
const raw = fs.readFileSync(filePath, 'utf8');
|
|
49
|
-
const data = JSON.parse(raw);
|
|
50
|
-
return data;
|
|
51
|
-
}
|
|
52
|
-
catch (err) {
|
|
53
|
-
console.log('Please run this command in Project directory');
|
|
54
|
-
return null;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
function saveMetadata(pkg, projectPath = '.') {
|
|
58
|
-
const filePath = path.join(projectPath, 'metadata.json');
|
|
59
|
-
fs.writeFileSync(filePath, JSON.stringify(pkg, null, 2), 'utf8');
|
|
60
|
-
}
|
|
61
|
-
function getPackageName(pkg) {
|
|
62
|
-
// e.g. com.degn.myApp-0.1.0.tar.gz
|
|
63
|
-
return `${pkg.identifier}-${pkg.version}.tar.gz`;
|
|
64
|
-
}
|
package/dist/src/util/server.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.displayImage = displayImage;
|
|
40
|
-
const path_1 = __importDefault(require("path"));
|
|
41
|
-
const fs = __importStar(require("fs"));
|
|
42
|
-
function displayImage(request, appName) {
|
|
43
|
-
const f = request.params[0].replace(new RegExp(`^${appName}\\/`), '');
|
|
44
|
-
let file = fs.readFileSync(f, { encoding: 'base64' });
|
|
45
|
-
const fileType = path_1.default.extname(f);
|
|
46
|
-
let mime = '';
|
|
47
|
-
switch (fileType.replace('.', '')) {
|
|
48
|
-
case 'png':
|
|
49
|
-
mime = 'image/png';
|
|
50
|
-
break;
|
|
51
|
-
case 'jpg':
|
|
52
|
-
case 'jpeg':
|
|
53
|
-
mime = 'image/jpeg';
|
|
54
|
-
break;
|
|
55
|
-
case 'gif':
|
|
56
|
-
mime = 'image/gif';
|
|
57
|
-
break;
|
|
58
|
-
case 'bmp':
|
|
59
|
-
mime = 'image/bmp';
|
|
60
|
-
break;
|
|
61
|
-
default:
|
|
62
|
-
return null;
|
|
63
|
-
}
|
|
64
|
-
const event = {
|
|
65
|
-
source: 'air-money',
|
|
66
|
-
type: "service",
|
|
67
|
-
subType: "setImage",
|
|
68
|
-
data: {
|
|
69
|
-
id: request.params[1],
|
|
70
|
-
imageName: `data:${mime};base64,${file}`
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
return event;
|
|
74
|
-
}
|
package/dist/src/util/tarball.js
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.packProject = packProject;
|
|
40
|
-
const fs = __importStar(require("fs"));
|
|
41
|
-
const path = __importStar(require("path"));
|
|
42
|
-
const tar = __importStar(require("tar"));
|
|
43
|
-
const md5_1 = __importDefault(require("md5")); // default import
|
|
44
|
-
const metadata_1 = require("./metadata");
|
|
45
|
-
/**
|
|
46
|
-
* Reproduces the `pack()` logic, creating a tar.gz from the project's assets
|
|
47
|
-
*/
|
|
48
|
-
async function packProject(pkg, projectPath, assetsPath) {
|
|
49
|
-
const outputFilename = (0, metadata_1.getPackageName)(pkg);
|
|
50
|
-
const absOutputPath = path.join(process.cwd(), outputFilename);
|
|
51
|
-
try {
|
|
52
|
-
let files = ['metadata.json', 'dapp-logo.png', '@projectFiles.tar.gz'];
|
|
53
|
-
let projectFiles = ['index.html'];
|
|
54
|
-
if (fs.existsSync(assetsPath)) {
|
|
55
|
-
const assetFiles = fs.readdirSync(assetsPath);
|
|
56
|
-
await tar.create({
|
|
57
|
-
file: 'assets.tar.gz',
|
|
58
|
-
gzip: false,
|
|
59
|
-
cwd: assetsPath,
|
|
60
|
-
prefix: 'assets',
|
|
61
|
-
portable: true,
|
|
62
|
-
}, assetFiles);
|
|
63
|
-
files.push('@assets.tar.gz');
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
console.log('No assets directory found.');
|
|
67
|
-
}
|
|
68
|
-
// this is bad, but couldn't figure out how to get files from different folders without the absolute path messing with the tar file structure
|
|
69
|
-
await tar.create({
|
|
70
|
-
file: 'projectFiles.tar.gz',
|
|
71
|
-
gzip: false,
|
|
72
|
-
cwd: projectPath,
|
|
73
|
-
prefix: '',
|
|
74
|
-
portable: true,
|
|
75
|
-
}, projectFiles);
|
|
76
|
-
await tar.create({
|
|
77
|
-
file: absOutputPath,
|
|
78
|
-
gzip: true,
|
|
79
|
-
cwd: process.cwd(),
|
|
80
|
-
prefix: '',
|
|
81
|
-
portable: true,
|
|
82
|
-
}, files);
|
|
83
|
-
// read it in memory for MD5
|
|
84
|
-
const buffer = fs.readFileSync(absOutputPath);
|
|
85
|
-
const digest = (0, md5_1.default)(buffer);
|
|
86
|
-
console.log(`MD5: ${digest}`);
|
|
87
|
-
console.log(`Tarball created at ${absOutputPath}`);
|
|
88
|
-
console.log('cleaning up...');
|
|
89
|
-
fs.rmSync('projectFiles.tar.gz');
|
|
90
|
-
fs.rmSync('assets.tar.gz');
|
|
91
|
-
}
|
|
92
|
-
catch (err) {
|
|
93
|
-
console.error(`Failed to create tarball: ${err.message}`);
|
|
94
|
-
if (fs.existsSync('projectFiles.tar.gz'))
|
|
95
|
-
fs.rmSync('projectFiles.tar.gz');
|
|
96
|
-
if (fs.existsSync('assets.tar.gz'))
|
|
97
|
-
fs.rmSync('assets.tar.gz');
|
|
98
|
-
if (fs.existsSync(absOutputPath))
|
|
99
|
-
fs.rmSync(absOutputPath);
|
|
100
|
-
process.exit(1);
|
|
101
|
-
}
|
|
102
|
-
}
|
package/dist/win32-x64
DELETED
|
Binary file
|