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.
Files changed (119) hide show
  1. package/README.md +144 -53
  2. package/bin/dev.js +5 -5
  3. package/bin/run.js +4 -5
  4. package/dist/commands/access.d.ts +1 -1
  5. package/dist/commands/access.js +3 -3
  6. package/dist/commands/access.js.map +1 -1
  7. package/dist/commands/change-price.d.ts +3 -3
  8. package/dist/commands/change-price.js +12 -11
  9. package/dist/commands/change-price.js.map +1 -1
  10. package/dist/commands/check-participant-compliance.d.ts +1 -1
  11. package/dist/commands/check-participant-compliance.js +13 -11
  12. package/dist/commands/check-participant-compliance.js.map +1 -1
  13. package/dist/commands/compute-results.d.ts +1 -1
  14. package/dist/commands/compute-results.js +7 -7
  15. package/dist/commands/compute-results.js.map +1 -1
  16. package/dist/commands/compute-status.d.ts +1 -1
  17. package/dist/commands/compute-status.js +7 -7
  18. package/dist/commands/compute-status.js.map +1 -1
  19. package/dist/commands/compute.d.ts +7 -5
  20. package/dist/commands/compute.js +136 -36
  21. package/dist/commands/compute.js.map +1 -1
  22. package/dist/commands/edit-additional-metadata.d.ts +3 -3
  23. package/dist/commands/edit-additional-metadata.js +18 -11
  24. package/dist/commands/edit-additional-metadata.js.map +1 -1
  25. package/dist/commands/edit-algo.d.ts +3 -3
  26. package/dist/commands/edit-algo.js +22 -13
  27. package/dist/commands/edit-algo.js.map +1 -1
  28. package/dist/commands/edit-asset-url.d.ts +3 -3
  29. package/dist/commands/edit-asset-url.js +12 -11
  30. package/dist/commands/edit-asset-url.js.map +1 -1
  31. package/dist/commands/edit-trusted-algos.d.ts +6 -5
  32. package/dist/commands/edit-trusted-algos.js +136 -21
  33. package/dist/commands/edit-trusted-algos.js.map +1 -1
  34. package/dist/commands/edit-trusted-publishers.d.ts +13 -0
  35. package/dist/commands/edit-trusted-publishers.js +132 -0
  36. package/dist/commands/edit-trusted-publishers.js.map +1 -0
  37. package/dist/commands/export-private-key.d.ts +2 -2
  38. package/dist/commands/export-private-key.js +27 -27
  39. package/dist/commands/export-private-key.js.map +1 -1
  40. package/dist/commands/generate-asset-credentials.d.ts +1 -1
  41. package/dist/commands/generate-asset-credentials.js +11 -11
  42. package/dist/commands/generate-asset-credentials.js.map +1 -1
  43. package/dist/commands/generate-did-web.d.ts +1 -1
  44. package/dist/commands/generate-did-web.js +11 -11
  45. package/dist/commands/generate-did-web.js.map +1 -1
  46. package/dist/commands/generate-participant-credentials.d.ts +1 -1
  47. package/dist/commands/generate-participant-credentials.js +10 -10
  48. package/dist/commands/generate-participant-credentials.js.map +1 -1
  49. package/dist/commands/get.d.ts +1 -1
  50. package/dist/commands/get.js +3 -3
  51. package/dist/commands/get.js.map +1 -1
  52. package/dist/commands/login.d.ts +2 -2
  53. package/dist/commands/login.js +16 -13
  54. package/dist/commands/login.js.map +1 -1
  55. package/dist/commands/logout.d.ts +1 -1
  56. package/dist/commands/logout.js +7 -7
  57. package/dist/commands/logout.js.map +1 -1
  58. package/dist/commands/publish.d.ts +5 -3
  59. package/dist/commands/publish.js +111 -43
  60. package/dist/commands/publish.js.map +1 -1
  61. package/dist/commands/render.d.ts +12 -0
  62. package/dist/commands/render.js +130 -0
  63. package/dist/commands/render.js.map +1 -0
  64. package/dist/commands/revoke.d.ts +7 -6
  65. package/dist/commands/revoke.js +92 -23
  66. package/dist/commands/revoke.js.map +1 -1
  67. package/dist/commands/self-description.d.ts +3 -3
  68. package/dist/commands/self-description.js +13 -8
  69. package/dist/commands/self-description.js.map +1 -1
  70. package/dist/config.d.ts +16 -18
  71. package/dist/config.js +63 -62
  72. package/dist/config.js.map +1 -1
  73. package/dist/index.d.ts +1 -1
  74. package/dist/index.js.map +1 -1
  75. package/dist/lib/aquarius.d.ts +29 -0
  76. package/dist/lib/aquarius.js +212 -0
  77. package/dist/lib/aquarius.js.map +1 -0
  78. package/dist/lib/gaia-x_compliance/generate-credentials/index.js +26 -25
  79. package/dist/lib/gaia-x_compliance/generate-credentials/index.js.map +1 -1
  80. package/dist/lib/manifest.d.ts +5 -0
  81. package/dist/lib/manifest.js +33 -0
  82. package/dist/lib/manifest.js.map +1 -0
  83. package/dist/lib/spec.d.ts +12 -0
  84. package/dist/lib/spec.js +266 -0
  85. package/dist/lib/spec.js.map +1 -0
  86. package/dist/lib/wallet.d.ts +2 -0
  87. package/dist/lib/wallet.js +19 -0
  88. package/dist/lib/wallet.js.map +1 -0
  89. package/dist/lib/yaml.d.ts +2 -0
  90. package/dist/lib/yaml.js +53 -0
  91. package/dist/lib/yaml.js.map +1 -0
  92. package/dist/scripts/json-schema.d.ts +1 -0
  93. package/dist/scripts/json-schema.js +24 -0
  94. package/dist/scripts/json-schema.js.map +1 -0
  95. package/dist/types/manifest-schema.json +52 -0
  96. package/dist/types/manifest.d.ts +17 -0
  97. package/dist/types/manifest.js +14 -0
  98. package/dist/types/manifest.js.map +1 -0
  99. package/dist/types/schema.d.ts +1 -2
  100. package/dist/types/schema.js +3 -2
  101. package/dist/types/schema.js.map +1 -1
  102. package/dist/types/schema.json +24 -72
  103. package/dist/utils/account.d.ts +2 -0
  104. package/dist/utils/account.js +41 -0
  105. package/dist/utils/account.js.map +1 -0
  106. package/dist/utils/asset.d.ts +25 -0
  107. package/dist/utils/asset.js +108 -0
  108. package/dist/utils/asset.js.map +1 -0
  109. package/dist/utils/connection.d.ts +3 -3
  110. package/dist/utils/connection.js +2 -2
  111. package/dist/utils/connection.js.map +1 -1
  112. package/dist/utils/login.d.ts +14 -0
  113. package/dist/utils/login.js +99 -0
  114. package/dist/utils/login.js.map +1 -0
  115. package/oclif.manifest.json +250 -39
  116. package/package.json +22 -18
  117. package/dist/lib/publishFromFile.d.ts +0 -2
  118. package/dist/lib/publishFromFile.js +0 -143
  119. package/dist/lib/publishFromFile.js.map +0 -1
