pha-deploy 0.2.2 → 0.2.3
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/README.md +15 -1
- package/config/config.example.toml +6 -0
- package/dist/actions/mintFungibleToken.d.ts +17 -0
- package/dist/actions/mintFungibleToken.d.ts.map +1 -0
- package/dist/actions/mintFungibleToken.js +103 -0
- package/dist/actions/mintFungibleToken.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +33 -2
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +7 -0
- package/dist/config.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
CLI utility for deploying fungible tokens and NFTs on the Phantasma blockchain. The tool consumes structured metadata and token schemas defined in TOML configuration files and relies on the latest `phantasma-sdk-ts` builders for serialization.
|
|
4
4
|
|
|
5
|
-
-
|
|
5
|
+
- Four primary actions: `--create-token`, `--create-series`, `--mint-fungible`, `--mint-nft`.
|
|
6
6
|
- Configuration-first workflow: fill in `config.toml` (JSON blobs embedded in TOML) and let the CLI generate and submit Carbon transactions.
|
|
7
7
|
- Dry-run mode available for payload inspection without broadcasting.
|
|
8
8
|
|
|
@@ -172,6 +172,17 @@ Each action reads the active configuration, prints a summary (without exposing y
|
|
|
172
172
|
- `token_schemas.rom` to drive ROM serialization.
|
|
173
173
|
- `nft_metadata` containing per-instance values.
|
|
174
174
|
|
|
175
|
+
- **Mint fungible tokens**
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
pha-deploy --mint-fungible --config path/to/config.toml
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Requirements:
|
|
182
|
+
- `carbon_token_id`.
|
|
183
|
+
- `mint_fungible_amount` (integer atomic units).
|
|
184
|
+
- Optional `mint_fungible_to` (defaults to the WIF owner when omitted).
|
|
185
|
+
|
|
175
186
|
Append `--dry-run` to any command to inspect the serialized payload without submitting it:
|
|
176
187
|
|
|
177
188
|
```bash
|
|
@@ -244,6 +255,7 @@ Action selectors (first match wins):
|
|
|
244
255
|
|
|
245
256
|
- `--create-token`
|
|
246
257
|
- `--create-series`
|
|
258
|
+
- `--mint-fungible`
|
|
247
259
|
- `--mint-nft`
|
|
248
260
|
|
|
249
261
|
Common utility flags:
|
|
@@ -264,6 +276,8 @@ Configuration overrides (values override `config.toml` when provided):
|
|
|
264
276
|
- `--fungible-decimals <0..255>` – decimals for fungible token (required when token-type is `fungible`).
|
|
265
277
|
- `--carbon-token-id <int>` – existing carbon token id (for series or mint).
|
|
266
278
|
- `--carbon-token-series-id <int>` – existing series id (for mint).
|
|
279
|
+
- `--mint-fungible-to <address>` – recipient address for fungible mint (default: WIF owner).
|
|
280
|
+
- `--mint-fungible-amount <int>` – amount to mint (integer atomic units).
|
|
267
281
|
- `--rom <hex>` – token ROM as hex string.
|
|
268
282
|
- `--token-schemas '<json>'` – inline JSON for token schemas (`seriesMetadata`, `rom`, `ram`).
|
|
269
283
|
- `--token-metadata '<json>'` – inline JSON for token metadata fields.
|
|
@@ -37,6 +37,12 @@ carbon_token_id = 0
|
|
|
37
37
|
# Optional: If your token's series has been deployed already, provide carbon series ID below:
|
|
38
38
|
carbon_token_series_id = 0
|
|
39
39
|
|
|
40
|
+
# Mint fungible (optional; used by --mint-fungible)
|
|
41
|
+
# If omitted, the CLI defaults the recipient to the WIF owner.
|
|
42
|
+
# mint_fungible_to = "P2K..."
|
|
43
|
+
# Amount is in atomic units (integer).
|
|
44
|
+
# mint_fungible_amount = 1
|
|
45
|
+
|
|
40
46
|
# Token ROM (HEX-encoded string, optional)
|
|
41
47
|
rom = ""
|
|
42
48
|
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare class mintFungibleTokenCfg {
|
|
2
|
+
rpc: string;
|
|
3
|
+
nexus: string;
|
|
4
|
+
wif: string;
|
|
5
|
+
carbonTokenId: bigint;
|
|
6
|
+
to: string;
|
|
7
|
+
amount: bigint;
|
|
8
|
+
gasFeeBase: bigint;
|
|
9
|
+
gasFeeMultiplier: bigint;
|
|
10
|
+
mintTokenMaxData: bigint;
|
|
11
|
+
constructor(rpc: string, nexus: string, wif: string, carbonTokenId: bigint, to: string, amount: bigint, gasFeeBase: bigint, gasFeeMultiplier: bigint, mintTokenMaxData: bigint);
|
|
12
|
+
toPrintable(): Omit<this, "wif" | "toPrintable"> & {
|
|
13
|
+
owner: string;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export declare function mintFungibleToken(cfg: mintFungibleTokenCfg, dryRun: boolean, logSettings?: boolean): Promise<void>;
|
|
17
|
+
//# sourceMappingURL=mintFungibleToken.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mintFungibleToken.d.ts","sourceRoot":"","sources":["../../src/actions/mintFungibleToken.ts"],"names":[],"mappings":"AAqBA,qBAAa,oBAAoB;IAEtB,GAAG,EAAE,MAAM;IACX,KAAK,EAAE,MAAM;IACb,GAAG,EAAE,MAAM;IACX,aAAa,EAAE,MAAM;IACrB,EAAE,EAAE,MAAM;IACV,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,MAAM;IAClB,gBAAgB,EAAE,MAAM;IACxB,gBAAgB,EAAE,MAAM;gBARxB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,EACrB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,MAAM;IAajC,WAAW;;;CAUZ;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,oBAAoB,EACzB,MAAM,EAAE,OAAO,EACf,WAAW,GAAE,OAAe,iBA2E7B"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mintFungibleTokenCfg = void 0;
|
|
4
|
+
exports.mintFungibleToken = mintFungibleToken;
|
|
5
|
+
const phantasma_sdk_ts_1 = require("phantasma-sdk-ts");
|
|
6
|
+
const waitForTx_1 = require("./waitForTx");
|
|
7
|
+
const helpers_1 = require("./helpers");
|
|
8
|
+
class mintFungibleTokenCfg {
|
|
9
|
+
rpc;
|
|
10
|
+
nexus;
|
|
11
|
+
wif;
|
|
12
|
+
carbonTokenId;
|
|
13
|
+
to;
|
|
14
|
+
amount;
|
|
15
|
+
gasFeeBase;
|
|
16
|
+
gasFeeMultiplier;
|
|
17
|
+
mintTokenMaxData;
|
|
18
|
+
constructor(rpc, nexus, wif, carbonTokenId, to, amount, gasFeeBase, gasFeeMultiplier, mintTokenMaxData) {
|
|
19
|
+
this.rpc = rpc;
|
|
20
|
+
this.nexus = nexus;
|
|
21
|
+
this.wif = wif;
|
|
22
|
+
this.carbonTokenId = carbonTokenId;
|
|
23
|
+
this.to = to;
|
|
24
|
+
this.amount = amount;
|
|
25
|
+
this.gasFeeBase = gasFeeBase;
|
|
26
|
+
this.gasFeeMultiplier = gasFeeMultiplier;
|
|
27
|
+
this.mintTokenMaxData = mintTokenMaxData;
|
|
28
|
+
this.rpc = rpc;
|
|
29
|
+
this.nexus = nexus;
|
|
30
|
+
this.wif = wif;
|
|
31
|
+
this.carbonTokenId = carbonTokenId;
|
|
32
|
+
this.to = to;
|
|
33
|
+
this.amount = amount;
|
|
34
|
+
this.gasFeeBase = gasFeeBase;
|
|
35
|
+
this.gasFeeMultiplier = gasFeeMultiplier;
|
|
36
|
+
this.mintTokenMaxData = mintTokenMaxData;
|
|
37
|
+
}
|
|
38
|
+
toPrintable() {
|
|
39
|
+
// Do not leak WIF; derive owner address.
|
|
40
|
+
const { wif: _omit, ...rest } = this;
|
|
41
|
+
const owner = phantasma_sdk_ts_1.PhantasmaKeys.fromWIF(this.wif).Address.toString();
|
|
42
|
+
return {
|
|
43
|
+
...rest,
|
|
44
|
+
owner,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.mintFungibleTokenCfg = mintFungibleTokenCfg;
|
|
49
|
+
async function mintFungibleToken(cfg, dryRun, logSettings = false) {
|
|
50
|
+
if (cfg.amount <= 0n) {
|
|
51
|
+
throw new Error("mint_fungible_amount must be a positive integer");
|
|
52
|
+
}
|
|
53
|
+
const txSender = phantasma_sdk_ts_1.PhantasmaKeys.fromWIF(cfg.wif);
|
|
54
|
+
const senderPubKey = new phantasma_sdk_ts_1.Bytes32(txSender.PublicKey);
|
|
55
|
+
const toAddr = phantasma_sdk_ts_1.Address.Parse(cfg.to);
|
|
56
|
+
const receiverPubKey = new phantasma_sdk_ts_1.Bytes32(toAddr.GetPublicKey());
|
|
57
|
+
if (logSettings) {
|
|
58
|
+
console.log("Minting fungible tokens using these settings:", JSON.stringify(cfg.toPrintable(), helpers_1.bigintReplacer, 2));
|
|
59
|
+
}
|
|
60
|
+
// There is no dedicated MintFungible TxHelper in `phantasma-sdk-ts` yet, so we build the
|
|
61
|
+
// Carbon TxMsg manually using the SDK core types. TokenContract::MintFungible returns the
|
|
62
|
+
// receiver's new balance after minting, encoded as IntX in the tx result.
|
|
63
|
+
const feeOptions = new phantasma_sdk_ts_1.FeeOptions(cfg.gasFeeBase, cfg.gasFeeMultiplier);
|
|
64
|
+
const maxGas = feeOptions.calculateMaxGas();
|
|
65
|
+
const msg = new phantasma_sdk_ts_1.TxMsg();
|
|
66
|
+
msg.type = phantasma_sdk_ts_1.TxTypes.MintFungible;
|
|
67
|
+
msg.expiry = BigInt(Date.now() + 60_000); // 60s from now (same pattern as other tx helpers)
|
|
68
|
+
msg.maxGas = maxGas;
|
|
69
|
+
msg.maxData = cfg.mintTokenMaxData;
|
|
70
|
+
msg.gasFrom = senderPubKey;
|
|
71
|
+
msg.payload = phantasma_sdk_ts_1.SmallString.empty;
|
|
72
|
+
const mint = new phantasma_sdk_ts_1.TxMsgMintFungible();
|
|
73
|
+
mint.tokenId = cfg.carbonTokenId;
|
|
74
|
+
mint.to = receiverPubKey;
|
|
75
|
+
mint.amount = phantasma_sdk_ts_1.IntX.fromBigInt(cfg.amount);
|
|
76
|
+
msg.msg = mint;
|
|
77
|
+
const txBytes = phantasma_sdk_ts_1.TxMsgSigner.signAndSerialize(msg, txSender);
|
|
78
|
+
const txHex = (0, phantasma_sdk_ts_1.bytesToHex)(txBytes);
|
|
79
|
+
if (dryRun) {
|
|
80
|
+
console.log(`[dry-run] Prepared tx (not sent): ${txHex}`);
|
|
81
|
+
console.log((0, helpers_1.formatForLog)(phantasma_sdk_ts_1.CarbonBlob.NewFromBytes(phantasma_sdk_ts_1.SignedTxMsg, (0, phantasma_sdk_ts_1.hexToBytes)(txHex), 0)));
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
console.log("Broadcasting transaction...");
|
|
85
|
+
const rpc = new phantasma_sdk_ts_1.PhantasmaAPI(cfg.rpc, null, cfg.nexus);
|
|
86
|
+
const txHash = await rpc.sendCarbonTransaction(txHex);
|
|
87
|
+
console.log("txHash: ", txHash);
|
|
88
|
+
const { success, result } = await (0, waitForTx_1.waitForTx)(rpc, txHash);
|
|
89
|
+
if (!success) {
|
|
90
|
+
console.log("Could not mint fungible tokens");
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
const r = new phantasma_sdk_ts_1.CarbonBinaryReader((0, phantasma_sdk_ts_1.hexToBytes)(result));
|
|
95
|
+
const newBalance = phantasma_sdk_ts_1.IntX.read(r).toBigInt();
|
|
96
|
+
console.log("New balance after mint:", newBalance.toString());
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
console.log("Mint succeeded but could not decode result as IntX; raw result:", result);
|
|
100
|
+
console.log("Decode error:", err instanceof Error ? err.message : String(err));
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=mintFungibleToken.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mintFungibleToken.js","sourceRoot":"","sources":["../../src/actions/mintFungibleToken.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Address,\n Bytes32,\n CarbonBinaryReader,\n CarbonBlob,\n FeeOptions,\n hexToBytes,\n IntX,\n PhantasmaAPI,\n PhantasmaKeys,\n SignedTxMsg,\n SmallString,\n TxMsg,\n TxMsgMintFungible,\n TxMsgSigner,\n TxTypes,\n bytesToHex,\n} from \"phantasma-sdk-ts\";\nimport { waitForTx } from \"./waitForTx\";\nimport { bigintReplacer, formatForLog } from \"./helpers\";\n\nexport class mintFungibleTokenCfg {\n constructor(\n public rpc: string,\n public nexus: string,\n public wif: string,\n public carbonTokenId: bigint,\n public to: string,\n public amount: bigint,\n public gasFeeBase: bigint,\n public gasFeeMultiplier: bigint,\n public mintTokenMaxData: bigint,\n ) {\n this.rpc = rpc;\n this.nexus = nexus;\n this.wif = wif;\n this.carbonTokenId = carbonTokenId;\n this.to = to;\n this.amount = amount;\n this.gasFeeBase = gasFeeBase;\n this.gasFeeMultiplier = gasFeeMultiplier;\n this.mintTokenMaxData = mintTokenMaxData;\n }\n\n toPrintable() {\n // Do not leak WIF; derive owner address.\n const { wif: _omit, ...rest } = this;\n const owner = PhantasmaKeys.fromWIF(this.wif).Address.toString();\n\n return {\n ...rest,\n owner,\n };\n }\n}\n\nexport async function mintFungibleToken(\n cfg: mintFungibleTokenCfg,\n dryRun: boolean,\n logSettings: boolean = false,\n) {\n if (cfg.amount <= 0n) {\n throw new Error(\"mint_fungible_amount must be a positive integer\");\n }\n\n const txSender = PhantasmaKeys.fromWIF(cfg.wif);\n const senderPubKey = new Bytes32(txSender.PublicKey);\n\n const toAddr = Address.Parse(cfg.to);\n const receiverPubKey = new Bytes32(toAddr.GetPublicKey());\n\n if (logSettings) {\n console.log(\n \"Minting fungible tokens using these settings:\",\n JSON.stringify(cfg.toPrintable(), bigintReplacer, 2),\n );\n }\n\n // There is no dedicated MintFungible TxHelper in `phantasma-sdk-ts` yet, so we build the\n // Carbon TxMsg manually using the SDK core types. TokenContract::MintFungible returns the\n // receiver's new balance after minting, encoded as IntX in the tx result.\n const feeOptions = new FeeOptions(cfg.gasFeeBase, cfg.gasFeeMultiplier);\n const maxGas = feeOptions.calculateMaxGas();\n\n const msg = new TxMsg();\n msg.type = TxTypes.MintFungible;\n msg.expiry = BigInt(Date.now() + 60_000); // 60s from now (same pattern as other tx helpers)\n msg.maxGas = maxGas;\n msg.maxData = cfg.mintTokenMaxData;\n msg.gasFrom = senderPubKey;\n msg.payload = SmallString.empty;\n\n const mint = new TxMsgMintFungible();\n mint.tokenId = cfg.carbonTokenId;\n mint.to = receiverPubKey;\n mint.amount = IntX.fromBigInt(cfg.amount);\n msg.msg = mint;\n\n const txBytes = TxMsgSigner.signAndSerialize(msg, txSender);\n const txHex = bytesToHex(txBytes);\n\n if (dryRun) {\n console.log(`[dry-run] Prepared tx (not sent): ${txHex}`);\n console.log(\n formatForLog(CarbonBlob.NewFromBytes(SignedTxMsg, hexToBytes(txHex), 0)),\n );\n return;\n }\n\n console.log(\"Broadcasting transaction...\");\n\n const rpc = new PhantasmaAPI(cfg.rpc, null, cfg.nexus);\n\n const txHash = await rpc.sendCarbonTransaction(txHex);\n console.log(\"txHash: \", txHash);\n\n const { success, result } = await waitForTx(rpc, txHash);\n\n if (!success) {\n console.log(\"Could not mint fungible tokens\");\n return;\n }\n\n try {\n const r = new CarbonBinaryReader(hexToBytes(result));\n const newBalance = IntX.read(r).toBigInt();\n console.log(\"New balance after mint:\", newBalance.toString());\n } catch (err) {\n console.log(\n \"Mint succeeded but could not decode result as IntX; raw result:\",\n result,\n );\n console.log(\"Decode error:\", err instanceof Error ? err.message : String(err));\n }\n}\n\n"]}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AA+OA,iBAAe,IAAI,kBAqJlB;AAcD,eAAe,IAAI,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -10,6 +10,7 @@ const config_1 = __importDefault(require("./config"));
|
|
|
10
10
|
const node_util_1 = require("node:util");
|
|
11
11
|
const createToken_1 = require("./actions/createToken");
|
|
12
12
|
const createSeries_1 = require("./actions/createSeries");
|
|
13
|
+
const mintFungibleToken_1 = require("./actions/mintFungibleToken");
|
|
13
14
|
const mintNftToken_1 = require("./actions/mintNftToken");
|
|
14
15
|
const phantasma_sdk_ts_1 = require("phantasma-sdk-ts");
|
|
15
16
|
/**
|
|
@@ -22,17 +23,20 @@ const phantasma_sdk_ts_1 = require("phantasma-sdk-ts");
|
|
|
22
23
|
* Actions:
|
|
23
24
|
* - create-token
|
|
24
25
|
* - create-series
|
|
26
|
+
* - mint-fungible
|
|
25
27
|
* - mint-nft
|
|
26
28
|
*/
|
|
27
29
|
function printHelp() {
|
|
28
30
|
const text = `Usage:
|
|
29
31
|
pha-deploy --create-token [options]
|
|
30
32
|
pha-deploy --create-series [options]
|
|
33
|
+
pha-deploy --mint-fungible [options]
|
|
31
34
|
pha-deploy --mint-nft [options]
|
|
32
35
|
|
|
33
36
|
Actions:
|
|
34
37
|
--create-token Create a token
|
|
35
38
|
--create-series Create a token series
|
|
39
|
+
--mint-fungible Mint fungible tokens
|
|
36
40
|
--mint-nft Mint tokens
|
|
37
41
|
|
|
38
42
|
Common flags:
|
|
@@ -54,6 +58,8 @@ Overrides (replace values from config.toml when provided):
|
|
|
54
58
|
--fungible-decimals <0..255> Decimal places; required when token-type=fungible
|
|
55
59
|
--carbon-token-id <int> Existing carbon token ID (for series or mint)
|
|
56
60
|
--carbon-token-series-id <int> Existing series ID (for mint)
|
|
61
|
+
--mint-fungible-to <address> Recipient address for fungible mint (default: WIF owner)
|
|
62
|
+
--mint-fungible-amount <int> Amount to mint (integer atomic units)
|
|
57
63
|
--rom <hex> Token ROM hex (optional; for token creation)
|
|
58
64
|
--token-schemas <json> JSON string with schemas (seriesMetadata, rom, ram)
|
|
59
65
|
--token-metadata <json> JSON string of token metadata fields
|
|
@@ -124,6 +130,18 @@ async function actionMintNft(cfg, dryRun, logSettings) {
|
|
|
124
130
|
requireArg(cfg.mintTokenMaxData, "mint_token_max_data");
|
|
125
131
|
await (0, mintNftToken_1.mintNftToken)(new mintNftToken_1.mintNftTokenCfg(cfg.rpc, cfg.nexus, cfg.wif, cfg.carbonTokenId, cfg.carbonTokenSeriesId, cfg.tokenSchemas.rom, cfg.nftMetadata, cfg.gasFeeBase, cfg.gasFeeMultiplier, cfg.mintTokenMaxData), dryRun, logSettings);
|
|
126
132
|
}
|
|
133
|
+
async function actionMintFungible(cfg, dryRun, logSettings) {
|
|
134
|
+
requireArg(cfg.rpc, "rpc");
|
|
135
|
+
requireArg(cfg.nexus, "nexus");
|
|
136
|
+
requireArg(cfg.wif, "wif");
|
|
137
|
+
requireArg(cfg.carbonTokenId, "carbon_token_id");
|
|
138
|
+
requireArg(cfg.mintFungibleAmount, "mint_fungible_amount");
|
|
139
|
+
requireArg(cfg.gasFeeBase, "gas_fee_base");
|
|
140
|
+
requireArg(cfg.gasFeeMultiplier, "gas_fee_multiplier");
|
|
141
|
+
requireArg(cfg.mintTokenMaxData, "mint_token_max_data");
|
|
142
|
+
const to = cfg.mintFungibleTo ?? phantasma_sdk_ts_1.PhantasmaKeys.fromWIF(cfg.wif).Address.toString();
|
|
143
|
+
await (0, mintFungibleToken_1.mintFungibleToken)(new mintFungibleToken_1.mintFungibleTokenCfg(cfg.rpc, cfg.nexus, cfg.wif, cfg.carbonTokenId, to, cfg.mintFungibleAmount, cfg.gasFeeBase, cfg.gasFeeMultiplier, cfg.mintTokenMaxData), dryRun, logSettings);
|
|
144
|
+
}
|
|
127
145
|
/* ------------------------------- Main ------------------------------- */
|
|
128
146
|
async function main() {
|
|
129
147
|
const rawArgv = (0, helpers_1.hideBin)(process.argv);
|
|
@@ -148,7 +166,7 @@ async function main() {
|
|
|
148
166
|
// Minimal yargs parsing for the top-level CLI behavior
|
|
149
167
|
const parser = (0, yargs_1.default)(rawArgv)
|
|
150
168
|
.scriptName("pha-deploy")
|
|
151
|
-
.usage("Usage: $0 [options] [--create-token|--mint-nft
|
|
169
|
+
.usage("Usage: $0 [options] [--create-token|--create-series|--mint-fungible|--mint-nft]")
|
|
152
170
|
.option("rpc", { type: "string", describe: "RPC endpoint" })
|
|
153
171
|
.option("nexus", { type: "string", describe: "Chain nexus" })
|
|
154
172
|
.option("wif", { type: "string", describe: "WIF for signing" })
|
|
@@ -192,7 +210,16 @@ async function main() {
|
|
|
192
210
|
type: "boolean",
|
|
193
211
|
describe: "Create a token series",
|
|
194
212
|
})
|
|
213
|
+
.option("mint-fungible", { type: "boolean", describe: "Mint fungible tokens" })
|
|
195
214
|
.option("mint-nft", { type: "boolean", describe: "Mint tokens" })
|
|
215
|
+
.option("mint-fungible-to", {
|
|
216
|
+
type: "string",
|
|
217
|
+
describe: "Recipient address for fungible mint (default: WIF owner)",
|
|
218
|
+
})
|
|
219
|
+
.option("mint-fungible-amount", {
|
|
220
|
+
type: "string",
|
|
221
|
+
describe: "Amount to mint (integer atomic units)",
|
|
222
|
+
})
|
|
196
223
|
.version()
|
|
197
224
|
.epilog("pha-deploy - Phantasma token deployment and minting CLI");
|
|
198
225
|
const argv = await parser.parseAsync();
|
|
@@ -222,7 +249,7 @@ async function main() {
|
|
|
222
249
|
// Determine dry-run (CLI flag overrides config)
|
|
223
250
|
const dryRun = Boolean(argv["dry-run"]) || cfg.dryRun || false;
|
|
224
251
|
// One-shot actions: pick the first matching action
|
|
225
|
-
const actions = ["create-token", "create-series", "mint-nft"];
|
|
252
|
+
const actions = ["create-token", "create-series", "mint-fungible", "mint-nft"];
|
|
226
253
|
let foundAction = false;
|
|
227
254
|
for (const action of actions) {
|
|
228
255
|
if (argv[action]) {
|
|
@@ -236,6 +263,10 @@ async function main() {
|
|
|
236
263
|
await actionCreateSeries(cfg, dryRun, settingsLogEnabled);
|
|
237
264
|
return;
|
|
238
265
|
}
|
|
266
|
+
case "mint-fungible": {
|
|
267
|
+
await actionMintFungible(cfg, dryRun, settingsLogEnabled);
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
239
270
|
case "mint-nft": {
|
|
240
271
|
await actionMintNft(cfg, dryRun, settingsLogEnabled);
|
|
241
272
|
return;
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\nimport { hideBin } from \"yargs/helpers\";\nimport yargs from \"yargs\";\nimport loadConfig, { Config, TokenType } from \"./config\";\nimport { inspect } from \"node:util\";\nimport { createToken, createTokenCfg } from \"./actions/createToken\";\nimport { createSeries, createSeriesCfg } from \"./actions/createSeries\";\nimport { mintNftToken, mintNftTokenCfg } from \"./actions/mintNftToken\";\nimport { setLogger } from \"phantasma-sdk-ts\";\n\n/**\n * CLI for pha-deploy.\n *\n * Modes:\n * - CLI one-shot: use flags to perform actions immediately\n * - TOML-driven: use `--config` or default `config.toml` for config values\n *\n * Actions:\n * - create-token\n * - create-series\n * - mint-nft\n */\n\nfunction printHelp(): void {\n const text = `Usage:\n pha-deploy --create-token [options]\n pha-deploy --create-series [options]\n pha-deploy --mint-nft [options]\n\nActions:\n --create-token Create a token\n --create-series Create a token series\n --mint-nft Mint tokens\n\nCommon flags:\n --config <path> Path to TOML config file (default: config.toml)\n --dry-run Do not broadcast transactions; just show payloads\n --rpc-log Enable SDK JSON-RPC logging (full response payloads)\n --settings-log Print resolved configuration before executing an action\n --help Show this help\n --version Show version number\n\nOverrides (replace values from config.toml when provided):\n --rpc <url> RPC endpoint (fallback: https://testnet.phantasma.info/rpc)\n --nexus <name> Chain nexus (example: mainnet or testnet)\n --wif <wif> WIF for signing\n --symbol <symbol> Token symbol\n --token-type <nft|fungible> Token type to create (default: nft)\n --token-max-supply <int> Non-negative integer; required when token-type=fungible\n --fungible-max-supply <int> Alias for --token-max-supply\n --fungible-decimals <0..255> Decimal places; required when token-type=fungible\n --carbon-token-id <int> Existing carbon token ID (for series or mint)\n --carbon-token-series-id <int> Existing series ID (for mint)\n --rom <hex> Token ROM hex (optional; for token creation)\n --token-schemas <json> JSON string with schemas (seriesMetadata, rom, ram)\n --token-metadata <json> JSON string of token metadata fields\n --series-metadata <json> JSON object or array of series metadata fields\n --nft-metadata <json> JSON object or array of NFT metadata fields\n --create-token-max-data <int> Max data for create-token tx\n --create-token-series-max-data <int> Max data for create-series tx\n --mint-token-max-data <int> Max data for mint-nft tx\n --gas-fee-base <int> Gas fee base\n --gas-fee-create-token-base <int> Gas fee base for create-token\n --gas-fee-create-token-symbol <int> Gas fee per symbol\n --gas-fee-create-token-series <int> Gas fee for create-series\n --gas-fee-multiplier <int> Gas fee multiplier\n\npha-deploy - Phantasma token deployment and minting CLI\n`;\n console.log(text);\n}\n\nfunction requireArg<T>(\n value: T,\n name: string,\n): asserts value is NonNullable<T> {\n if (value === undefined || value === null) {\n throw new Error(`${name} is required`);\n }\n}\n\n/* ----------------------------- Actions ----------------------------- */\nasync function actionCreateToken(\n cfg: Config,\n dryRun: boolean,\n logSettings: boolean,\n) {\n requireArg(cfg.rpc, \"rpc\");\n requireArg(cfg.nexus, \"nexus\");\n requireArg(cfg.wif, \"wif\");\n requireArg(cfg.symbol, \"symbol\");\n requireArg(cfg.gasFeeBase, \"gas_fee_base\");\n requireArg(cfg.gasFeeCreateTokenBase, \"gas_fee_create_token_base\");\n requireArg(cfg.gasFeeCreateTokenSymbol, \"gas_fee_create_token_symbol\");\n requireArg(cfg.gasFeeMultiplier, \"gas_fee_multiplier\");\n requireArg(cfg.createTokenMaxData, \"create_token_max_data\");\n\n const tokenType: TokenType =\n (cfg.tokenType ?? \"nft\") === \"fungible\" ? \"fungible\" : \"nft\";\n\n if (tokenType === \"fungible\") {\n requireArg(cfg.tokenMaxSupply, \"token_max_supply\");\n requireArg(cfg.fungibleDecimals, \"fungible_decimals\");\n } else {\n requireArg(cfg.tokenSchemas, \"token_schemas\");\n }\n\n await createToken(\n new createTokenCfg(\n cfg.rpc,\n cfg.nexus,\n cfg.wif,\n cfg.symbol,\n cfg.gasFeeBase,\n cfg.gasFeeCreateTokenBase,\n cfg.gasFeeCreateTokenSymbol,\n cfg.gasFeeMultiplier,\n cfg.createTokenMaxData,\n cfg.tokenSchemas,\n cfg.tokenMetadata,\n tokenType,\n cfg.tokenMaxSupply,\n cfg.fungibleDecimals,\n ),\n dryRun,\n logSettings,\n );\n}\n\nasync function actionCreateSeries(\n cfg: Config,\n dryRun: boolean,\n logSettings: boolean,\n) {\n requireArg(cfg.rpc, \"rpc\");\n requireArg(cfg.nexus, \"nexus\");\n requireArg(cfg.wif, \"wif\");\n requireArg(cfg.carbonTokenId, \"carbon_token_id\");\n requireArg(cfg.tokenSchemas, \"token_schemas\");\n requireArg(cfg.seriesMetadata, \"series_metadata\");\n requireArg(cfg.gasFeeBase, \"gas_fee_base\");\n requireArg(cfg.gasFeeCreateTokenSeries, \"gas_fee_create_token_series\");\n requireArg(cfg.gasFeeMultiplier, \"gas_fee_multiplier\");\n requireArg(cfg.createTokenSeriesMaxData, \"create_token_series_max_data\");\n\n await createSeries(\n new createSeriesCfg(\n cfg.rpc,\n cfg.nexus,\n cfg.wif,\n cfg.carbonTokenId,\n cfg.gasFeeBase,\n cfg.gasFeeCreateTokenSeries,\n cfg.gasFeeMultiplier,\n cfg.createTokenSeriesMaxData,\n cfg.tokenSchemas?.seriesMetadata,\n cfg.seriesMetadata\n ),\n dryRun,\n logSettings,\n );\n}\n\nasync function actionMintNft(\n cfg: Config,\n dryRun: boolean,\n logSettings: boolean,\n) {\n requireArg(cfg.rpc, \"rpc\");\n requireArg(cfg.nexus, \"nexus\");\n requireArg(cfg.wif, \"wif\");\n requireArg(cfg.carbonTokenId, \"carbon_token_id\");\n requireArg(cfg.carbonTokenSeriesId, \"carbon_token_series_id\");\n requireArg(cfg.tokenSchemas, \"token_schemas\");\n requireArg(cfg.nftMetadata, \"nft_metadata\");\n requireArg(cfg.gasFeeBase, \"gas_fee_base\");\n requireArg(cfg.gasFeeMultiplier, \"gas_fee_multiplier\");\n requireArg(cfg.mintTokenMaxData, \"mint_token_max_data\");\n\n await mintNftToken(\n new mintNftTokenCfg(\n cfg.rpc,\n cfg.nexus,\n cfg.wif,\n cfg.carbonTokenId,\n cfg.carbonTokenSeriesId,\n cfg.tokenSchemas.rom,\n cfg.nftMetadata,\n cfg.gasFeeBase,\n cfg.gasFeeMultiplier,\n cfg.mintTokenMaxData,\n ),\n dryRun,\n logSettings,\n );\n}\n\n/* ------------------------------- Main ------------------------------- */\n\nasync function main() {\n const rawArgv = hideBin(process.argv);\n\n // Pre-parse --config and --help early so the TOML file can be loaded before the main yargs parsing.\n const pre = yargs(rawArgv)\n .option(\"config\", {\n type: \"string\",\n alias: \"c\",\n description: \"Path to TOML config file (default: config.toml)\",\n })\n .option(\"help\", {\n type: \"boolean\",\n })\n .alias(\"h\", \"help\")\n .help(false)\n .version(false)\n .parseSync();\n\n if ((pre as any).help) {\n printHelp();\n return;\n }\n\n // Minimal yargs parsing for the top-level CLI behavior\n const parser = yargs(rawArgv)\n .scriptName(\"pha-deploy\")\n .usage(\"Usage: $0 [options] [--create-token|--mint-nft|--transfer]\")\n .option(\"rpc\", { type: \"string\", describe: \"RPC endpoint\" })\n .option(\"nexus\", { type: \"string\", describe: \"Chain nexus\" })\n .option(\"wif\", { type: \"string\", describe: \"WIF for signing\" })\n .option(\"symbol\", { type: \"string\", describe: \"Token symbol\" })\n .option(\"token-type\", {\n type: \"string\",\n choices: [\"nft\", \"fungible\"],\n describe: \"Token type to create (default: nft)\",\n })\n .option(\"token-max-supply\", {\n type: \"string\",\n describe:\n \"Token max supply (optional for NFT; required when --token-type fungible)\",\n })\n .option(\"fungible-decimals\", {\n type: \"number\",\n describe:\n \"Decimal places for fungible token (required when --token-type fungible)\",\n })\n .option(\"dry-run\", {\n type: \"boolean\",\n describe: \"Do not broadcast transactions; just show payloads\",\n })\n .option(\"rpc-log\", {\n type: \"boolean\",\n describe:\n \"Enable SDK RPC logging (prints full JSON-RPC responses for debugging)\",\n })\n .option(\"settings-log\", {\n type: \"boolean\",\n describe: \"Print resolved configuration before executing an action\",\n })\n .option(\"help\", {\n type: \"boolean\",\n describe: \"Show help\",\n })\n .alias(\"h\", \"help\")\n .option(\"config\", {\n type: \"string\",\n describe:\n \"Path to TOML config file (default: config.toml). Takes precedence as the file used for defaults.\",\n })\n .option(\"create-token\", { type: \"boolean\", describe: \"Create a token\" })\n .option(\"create-series\", {\n type: \"boolean\",\n describe: \"Create a token series\",\n })\n .option(\"mint-nft\", { type: \"boolean\", describe: \"Mint tokens\" })\n .version()\n .epilog(\"pha-deploy - Phantasma token deployment and minting CLI\");\n\n const argv = await parser.parseAsync();\n if ((argv as any).help) {\n printHelp();\n return;\n }\n\n // Load TOML configuration (if present) before doing full parsing\n const cfg = loadConfig({ configPath: pre.config ?? null });\n\n const rpcLogEnabled = Boolean((argv as any)[\"rpc-log\"]);\n const settingsLogEnabled = Boolean((argv as any)[\"settings-log\"]);\n if (rpcLogEnabled) {\n // SDK logs JSON-RPC responses as raw objects; inspect avoids [Object] output.\n setLogger({\n log: (...args: unknown[]) => {\n const formatted = args.map((arg) =>\n typeof arg === \"string\"\n ? arg\n : inspect(arg, { depth: null, colors: false }),\n );\n console.log(...formatted);\n },\n });\n } else {\n // Enforce silent SDK logs unless explicitly enabled.\n setLogger();\n }\n\n // Determine dry-run (CLI flag overrides config)\n const dryRun = Boolean((argv as any)[\"dry-run\"]) || cfg.dryRun || false;\n\n // One-shot actions: pick the first matching action\n const actions = [\"create-token\", \"create-series\", \"mint-nft\"];\n let foundAction = false;\n for (const action of actions) {\n if ((argv as any)[action]) {\n foundAction = true;\n switch (action) {\n case \"create-token\": {\n await actionCreateToken(cfg, dryRun, settingsLogEnabled);\n return;\n }\n case \"create-series\": {\n await actionCreateSeries(cfg, dryRun, settingsLogEnabled);\n return;\n }\n case \"mint-nft\": {\n await actionMintNft(cfg, dryRun, settingsLogEnabled);\n return;\n }\n }\n }\n }\n\n // No action requested -> show help\n if (!foundAction) {\n printHelp();\n }\n}\n\n/* ----------------------------- Run Script ---------------------------- */\n\nif (require.main === module) {\n main().catch((err) => {\n console.error(\n \"Unhandled error in CLI:\",\n err && err.stack ? err.stack : err,\n );\n process.exit(2);\n });\n}\n\nexport default main;\n"]}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\nimport { hideBin } from \"yargs/helpers\";\nimport yargs from \"yargs\";\nimport loadConfig, { Config, TokenType } from \"./config\";\nimport { inspect } from \"node:util\";\nimport { createToken, createTokenCfg } from \"./actions/createToken\";\nimport { createSeries, createSeriesCfg } from \"./actions/createSeries\";\nimport { mintFungibleToken, mintFungibleTokenCfg } from \"./actions/mintFungibleToken\";\nimport { mintNftToken, mintNftTokenCfg } from \"./actions/mintNftToken\";\nimport { PhantasmaKeys, setLogger } from \"phantasma-sdk-ts\";\n\n/**\n * CLI for pha-deploy.\n *\n * Modes:\n * - CLI one-shot: use flags to perform actions immediately\n * - TOML-driven: use `--config` or default `config.toml` for config values\n *\n * Actions:\n * - create-token\n * - create-series\n * - mint-fungible\n * - mint-nft\n */\n\nfunction printHelp(): void {\n const text = `Usage:\n pha-deploy --create-token [options]\n pha-deploy --create-series [options]\n pha-deploy --mint-fungible [options]\n pha-deploy --mint-nft [options]\n\nActions:\n --create-token Create a token\n --create-series Create a token series\n --mint-fungible Mint fungible tokens\n --mint-nft Mint tokens\n\nCommon flags:\n --config <path> Path to TOML config file (default: config.toml)\n --dry-run Do not broadcast transactions; just show payloads\n --rpc-log Enable SDK JSON-RPC logging (full response payloads)\n --settings-log Print resolved configuration before executing an action\n --help Show this help\n --version Show version number\n\nOverrides (replace values from config.toml when provided):\n --rpc <url> RPC endpoint (fallback: https://testnet.phantasma.info/rpc)\n --nexus <name> Chain nexus (example: mainnet or testnet)\n --wif <wif> WIF for signing\n --symbol <symbol> Token symbol\n --token-type <nft|fungible> Token type to create (default: nft)\n --token-max-supply <int> Non-negative integer; required when token-type=fungible\n --fungible-max-supply <int> Alias for --token-max-supply\n --fungible-decimals <0..255> Decimal places; required when token-type=fungible\n --carbon-token-id <int> Existing carbon token ID (for series or mint)\n --carbon-token-series-id <int> Existing series ID (for mint)\n --mint-fungible-to <address> Recipient address for fungible mint (default: WIF owner)\n --mint-fungible-amount <int> Amount to mint (integer atomic units)\n --rom <hex> Token ROM hex (optional; for token creation)\n --token-schemas <json> JSON string with schemas (seriesMetadata, rom, ram)\n --token-metadata <json> JSON string of token metadata fields\n --series-metadata <json> JSON object or array of series metadata fields\n --nft-metadata <json> JSON object or array of NFT metadata fields\n --create-token-max-data <int> Max data for create-token tx\n --create-token-series-max-data <int> Max data for create-series tx\n --mint-token-max-data <int> Max data for mint-nft tx\n --gas-fee-base <int> Gas fee base\n --gas-fee-create-token-base <int> Gas fee base for create-token\n --gas-fee-create-token-symbol <int> Gas fee per symbol\n --gas-fee-create-token-series <int> Gas fee for create-series\n --gas-fee-multiplier <int> Gas fee multiplier\n\npha-deploy - Phantasma token deployment and minting CLI\n`;\n console.log(text);\n}\n\nfunction requireArg<T>(\n value: T,\n name: string,\n): asserts value is NonNullable<T> {\n if (value === undefined || value === null) {\n throw new Error(`${name} is required`);\n }\n}\n\n/* ----------------------------- Actions ----------------------------- */\nasync function actionCreateToken(\n cfg: Config,\n dryRun: boolean,\n logSettings: boolean,\n) {\n requireArg(cfg.rpc, \"rpc\");\n requireArg(cfg.nexus, \"nexus\");\n requireArg(cfg.wif, \"wif\");\n requireArg(cfg.symbol, \"symbol\");\n requireArg(cfg.gasFeeBase, \"gas_fee_base\");\n requireArg(cfg.gasFeeCreateTokenBase, \"gas_fee_create_token_base\");\n requireArg(cfg.gasFeeCreateTokenSymbol, \"gas_fee_create_token_symbol\");\n requireArg(cfg.gasFeeMultiplier, \"gas_fee_multiplier\");\n requireArg(cfg.createTokenMaxData, \"create_token_max_data\");\n\n const tokenType: TokenType =\n (cfg.tokenType ?? \"nft\") === \"fungible\" ? \"fungible\" : \"nft\";\n\n if (tokenType === \"fungible\") {\n requireArg(cfg.tokenMaxSupply, \"token_max_supply\");\n requireArg(cfg.fungibleDecimals, \"fungible_decimals\");\n } else {\n requireArg(cfg.tokenSchemas, \"token_schemas\");\n }\n\n await createToken(\n new createTokenCfg(\n cfg.rpc,\n cfg.nexus,\n cfg.wif,\n cfg.symbol,\n cfg.gasFeeBase,\n cfg.gasFeeCreateTokenBase,\n cfg.gasFeeCreateTokenSymbol,\n cfg.gasFeeMultiplier,\n cfg.createTokenMaxData,\n cfg.tokenSchemas,\n cfg.tokenMetadata,\n tokenType,\n cfg.tokenMaxSupply,\n cfg.fungibleDecimals,\n ),\n dryRun,\n logSettings,\n );\n}\n\nasync function actionCreateSeries(\n cfg: Config,\n dryRun: boolean,\n logSettings: boolean,\n) {\n requireArg(cfg.rpc, \"rpc\");\n requireArg(cfg.nexus, \"nexus\");\n requireArg(cfg.wif, \"wif\");\n requireArg(cfg.carbonTokenId, \"carbon_token_id\");\n requireArg(cfg.tokenSchemas, \"token_schemas\");\n requireArg(cfg.seriesMetadata, \"series_metadata\");\n requireArg(cfg.gasFeeBase, \"gas_fee_base\");\n requireArg(cfg.gasFeeCreateTokenSeries, \"gas_fee_create_token_series\");\n requireArg(cfg.gasFeeMultiplier, \"gas_fee_multiplier\");\n requireArg(cfg.createTokenSeriesMaxData, \"create_token_series_max_data\");\n\n await createSeries(\n new createSeriesCfg(\n cfg.rpc,\n cfg.nexus,\n cfg.wif,\n cfg.carbonTokenId,\n cfg.gasFeeBase,\n cfg.gasFeeCreateTokenSeries,\n cfg.gasFeeMultiplier,\n cfg.createTokenSeriesMaxData,\n cfg.tokenSchemas?.seriesMetadata,\n cfg.seriesMetadata\n ),\n dryRun,\n logSettings,\n );\n}\n\nasync function actionMintNft(\n cfg: Config,\n dryRun: boolean,\n logSettings: boolean,\n) {\n requireArg(cfg.rpc, \"rpc\");\n requireArg(cfg.nexus, \"nexus\");\n requireArg(cfg.wif, \"wif\");\n requireArg(cfg.carbonTokenId, \"carbon_token_id\");\n requireArg(cfg.carbonTokenSeriesId, \"carbon_token_series_id\");\n requireArg(cfg.tokenSchemas, \"token_schemas\");\n requireArg(cfg.nftMetadata, \"nft_metadata\");\n requireArg(cfg.gasFeeBase, \"gas_fee_base\");\n requireArg(cfg.gasFeeMultiplier, \"gas_fee_multiplier\");\n requireArg(cfg.mintTokenMaxData, \"mint_token_max_data\");\n\n await mintNftToken(\n new mintNftTokenCfg(\n cfg.rpc,\n cfg.nexus,\n cfg.wif,\n cfg.carbonTokenId,\n cfg.carbonTokenSeriesId,\n cfg.tokenSchemas.rom,\n cfg.nftMetadata,\n cfg.gasFeeBase,\n cfg.gasFeeMultiplier,\n cfg.mintTokenMaxData,\n ),\n dryRun,\n logSettings,\n );\n}\n\nasync function actionMintFungible(\n cfg: Config,\n dryRun: boolean,\n logSettings: boolean,\n) {\n requireArg(cfg.rpc, \"rpc\");\n requireArg(cfg.nexus, \"nexus\");\n requireArg(cfg.wif, \"wif\");\n requireArg(cfg.carbonTokenId, \"carbon_token_id\");\n requireArg(cfg.mintFungibleAmount, \"mint_fungible_amount\");\n requireArg(cfg.gasFeeBase, \"gas_fee_base\");\n requireArg(cfg.gasFeeMultiplier, \"gas_fee_multiplier\");\n requireArg(cfg.mintTokenMaxData, \"mint_token_max_data\");\n\n const to =\n cfg.mintFungibleTo ?? PhantasmaKeys.fromWIF(cfg.wif).Address.toString();\n\n await mintFungibleToken(\n new mintFungibleTokenCfg(\n cfg.rpc,\n cfg.nexus,\n cfg.wif,\n cfg.carbonTokenId,\n to,\n cfg.mintFungibleAmount,\n cfg.gasFeeBase,\n cfg.gasFeeMultiplier,\n cfg.mintTokenMaxData,\n ),\n dryRun,\n logSettings,\n );\n}\n\n/* ------------------------------- Main ------------------------------- */\n\nasync function main() {\n const rawArgv = hideBin(process.argv);\n\n // Pre-parse --config and --help early so the TOML file can be loaded before the main yargs parsing.\n const pre = yargs(rawArgv)\n .option(\"config\", {\n type: \"string\",\n alias: \"c\",\n description: \"Path to TOML config file (default: config.toml)\",\n })\n .option(\"help\", {\n type: \"boolean\",\n })\n .alias(\"h\", \"help\")\n .help(false)\n .version(false)\n .parseSync();\n\n if ((pre as any).help) {\n printHelp();\n return;\n }\n\n // Minimal yargs parsing for the top-level CLI behavior\n const parser = yargs(rawArgv)\n .scriptName(\"pha-deploy\")\n .usage(\"Usage: $0 [options] [--create-token|--create-series|--mint-fungible|--mint-nft]\")\n .option(\"rpc\", { type: \"string\", describe: \"RPC endpoint\" })\n .option(\"nexus\", { type: \"string\", describe: \"Chain nexus\" })\n .option(\"wif\", { type: \"string\", describe: \"WIF for signing\" })\n .option(\"symbol\", { type: \"string\", describe: \"Token symbol\" })\n .option(\"token-type\", {\n type: \"string\",\n choices: [\"nft\", \"fungible\"],\n describe: \"Token type to create (default: nft)\",\n })\n .option(\"token-max-supply\", {\n type: \"string\",\n describe:\n \"Token max supply (optional for NFT; required when --token-type fungible)\",\n })\n .option(\"fungible-decimals\", {\n type: \"number\",\n describe:\n \"Decimal places for fungible token (required when --token-type fungible)\",\n })\n .option(\"dry-run\", {\n type: \"boolean\",\n describe: \"Do not broadcast transactions; just show payloads\",\n })\n .option(\"rpc-log\", {\n type: \"boolean\",\n describe:\n \"Enable SDK RPC logging (prints full JSON-RPC responses for debugging)\",\n })\n .option(\"settings-log\", {\n type: \"boolean\",\n describe: \"Print resolved configuration before executing an action\",\n })\n .option(\"help\", {\n type: \"boolean\",\n describe: \"Show help\",\n })\n .alias(\"h\", \"help\")\n .option(\"config\", {\n type: \"string\",\n describe:\n \"Path to TOML config file (default: config.toml). Takes precedence as the file used for defaults.\",\n })\n .option(\"create-token\", { type: \"boolean\", describe: \"Create a token\" })\n .option(\"create-series\", {\n type: \"boolean\",\n describe: \"Create a token series\",\n })\n .option(\"mint-fungible\", { type: \"boolean\", describe: \"Mint fungible tokens\" })\n .option(\"mint-nft\", { type: \"boolean\", describe: \"Mint tokens\" })\n .option(\"mint-fungible-to\", {\n type: \"string\",\n describe: \"Recipient address for fungible mint (default: WIF owner)\",\n })\n .option(\"mint-fungible-amount\", {\n type: \"string\",\n describe: \"Amount to mint (integer atomic units)\",\n })\n .version()\n .epilog(\"pha-deploy - Phantasma token deployment and minting CLI\");\n\n const argv = await parser.parseAsync();\n if ((argv as any).help) {\n printHelp();\n return;\n }\n\n // Load TOML configuration (if present) before doing full parsing\n const cfg = loadConfig({ configPath: pre.config ?? null });\n\n const rpcLogEnabled = Boolean((argv as any)[\"rpc-log\"]);\n const settingsLogEnabled = Boolean((argv as any)[\"settings-log\"]);\n if (rpcLogEnabled) {\n // SDK logs JSON-RPC responses as raw objects; inspect avoids [Object] output.\n setLogger({\n log: (...args: unknown[]) => {\n const formatted = args.map((arg) =>\n typeof arg === \"string\"\n ? arg\n : inspect(arg, { depth: null, colors: false }),\n );\n console.log(...formatted);\n },\n });\n } else {\n // Enforce silent SDK logs unless explicitly enabled.\n setLogger();\n }\n\n // Determine dry-run (CLI flag overrides config)\n const dryRun = Boolean((argv as any)[\"dry-run\"]) || cfg.dryRun || false;\n\n // One-shot actions: pick the first matching action\n const actions = [\"create-token\", \"create-series\", \"mint-fungible\", \"mint-nft\"];\n let foundAction = false;\n for (const action of actions) {\n if ((argv as any)[action]) {\n foundAction = true;\n switch (action) {\n case \"create-token\": {\n await actionCreateToken(cfg, dryRun, settingsLogEnabled);\n return;\n }\n case \"create-series\": {\n await actionCreateSeries(cfg, dryRun, settingsLogEnabled);\n return;\n }\n case \"mint-fungible\": {\n await actionMintFungible(cfg, dryRun, settingsLogEnabled);\n return;\n }\n case \"mint-nft\": {\n await actionMintNft(cfg, dryRun, settingsLogEnabled);\n return;\n }\n }\n }\n }\n\n // No action requested -> show help\n if (!foundAction) {\n printHelp();\n }\n}\n\n/* ----------------------------- Run Script ---------------------------- */\n\nif (require.main === module) {\n main().catch((err) => {\n console.error(\n \"Unhandled error in CLI:\",\n err && err.stack ? err.stack : err,\n );\n process.exit(2);\n });\n}\n\nexport default main;\n"]}
|
package/dist/config.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ export interface Config {
|
|
|
16
16
|
carbonTokenSeriesId?: number | null;
|
|
17
17
|
seriesMetadata?: MetadataField[] | null;
|
|
18
18
|
nftMetadata?: MetadataField[] | null;
|
|
19
|
+
mintFungibleTo?: string | null;
|
|
20
|
+
mintFungibleAmount?: bigint | null;
|
|
19
21
|
createTokenMaxData?: bigint | null;
|
|
20
22
|
createTokenSeriesMaxData?: bigint | null;
|
|
21
23
|
mintTokenMaxData?: bigint | null;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAkB,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAuB,MAAM,kBAAkB,CAAC;AAEpF,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,UAAU,CAAC;AAE3C,MAAM,WAAW,MAAM;IAErB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAGpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,aAAa,EAAE,QAAQ,CAAC;IACxB,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAGjC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,cAAc,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAGxC,WAAW,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAGrC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAGjC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAGjC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAsKD;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE;IACnC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAkB,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAuB,MAAM,kBAAkB,CAAC;AAEpF,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,UAAU,CAAC;AAE3C,MAAM,WAAW,MAAM;IAErB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAGpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,aAAa,EAAE,QAAQ,CAAC;IACxB,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAGjC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,cAAc,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAGxC,WAAW,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAGrC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAGnC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAGjC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAGjC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAsKD;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE;IACnC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,GAAG,MAAM,CA8NT;AAED,eAAe,UAAU,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -175,6 +175,8 @@ function loadConfig(options) {
|
|
|
175
175
|
tokenMaxSupply: null,
|
|
176
176
|
fungibleDecimals: null,
|
|
177
177
|
nftMetadata: null,
|
|
178
|
+
mintFungibleTo: null,
|
|
179
|
+
mintFungibleAmount: null,
|
|
178
180
|
createTokenMaxData: null,
|
|
179
181
|
createTokenSeriesMaxData: null,
|
|
180
182
|
mintTokenMaxData: null,
|
|
@@ -199,6 +201,11 @@ function loadConfig(options) {
|
|
|
199
201
|
parseBigInt(pickValue(argv, "carbon-token-id", "carbon_token_id")) ?? null;
|
|
200
202
|
cfg.carbonTokenSeriesId =
|
|
201
203
|
parseNumber(pickValue(argv, "carbon-token-series-id", "carbon_token_series_id")) ?? null;
|
|
204
|
+
// Mint-fungible args (optional; required only for --mint-fungible action).
|
|
205
|
+
cfg.mintFungibleTo =
|
|
206
|
+
pickValue(argv, "mint-fungible-to", "mint_fungible_to") ?? null;
|
|
207
|
+
cfg.mintFungibleAmount =
|
|
208
|
+
parseBigInt(pickValue(argv, "mint-fungible-amount", "mint_fungible_amount")) ?? null;
|
|
202
209
|
cfg.rom = pickValue(argv, "rom", "rom") ?? null;
|
|
203
210
|
const tokenTypeRaw = pickValue(argv, "token-type", "token_type");
|
|
204
211
|
if (tokenTypeRaw) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport toml from \"@iarna/toml\";\nimport yargs from \"yargs/yargs\";\nimport { Metadata, MetadataFields } from \"./actions/helpers\";\nimport { MetadataField, TokenSchemas, TokenSchemasBuilder } from \"phantasma-sdk-ts\";\n\nexport type TokenType = \"nft\" | \"fungible\";\n\nexport interface Config {\n // Core / connection\n rpc: string;\n nexus?: string | null;\n wif?: string | null;\n\n // Token\n symbol?: string | null;\n carbonTokenId?: bigint | null;\n rom?: string | null;\n tokenSchemas?: TokenSchemas | null;\n tokenMetadata: Metadata;\n tokenType?: TokenType | null;\n tokenMaxSupply?: bigint | null;\n fungibleDecimals?: number | null;\n\n // Series\n carbonTokenSeriesId?: number | null;\n seriesMetadata?: MetadataField[] | null;\n\n // NFT-specific\n nftMetadata?: MetadataField[] | null;\n\n // Limits / sizes\n createTokenMaxData?: bigint | null;\n createTokenSeriesMaxData?: bigint | null;\n mintTokenMaxData?: bigint | null;\n\n // Gas / fees\n gasFeeBase?: bigint | null;\n gasFeeCreateTokenBase?: bigint | null;\n gasFeeCreateTokenSymbol?: bigint | null;\n gasFeeCreateTokenSeries?: bigint | null;\n gasFeeMultiplier?: bigint | null;\n\n // Runtime flags\n configPath?: string | null;\n dryRun?: boolean;\n}\n\n/**\n * Try to parse a JSON string, returning undefined if parsing fails.\n */\nfunction tryParseJSON<T = unknown>(value?: string | null): T | undefined {\n if (!value) return undefined;\n try {\n // Some users may provide single-quoted JSON; normalize quotes if necessary\n const trimmed = value.trim();\n return JSON.parse(trimmed) as T;\n } catch(e) {\n console.error(\"JSON parsing error: \", e);\n // ignore parse errors; caller will handle fallback\n return undefined;\n }\n}\n\nfunction makeMetadataField(\n name: string,\n value: unknown,\n context: string,\n): MetadataField {\n const trimmed = name.trim();\n if (!trimmed) {\n throw new Error(`${context}: metadata field name cannot be empty`);\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"bigint\" ||\n value instanceof Uint8Array\n ) {\n const field = new MetadataField();\n field.name = trimmed;\n field.value = value;\n return field;\n }\n\n throw new Error(\n `${context}.${trimmed} must be a string, number, bigint or Uint8Array`,\n );\n}\n\nfunction parseMetadataFieldArray(\n raw: string | undefined,\n context: string,\n): MetadataField[] | undefined {\n if (!raw) {\n return undefined;\n }\n\n const parsed = tryParseJSON<unknown>(raw);\n if (parsed === undefined) {\n return undefined;\n }\n\n if (Array.isArray(parsed)) {\n return parsed.map((entry, idx) => {\n if (\n entry &&\n typeof entry === \"object\" &&\n !Array.isArray(entry) &&\n \"name\" in entry &&\n \"value\" in entry &&\n typeof (entry as any).name === \"string\"\n ) {\n return makeMetadataField(\n (entry as any).name,\n (entry as any).value,\n `${context}[${idx}]`,\n );\n }\n throw new Error(\n `${context}[${idx}] must be an object like { name: string; value: ... }`,\n );\n });\n }\n\n if (parsed && typeof parsed === \"object\") {\n return Object.entries(parsed as Record<string, unknown>).map(\n ([name, value]) => makeMetadataField(name, value, context),\n );\n }\n\n throw new Error(`${context} must be a JSON object or array`);\n}\n\n/**\n * Parse a numeric-ish value into a number or undefined.\n */\nfunction parseNumber(value?: string | number | null): number | undefined {\n if (value == null) return undefined;\n\n if (typeof value === \"number\")\n return Number.isFinite(value) ? value : undefined;\n const v = value.toString().trim();\n if (v === \"\") return undefined;\n const n = Number(v);\n return Number.isFinite(n) ? n : undefined;\n}\n\nfunction parseBigInt(value?: string | bigint | null): bigint | undefined {\n if (value == null) return undefined;\n\n if (typeof value === \"bigint\") return value;\n\n const v = value.toString().trim();\n if (v === \"\") return undefined;\n return BigInt(v);\n}\n\n/**\n * Load TOML configuration from a provided path (if exists) or from default `config.toml`.\n * The parsed result is stored in the module-scoped `tomlConfig` object and used as\n * the source of truth for configuration values unless overridden by CLI flags.\n */\nlet tomlConfig: Record<string, any> = {};\n\nfunction loadToml(configPath?: string | null) {\n const file = configPath ? configPath : \"config.toml\";\n try {\n const resolved = path.resolve(process.cwd(), file);\n if (fs.existsSync(resolved)) {\n const raw = fs.readFileSync(resolved, { encoding: \"utf8\" });\n // Parse TOML into a plain object. If parse fails, keep an empty config.\n try {\n tomlConfig = toml.parse(raw) as Record<string, any>;\n } catch {\n tomlConfig = {};\n }\n } else {\n tomlConfig = {};\n }\n } catch {\n tomlConfig = {};\n }\n}\n\n/**\n * Helper to obtain a value by preferring CLI args -> TOML config -> fallback.\n * Accepts multiple possible CLI keys (kebab-case and camelCase).\n */\nfunction pickValue<T = string | undefined>(\n argv: Record<string, unknown>,\n cliKey: string, // prefer these (kebab/camel)\n tomlKey: string,\n): T | undefined {\n // try as-is from CLI\n if (Object.prototype.hasOwnProperty.call(argv, cliKey)) {\n const v = argv[cliKey];\n // yargs may map flags to boolean when not provided with value\n if (!(v === undefined)) {\n return v as unknown as T;\n }\n }\n\n // Fall back to TOML configuration.\n if (tomlConfig) {\n return tomlConfig[tomlKey] as unknown as T;\n }\n\n return undefined;\n}\n\n/**\n * Build Config by merging:\n * - TOML config file (config.toml) values\n * - CLI flags (override TOML)\n * - defaults (where applicable)\n *\n * Usage:\n * loadConfig(); // uses process.argv and config.toml if present\n * loadConfig({ argv: ['--rpc','https://...'], configPath: 'custom-config.toml' })\n */\nexport function loadConfig(options?: {\n argv?: string[];\n configPath?: string | null;\n}): Config {\n // Load TOML config (if any)\n loadToml(options?.configPath ?? null);\n\n // Parse CLI args using yargs; pass provided argv or process.argv\n const rawArgv = options?.argv ?? process.argv.slice(2);\n const argv = yargs(rawArgv)\n .help(false)\n .version(false)\n .parseSync();\n\n const cfg: Config = {\n rpc: \"\",\n nexus: \"\",\n wif: null,\n symbol: null,\n carbonTokenId: null,\n carbonTokenSeriesId: null,\n rom: null,\n tokenSchemas: null,\n tokenMetadata: new Metadata(undefined, \"token_metadata\"),\n seriesMetadata: null,\n tokenType: null,\n tokenMaxSupply: null,\n fungibleDecimals: null,\n nftMetadata: null,\n createTokenMaxData: null,\n createTokenSeriesMaxData: null,\n mintTokenMaxData: null,\n gasFeeBase: null,\n gasFeeCreateTokenBase: null,\n gasFeeCreateTokenSymbol: null,\n gasFeeCreateTokenSeries: null,\n gasFeeMultiplier: null,\n configPath: null,\n dryRun: false,\n };\n\n // Core / connection\n cfg.rpc =\n (pickValue(argv, \"rpc\", \"rpc\") as string | undefined) ??\n \"https://testnet.phantasma.info/rpc\";\n cfg.nexus = (pickValue(argv, \"nexus\", \"nexus\") as string | undefined) ?? null;\n cfg.wif = (pickValue(argv, \"wif\", \"wif\") as string | undefined) ?? null;\n\n // Token defaults\n cfg.symbol =\n (pickValue(argv, \"symbol\", \"symbol\") as string | undefined) ?? null;\n cfg.carbonTokenId =\n parseBigInt(\n pickValue(argv, \"carbon-token-id\", \"carbon_token_id\") as\n | string\n | bigint\n | undefined,\n ) ?? null;\n cfg.carbonTokenSeriesId =\n parseNumber(\n pickValue(argv, \"carbon-token-series-id\", \"carbon_token_series_id\") as\n | string\n | number\n | undefined,\n ) ?? null;\n cfg.rom = (pickValue(argv, \"rom\", \"rom\") as string | undefined) ?? null;\n\n const tokenTypeRaw = pickValue(argv, \"token-type\", \"token_type\") as\n | string\n | undefined;\n if (tokenTypeRaw) {\n const lowered = tokenTypeRaw.trim().toLowerCase();\n if (lowered === \"fungible\" || lowered === \"nft\") {\n cfg.tokenType = lowered;\n } else {\n throw Error(`Unsupported token type ${lowered}`);\n }\n }\n\n // tokenSchemas\n const tokenSchemasRaw = pickValue<string>(\n argv,\n \"token-schemas\",\n \"token_schemas\",\n );\n if (tokenSchemasRaw) {\n cfg.tokenSchemas = TokenSchemasBuilder.fromJson(tokenSchemasRaw);\n }\n\n\n // tokenMetadata\n const tmfRaw = pickValue<string>(\n argv,\n \"token-metadata\",\n \"token_metadata\",\n );\n if (tmfRaw) {\n const tokenMetadataFields = tryParseJSON<MetadataFields>(tmfRaw);\n if (!tokenMetadataFields) {\n throw new Error(\"token_metadata must be valid JSON\");\n }\n cfg.tokenMetadata = new Metadata(tokenMetadataFields, \"token_metadata\");\n }\n\n const smfRaw = pickValue(\n argv,\n \"series-metadata\",\n \"series_metadata\",\n );\n cfg.seriesMetadata = parseMetadataFieldArray(smfRaw, \"series_metadata\") ?? null;\n\n const rawMaxSupply =\n (pickValue(argv, \"token-max-supply\", \"token_max_supply\") as\n | string\n | bigint\n | undefined) ??\n (pickValue(argv, \"fungible-max-supply\", \"fungible_max_supply\") as\n | string\n | bigint\n | undefined);\n cfg.tokenMaxSupply = parseBigInt(rawMaxSupply) ?? null;\n cfg.fungibleDecimals =\n parseNumber(\n pickValue(argv, \"fungible-decimals\", \"fungible_decimals\") as\n | string\n | number\n | undefined,\n ) ?? null;\n\n // NFT metadata\n const nmfRaw = pickValue(\n argv,\n \"nft-metadata\",\n \"nft_metadata\",\n );\n cfg.nftMetadata = parseMetadataFieldArray(nmfRaw, \"nft_metadata\") ?? null;\n\n // Limits and sizes\n cfg.createTokenMaxData =\n parseBigInt(\n pickValue(argv, \"create-token-max-data\", \"create_token_max_data\") as\n | string\n | bigint\n | undefined,\n ) ?? null;\n cfg.createTokenSeriesMaxData =\n parseBigInt(\n pickValue(\n argv,\n \"create-token-series-max-data\",\n \"create_token_series_max_data\",\n ) as string | bigint | undefined,\n ) ?? null;\n cfg.mintTokenMaxData =\n parseBigInt(\n pickValue(argv, \"mint-token-max-data\", \"mint_token_max_data\") as\n | string\n | bigint\n | undefined,\n ) ?? null;\n\n // Gas / fees\n cfg.gasFeeBase =\n parseBigInt(\n pickValue(argv, \"gas-fee-base\", \"gas_fee_base\") as\n | string\n | bigint\n | undefined,\n ) ?? null;\n cfg.gasFeeCreateTokenBase =\n parseBigInt(\n pickValue(\n argv,\n \"gas-fee-create-token-base\",\n \"gas_fee_create_token_base\",\n ) as string | bigint | undefined,\n ) ?? null;\n cfg.gasFeeCreateTokenSymbol =\n parseBigInt(\n pickValue(\n argv,\n \"gas-fee-create-token-symbol\",\n \"gas_fee_create_token_symbol\",\n ) as string | bigint | undefined,\n ) ?? null;\n cfg.gasFeeCreateTokenSeries =\n parseBigInt(\n pickValue(\n argv,\n \"gas-fee-create-token-series\",\n \"gas_fee_create_token_series\",\n ) as string | bigint | undefined,\n ) ?? null;\n cfg.gasFeeMultiplier =\n parseBigInt(\n pickValue(argv, \"gas-fee-multiplier\", \"gas_fee_multiplier\") as\n | string\n | bigint\n | undefined,\n ) ?? null;\n\n // Runtime flags\n cfg.configPath =\n (pickValue(argv, \"config\", \"CONFIG_PATH\") as string | undefined) ??\n options?.configPath ??\n null;\n cfg.dryRun = Boolean(pickValue(argv, \"dry-run\", \"dry_run\")) || false;\n\n return cfg;\n}\n\nexport default loadConfig;\n"]}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport toml from \"@iarna/toml\";\nimport yargs from \"yargs/yargs\";\nimport { Metadata, MetadataFields } from \"./actions/helpers\";\nimport { MetadataField, TokenSchemas, TokenSchemasBuilder } from \"phantasma-sdk-ts\";\n\nexport type TokenType = \"nft\" | \"fungible\";\n\nexport interface Config {\n // Core / connection\n rpc: string;\n nexus?: string | null;\n wif?: string | null;\n\n // Token\n symbol?: string | null;\n carbonTokenId?: bigint | null;\n rom?: string | null;\n tokenSchemas?: TokenSchemas | null;\n tokenMetadata: Metadata;\n tokenType?: TokenType | null;\n tokenMaxSupply?: bigint | null;\n fungibleDecimals?: number | null;\n\n // Series\n carbonTokenSeriesId?: number | null;\n seriesMetadata?: MetadataField[] | null;\n\n // NFT-specific\n nftMetadata?: MetadataField[] | null;\n\n // Mint fungible\n mintFungibleTo?: string | null;\n mintFungibleAmount?: bigint | null;\n\n // Limits / sizes\n createTokenMaxData?: bigint | null;\n createTokenSeriesMaxData?: bigint | null;\n mintTokenMaxData?: bigint | null;\n\n // Gas / fees\n gasFeeBase?: bigint | null;\n gasFeeCreateTokenBase?: bigint | null;\n gasFeeCreateTokenSymbol?: bigint | null;\n gasFeeCreateTokenSeries?: bigint | null;\n gasFeeMultiplier?: bigint | null;\n\n // Runtime flags\n configPath?: string | null;\n dryRun?: boolean;\n}\n\n/**\n * Try to parse a JSON string, returning undefined if parsing fails.\n */\nfunction tryParseJSON<T = unknown>(value?: string | null): T | undefined {\n if (!value) return undefined;\n try {\n // Some users may provide single-quoted JSON; normalize quotes if necessary\n const trimmed = value.trim();\n return JSON.parse(trimmed) as T;\n } catch(e) {\n console.error(\"JSON parsing error: \", e);\n // ignore parse errors; caller will handle fallback\n return undefined;\n }\n}\n\nfunction makeMetadataField(\n name: string,\n value: unknown,\n context: string,\n): MetadataField {\n const trimmed = name.trim();\n if (!trimmed) {\n throw new Error(`${context}: metadata field name cannot be empty`);\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"bigint\" ||\n value instanceof Uint8Array\n ) {\n const field = new MetadataField();\n field.name = trimmed;\n field.value = value;\n return field;\n }\n\n throw new Error(\n `${context}.${trimmed} must be a string, number, bigint or Uint8Array`,\n );\n}\n\nfunction parseMetadataFieldArray(\n raw: string | undefined,\n context: string,\n): MetadataField[] | undefined {\n if (!raw) {\n return undefined;\n }\n\n const parsed = tryParseJSON<unknown>(raw);\n if (parsed === undefined) {\n return undefined;\n }\n\n if (Array.isArray(parsed)) {\n return parsed.map((entry, idx) => {\n if (\n entry &&\n typeof entry === \"object\" &&\n !Array.isArray(entry) &&\n \"name\" in entry &&\n \"value\" in entry &&\n typeof (entry as any).name === \"string\"\n ) {\n return makeMetadataField(\n (entry as any).name,\n (entry as any).value,\n `${context}[${idx}]`,\n );\n }\n throw new Error(\n `${context}[${idx}] must be an object like { name: string; value: ... }`,\n );\n });\n }\n\n if (parsed && typeof parsed === \"object\") {\n return Object.entries(parsed as Record<string, unknown>).map(\n ([name, value]) => makeMetadataField(name, value, context),\n );\n }\n\n throw new Error(`${context} must be a JSON object or array`);\n}\n\n/**\n * Parse a numeric-ish value into a number or undefined.\n */\nfunction parseNumber(value?: string | number | null): number | undefined {\n if (value == null) return undefined;\n\n if (typeof value === \"number\")\n return Number.isFinite(value) ? value : undefined;\n const v = value.toString().trim();\n if (v === \"\") return undefined;\n const n = Number(v);\n return Number.isFinite(n) ? n : undefined;\n}\n\nfunction parseBigInt(value?: string | bigint | null): bigint | undefined {\n if (value == null) return undefined;\n\n if (typeof value === \"bigint\") return value;\n\n const v = value.toString().trim();\n if (v === \"\") return undefined;\n return BigInt(v);\n}\n\n/**\n * Load TOML configuration from a provided path (if exists) or from default `config.toml`.\n * The parsed result is stored in the module-scoped `tomlConfig` object and used as\n * the source of truth for configuration values unless overridden by CLI flags.\n */\nlet tomlConfig: Record<string, any> = {};\n\nfunction loadToml(configPath?: string | null) {\n const file = configPath ? configPath : \"config.toml\";\n try {\n const resolved = path.resolve(process.cwd(), file);\n if (fs.existsSync(resolved)) {\n const raw = fs.readFileSync(resolved, { encoding: \"utf8\" });\n // Parse TOML into a plain object. If parse fails, keep an empty config.\n try {\n tomlConfig = toml.parse(raw) as Record<string, any>;\n } catch {\n tomlConfig = {};\n }\n } else {\n tomlConfig = {};\n }\n } catch {\n tomlConfig = {};\n }\n}\n\n/**\n * Helper to obtain a value by preferring CLI args -> TOML config -> fallback.\n * Accepts multiple possible CLI keys (kebab-case and camelCase).\n */\nfunction pickValue<T = string | undefined>(\n argv: Record<string, unknown>,\n cliKey: string, // prefer these (kebab/camel)\n tomlKey: string,\n): T | undefined {\n // try as-is from CLI\n if (Object.prototype.hasOwnProperty.call(argv, cliKey)) {\n const v = argv[cliKey];\n // yargs may map flags to boolean when not provided with value\n if (!(v === undefined)) {\n return v as unknown as T;\n }\n }\n\n // Fall back to TOML configuration.\n if (tomlConfig) {\n return tomlConfig[tomlKey] as unknown as T;\n }\n\n return undefined;\n}\n\n/**\n * Build Config by merging:\n * - TOML config file (config.toml) values\n * - CLI flags (override TOML)\n * - defaults (where applicable)\n *\n * Usage:\n * loadConfig(); // uses process.argv and config.toml if present\n * loadConfig({ argv: ['--rpc','https://...'], configPath: 'custom-config.toml' })\n */\nexport function loadConfig(options?: {\n argv?: string[];\n configPath?: string | null;\n}): Config {\n // Load TOML config (if any)\n loadToml(options?.configPath ?? null);\n\n // Parse CLI args using yargs; pass provided argv or process.argv\n const rawArgv = options?.argv ?? process.argv.slice(2);\n const argv = yargs(rawArgv)\n .help(false)\n .version(false)\n .parseSync();\n\n const cfg: Config = {\n rpc: \"\",\n nexus: \"\",\n wif: null,\n symbol: null,\n carbonTokenId: null,\n carbonTokenSeriesId: null,\n rom: null,\n tokenSchemas: null,\n tokenMetadata: new Metadata(undefined, \"token_metadata\"),\n seriesMetadata: null,\n tokenType: null,\n tokenMaxSupply: null,\n fungibleDecimals: null,\n nftMetadata: null,\n mintFungibleTo: null,\n mintFungibleAmount: null,\n createTokenMaxData: null,\n createTokenSeriesMaxData: null,\n mintTokenMaxData: null,\n gasFeeBase: null,\n gasFeeCreateTokenBase: null,\n gasFeeCreateTokenSymbol: null,\n gasFeeCreateTokenSeries: null,\n gasFeeMultiplier: null,\n configPath: null,\n dryRun: false,\n };\n\n // Core / connection\n cfg.rpc =\n (pickValue(argv, \"rpc\", \"rpc\") as string | undefined) ??\n \"https://testnet.phantasma.info/rpc\";\n cfg.nexus = (pickValue(argv, \"nexus\", \"nexus\") as string | undefined) ?? null;\n cfg.wif = (pickValue(argv, \"wif\", \"wif\") as string | undefined) ?? null;\n\n // Token defaults\n cfg.symbol =\n (pickValue(argv, \"symbol\", \"symbol\") as string | undefined) ?? null;\n cfg.carbonTokenId =\n parseBigInt(\n pickValue(argv, \"carbon-token-id\", \"carbon_token_id\") as\n | string\n | bigint\n | undefined,\n ) ?? null;\n cfg.carbonTokenSeriesId =\n parseNumber(\n pickValue(argv, \"carbon-token-series-id\", \"carbon_token_series_id\") as\n | string\n | number\n | undefined,\n ) ?? null;\n\n // Mint-fungible args (optional; required only for --mint-fungible action).\n cfg.mintFungibleTo =\n (pickValue(argv, \"mint-fungible-to\", \"mint_fungible_to\") as\n | string\n | undefined) ?? null;\n cfg.mintFungibleAmount =\n parseBigInt(\n pickValue(argv, \"mint-fungible-amount\", \"mint_fungible_amount\") as\n | string\n | bigint\n | undefined,\n ) ?? null;\n\n cfg.rom = (pickValue(argv, \"rom\", \"rom\") as string | undefined) ?? null;\n\n const tokenTypeRaw = pickValue(argv, \"token-type\", \"token_type\") as\n | string\n | undefined;\n if (tokenTypeRaw) {\n const lowered = tokenTypeRaw.trim().toLowerCase();\n if (lowered === \"fungible\" || lowered === \"nft\") {\n cfg.tokenType = lowered;\n } else {\n throw Error(`Unsupported token type ${lowered}`);\n }\n }\n\n // tokenSchemas\n const tokenSchemasRaw = pickValue<string>(\n argv,\n \"token-schemas\",\n \"token_schemas\",\n );\n if (tokenSchemasRaw) {\n cfg.tokenSchemas = TokenSchemasBuilder.fromJson(tokenSchemasRaw);\n }\n\n\n // tokenMetadata\n const tmfRaw = pickValue<string>(\n argv,\n \"token-metadata\",\n \"token_metadata\",\n );\n if (tmfRaw) {\n const tokenMetadataFields = tryParseJSON<MetadataFields>(tmfRaw);\n if (!tokenMetadataFields) {\n throw new Error(\"token_metadata must be valid JSON\");\n }\n cfg.tokenMetadata = new Metadata(tokenMetadataFields, \"token_metadata\");\n }\n\n const smfRaw = pickValue(\n argv,\n \"series-metadata\",\n \"series_metadata\",\n );\n cfg.seriesMetadata = parseMetadataFieldArray(smfRaw, \"series_metadata\") ?? null;\n\n const rawMaxSupply =\n (pickValue(argv, \"token-max-supply\", \"token_max_supply\") as\n | string\n | bigint\n | undefined) ??\n (pickValue(argv, \"fungible-max-supply\", \"fungible_max_supply\") as\n | string\n | bigint\n | undefined);\n cfg.tokenMaxSupply = parseBigInt(rawMaxSupply) ?? null;\n cfg.fungibleDecimals =\n parseNumber(\n pickValue(argv, \"fungible-decimals\", \"fungible_decimals\") as\n | string\n | number\n | undefined,\n ) ?? null;\n\n // NFT metadata\n const nmfRaw = pickValue(\n argv,\n \"nft-metadata\",\n \"nft_metadata\",\n );\n cfg.nftMetadata = parseMetadataFieldArray(nmfRaw, \"nft_metadata\") ?? null;\n\n // Limits and sizes\n cfg.createTokenMaxData =\n parseBigInt(\n pickValue(argv, \"create-token-max-data\", \"create_token_max_data\") as\n | string\n | bigint\n | undefined,\n ) ?? null;\n cfg.createTokenSeriesMaxData =\n parseBigInt(\n pickValue(\n argv,\n \"create-token-series-max-data\",\n \"create_token_series_max_data\",\n ) as string | bigint | undefined,\n ) ?? null;\n cfg.mintTokenMaxData =\n parseBigInt(\n pickValue(argv, \"mint-token-max-data\", \"mint_token_max_data\") as\n | string\n | bigint\n | undefined,\n ) ?? null;\n\n // Gas / fees\n cfg.gasFeeBase =\n parseBigInt(\n pickValue(argv, \"gas-fee-base\", \"gas_fee_base\") as\n | string\n | bigint\n | undefined,\n ) ?? null;\n cfg.gasFeeCreateTokenBase =\n parseBigInt(\n pickValue(\n argv,\n \"gas-fee-create-token-base\",\n \"gas_fee_create_token_base\",\n ) as string | bigint | undefined,\n ) ?? null;\n cfg.gasFeeCreateTokenSymbol =\n parseBigInt(\n pickValue(\n argv,\n \"gas-fee-create-token-symbol\",\n \"gas_fee_create_token_symbol\",\n ) as string | bigint | undefined,\n ) ?? null;\n cfg.gasFeeCreateTokenSeries =\n parseBigInt(\n pickValue(\n argv,\n \"gas-fee-create-token-series\",\n \"gas_fee_create_token_series\",\n ) as string | bigint | undefined,\n ) ?? null;\n cfg.gasFeeMultiplier =\n parseBigInt(\n pickValue(argv, \"gas-fee-multiplier\", \"gas_fee_multiplier\") as\n | string\n | bigint\n | undefined,\n ) ?? null;\n\n // Runtime flags\n cfg.configPath =\n (pickValue(argv, \"config\", \"CONFIG_PATH\") as string | undefined) ??\n options?.configPath ??\n null;\n cfg.dryRun = Boolean(pickValue(argv, \"dry-run\", \"dry_run\")) || false;\n\n return cfg;\n}\n\nexport default loadConfig;\n"]}
|