pontus-x_cli 1.0.4 → 1.2.5
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 +144 -53
- package/bin/dev.js +5 -5
- package/bin/run.js +4 -5
- package/dist/commands/access.d.ts +1 -1
- package/dist/commands/access.js +3 -3
- package/dist/commands/access.js.map +1 -1
- package/dist/commands/change-price.d.ts +3 -3
- package/dist/commands/change-price.js +12 -11
- package/dist/commands/change-price.js.map +1 -1
- package/dist/commands/check-participant-compliance.d.ts +1 -1
- package/dist/commands/check-participant-compliance.js +13 -11
- package/dist/commands/check-participant-compliance.js.map +1 -1
- package/dist/commands/compute-results.d.ts +1 -1
- package/dist/commands/compute-results.js +7 -7
- package/dist/commands/compute-results.js.map +1 -1
- package/dist/commands/compute-status.d.ts +1 -1
- package/dist/commands/compute-status.js +7 -7
- package/dist/commands/compute-status.js.map +1 -1
- package/dist/commands/compute.d.ts +7 -5
- package/dist/commands/compute.js +136 -36
- package/dist/commands/compute.js.map +1 -1
- package/dist/commands/edit-additional-metadata.d.ts +3 -3
- package/dist/commands/edit-additional-metadata.js +18 -11
- package/dist/commands/edit-additional-metadata.js.map +1 -1
- package/dist/commands/edit-algo.d.ts +3 -3
- package/dist/commands/edit-algo.js +22 -13
- package/dist/commands/edit-algo.js.map +1 -1
- package/dist/commands/edit-asset-url.d.ts +3 -3
- package/dist/commands/edit-asset-url.js +12 -11
- package/dist/commands/edit-asset-url.js.map +1 -1
- package/dist/commands/edit-trusted-algos.d.ts +6 -5
- package/dist/commands/edit-trusted-algos.js +136 -21
- package/dist/commands/edit-trusted-algos.js.map +1 -1
- package/dist/commands/edit-trusted-publishers.d.ts +13 -0
- package/dist/commands/edit-trusted-publishers.js +132 -0
- package/dist/commands/edit-trusted-publishers.js.map +1 -0
- package/dist/commands/export-private-key.d.ts +2 -2
- package/dist/commands/export-private-key.js +27 -27
- package/dist/commands/export-private-key.js.map +1 -1
- package/dist/commands/generate-asset-credentials.d.ts +1 -1
- package/dist/commands/generate-asset-credentials.js +11 -11
- package/dist/commands/generate-asset-credentials.js.map +1 -1
- package/dist/commands/generate-did-web.d.ts +1 -1
- package/dist/commands/generate-did-web.js +11 -11
- package/dist/commands/generate-did-web.js.map +1 -1
- package/dist/commands/generate-participant-credentials.d.ts +1 -1
- package/dist/commands/generate-participant-credentials.js +10 -10
- package/dist/commands/generate-participant-credentials.js.map +1 -1
- package/dist/commands/get.d.ts +1 -1
- package/dist/commands/get.js +3 -3
- package/dist/commands/get.js.map +1 -1
- package/dist/commands/login.d.ts +2 -2
- package/dist/commands/login.js +16 -13
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts +1 -1
- package/dist/commands/logout.js +7 -7
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/publish.d.ts +5 -3
- package/dist/commands/publish.js +111 -43
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/render.d.ts +12 -0
- package/dist/commands/render.js +130 -0
- package/dist/commands/render.js.map +1 -0
- package/dist/commands/revoke.d.ts +7 -6
- package/dist/commands/revoke.js +92 -23
- package/dist/commands/revoke.js.map +1 -1
- package/dist/commands/self-description.d.ts +3 -3
- package/dist/commands/self-description.js +13 -8
- package/dist/commands/self-description.js.map +1 -1
- package/dist/config.d.ts +16 -18
- package/dist/config.js +63 -62
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/aquarius.d.ts +29 -0
- package/dist/lib/aquarius.js +212 -0
- package/dist/lib/aquarius.js.map +1 -0
- package/dist/lib/gaia-x_compliance/generate-credentials/index.js +26 -25
- package/dist/lib/gaia-x_compliance/generate-credentials/index.js.map +1 -1
- package/dist/lib/manifest.d.ts +5 -0
- package/dist/lib/manifest.js +33 -0
- package/dist/lib/manifest.js.map +1 -0
- package/dist/lib/spec.d.ts +12 -0
- package/dist/lib/spec.js +266 -0
- package/dist/lib/spec.js.map +1 -0
- package/dist/lib/wallet.d.ts +2 -0
- package/dist/lib/wallet.js +19 -0
- package/dist/lib/wallet.js.map +1 -0
- package/dist/lib/yaml.d.ts +2 -0
- package/dist/lib/yaml.js +53 -0
- package/dist/lib/yaml.js.map +1 -0
- package/dist/scripts/json-schema.d.ts +1 -0
- package/dist/scripts/json-schema.js +24 -0
- package/dist/scripts/json-schema.js.map +1 -0
- package/dist/types/manifest-schema.json +52 -0
- package/dist/types/manifest.d.ts +17 -0
- package/dist/types/manifest.js +14 -0
- package/dist/types/manifest.js.map +1 -0
- package/dist/types/schema.d.ts +1 -2
- package/dist/types/schema.js +3 -2
- package/dist/types/schema.js.map +1 -1
- package/dist/types/schema.json +24 -72
- package/dist/utils/account.d.ts +2 -0
- package/dist/utils/account.js +41 -0
- package/dist/utils/account.js.map +1 -0
- package/dist/utils/asset.d.ts +25 -0
- package/dist/utils/asset.js +108 -0
- package/dist/utils/asset.js.map +1 -0
- package/dist/utils/connection.d.ts +3 -3
- package/dist/utils/connection.js +2 -2
- package/dist/utils/connection.js.map +1 -1
- package/dist/utils/login.d.ts +14 -0
- package/dist/utils/login.js +99 -0
- package/dist/utils/login.js.map +1 -0
- package/oclif.manifest.json +250 -39
- package/package.json +22 -18
- package/dist/lib/publishFromFile.d.ts +0 -2
- package/dist/lib/publishFromFile.js +0 -143
- package/dist/lib/publishFromFile.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit-asset-url.js","sourceRoot":"","sources":["../../src/commands/edit-asset-url.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"edit-asset-url.js","sourceRoot":"","sources":["../../src/commands/edit-asset-url.ts"],"names":[],"mappings":";;;;;AAAA,iDAAkE;AAClE,sCAAmD;AACnD,kEAAyC;AAEzC,mDAAgD;AAEhD,MAAqB,YAAa,SAAQ,cAAO;IAqB/C,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAC1B,MAAM,UAAU,GAAG,MAAM,uBAAU,CAAC,OAAO,EAAE,CAAC;QAC9C,IACE,KAAK,CAAC,GAAG;YACT,uBAAY,CAAC,aAAa,CAAC,wBAAwB,GAAG,OAAO,GAAG,IAAI,CAAC,EACrE,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBACtE,MAAM,YAAY,GAAG,IAAI,uBAAY,CAAC,aAAa,CAAC,CAAC;gBACrD,MAAM,cAAc,GAAG,IAAI,yBAAc,CAAC;oBACxC,aAAa;oBACb,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;iBACxC,CAAC,CAAC;gBACH,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC5D,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;gBACvD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrD,IAAI,CAAC,GAAG,CACN,mCAAmC,UAAU,CAAC,aAAa,CAAC,WAAW,OAAO,MAAM,CAAC,oBAAoB,CAAC,eAAe,IAAI,CAC9H,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;IACH,CAAC;;AA9CM,iBAAI,GAAG;IACZ,GAAG,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACrE,GAAG,EAAE,WAAI,CAAC,MAAM,CAAC;QACf,WAAW,EAAE,uBAAuB;QACpC,QAAQ,EAAE,IAAI;KACf,CAAC;CACH,CAAC;AACK,wBAAW,GAAG,gCAAgC,CAAC;AAC/C,qBAAQ,GAAsB;IACnC,6LAA6L;CAC9L,CAAC;AACK,kBAAK,GAAG;IACb,GAAG,EAAE,YAAK,CAAC,OAAO,CAAC;QACjB,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,0BAA0B;QACvC,QAAQ,EAAE,KAAK;KAChB,CAAC;CACH,CAAC;kBAnBiB,YAAY"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { Command } from
|
|
1
|
+
import { Command } from "@oclif/core";
|
|
2
2
|
export default class EditTrustedAlgos extends Command {
|
|
3
|
-
static args: {
|
|
4
|
-
did: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
5
|
-
};
|
|
6
3
|
static description: string;
|
|
7
4
|
static examples: Command.Example[];
|
|
8
5
|
static flags: {
|
|
9
|
-
|
|
6
|
+
datasets: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
7
|
+
algorithms: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
10
8
|
yes: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
manifest: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
10
|
+
public: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
network: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
12
|
};
|
|
12
13
|
run(): Promise<void>;
|
|
13
14
|
}
|
|
@@ -5,50 +5,165 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const nautilus_1 = require("@deltadao/nautilus");
|
|
7
7
|
const core_1 = require("@oclif/core");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
9
|
const readline_sync_1 = __importDefault(require("readline-sync"));
|
|
10
|
+
const config_1 = require("../config");
|
|
11
|
+
const aquarius_1 = require("../lib/aquarius");
|
|
12
|
+
const asset_1 = require("../utils/asset");
|
|
9
13
|
const connection_1 = require("../utils/connection");
|
|
14
|
+
const login_1 = require("../utils/login");
|
|
10
15
|
class EditTrustedAlgos extends core_1.Command {
|
|
11
16
|
async run() {
|
|
12
|
-
|
|
13
|
-
const {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
var _a;
|
|
18
|
+
const { flags } = await this.parse(EditTrustedAlgos);
|
|
19
|
+
// Validation
|
|
20
|
+
if (flags.public && ((_a = flags.algos) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
21
|
+
this.error("You cannot specify algorithm DIDs and set the dataset as public at the same time.");
|
|
22
|
+
}
|
|
23
|
+
// Network selection
|
|
24
|
+
const network = flags.network || (0, login_1.getEnvNetwork)() || (await (0, login_1.askForNetwork)());
|
|
25
|
+
console.log(`${chalk_1.default.green("Using network:")} ${network}\n`);
|
|
26
|
+
const chainId = config_1.NETWORK_CONFIGS[network].chainId;
|
|
27
|
+
// Authentication selection
|
|
28
|
+
const loginInfos = await (0, login_1.getLoginInfos)(flags.manifest);
|
|
29
|
+
(0, login_1.printLoginInfos)(loginInfos);
|
|
30
|
+
// Datasets selection
|
|
31
|
+
const assets = flags.dids
|
|
32
|
+
? await (0, aquarius_1.getAssetsFromDids)(flags.dids)
|
|
33
|
+
: await askForDatasets(loginInfos, chainId);
|
|
34
|
+
if (flags.dids) {
|
|
35
|
+
console.log("\nThe following assets will be edited:");
|
|
36
|
+
for (const asset of assets) {
|
|
37
|
+
const ownerName = await (0, aquarius_1.getOwnerName)(asset.owner);
|
|
38
|
+
console.log(`${chalk_1.default.blue(asset.did)} | ${chalk_1.default.green(asset.created.split("T")[0])} | ${chalk_1.default.yellow(ownerName)} | ${chalk_1.default.magenta(asset.name)}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Trusted Algorithms selection
|
|
42
|
+
const algorithms = flags.algorithms
|
|
43
|
+
? await (0, aquarius_1.getAssetsFromDids)(flags.algorithms || [])
|
|
44
|
+
: !flags.public
|
|
45
|
+
? await askForAlgorithms(loginInfos, chainId)
|
|
46
|
+
: [];
|
|
47
|
+
if (flags.public) {
|
|
48
|
+
console.log("\nThe dataset will be set as public, all algorithms will be trusted.");
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
if (algorithms.length === 0) {
|
|
52
|
+
console.log("\nNo algorithms selected, the dataset will be set as private (no trusted algorithms).");
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
if (flags.algos) {
|
|
56
|
+
console.log("\nThe following algorithms will be set as trusted:");
|
|
57
|
+
for (const algo of algorithms) {
|
|
58
|
+
const ownerName = await (0, aquarius_1.getOwnerName)(algo.owner);
|
|
59
|
+
console.log(`${chalk_1.default.blue(algo.did)} | ${chalk_1.default.green(algo.created.split("T")[0])} | ${chalk_1.default.yellow(ownerName)} | ${chalk_1.default.magenta(algo.name)}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Confirmation prompt
|
|
65
|
+
if (!flags.yes &&
|
|
66
|
+
!readline_sync_1.default.keyInYNStrict("\nDo you want to proceed with editing the trusted algorithms for the selected datasets?")) {
|
|
67
|
+
console.log("Operation cancelled by the user.");
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
// Edit trusted algorithms for each selected dataset
|
|
71
|
+
for (const asset of assets) {
|
|
72
|
+
console.log(`Editing trusted algorithms for asset ${chalk_1.default.gray(asset.did)} (${chalk_1.default.magenta(asset.name)})...`);
|
|
18
73
|
try {
|
|
19
|
-
|
|
74
|
+
// Create connection and builders
|
|
75
|
+
const envOverrides = {
|
|
76
|
+
NETWORK: network,
|
|
77
|
+
PRIVATE_KEY: (0, login_1.getPrivateKeyForOwner)(loginInfos, asset.owner),
|
|
78
|
+
};
|
|
79
|
+
const connection = await connection_1.Connection.connect(envOverrides);
|
|
80
|
+
const aquariusAsset = await connection.nautilus.getAquariusAsset(asset.did);
|
|
20
81
|
const assetBuilder = new nautilus_1.AssetBuilder(aquariusAsset);
|
|
21
82
|
const serviceBuilder = new nautilus_1.ServiceBuilder({
|
|
22
83
|
aquariusAsset,
|
|
23
84
|
serviceId: aquariusAsset.services[0].id,
|
|
24
85
|
});
|
|
25
|
-
|
|
26
|
-
|
|
86
|
+
if (flags.public) {
|
|
87
|
+
// Public
|
|
88
|
+
serviceBuilder.setAllAlgorithmsTrusted();
|
|
89
|
+
}
|
|
90
|
+
else if (algorithms.length > 0) {
|
|
91
|
+
// Only selected algorithms as trusted
|
|
92
|
+
serviceBuilder.setAllAlgorithmsUntrusted();
|
|
93
|
+
serviceBuilder.addTrustedAlgorithms(algorithms.map((algo) => ({ did: algo.did })));
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
// Private
|
|
97
|
+
serviceBuilder.setAllAlgorithmsUntrusted();
|
|
98
|
+
}
|
|
99
|
+
// Apply changes
|
|
27
100
|
const service = serviceBuilder.build();
|
|
28
|
-
const
|
|
29
|
-
const result = await connection.nautilus.edit(
|
|
101
|
+
const nautilusAsset = assetBuilder.addService(service).build();
|
|
102
|
+
const result = await connection.nautilus.edit(nautilusAsset);
|
|
30
103
|
this.log(`Edited the trusted algorithms, transaction: ${connection.networkConfig.explorerUri}/tx/${result.setMetadataTxReceipt.transactionHash}\n`);
|
|
31
104
|
}
|
|
32
105
|
catch (error) {
|
|
33
|
-
this.error(`Error editing
|
|
106
|
+
this.error(`Error editing trusted algorithms: ${error}`);
|
|
34
107
|
}
|
|
35
108
|
}
|
|
36
109
|
}
|
|
37
110
|
}
|
|
38
|
-
EditTrustedAlgos.
|
|
39
|
-
did: core_1.Args.string({ description: 'DID of the asset', required: true }),
|
|
40
|
-
};
|
|
41
|
-
EditTrustedAlgos.description = 'Overwrite the trusted algorithms for a data asset to the provided algorithm DIDs';
|
|
111
|
+
EditTrustedAlgos.description = "Overwrite datasets trusted algorithms";
|
|
42
112
|
EditTrustedAlgos.examples = [
|
|
43
|
-
|
|
113
|
+
"<%= config.bin %> <%= command.id %> -d <datasetDid1> <datasetDid2> ... -a <algorithmDid1> <algorithmDid2> ...",
|
|
44
114
|
];
|
|
45
115
|
EditTrustedAlgos.flags = {
|
|
46
|
-
|
|
47
|
-
|
|
116
|
+
datasets: core_1.Flags.string({
|
|
117
|
+
char: "d",
|
|
118
|
+
description: "Dataset DIDs (did:op:...)",
|
|
48
119
|
multiple: true,
|
|
49
|
-
required: true,
|
|
50
120
|
}),
|
|
51
|
-
|
|
121
|
+
algorithms: core_1.Flags.string({
|
|
122
|
+
char: "a",
|
|
123
|
+
description: "Trusted algorithm DIDs (did:op:...)",
|
|
124
|
+
multiple: true,
|
|
125
|
+
}),
|
|
126
|
+
yes: core_1.Flags.boolean({
|
|
127
|
+
char: "y",
|
|
128
|
+
description: "Skip confirmation prompt",
|
|
129
|
+
}),
|
|
130
|
+
manifest: core_1.Flags.string({
|
|
131
|
+
char: "m",
|
|
132
|
+
description: "Path to manifest file with the accounts to use for authentication",
|
|
133
|
+
}),
|
|
134
|
+
public: core_1.Flags.boolean({
|
|
135
|
+
char: "p",
|
|
136
|
+
description: "Make dataset public (set all algorithms as trusted)",
|
|
137
|
+
}),
|
|
138
|
+
network: core_1.Flags.string({
|
|
139
|
+
char: "n",
|
|
140
|
+
description: "Network to use (env: NETWORK)",
|
|
141
|
+
options: Object.keys(config_1.NETWORK_CONFIGS),
|
|
142
|
+
}),
|
|
52
143
|
};
|
|
53
144
|
exports.default = EditTrustedAlgos;
|
|
145
|
+
async function askForDatasets(loginInfos, chainId) {
|
|
146
|
+
console.log("\nPlease select the filters to find the datasets you want to edit:");
|
|
147
|
+
return (0, asset_1.PromptForAssets)({
|
|
148
|
+
assetTypes: ["dataset"],
|
|
149
|
+
accessTypes: ["compute"],
|
|
150
|
+
chainIds: [chainId],
|
|
151
|
+
ownerChoices: loginInfos.map((info) => ({
|
|
152
|
+
name: info.ownerName,
|
|
153
|
+
value: info.ownerAddress,
|
|
154
|
+
})),
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
async function askForAlgorithms(loginInfos, chainId) {
|
|
158
|
+
console.log("\nPlease select the filters to find the algorithms you want to set as trusted:");
|
|
159
|
+
return (0, asset_1.PromptForAssets)({
|
|
160
|
+
assetTypes: ["algorithm"],
|
|
161
|
+
accessTypes: ["compute"],
|
|
162
|
+
chainIds: [chainId],
|
|
163
|
+
ownerChoices: loginInfos.map((info) => ({
|
|
164
|
+
name: info.ownerName,
|
|
165
|
+
value: info.ownerAddress,
|
|
166
|
+
})),
|
|
167
|
+
});
|
|
168
|
+
}
|
|
54
169
|
//# sourceMappingURL=edit-trusted-algos.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit-trusted-algos.js","sourceRoot":"","sources":["../../src/commands/edit-trusted-algos.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"edit-trusted-algos.js","sourceRoot":"","sources":["../../src/commands/edit-trusted-algos.ts"],"names":[],"mappings":";;;;;AAAA,iDAAkE;AAClE,sCAA6C;AAC7C,kDAA0B;AAC1B,kEAAyC;AACzC,qCAAyD;AACzD,6CAIwB;AACxB,yCAAgD;AAChD,mDAAgD;AAChD,yCAOuB;AAEvB,MAAqB,gBAAiB,SAAQ,cAAO;IAoCnD,KAAK,CAAC,GAAG;;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAErD,aAAa;QACb,IAAI,KAAK,CAAC,MAAM,KAAI,MAAA,KAAK,CAAC,KAAK,0CAAE,MAAM,CAAA,EAAE,CAAC;YACxC,IAAI,CAAC,KAAK,CACR,mFAAmF,CACpF,CAAC;QACJ,CAAC;QAED,oBAAoB;QACpB,MAAM,OAAO,GACV,KAAK,CAAC,OAAmB,IAAI,IAAA,qBAAa,GAAE,IAAI,CAAC,MAAM,IAAA,qBAAa,GAAE,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,wBAAe,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;QAEjD,2BAA2B;QAC3B,MAAM,UAAU,GAAG,MAAM,IAAA,qBAAa,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAA,uBAAe,EAAC,UAAU,CAAC,CAAC;QAE5B,qBAAqB;QACrB,MAAM,MAAM,GAAgB,KAAK,CAAC,IAAI;YACpC,CAAC,CAAC,MAAM,IAAA,4BAAiB,EAAC,KAAK,CAAC,IAAI,CAAC;YACrC,CAAC,CAAC,MAAM,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAE9C,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;YACtD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,SAAS,GAAG,MAAM,IAAA,uBAAY,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAClD,OAAO,CAAC,GAAG,CACT,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,eAAK,CAAC,MAAM,CACtF,SAAS,CACV,MAAM,eAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CACnC,CAAC;YACJ,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,MAAM,UAAU,GAAgB,KAAK,CAAC,UAAU;YAC9C,CAAC,CAAC,MAAM,IAAA,4BAAiB,EAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;YACjD,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;gBACb,CAAC,CAAC,MAAM,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC;gBAC7C,CAAC,CAAC,EAAE,CAAC;QAET,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CACT,sEAAsE,CACvE,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CACT,uFAAuF,CACxF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBAChB,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;oBAClE,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;wBAC9B,MAAM,SAAS,GAAG,MAAM,IAAA,uBAAY,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAEjD,OAAO,CAAC,GAAG,CACT,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,eAAK,CAAC,MAAM,CACpF,SAAS,CACV,MAAM,eAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClC,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,IACE,CAAC,KAAK,CAAC,GAAG;YACV,CAAC,uBAAY,CAAC,aAAa,CACzB,yFAAyF,CAC1F,EACD,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QAED,oDAAoD;QACpD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CACT,wCAAwC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAClG,CAAC;YACF,IAAI,CAAC;gBACH,iCAAiC;gBACjC,MAAM,YAAY,GAAG;oBACnB,OAAO,EAAE,OAAO;oBAChB,WAAW,EAAE,IAAA,6BAAqB,EAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC;iBAC5D,CAAC;gBACF,MAAM,UAAU,GAAG,MAAM,uBAAU,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBAC1D,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAC9D,KAAK,CAAC,GAAG,CACV,CAAC;gBACF,MAAM,YAAY,GAAG,IAAI,uBAAY,CAAC,aAAa,CAAC,CAAC;gBACrD,MAAM,cAAc,GAAG,IAAI,yBAAc,CAAC;oBACxC,aAAa;oBACb,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;iBACxC,CAAC,CAAC;gBAEH,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBACjB,SAAS;oBACT,cAAc,CAAC,uBAAuB,EAAE,CAAC;gBAC3C,CAAC;qBAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjC,sCAAsC;oBACtC,cAAc,CAAC,yBAAyB,EAAE,CAAC;oBAC3C,cAAc,CAAC,oBAAoB,CACjC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAe,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CACzD,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,UAAU;oBACV,cAAc,CAAC,yBAAyB,EAAE,CAAC;gBAC7C,CAAC;gBAED,gBAAgB;gBAChB,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;gBACvC,MAAM,aAAa,GAAG,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;gBAC/D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAE7D,IAAI,CAAC,GAAG,CACN,+CAA+C,UAAU,CAAC,aAAa,CAAC,WAAW,OAAO,MAAM,CAAC,oBAAoB,CAAC,eAAe,IAAI,CAC1I,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;;AAlKM,4BAAW,GAAG,uCAAuC,CAAC;AACtD,yBAAQ,GAAsB;IACnC,+GAA+G;CAChH,CAAC;AACK,sBAAK,GAAG;IACb,QAAQ,EAAE,YAAK,CAAC,MAAM,CAAC;QACrB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,2BAA2B;QACxC,QAAQ,EAAE,IAAI;KACf,CAAC;IACF,UAAU,EAAE,YAAK,CAAC,MAAM,CAAC;QACvB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,qCAAqC;QAClD,QAAQ,EAAE,IAAI;KACf,CAAC;IACF,GAAG,EAAE,YAAK,CAAC,OAAO,CAAC;QACjB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,0BAA0B;KACxC,CAAC;IACF,QAAQ,EAAE,YAAK,CAAC,MAAM,CAAC;QACrB,IAAI,EAAE,GAAG;QACT,WAAW,EACT,mEAAmE;KACtE,CAAC;IACF,MAAM,EAAE,YAAK,CAAC,OAAO,CAAC;QACpB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,qDAAqD;KACnE,CAAC;IACF,OAAO,EAAE,YAAK,CAAC,MAAM,CAAC;QACpB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,wBAAe,CAAC;KACtC,CAAC;CACH,CAAC;kBAlCiB,gBAAgB;AAsKrC,KAAK,UAAU,cAAc,CAC3B,UAAuB,EACvB,OAAe;IAEf,OAAO,CAAC,GAAG,CACT,oEAAoE,CACrE,CAAC;IACF,OAAO,IAAA,uBAAe,EAAC;QACrB,UAAU,EAAE,CAAC,SAAS,CAAC;QACvB,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,QAAQ,EAAE,CAAC,OAAO,CAAC;QACnB,YAAY,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,EAAE,IAAI,CAAC,SAAS;YACpB,KAAK,EAAE,IAAI,CAAC,YAAY;SACzB,CAAC,CAAC;KACJ,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,UAAuB,EACvB,OAAe;IAEf,OAAO,CAAC,GAAG,CACT,gFAAgF,CACjF,CAAC;IACF,OAAO,IAAA,uBAAe,EAAC;QACrB,UAAU,EAAE,CAAC,WAAW,CAAC;QACzB,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,QAAQ,EAAE,CAAC,OAAO,CAAC;QACnB,YAAY,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,EAAE,IAAI,CAAC,SAAS;YACpB,KAAK,EAAE,IAAI,CAAC,YAAY;SACzB,CAAC,CAAC;KACJ,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Command } from "@oclif/core";
|
|
2
|
+
export default class EditTrustedPublishers extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: Command.Example[];
|
|
5
|
+
static flags: {
|
|
6
|
+
datasets: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
7
|
+
publishers: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
8
|
+
yes: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
manifest: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
10
|
+
network: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const nautilus_1 = require("@deltadao/nautilus");
|
|
7
|
+
const core_1 = require("@oclif/core");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const readline_sync_1 = __importDefault(require("readline-sync"));
|
|
10
|
+
const config_1 = require("../config");
|
|
11
|
+
const aquarius_1 = require("../lib/aquarius");
|
|
12
|
+
const account_1 = require("../utils/account");
|
|
13
|
+
const asset_1 = require("../utils/asset");
|
|
14
|
+
const connection_1 = require("../utils/connection");
|
|
15
|
+
const login_1 = require("../utils/login");
|
|
16
|
+
class EditTrustedPublishers extends core_1.Command {
|
|
17
|
+
async run() {
|
|
18
|
+
const { flags } = await this.parse(EditTrustedPublishers);
|
|
19
|
+
// Network selection
|
|
20
|
+
const network = flags.network || (0, login_1.getEnvNetwork)() || (await (0, login_1.askForNetwork)());
|
|
21
|
+
console.log(`${chalk_1.default.green("Using network:")} ${network}\n`);
|
|
22
|
+
const chainId = config_1.NETWORK_CONFIGS[network].chainId;
|
|
23
|
+
// Authentication selection
|
|
24
|
+
const loginInfos = await (0, login_1.getLoginInfos)(flags.manifest);
|
|
25
|
+
(0, login_1.printLoginInfos)(loginInfos);
|
|
26
|
+
// Datasets selection
|
|
27
|
+
const assets = flags.dids
|
|
28
|
+
? await (0, aquarius_1.getAssetsFromDids)(flags.dids)
|
|
29
|
+
: await askForDatasets(loginInfos, chainId);
|
|
30
|
+
if (flags.dids) {
|
|
31
|
+
console.log("\nThe following assets will be edited:");
|
|
32
|
+
for (const asset of assets) {
|
|
33
|
+
const ownerName = await (0, aquarius_1.getOwnerName)(asset.owner);
|
|
34
|
+
console.log(`${chalk_1.default.blue(asset.did)} | ${chalk_1.default.green(asset.created.split("T")[0])} | ${chalk_1.default.yellow(ownerName)} | ${chalk_1.default.magenta(asset.name)}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// Publishers selection
|
|
38
|
+
const publishers = flags.publishers
|
|
39
|
+
? await (0, aquarius_1.getAddressesNames)(flags.publishers || [])
|
|
40
|
+
: !flags.public
|
|
41
|
+
? await askForPublishers()
|
|
42
|
+
: [];
|
|
43
|
+
if (flags.publishers) {
|
|
44
|
+
console.log("\nThe following publishers will be set as trusted:");
|
|
45
|
+
for (const publisher of publishers) {
|
|
46
|
+
console.log(`${chalk_1.default.blue(publisher.address)} (${chalk_1.default.magenta(publisher.name)})`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Confirmation prompt
|
|
50
|
+
if (!flags.yes &&
|
|
51
|
+
!readline_sync_1.default.keyInYNStrict("\nDo you want to proceed with editing the trusted publishers for the selected datasets?")) {
|
|
52
|
+
console.log("Operation cancelled by the user.");
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
// Edit trusted publishers for each selected dataset
|
|
56
|
+
for (const asset of assets) {
|
|
57
|
+
console.log(`Editing trusted publishers for asset ${chalk_1.default.gray(asset.did)} (${chalk_1.default.magenta(asset.name)})...`);
|
|
58
|
+
try {
|
|
59
|
+
// Create connection and builders
|
|
60
|
+
const envOverrides = {
|
|
61
|
+
NETWORK: network,
|
|
62
|
+
PRIVATE_KEY: (0, login_1.getPrivateKeyForOwner)(loginInfos, asset.owner),
|
|
63
|
+
};
|
|
64
|
+
const connection = await connection_1.Connection.connect(envOverrides);
|
|
65
|
+
const aquariusAsset = await connection.nautilus.getAquariusAsset(asset.did);
|
|
66
|
+
const assetBuilder = new nautilus_1.AssetBuilder(aquariusAsset);
|
|
67
|
+
const serviceBuilder = new nautilus_1.ServiceBuilder({
|
|
68
|
+
aquariusAsset,
|
|
69
|
+
serviceId: aquariusAsset.services[0].id,
|
|
70
|
+
});
|
|
71
|
+
for (const publisher of publishers) {
|
|
72
|
+
serviceBuilder.addTrustedAlgorithmPublisher(publisher.address);
|
|
73
|
+
}
|
|
74
|
+
// Apply changes
|
|
75
|
+
const service = serviceBuilder.build();
|
|
76
|
+
const nautilusAsset = assetBuilder.addService(service).build();
|
|
77
|
+
const result = await connection.nautilus.edit(nautilusAsset);
|
|
78
|
+
this.log(`Edited the trusted publishers, transaction: ${connection.networkConfig.explorerUri}/tx/${result.setMetadataTxReceipt.transactionHash}\n`);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
this.error(`Error editing trusted publishers: ${error}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
EditTrustedPublishers.description = "Overwrite datasets trusted publishers";
|
|
87
|
+
EditTrustedPublishers.examples = [
|
|
88
|
+
"<%= config.bin %> <%= command.id %> -d <datasetDid1> <datasetDid2> ... -p <publisherDid1> <publisherDid2> ...",
|
|
89
|
+
];
|
|
90
|
+
EditTrustedPublishers.flags = {
|
|
91
|
+
datasets: core_1.Flags.string({
|
|
92
|
+
char: "d",
|
|
93
|
+
description: "Dataset DIDs (did:op:...)",
|
|
94
|
+
multiple: true,
|
|
95
|
+
}),
|
|
96
|
+
publishers: core_1.Flags.string({
|
|
97
|
+
char: "p",
|
|
98
|
+
description: "Trusted publisher DIDs (did:op:...)",
|
|
99
|
+
multiple: true,
|
|
100
|
+
}),
|
|
101
|
+
yes: core_1.Flags.boolean({
|
|
102
|
+
char: "y",
|
|
103
|
+
description: "Skip confirmation prompt",
|
|
104
|
+
}),
|
|
105
|
+
manifest: core_1.Flags.string({
|
|
106
|
+
char: "m",
|
|
107
|
+
description: "Path to manifest file with the accounts to use for authentication",
|
|
108
|
+
}),
|
|
109
|
+
network: core_1.Flags.string({
|
|
110
|
+
char: "n",
|
|
111
|
+
description: "Network to use (env: NETWORK)",
|
|
112
|
+
options: Object.keys(config_1.NETWORK_CONFIGS),
|
|
113
|
+
}),
|
|
114
|
+
};
|
|
115
|
+
exports.default = EditTrustedPublishers;
|
|
116
|
+
async function askForDatasets(loginInfos, chainId) {
|
|
117
|
+
console.log("\nPlease select the filters to find the datasets you want to edit:");
|
|
118
|
+
return (0, asset_1.PromptForAssets)({
|
|
119
|
+
assetTypes: ["dataset"],
|
|
120
|
+
accessTypes: ["compute"],
|
|
121
|
+
chainIds: [chainId],
|
|
122
|
+
ownerChoices: loginInfos.map((info) => ({
|
|
123
|
+
name: info.ownerName,
|
|
124
|
+
value: info.ownerAddress,
|
|
125
|
+
})),
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
async function askForPublishers() {
|
|
129
|
+
console.log("\nPlease select the publishers you want to set as trusted:");
|
|
130
|
+
return (0, account_1.PromptForPublishers)();
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=edit-trusted-publishers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-trusted-publishers.js","sourceRoot":"","sources":["../../src/commands/edit-trusted-publishers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Command } from
|
|
1
|
+
import { Command } from "@oclif/core";
|
|
2
2
|
export default class ExportPrivateKey extends Command {
|
|
3
3
|
static description: string;
|
|
4
4
|
static examples: Command.Example[];
|
|
5
5
|
static flags: {
|
|
6
|
+
filepath: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
6
7
|
password: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
7
8
|
privateKey: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
8
|
-
filepath: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
9
9
|
};
|
|
10
10
|
run(): Promise<void>;
|
|
11
11
|
}
|
|
@@ -3,38 +3,38 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
6
8
|
const core_1 = require("@oclif/core");
|
|
7
9
|
const ethereumjs_wallet_1 = __importDefault(require("ethereumjs-wallet"));
|
|
8
|
-
const node_fs_1 = __importDefault(require("node:fs"));
|
|
9
10
|
const readline_sync_1 = __importDefault(require("readline-sync"));
|
|
10
|
-
const crypto_1 = __importDefault(require("crypto"));
|
|
11
11
|
class ExportPrivateKey extends core_1.Command {
|
|
12
12
|
async run() {
|
|
13
|
-
var _a, _b;
|
|
13
|
+
var _a, _b, _c;
|
|
14
14
|
const { flags } = await this.parse(ExportPrivateKey);
|
|
15
|
-
if (flags.privateKey
|
|
15
|
+
if ((_a = flags.privateKey) === null || _a === void 0 ? void 0 : _a.startsWith("0x")) {
|
|
16
16
|
flags.privateKey = flags.privateKey.slice(2);
|
|
17
17
|
}
|
|
18
|
-
const pk = (
|
|
19
|
-
|
|
18
|
+
const pk = (_b = flags.privateKey) !== null && _b !== void 0 ? _b : readline_sync_1.default.question("\nExporting your private key as a JSON file... \n" +
|
|
19
|
+
"First, get a copy of your private key from Metamask.\n" +
|
|
20
20
|
'\t 1.) On the upper right menu, select "Account details", then "Show private key". \n' +
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const pkBuffer = Buffer.from(pk,
|
|
21
|
+
"\t 2.) After providing your MetaMask password and revealing, click the button to copy it. \n" +
|
|
22
|
+
"\t 3.) Then, please, paste your private key here: ", { hideEchoBack: true });
|
|
23
|
+
const pkBuffer = Buffer.from(pk, "hex");
|
|
24
24
|
const account = ethereumjs_wallet_1.default.fromPrivateKey(pkBuffer);
|
|
25
|
-
const password = (
|
|
25
|
+
const password = (_c = flags.password) !== null && _c !== void 0 ? _c : readline_sync_1.default.question("Finally, to securely store your private key, please, enter a password to encrypt it: ", {
|
|
26
26
|
hideEchoBack: true,
|
|
27
27
|
});
|
|
28
|
-
const address = account.getAddress().toString(
|
|
28
|
+
const address = account.getAddress().toString("hex");
|
|
29
29
|
console.log(`Generating encrypted file to store your private key, which corresponds to you account ${address}`);
|
|
30
30
|
account
|
|
31
31
|
.toV3(password, {
|
|
32
|
-
kdf: 'scrypt',
|
|
33
|
-
n: 1 << 14, // cost factor (default is 2**18)
|
|
34
|
-
r: 8,
|
|
35
|
-
p: 1,
|
|
36
32
|
dklen: 32,
|
|
37
|
-
|
|
33
|
+
kdf: "scrypt",
|
|
34
|
+
n: 2 ** 14, // cost factor (default is 2**18)
|
|
35
|
+
p: 1,
|
|
36
|
+
r: 8,
|
|
37
|
+
salt: node_crypto_1.default.randomBytes(32),
|
|
38
38
|
})
|
|
39
39
|
.then((value) => {
|
|
40
40
|
var _a;
|
|
@@ -44,22 +44,22 @@ class ExportPrivateKey extends core_1.Command {
|
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
ExportPrivateKey.description =
|
|
48
|
-
ExportPrivateKey.examples = [
|
|
47
|
+
ExportPrivateKey.description = "Export your private key as a JSON file, to use later with the login command or for Pontus-X portals automation";
|
|
48
|
+
ExportPrivateKey.examples = ["<%= config.bin %> <%= command.id %>"];
|
|
49
49
|
ExportPrivateKey.flags = {
|
|
50
|
-
|
|
51
|
-
char:
|
|
52
|
-
description:
|
|
50
|
+
filepath: core_1.Flags.string({
|
|
51
|
+
char: "f",
|
|
52
|
+
description: "File path to save the encrypted private key (default is <address>.json)",
|
|
53
53
|
required: false,
|
|
54
54
|
}),
|
|
55
|
-
|
|
56
|
-
char:
|
|
57
|
-
description:
|
|
55
|
+
password: core_1.Flags.string({
|
|
56
|
+
char: "p",
|
|
57
|
+
description: "Password to encrypt the private key file",
|
|
58
58
|
required: false,
|
|
59
59
|
}),
|
|
60
|
-
|
|
61
|
-
char:
|
|
62
|
-
description:
|
|
60
|
+
privateKey: core_1.Flags.string({
|
|
61
|
+
char: "k",
|
|
62
|
+
description: "Your private key",
|
|
63
63
|
required: false,
|
|
64
64
|
}),
|
|
65
65
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export-private-key.js","sourceRoot":"","sources":["../../src/commands/export-private-key.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"export-private-key.js","sourceRoot":"","sources":["../../src/commands/export-private-key.ts"],"names":[],"mappings":";;;;;AAAA,8DAAiC;AACjC,sDAAyB;AACzB,sCAA6C;AAC7C,0EAAuC;AACvC,kEAAyC;AAEzC,MAAqB,gBAAiB,SAAQ,cAAO;IAuBnD,KAAK,CAAC,GAAG;;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAErD,IAAI,MAAA,KAAK,CAAC,UAAU,0CAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,EAAE,GACN,MAAA,KAAK,CAAC,UAAU,mCAChB,uBAAY,CAAC,QAAQ,CACnB,mDAAmD;YACjD,wDAAwD;YACxD,uFAAuF;YACvF,8FAA8F;YAC9F,oDAAoD,EACtD,EAAE,YAAY,EAAE,IAAI,EAAE,CACvB,CAAC;QAEJ,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,2BAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAEhD,MAAM,QAAQ,GACZ,MAAA,KAAK,CAAC,QAAQ,mCACd,uBAAY,CAAC,QAAQ,CACnB,uFAAuF,EACvF;YACE,YAAY,EAAE,IAAI;SACnB,CACF,CAAC;QAEJ,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CACT,yFAAyF,OAAO,EAAE,CACnG,CAAC;QAEF,OAAO;aACJ,IAAI,CAAC,QAAQ,EAAE;YACd,KAAK,EAAE,EAAE;YACT,GAAG,EAAE,QAAQ;YACb,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,iCAAiC;YAC7C,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,IAAI,EAAE,qBAAM,CAAC,WAAW,CAAC,EAAE,CAAC;SAC7B,CAAC;aACD,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;;YACd,MAAM,IAAI,GAAG,MAAA,KAAK,CAAC,QAAQ,mCAAI,GAAG,OAAO,OAAO,CAAC;YACjD,iBAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,gDAAgD,IAAI,IAAI,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACP,CAAC;;AAvEM,4BAAW,GAChB,gHAAgH,CAAC;AAC5G,yBAAQ,GAAsB,CAAC,qCAAqC,CAAC,CAAC;AACtE,sBAAK,GAAG;IACb,QAAQ,EAAE,YAAK,CAAC,MAAM,CAAC;QACrB,IAAI,EAAE,GAAG;QACT,WAAW,EACT,yEAAyE;QAC3E,QAAQ,EAAE,KAAK;KAChB,CAAC;IACF,QAAQ,EAAE,YAAK,CAAC,MAAM,CAAC;QACrB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,0CAA0C;QACvD,QAAQ,EAAE,KAAK;KAChB,CAAC;IACF,UAAU,EAAE,YAAK,CAAC,MAAM,CAAC;QACvB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,kBAAkB;QAC/B,QAAQ,EAAE,KAAK;KAChB,CAAC;CACH,CAAC;kBArBiB,gBAAgB"}
|
|
@@ -27,31 +27,31 @@ class GenerateAssetCredentials extends core_1.Command {
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
GenerateAssetCredentials.args = {
|
|
30
|
-
did: core_1.Args.string({ description:
|
|
30
|
+
did: core_1.Args.string({ description: "DID of the asset", required: true }),
|
|
31
31
|
};
|
|
32
|
-
GenerateAssetCredentials.description =
|
|
32
|
+
GenerateAssetCredentials.description = "Generate the Gaia-X credentials for the input DID asset, including its verifiable presentation";
|
|
33
33
|
GenerateAssetCredentials.examples = [
|
|
34
|
-
|
|
34
|
+
"<%= config.bin %> <%= command.id %> -p ./CEP.data.json -d ./did.json -c certificate.key did:op:01f8bc1e797a854dc718bd7a802acb07c5fc39f706b03dd454bceb66be6828c6",
|
|
35
35
|
];
|
|
36
36
|
GenerateAssetCredentials.flags = {
|
|
37
37
|
certificate: core_1.Flags.string({
|
|
38
|
-
char:
|
|
39
|
-
description:
|
|
38
|
+
char: "c",
|
|
39
|
+
description: "Path to the certificate.key file",
|
|
40
40
|
required: true,
|
|
41
41
|
}),
|
|
42
42
|
didjson: core_1.Flags.string({
|
|
43
|
-
char:
|
|
44
|
-
description:
|
|
43
|
+
char: "d",
|
|
44
|
+
description: "Path to the did.json file",
|
|
45
45
|
required: true,
|
|
46
46
|
}),
|
|
47
47
|
participant: core_1.Flags.string({
|
|
48
|
-
char:
|
|
49
|
-
description:
|
|
48
|
+
char: "p",
|
|
49
|
+
description: "Path to the JSON file including the required participant data",
|
|
50
50
|
required: true,
|
|
51
51
|
}),
|
|
52
52
|
password: core_1.Flags.string({
|
|
53
|
-
char:
|
|
54
|
-
description:
|
|
53
|
+
char: "w",
|
|
54
|
+
description: "Password for the private key file (if not provided, it will be asked interactively)",
|
|
55
55
|
required: false,
|
|
56
56
|
}),
|
|
57
57
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-asset-credentials.js","sourceRoot":"","sources":["../../src/commands/generate-asset-credentials.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"generate-asset-credentials.js","sourceRoot":"","sources":["../../src/commands/generate-asset-credentials.ts"],"names":[],"mappings":";;;;;AAAA,sCAAmD;AACnD,kEAAyC;AAEzC,uFAAmF;AACnF,mDAAgD;AAEhD,MAAqB,wBAAyB,SAAQ,cAAO;IAkC3D,KAAK,CAAC,GAAG;;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACnE,IAAI,CAAC,GAAG,CAAC,sCAAsC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3D,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,uBAAU,CAAC,OAAO,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,GAAG,CACN,SAAS,IAAI,CAAC,GAAG,mBAAmB,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CACtE,CAAC;QACF,IAAI,CAAC;YACH,MAAM,QAAQ,GACZ,MAAA,KAAK,CAAC,QAAQ,mCACd,uBAAY,CAAC,QAAQ,CACnB,gDAAgD,KAAK,CAAC,WAAW,IAAI,EACrE;gBACE,YAAY,EAAE,IAAI;aACnB,CACF,CAAC;YACJ,MAAM,IAAA,0CAAmB,EACvB,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,WAAW,EACjB,QAAQ,EACR,GAAG,CACJ,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;;AA5DM,6BAAI,GAAG;IACZ,GAAG,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CACtE,CAAC;AACK,oCAAW,GAChB,gGAAgG,CAAC;AAC5F,iCAAQ,GAAsB;IACnC,iKAAiK;CAClK,CAAC;AACK,8BAAK,GAAG;IACb,WAAW,EAAE,YAAK,CAAC,MAAM,CAAC;QACxB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,kCAAkC;QAC/C,QAAQ,EAAE,IAAI;KACf,CAAC;IACF,OAAO,EAAE,YAAK,CAAC,MAAM,CAAC;QACpB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,2BAA2B;QACxC,QAAQ,EAAE,IAAI;KACf,CAAC;IACF,WAAW,EAAE,YAAK,CAAC,MAAM,CAAC;QACxB,IAAI,EAAE,GAAG;QACT,WAAW,EACT,+DAA+D;QACjE,QAAQ,EAAE,IAAI;KACf,CAAC;IACF,QAAQ,EAAE,YAAK,CAAC,MAAM,CAAC;QACrB,IAAI,EAAE,GAAG;QACT,WAAW,EACT,qFAAqF;QACvF,QAAQ,EAAE,KAAK;KAChB,CAAC;CACH,CAAC;kBAhCiB,wBAAwB"}
|