@@ -31,12 +31,7 @@
31
31
  },
32
32
  "type": {
33
33
  "description": "Field type.",
34
- "enum": [
35
- "text",
36
- "number",
37
- "boolean",
38
- "select"
39
- ],
34
+ "enum": ["text", "number", "boolean", "select"],
40
35
  "type": "string"
41
36
  }
42
37
  },
@@ -84,12 +79,7 @@
84
79
  },
85
80
  "type": {
86
81
  "description": "Field type.",
87
- "enum": [
88
- "text",
89
- "number",
90
- "boolean",
91
- "select"
92
- ],
82
+ "enum": ["text", "number", "boolean", "select"],
93
83
  "type": "string"
94
84
  }
95
85
  },
@@ -104,13 +94,7 @@
104
94
  "type": "object"
105
95
  },
106
96
  "FileTypes": {
107
- "enum": [
108
- "url",
109
- "graphql",
110
- "arweave",
111
- "ipfs",
112
- "smartcontract"
113
- ],
97
+ "enum": ["url", "graphql", "arweave", "ipfs", "smartcontract"],
114
98
  "type": "string"
115
99
  },
116
100
  "MetadataConfig": {
@@ -157,12 +141,7 @@
157
141
  "type": "string"
158
142
  }
159
143
  },
160
- "required": [
161
- "entrypoint",
162
- "image",
163
- "tag",
164
- "checksum"
165
- ],
144
+ "required": ["entrypoint", "image", "tag", "checksum"],
166
145
  "type": "object"
167
146
  },
168
147
  "language": {
@@ -178,13 +157,10 @@
178
157
  "type": "string"
179
158
  }
180
159
  },
181
- "required": [
182
- "container"
183
- ],
160
+ "required": ["container"],
184
161
  "type": "object"
185
162
  },
186
163
  "author": {
187
- "description": "Name of the entity generating this data (e.g. Tfl, Disney Corp, etc.).",
188
164
  "type": "string"
189
165
  },
190
166
  "categories": {
@@ -206,6 +182,9 @@
206
182
  "description": "Details of what the resource is.",
207
183
  "type": "string"
208
184
  },
185
+ "did": {
186
+ "type": "string"
187
+ },
209
188
  "license": {
210
189
  "description": "Short name referencing the license of the asset. If it’s not specified, the following value will be added: “No License Specified”.",
211
190
  "type": "string"
@@ -221,6 +200,12 @@
221
200
  "description": "Descriptive name or title of the asset.",
222
201
  "type": "string"
223
202
  },
203
+ "network": {
204
+ "type": "string"
205
+ },
206
+ "owner": {
207
+ "type": "string"
208
+ },
224
209
  "tags": {
225
210
  "description": "Array of keywords or tags used to describe this content. Empty by default.",
226
211
  "items": {
@@ -230,20 +215,11 @@
230
215
  },
231
216
  "type": {
232
217
  "description": "Asset type. Includes \"dataset\" (e.g. csv file), \"algorithm\" (e.g. Python script). Each type needs a different subset of metadata attributes.",
233
- "enum": [
234
- "dataset",
235
- "algorithm"
236
- ],
218
+ "enum": ["dataset", "algorithm"],
237
219
  "type": "string"
238
220
  }
239
221
  },
240
- "required": [
241
- "author",
242
- "description",
243
- "license",
244
- "name",
245
- "type"
246
- ],
222
+ "required": ["description", "license", "name", "type"],
247
223
  "type": "object"
248
224
  },
249
225
  "NftCreateDataWithoutOwner": {
@@ -323,10 +299,7 @@
323
299
  "type": "string"
324
300
  }
325
301
  },
326
- "required": [
327
- "name",
328
- "symbol"
329
- ],
302
+ "required": ["name", "symbol"],
330
303
  "type": "object"
331
304
  },
332
305
  "fileType": {
@@ -345,23 +318,15 @@
345
318
  "type": "number"
346
319
  },
347
320
  "currency": {
348
- "enum": [
349
- "OCEAN",
350
- "EUROe"
351
- ],
321
+ "enum": ["OCEAN", "EUROe", "EURAU"],
352
322
  "type": "string"
353
323
  },
354
324
  "type": {
355
- "enum": [
356
- "free",
357
- "fixed"
358
- ],
325
+ "enum": ["free", "fixed"],
359
326
  "type": "string"
360
327
  }
361
328
  },
362
- "required": [
363
- "type"
364
- ],
329
+ "required": ["type"],
365
330
  "type": "object"
366
331
  },
367
332
  "serviceEndpoint": {
@@ -401,21 +366,14 @@
401
366
  "type": "array"
402
367
  }
403
368
  },
404
- "required": [
405
- "metadata",
406
- "nftData",
407
- "service"
408
- ],
369
+ "required": ["metadata", "nftData", "service"],
409
370
  "type": "object"
410
371
  },
411
372
  "ServiceFileType": {
412
373
  "$ref": "#/definitions/UrlFile"
413
374
  },
414
375
  "ServiceTypes": {
415
- "enum": [
416
- "access",
417
- "compute"
418
- ],
376
+ "enum": ["access", "compute"],
419
377
  "type": "string"
420
378
  },
421
379
  "TrustedAlgorithmAsset": {
@@ -431,9 +389,7 @@
431
389
  "type": "array"
432
390
  }
433
391
  },
434
- "required": [
435
- "did"
436
- ],
392
+ "required": ["did"],
437
393
  "type": "object"
438
394
  },
439
395
  "UrlFile": {
@@ -463,11 +419,7 @@
463
419
  "type": "string"
464
420
  }
465
421
  },
466
- "required": [
467
- "type",
468
- "url",
469
- "method"
470
- ],
422
+ "required": ["type", "url", "method"],
471
423
  "type": "object"
472
424
  }
473
425
  }
@@ -0,0 +1,2 @@
1
+ import { type Publisher } from "../lib/aquarius";
2
+ export declare function PromptForPublishers(): Promise<Publisher[]>;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PromptForPublishers = PromptForPublishers;
4
+ const prompts_1 = require("@inquirer/prompts");
5
+ const aquarius_1 = require("../lib/aquarius");
6
+ async function PromptForPublishers() {
7
+ const knownAddresses = await (0, aquarius_1.getKnownAddresses)();
8
+ const publishers = [];
9
+ while (true) {
10
+ const publisher = await (0, prompts_1.search)({
11
+ message: "Search for a publisher by name or address (leave empty to finish):",
12
+ pageSize: 10,
13
+ source: async (input) => {
14
+ if (!input) {
15
+ return [{ name: "Finish selection", value: null }];
16
+ }
17
+ const choices = [];
18
+ for (const [address, name] of Object.entries(knownAddresses)) {
19
+ if (name.toLowerCase().includes(input.toLowerCase()) ||
20
+ address.toLowerCase().includes(input.toLowerCase())) {
21
+ choices.push({
22
+ name: `${name} (${address})`,
23
+ value: { name, address },
24
+ });
25
+ }
26
+ }
27
+ const userChoice = {
28
+ name: input,
29
+ value: { name: "", address: input },
30
+ };
31
+ return [...choices, userChoice];
32
+ },
33
+ });
34
+ if (!publisher || !publisher.address) {
35
+ break;
36
+ }
37
+ publishers.push(publisher);
38
+ }
39
+ return publishers;
40
+ }
41
+ //# sourceMappingURL=account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/utils/account.ts"],"names":[],"mappings":";;AAGA,kDA4CC;AA/CD,+CAA2C;AAC3C,6CAAmE;AAE5D,KAAK,UAAU,mBAAmB;IACvC,MAAM,cAAc,GAAG,MAAM,IAAA,4BAAiB,GAAE,CAAC;IAEjD,MAAM,UAAU,GAAG,EAAE,CAAC;IAEtB,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,MAAM,IAAA,gBAAM,EAAC;YAC7B,OAAO,EACL,oEAAoE;YACtE,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBACtB,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,OAAO,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrD,CAAC;gBAED,MAAM,OAAO,GAAG,EAAE,CAAC;gBAEnB,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;oBAC7D,IACE,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;wBAChD,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EACnD,CAAC;wBACD,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,GAAG,IAAI,KAAK,OAAO,GAAG;4BAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;yBACzB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAED,MAAM,UAAU,GAAG;oBACjB,IAAI,EAAE,KAAK;oBACX,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;iBACpC,CAAC;gBAEF,OAAO,CAAC,GAAG,OAAO,EAAE,UAAU,CAAC,CAAC;YAClC,CAAC;SACF,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACrC,MAAM;QACR,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { type AssetInfo } from "../lib/aquarius";
2
+ type Choice<Value> = {
3
+ value: Value;
4
+ name?: string;
5
+ checkedName?: string;
6
+ description?: string;
7
+ short?: string;
8
+ disabled?: boolean | string;
9
+ checked?: boolean;
10
+ type?: never;
11
+ };
12
+ interface PromptProps {
13
+ chainIds?: number[];
14
+ assetTypes?: string[];
15
+ accessTypes?: string[];
16
+ owners?: string[];
17
+ tagSets?: string[][];
18
+ networkChoices?: Choice<number>[];
19
+ assetTypeChoices?: Choice<string>[];
20
+ accessTypeChoices?: Choice<string>[];
21
+ ownerChoices?: Choice<string>[];
22
+ promptType?: "checkbox" | "select";
23
+ }
24
+ export declare function PromptForAssets({ chainIds, assetTypes, accessTypes, owners, tagSets, networkChoices, assetTypeChoices, accessTypeChoices, ownerChoices, promptType, }?: PromptProps): Promise<AssetInfo[]>;
25
+ export {};
@@ -0,0 +1,108 @@
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
+ exports.PromptForAssets = PromptForAssets;
7
+ const prompts_1 = require("@inquirer/prompts");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const aquarius_1 = require("../lib/aquarius");
10
+ const defaultChainIds = [
11
+ { name: "PONTUSXDEV", value: 32456 },
12
+ { name: "PONTUSXTEST", value: 32457 },
13
+ ];
14
+ const defaultAssetTypes = [
15
+ { name: "Dataset", value: "dataset" },
16
+ { name: "Algorithm", value: "algorithm" },
17
+ ];
18
+ const defaultAccessTypes = [
19
+ { name: "Download", value: "access" },
20
+ { name: "Compute", value: "compute" },
21
+ ];
22
+ async function PromptForAssets({ chainIds, assetTypes, accessTypes, owners, tagSets, networkChoices = defaultChainIds, assetTypeChoices = defaultAssetTypes, accessTypeChoices = defaultAccessTypes, ownerChoices = [], promptType = "checkbox", } = {}) {
23
+ const selectedChainIds = chainIds ||
24
+ (await (0, prompts_1.checkbox)({
25
+ message: "Select networks:",
26
+ choices: networkChoices,
27
+ }));
28
+ const selectedAssetTypes = assetTypes ||
29
+ (await (0, prompts_1.checkbox)({
30
+ message: "Select asset types:",
31
+ choices: assetTypeChoices,
32
+ }));
33
+ const selectedAccessTypes = accessTypes ||
34
+ (await (0, prompts_1.checkbox)({
35
+ message: "Select access types:",
36
+ choices: accessTypeChoices,
37
+ }));
38
+ const selectedOwners = owners || ownerChoices.length > 0
39
+ ? await (0, prompts_1.checkbox)({
40
+ message: "Select owners:",
41
+ choices: ownerChoices,
42
+ })
43
+ : undefined;
44
+ const selectedTagSets = tagSets ||
45
+ (await (async () => {
46
+ const tagSets = [];
47
+ while (true) {
48
+ const tagSet = await (0, prompts_1.input)({
49
+ message: "Enter a tag set (comma-separated), or leave blank to finish:",
50
+ });
51
+ if (!tagSet) {
52
+ break;
53
+ }
54
+ tagSets.push(tagSet.split(",").map((tag) => tag.trim()));
55
+ }
56
+ return tagSets;
57
+ })());
58
+ const assets = await (0, aquarius_1.searchAssets)({
59
+ chainIds: selectedChainIds,
60
+ assetTypes: selectedAssetTypes,
61
+ accessTypes: selectedAccessTypes,
62
+ tagSets: selectedTagSets,
63
+ owners: selectedOwners,
64
+ });
65
+ const sortedAssets = assets.sort((a, b) => b.created.localeCompare(a.created));
66
+ const assetChoices = [];
67
+ for (const [index, asset] of sortedAssets.entries()) {
68
+ const ownerName = await (0, aquarius_1.getOwnerName)(asset.owner);
69
+ assetChoices.push({
70
+ name: `${(index + 1).toString().padStart(2, "0")}. ${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)}`,
71
+ value: asset,
72
+ });
73
+ }
74
+ if (assetChoices.length === 0) {
75
+ console.log(chalk_1.default.red("No assets found matching the criteria."));
76
+ return [];
77
+ }
78
+ if (promptType === "checkbox") {
79
+ return await (0, prompts_1.checkbox)({
80
+ message: "Select assets to edit:",
81
+ choices: assetChoices,
82
+ loop: false,
83
+ pageSize: 10,
84
+ theme: {
85
+ style: {
86
+ answer: (text) => `\n ${text.split(",").join("\n")}\n`,
87
+ },
88
+ },
89
+ });
90
+ }
91
+ if (promptType === "select") {
92
+ return [
93
+ await (0, prompts_1.select)({
94
+ message: "Select an asset to edit:",
95
+ choices: assetChoices,
96
+ loop: false,
97
+ pageSize: 10,
98
+ theme: {
99
+ style: {
100
+ answer: (text) => `\n ${text}\n`,
101
+ },
102
+ },
103
+ }),
104
+ ];
105
+ }
106
+ return [];
107
+ }
108
+ //# sourceMappingURL=asset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset.js","sourceRoot":"","sources":["../../src/utils/asset.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { Nautilus } from '@deltadao/nautilus';
2
- import { Wallet } from 'ethers';
3
- import { FixedRatePricingConfigGenerator, NetworkConfig } from '../config';
1
+ import { Nautilus } from "@deltadao/nautilus";
2
+ import { Wallet } from "ethers";
3
+ import { type FixedRatePricingConfigGenerator, type NetworkConfig } from "../config";
4
4
  export declare class Connection {
5
5
  wallet: Wallet;
6
6
  nautilus: Nautilus;
@@ -14,11 +14,11 @@ class Connection {
14
14
  static async connect(envOverrides) {
15
15
  const env = Object.assign(Object.assign({}, process.env), envOverrides);
16
16
  if (!env.NETWORK) {
17
- throw new Error(`Set your network in the .env file. Supported networks are ${Object.values(config_1.Network).join(', ')}.`);
17
+ throw new Error(`Set your network in the .env file. Supported networks are ${Object.values(config_1.Network).join(", ")}.`);
18
18
  }
19
19
  const selectedEnvNetwork = env.NETWORK.toUpperCase();
20
20
  if (!(selectedEnvNetwork in config_1.Network)) {
21
- throw new Error(`Invalid network selection: ${selectedEnvNetwork}. Supported networks are ${Object.values(config_1.Network).join(', ')}.`);
21
+ throw new Error(`Invalid network selection: ${selectedEnvNetwork}. Supported networks are ${Object.values(config_1.Network).join(", ")}.`);
22
22
  }
23
23
  console.log(`Your selected network is ${config_1.Network[selectedEnvNetwork]}`);
24
24
  const networkConfig = config_1.NETWORK_CONFIGS[selectedEnvNetwork];
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/utils/connection.ts"],"names":[],"mappings":";;;AAAA,iDAA2C;AAC3C,mCAAwC;AAExC,sCAAmH;AAEnH,MAAa,UAAU;IACrB,YACS,MAAc,EACd,QAAkB,EAClB,aAA4B,EAC5B,aAA6D;QAH7D,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAU;QAClB,kBAAa,GAAb,aAAa,CAAe;QAC5B,kBAAa,GAAb,aAAa,CAAgD;IACnE,CAAC;IAEG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,YAAqC;QAC/D,MAAM,GAAG,mCAAO,OAAO,CAAC,GAAG,GAAK,YAAY,CAAC,CAAA;QAE7C,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,6DAA6D,MAAM,CAAC,MAAM,CAAC,gBAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACpH,CAAC;QAED,MAAM,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;QACpD,IAAI,CAAC,CAAC,kBAAkB,IAAI,gBAAO,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CACb,8BAA8B,kBAAkB,4BAA4B,MAAM,CAAC,MAAM,CAAC,gBAAO,CAAC,CAAC,IAAI,CACrG,IAAI,CACL,GAAG,CACL,CAAA;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,4BAA4B,gBAAO,CAAC,kBAA6B,CAAC,EAAE,CAAC,CAAA;QACjF,MAAM,aAAa,GAAG,wBAAe,CAAC,kBAA6B,CAAC,CAAA;QACpE,MAAM,aAAa,GAAG,wBAAe,CAAC,kBAA6B,CAAC,CAAA;QACpE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,2EAA2E;gBACzE,6CAA6C,CAChD,CAAA;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,kBAAS,CAAC,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QACrE,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;QACpD,MAAM,QAAQ,GAAG,MAAM,mBAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;QAC7D,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;QAC7C,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,CAAC,CAAA;IACvE,CAAC;CACF;AAxCD,gCAwCC"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/utils/connection.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAC9C,mCAA2C;AAE3C,sCAMmB;AAEnB,MAAa,UAAU;IACrB,YACS,MAAc,EACd,QAAkB,EAClB,aAA4B,EAC5B,aAA+D;QAH/D,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAU;QAClB,kBAAa,GAAb,aAAa,CAAe;QAC5B,kBAAa,GAAb,aAAa,CAAkD;IACrE,CAAC;IAEG,MAAM,CAAC,KAAK,CAAC,OAAO,CACzB,YAAqC;QAErC,MAAM,GAAG,mCAAQ,OAAO,CAAC,GAAG,GAAK,YAAY,CAAE,CAAC;QAEhD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,6DAA6D,MAAM,CAAC,MAAM,CAAC,gBAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAClG,CAAC;QACJ,CAAC;QAED,MAAM,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACrD,IAAI,CAAC,CAAC,kBAAkB,IAAI,gBAAO,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CACb,8BAA8B,kBAAkB,4BAA4B,MAAM,CAAC,MAAM,CACvF,gBAAO,CACR,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAChB,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,GAAG,CACT,4BAA4B,gBAAO,CAAC,kBAA6B,CAAC,EAAE,CACrE,CAAC;QACF,MAAM,aAAa,GAAG,wBAAe,CAAC,kBAA6B,CAAC,CAAC;QACrE,MAAM,aAAa,GAAG,wBAAe,CAAC,kBAA6B,CAAC,CAAC;QACrE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,2EAA2E;gBACzE,6CAA6C,CAChD,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,kBAAS,CAAC,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,MAAM,mBAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9C,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;IACxE,CAAC;CACF;AA9CD,gCA8CC"}
@@ -0,0 +1,14 @@
1
+ import { type Network } from "../config";
2
+ import type { Manifest } from "../types/manifest";
3
+ export interface LoginInfo {
4
+ privateKey: string;
5
+ ownerAddress: string;
6
+ ownerName: string;
7
+ }
8
+ export declare function getPrivateKeyForOwner(loginInfos: LoginInfo[], ownerAddress: string): string;
9
+ export declare function manifestToLoginInfos(manifest: Manifest): Promise<LoginInfo[]>;
10
+ export declare function getEnvLoginInfo(): Promise<LoginInfo>;
11
+ export declare function printLoginInfos(loginInfos: LoginInfo[]): void;
12
+ export declare function getLoginInfos(manifestPath?: string): Promise<LoginInfo[]>;
13
+ export declare function askForNetwork(): Promise<Network>;
14
+ export declare function getEnvNetwork(): Network | null;
@@ -0,0 +1,99 @@
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
+ exports.getPrivateKeyForOwner = getPrivateKeyForOwner;
7
+ exports.manifestToLoginInfos = manifestToLoginInfos;
8
+ exports.getEnvLoginInfo = getEnvLoginInfo;
9
+ exports.printLoginInfos = printLoginInfos;
10
+ exports.getLoginInfos = getLoginInfos;
11
+ exports.askForNetwork = askForNetwork;
12
+ exports.getEnvNetwork = getEnvNetwork;
13
+ const prompts_1 = require("@inquirer/prompts");
14
+ const chalk_1 = __importDefault(require("chalk"));
15
+ const config_1 = require("../config");
16
+ const aquarius_1 = require("../lib/aquarius");
17
+ const manifest_1 = require("../lib/manifest");
18
+ const wallet_1 = require("../lib/wallet");
19
+ function getPrivateKeyForOwner(loginInfos, ownerAddress) {
20
+ const address = ownerAddress.toLowerCase();
21
+ const loginInfo = loginInfos.find((info) => info.ownerAddress.toLowerCase() === address);
22
+ if (!loginInfo) {
23
+ throw new Error(`No login info found for address ${ownerAddress}`);
24
+ }
25
+ return loginInfo.privateKey;
26
+ }
27
+ async function manifestToLoginInfos(manifest) {
28
+ return Promise.all(manifest.accounts.map(async (account) => {
29
+ try {
30
+ const password = process.env[account.passwordEnvKey || ""] || "";
31
+ const privateKey = await (0, wallet_1.readPrivateKey)(account.privateKeyPath, password);
32
+ const ownerAddress = await (0, wallet_1.getOwnerAddress)(privateKey);
33
+ const ownerName = await (0, aquarius_1.getOwnerName)(ownerAddress);
34
+ return {
35
+ privateKey,
36
+ ownerAddress,
37
+ ownerName,
38
+ };
39
+ }
40
+ catch (err) {
41
+ throw new Error(`Failed processing account with keyPath=${account.privateKeyPath}: ${err instanceof Error ? err.message : String(err)}`);
42
+ }
43
+ }));
44
+ }
45
+ async function getEnvLoginInfo() {
46
+ const privateKey = process.env.PRIVATE_KEY || "";
47
+ if (privateKey === "") {
48
+ throw new Error(`You are not logged in. Please login using "pontus-x_cli login" or set the PRIVATE_KEY environment variable.`);
49
+ }
50
+ const ownerAddress = await (0, wallet_1.getOwnerAddress)(privateKey);
51
+ const ownerName = await (0, aquarius_1.getOwnerName)(ownerAddress);
52
+ return {
53
+ privateKey,
54
+ ownerAddress,
55
+ ownerName,
56
+ };
57
+ }
58
+ function printLoginInfos(loginInfos) {
59
+ loginInfos.forEach((loginInfo, index) => {
60
+ console.log(chalk_1.default.bold(`Account ${(index + 1).toString().padStart(2, "0")}: ${chalk_1.default.gray(loginInfo.ownerAddress)} ${chalk_1.default.magenta(loginInfo.ownerName)}`));
61
+ });
62
+ console.log();
63
+ }
64
+ async function getLoginInfos(manifestPath) {
65
+ let loginInfos = [];
66
+ if (manifestPath) {
67
+ console.log(chalk_1.default.green(`Using manifest file for authentication ${chalk_1.default.gray(`(path: ${manifestPath})\n`)}`));
68
+ const manifest = (0, manifest_1.readManifest)(manifestPath);
69
+ loginInfos = await manifestToLoginInfos(manifest);
70
+ }
71
+ else {
72
+ console.log(chalk_1.default.green(`Using environment variables for authentication ${chalk_1.default.gray("(env: PRIVATE_KEY)")}\n`));
73
+ loginInfos = [await getEnvLoginInfo()];
74
+ }
75
+ return loginInfos;
76
+ }
77
+ async function askForNetwork() {
78
+ const network = await (0, prompts_1.select)({
79
+ message: "Select network:",
80
+ choices: Object.keys(config_1.NETWORK_CONFIGS).map((network) => ({
81
+ name: network,
82
+ value: network,
83
+ })),
84
+ });
85
+ return network;
86
+ }
87
+ function getEnvNetwork() {
88
+ var _a;
89
+ const envNetwork = (_a = process.env.NETWORK) === null || _a === void 0 ? void 0 : _a.toUpperCase();
90
+ if (!envNetwork) {
91
+ return null;
92
+ }
93
+ const network = Object.keys(config_1.NETWORK_CONFIGS).find((network) => network === envNetwork);
94
+ if (!network) {
95
+ throw new Error(`Invalid NETWORK environment variable value "${envNetwork}". Please set it to one of: ${Object.keys(config_1.NETWORK_CONFIGS).join(", ")}`);
96
+ }
97
+ return network;
98
+ }
99
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/utils/login.ts"],"names":[],"mappings":"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"}