@ledgerhq/vault-cli 1.73.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +16 -2
- package/CHANGELOG.md +64 -0
- package/__mocks__/@ledgerhq/vault-common.ts +1 -0
- package/bin/index.js +5615 -15
- package/bin/index.js.map +1 -1
- package/bin/index.mjs +5621 -0
- package/bin/index.mjs.map +1 -0
- package/package.json +6 -7
- package/tsup.config.ts +10 -0
- package/bin/__patchGateOptionsWithEnvVariables.d.ts +0 -4
- package/bin/__patchGateOptionsWithEnvVariables.d.ts.map +0 -1
- package/bin/__patchGateOptionsWithEnvVariables.js +0 -38
- package/bin/__patchGateOptionsWithEnvVariables.js.map +0 -1
- package/bin/__tests__/apdu.test.d.ts +0 -2
- package/bin/__tests__/apdu.test.d.ts.map +0 -1
- package/bin/__tests__/apdu.test.js +0 -33
- package/bin/__tests__/apdu.test.js.map +0 -1
- package/bin/__tests__/approve.test.d.ts +0 -2
- package/bin/__tests__/approve.test.d.ts.map +0 -1
- package/bin/__tests__/approve.test.js +0 -159
- package/bin/__tests__/approve.test.js.map +0 -1
- package/bin/__tests__/backupCompartment.test.d.ts +0 -2
- package/bin/__tests__/backupCompartment.test.d.ts.map +0 -1
- package/bin/__tests__/backupCompartment.test.js +0 -88
- package/bin/__tests__/backupCompartment.test.js.map +0 -1
- package/bin/__tests__/bake.test.d.ts +0 -2
- package/bin/__tests__/bake.test.d.ts.map +0 -1
- package/bin/__tests__/bake.test.js +0 -175
- package/bin/__tests__/bake.test.js.map +0 -1
- package/bin/__tests__/cli.test.d.ts +0 -2
- package/bin/__tests__/cli.test.d.ts.map +0 -1
- package/bin/__tests__/cli.test.js +0 -222
- package/bin/__tests__/cli.test.js.map +0 -1
- package/bin/__tests__/configcat.test.d.ts +0 -2
- package/bin/__tests__/configcat.test.d.ts.map +0 -1
- package/bin/__tests__/configcat.test.js +0 -100
- package/bin/__tests__/configcat.test.js.map +0 -1
- package/bin/__tests__/create.test.d.ts +0 -2
- package/bin/__tests__/create.test.d.ts.map +0 -1
- package/bin/__tests__/create.test.js +0 -264
- package/bin/__tests__/create.test.js.map +0 -1
- package/bin/__tests__/deploy.test.d.ts +0 -2
- package/bin/__tests__/deploy.test.d.ts.map +0 -1
- package/bin/__tests__/deploy.test.js +0 -95
- package/bin/__tests__/deploy.test.js.map +0 -1
- package/bin/__tests__/destroy.test.d.ts +0 -2
- package/bin/__tests__/destroy.test.d.ts.map +0 -1
- package/bin/__tests__/destroy.test.js +0 -44
- package/bin/__tests__/destroy.test.js.map +0 -1
- package/bin/__tests__/drain.test.d.ts +0 -2
- package/bin/__tests__/drain.test.d.ts.map +0 -1
- package/bin/__tests__/drain.test.js +0 -35
- package/bin/__tests__/drain.test.js.map +0 -1
- package/bin/__tests__/faucet.test.d.ts +0 -2
- package/bin/__tests__/faucet.test.d.ts.map +0 -1
- package/bin/__tests__/faucet.test.js +0 -31
- package/bin/__tests__/faucet.test.js.map +0 -1
- package/bin/__tests__/fetch.test.d.ts +0 -2
- package/bin/__tests__/fetch.test.d.ts.map +0 -1
- package/bin/__tests__/fetch.test.js +0 -54
- package/bin/__tests__/fetch.test.js.map +0 -1
- package/bin/__tests__/genKeys.test.d.ts +0 -2
- package/bin/__tests__/genKeys.test.d.ts.map +0 -1
- package/bin/__tests__/genKeys.test.js +0 -17
- package/bin/__tests__/genKeys.test.js.map +0 -1
- package/bin/__tests__/get.test.d.ts +0 -2
- package/bin/__tests__/get.test.d.ts.map +0 -1
- package/bin/__tests__/get.test.js +0 -133
- package/bin/__tests__/get.test.js.map +0 -1
- package/bin/__tests__/getAPIUserTokens.test.d.ts +0 -2
- package/bin/__tests__/getAPIUserTokens.test.d.ts.map +0 -1
- package/bin/__tests__/getAPIUserTokens.test.js +0 -69
- package/bin/__tests__/getAPIUserTokens.test.js.map +0 -1
- package/bin/__tests__/getAuthToken.test.d.ts +0 -2
- package/bin/__tests__/getAuthToken.test.d.ts.map +0 -1
- package/bin/__tests__/getAuthToken.test.js +0 -31
- package/bin/__tests__/getAuthToken.test.js.map +0 -1
- package/bin/__tests__/getCertFromPFX.test.d.ts +0 -2
- package/bin/__tests__/getCertFromPFX.test.d.ts.map +0 -1
- package/bin/__tests__/getCertFromPFX.test.js +0 -54
- package/bin/__tests__/getCertFromPFX.test.js.map +0 -1
- package/bin/__tests__/getMVInstances.test.d.ts +0 -2
- package/bin/__tests__/getMVInstances.test.d.ts.map +0 -1
- package/bin/__tests__/getMVInstances.test.js +0 -72
- package/bin/__tests__/getMVInstances.test.js.map +0 -1
- package/bin/__tests__/getSeeds.test.d.ts +0 -2
- package/bin/__tests__/getSeeds.test.d.ts.map +0 -1
- package/bin/__tests__/getSeeds.test.js +0 -20
- package/bin/__tests__/getSeeds.test.js.map +0 -1
- package/bin/__tests__/getUserID.test.d.ts +0 -2
- package/bin/__tests__/getUserID.test.d.ts.map +0 -1
- package/bin/__tests__/getUserID.test.js +0 -31
- package/bin/__tests__/getUserID.test.js.map +0 -1
- package/bin/__tests__/initCompartment.test.d.ts +0 -2
- package/bin/__tests__/initCompartment.test.d.ts.map +0 -1
- package/bin/__tests__/initCompartment.test.js +0 -86
- package/bin/__tests__/initCompartment.test.js.map +0 -1
- package/bin/__tests__/onboard.test.d.ts +0 -2
- package/bin/__tests__/onboard.test.d.ts.map +0 -1
- package/bin/__tests__/onboard.test.js +0 -63
- package/bin/__tests__/onboard.test.js.map +0 -1
- package/bin/__tests__/pathGateOptionsWithEnvVariables.test.d.ts +0 -2
- package/bin/__tests__/pathGateOptionsWithEnvVariables.test.d.ts.map +0 -1
- package/bin/__tests__/pathGateOptionsWithEnvVariables.test.js +0 -34
- package/bin/__tests__/pathGateOptionsWithEnvVariables.test.js.map +0 -1
- package/bin/__tests__/pledge.test.d.ts +0 -2
- package/bin/__tests__/pledge.test.d.ts.map +0 -1
- package/bin/__tests__/pledge.test.js +0 -110
- package/bin/__tests__/pledge.test.js.map +0 -1
- package/bin/__tests__/proxy.test.d.ts +0 -2
- package/bin/__tests__/proxy.test.d.ts.map +0 -1
- package/bin/__tests__/proxy.test.js +0 -22
- package/bin/__tests__/proxy.test.js.map +0 -1
- package/bin/__tests__/receive.test.d.ts +0 -2
- package/bin/__tests__/receive.test.d.ts.map +0 -1
- package/bin/__tests__/receive.test.js +0 -85
- package/bin/__tests__/receive.test.js.map +0 -1
- package/bin/__tests__/recipe.test.d.ts +0 -2
- package/bin/__tests__/recipe.test.d.ts.map +0 -1
- package/bin/__tests__/recipe.test.js +0 -41
- package/bin/__tests__/recipe.test.js.map +0 -1
- package/bin/__tests__/reject.test.d.ts +0 -2
- package/bin/__tests__/reject.test.d.ts.map +0 -1
- package/bin/__tests__/reject.test.js +0 -214
- package/bin/__tests__/reject.test.js.map +0 -1
- package/bin/__tests__/resetCompartment.test.d.ts +0 -2
- package/bin/__tests__/resetCompartment.test.d.ts.map +0 -1
- package/bin/__tests__/resetCompartment.test.js +0 -88
- package/bin/__tests__/resetCompartment.test.js.map +0 -1
- package/bin/__tests__/restoreCompartment.test.d.ts +0 -2
- package/bin/__tests__/restoreCompartment.test.d.ts.map +0 -1
- package/bin/__tests__/restoreCompartment.test.js +0 -95
- package/bin/__tests__/restoreCompartment.test.js.map +0 -1
- package/bin/__tests__/revoke.test.d.ts +0 -2
- package/bin/__tests__/revoke.test.d.ts.map +0 -1
- package/bin/__tests__/revoke.test.js +0 -62
- package/bin/__tests__/revoke.test.js.map +0 -1
- package/bin/__tests__/send.test.d.ts +0 -2
- package/bin/__tests__/send.test.d.ts.map +0 -1
- package/bin/__tests__/send.test.js +0 -216
- package/bin/__tests__/send.test.js.map +0 -1
- package/bin/__tests__/setQuorum.test.d.ts +0 -2
- package/bin/__tests__/setQuorum.test.d.ts.map +0 -1
- package/bin/__tests__/setQuorum.test.js +0 -32
- package/bin/__tests__/setQuorum.test.js.map +0 -1
- package/bin/__tests__/settle.test.d.ts +0 -2
- package/bin/__tests__/settle.test.d.ts.map +0 -1
- package/bin/__tests__/settle.test.js +0 -123
- package/bin/__tests__/settle.test.js.map +0 -1
- package/bin/__tests__/test-utils.d.ts +0 -19
- package/bin/__tests__/test-utils.d.ts.map +0 -1
- package/bin/__tests__/test-utils.js +0 -39
- package/bin/__tests__/test-utils.js.map +0 -1
- package/bin/__tests__/upgrade.test.d.ts +0 -2
- package/bin/__tests__/upgrade.test.d.ts.map +0 -1
- package/bin/__tests__/upgrade.test.js +0 -57
- package/bin/__tests__/upgrade.test.js.map +0 -1
- package/bin/__tests__/utils.test.d.ts +0 -2
- package/bin/__tests__/utils.test.d.ts.map +0 -1
- package/bin/__tests__/utils.test.js +0 -40
- package/bin/__tests__/utils.test.js.map +0 -1
- package/bin/__tests__/wipe.test.d.ts +0 -2
- package/bin/__tests__/wipe.test.d.ts.map +0 -1
- package/bin/__tests__/wipe.test.js +0 -92
- package/bin/__tests__/wipe.test.js.map +0 -1
- package/bin/cli.d.ts +0 -4
- package/bin/cli.d.ts.map +0 -1
- package/bin/cli.js +0 -152
- package/bin/cli.js.map +0 -1
- package/bin/cliOptions.d.ts +0 -8
- package/bin/cliOptions.d.ts.map +0 -1
- package/bin/cliOptions.js +0 -11
- package/bin/cliOptions.js.map +0 -1
- package/bin/commands/apdu.d.ts +0 -14
- package/bin/commands/apdu.d.ts.map +0 -1
- package/bin/commands/apdu.js +0 -35
- package/bin/commands/apdu.js.map +0 -1
- package/bin/commands/approve.d.ts +0 -34
- package/bin/commands/approve.d.ts.map +0 -1
- package/bin/commands/approve.js +0 -150
- package/bin/commands/approve.js.map +0 -1
- package/bin/commands/backupCompartment.d.ts +0 -31
- package/bin/commands/backupCompartment.d.ts.map +0 -1
- package/bin/commands/backupCompartment.js +0 -70
- package/bin/commands/backupCompartment.js.map +0 -1
- package/bin/commands/bake.d.ts +0 -73
- package/bin/commands/bake.d.ts.map +0 -1
- package/bin/commands/bake.js +0 -232
- package/bin/commands/bake.js.map +0 -1
- package/bin/commands/bridge.d.ts +0 -22
- package/bin/commands/bridge.d.ts.map +0 -1
- package/bin/commands/bridge.js +0 -137
- package/bin/commands/bridge.js.map +0 -1
- package/bin/commands/configcat.d.ts +0 -78
- package/bin/commands/configcat.d.ts.map +0 -1
- package/bin/commands/configcat.js +0 -208
- package/bin/commands/configcat.js.map +0 -1
- package/bin/commands/create.d.ts +0 -207
- package/bin/commands/create.d.ts.map +0 -1
- package/bin/commands/create.js +0 -554
- package/bin/commands/create.js.map +0 -1
- package/bin/commands/deploy.d.ts +0 -60
- package/bin/commands/deploy.d.ts.map +0 -1
- package/bin/commands/deploy.js +0 -106
- package/bin/commands/deploy.js.map +0 -1
- package/bin/commands/destroy.d.ts +0 -36
- package/bin/commands/destroy.d.ts.map +0 -1
- package/bin/commands/destroy.js +0 -58
- package/bin/commands/destroy.js.map +0 -1
- package/bin/commands/drain.d.ts +0 -26
- package/bin/commands/drain.d.ts.map +0 -1
- package/bin/commands/drain.js +0 -64
- package/bin/commands/drain.js.map +0 -1
- package/bin/commands/faucet.d.ts +0 -31
- package/bin/commands/faucet.d.ts.map +0 -1
- package/bin/commands/faucet.js +0 -68
- package/bin/commands/faucet.js.map +0 -1
- package/bin/commands/fetch.d.ts +0 -35
- package/bin/commands/fetch.d.ts.map +0 -1
- package/bin/commands/fetch.js +0 -83
- package/bin/commands/fetch.js.map +0 -1
- package/bin/commands/genKeys.d.ts +0 -14
- package/bin/commands/genKeys.d.ts.map +0 -1
- package/bin/commands/genKeys.js +0 -19
- package/bin/commands/genKeys.js.map +0 -1
- package/bin/commands/get.d.ts +0 -56
- package/bin/commands/get.d.ts.map +0 -1
- package/bin/commands/get.js +0 -211
- package/bin/commands/get.js.map +0 -1
- package/bin/commands/getAPIUserTokens.d.ts +0 -39
- package/bin/commands/getAPIUserTokens.d.ts.map +0 -1
- package/bin/commands/getAPIUserTokens.js +0 -63
- package/bin/commands/getAPIUserTokens.js.map +0 -1
- package/bin/commands/getAuthToken.d.ts +0 -26
- package/bin/commands/getAuthToken.d.ts.map +0 -1
- package/bin/commands/getAuthToken.js +0 -42
- package/bin/commands/getAuthToken.js.map +0 -1
- package/bin/commands/getMVInstances.d.ts +0 -33
- package/bin/commands/getMVInstances.d.ts.map +0 -1
- package/bin/commands/getMVInstances.js +0 -71
- package/bin/commands/getMVInstances.js.map +0 -1
- package/bin/commands/getSeeds.d.ts +0 -19
- package/bin/commands/getSeeds.d.ts.map +0 -1
- package/bin/commands/getSeeds.js +0 -95
- package/bin/commands/getSeeds.js.map +0 -1
- package/bin/commands/getUserID.d.ts +0 -27
- package/bin/commands/getUserID.d.ts.map +0 -1
- package/bin/commands/getUserID.js +0 -32
- package/bin/commands/getUserID.js.map +0 -1
- package/bin/commands/index.d.ts +0 -892
- package/bin/commands/index.d.ts.map +0 -1
- package/bin/commands/index.js +0 -111
- package/bin/commands/index.js.map +0 -1
- package/bin/commands/initCompartment.d.ts +0 -22
- package/bin/commands/initCompartment.d.ts.map +0 -1
- package/bin/commands/initCompartment.js +0 -62
- package/bin/commands/initCompartment.js.map +0 -1
- package/bin/commands/listen.d.ts +0 -31
- package/bin/commands/listen.d.ts.map +0 -1
- package/bin/commands/listen.js +0 -56
- package/bin/commands/listen.js.map +0 -1
- package/bin/commands/onboard.d.ts +0 -30
- package/bin/commands/onboard.d.ts.map +0 -1
- package/bin/commands/onboard.js +0 -68
- package/bin/commands/onboard.js.map +0 -1
- package/bin/commands/pledge.d.ts +0 -38
- package/bin/commands/pledge.d.ts.map +0 -1
- package/bin/commands/pledge.js +0 -89
- package/bin/commands/pledge.js.map +0 -1
- package/bin/commands/proxy.d.ts +0 -17
- package/bin/commands/proxy.d.ts.map +0 -1
- package/bin/commands/proxy.js +0 -227
- package/bin/commands/proxy.js.map +0 -1
- package/bin/commands/receive.d.ts +0 -40
- package/bin/commands/receive.d.ts.map +0 -1
- package/bin/commands/receive.js +0 -60
- package/bin/commands/receive.js.map +0 -1
- package/bin/commands/recipe.d.ts +0 -29
- package/bin/commands/recipe.d.ts.map +0 -1
- package/bin/commands/recipe.js +0 -62
- package/bin/commands/recipe.js.map +0 -1
- package/bin/commands/reject.d.ts +0 -49
- package/bin/commands/reject.d.ts.map +0 -1
- package/bin/commands/reject.js +0 -176
- package/bin/commands/reject.js.map +0 -1
- package/bin/commands/resetCompartment.d.ts +0 -31
- package/bin/commands/resetCompartment.d.ts.map +0 -1
- package/bin/commands/resetCompartment.js +0 -71
- package/bin/commands/resetCompartment.js.map +0 -1
- package/bin/commands/restoreCompartment.d.ts +0 -39
- package/bin/commands/restoreCompartment.d.ts.map +0 -1
- package/bin/commands/restoreCompartment.js +0 -80
- package/bin/commands/restoreCompartment.js.map +0 -1
- package/bin/commands/revoke.d.ts +0 -40
- package/bin/commands/revoke.d.ts.map +0 -1
- package/bin/commands/revoke.js +0 -80
- package/bin/commands/revoke.js.map +0 -1
- package/bin/commands/send.d.ts +0 -54
- package/bin/commands/send.d.ts.map +0 -1
- package/bin/commands/send.js +0 -170
- package/bin/commands/send.js.map +0 -1
- package/bin/commands/setQuorum.d.ts +0 -30
- package/bin/commands/setQuorum.d.ts.map +0 -1
- package/bin/commands/setQuorum.js +0 -44
- package/bin/commands/setQuorum.js.map +0 -1
- package/bin/commands/settle.d.ts +0 -43
- package/bin/commands/settle.d.ts.map +0 -1
- package/bin/commands/settle.js +0 -92
- package/bin/commands/settle.js.map +0 -1
- package/bin/commands/upgrade.d.ts +0 -44
- package/bin/commands/upgrade.d.ts.map +0 -1
- package/bin/commands/upgrade.js +0 -68
- package/bin/commands/upgrade.js.map +0 -1
- package/bin/commands/wipe.d.ts +0 -77
- package/bin/commands/wipe.d.ts.map +0 -1
- package/bin/commands/wipe.js +0 -86
- package/bin/commands/wipe.js.map +0 -1
- package/bin/deviceOption.d.ts +0 -9
- package/bin/deviceOption.d.ts.map +0 -1
- package/bin/deviceOption.js +0 -10
- package/bin/deviceOption.js.map +0 -1
- package/bin/gateOptions.d.ts +0 -39
- package/bin/gateOptions.d.ts.map +0 -1
- package/bin/gateOptions.js +0 -73
- package/bin/gateOptions.js.map +0 -1
- package/bin/getCertFromPFX.d.ts +0 -7
- package/bin/getCertFromPFX.d.ts.map +0 -1
- package/bin/getCertFromPFX.js +0 -43
- package/bin/getCertFromPFX.js.map +0 -1
- package/bin/index.d.ts +0 -3
- package/bin/index.d.ts.map +0 -1
- package/bin/lamOptions.d.ts +0 -15
- package/bin/lamOptions.d.ts.map +0 -1
- package/bin/lamOptions.js +0 -17
- package/bin/lamOptions.js.map +0 -1
- package/bin/logger.d.ts +0 -3
- package/bin/logger.d.ts.map +0 -1
- package/bin/logger.js +0 -5
- package/bin/logger.js.map +0 -1
- package/bin/manifests/beatles.json +0 -46
- package/bin/manifests/empty.json +0 -1
- package/bin/manifests/erc20.json +0 -32
- package/bin/manifests/message-signing.json +0 -36
- package/bin/manifests/mobile.json +0 -43
- package/bin/manifests/polkadot-staking.json +0 -152
- package/bin/manifests/polkadot.json +0 -37
- package/bin/manifests/rawsigning.json +0 -39
- package/bin/manifests/ripple.json +0 -37
- package/bin/manifests/sci.json +0 -146
- package/bin/manifests/solana-dev.json +0 -99
- package/bin/manifests/solana-staking.json +0 -44
- package/bin/manifests/solana.json +0 -30
- package/bin/manifests/stellar.json +0 -37
- package/bin/manifests/tezos.json +0 -51
- package/bin/manifests/tradelink-hsm.json +0 -429
- package/bin/manifests/tradelink.json +0 -361
- package/bin/miscOptions.d.ts +0 -20
- package/bin/miscOptions.d.ts.map +0 -1
- package/bin/miscOptions.js +0 -17
- package/bin/miscOptions.js.map +0 -1
- package/bin/registerTransports.d.ts +0 -2
- package/bin/registerTransports.d.ts.map +0 -1
- package/bin/registerTransports.js +0 -18
- package/bin/registerTransports.js.map +0 -1
- package/bin/types.d.ts +0 -23
- package/bin/types.d.ts.map +0 -1
- package/bin/types.js +0 -3
- package/bin/types.js.map +0 -1
- package/bin/utils.d.ts +0 -22
- package/bin/utils.d.ts.map +0 -1
- package/bin/utils.js +0 -156
- package/bin/utils.js.map +0 -1
package/bin/commands/proxy.js
DELETED
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
-
};
|
|
37
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
const axios_1 = __importDefault(require("axios"));
|
|
39
|
-
const body_parser_1 = __importDefault(require("body-parser"));
|
|
40
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
41
|
-
const cors_1 = __importDefault(require("cors"));
|
|
42
|
-
const express_1 = __importStar(require("express"));
|
|
43
|
-
const fs_1 = __importDefault(require("fs"));
|
|
44
|
-
const https_1 = __importDefault(require("https"));
|
|
45
|
-
const path_1 = __importDefault(require("path"));
|
|
46
|
-
const logger_1 = __importDefault(require("../logger"));
|
|
47
|
-
const FRONT_URL = "https://localhost:9000";
|
|
48
|
-
const httpsAgent = new https_1.default.Agent({ rejectUnauthorized: false });
|
|
49
|
-
const createProxy = ({ port, host }) => {
|
|
50
|
-
const app = (0, express_1.default)();
|
|
51
|
-
app.disable("x-powered-by");
|
|
52
|
-
const register = (config) => {
|
|
53
|
-
const router = (0, express_1.Router)();
|
|
54
|
-
const { url, route, name, raw, transformResponseHeaders, transformURL } = config;
|
|
55
|
-
const proxifiedURL = `https://${host}${url}`;
|
|
56
|
-
const network = axios_1.default.create({ baseURL: proxifiedURL, httpsAgent });
|
|
57
|
-
router.all("*", (req, res) => __awaiter(void 0, void 0, void 0, function* () {
|
|
58
|
-
try {
|
|
59
|
-
const method = req.method;
|
|
60
|
-
logger_1.default.info(`[${name}] ${method} ${req.url}`);
|
|
61
|
-
req.headers.host = host;
|
|
62
|
-
req.headers["Accept-Encoding"] = "gzip;q=0,deflate;q=0";
|
|
63
|
-
const r = yield network(Object.assign({ method, url: transformURL ? transformURL(req.url) : req.url, data: req.body, headers: req.headers }, (raw
|
|
64
|
-
? {
|
|
65
|
-
responseType: "arraybuffer",
|
|
66
|
-
responseEncoding: "binary",
|
|
67
|
-
}
|
|
68
|
-
: {})));
|
|
69
|
-
if (raw) {
|
|
70
|
-
r.headers["content-length"] = Buffer.from(r.data).toString("utf8").length;
|
|
71
|
-
}
|
|
72
|
-
if (transformResponseHeaders) {
|
|
73
|
-
transformResponseHeaders(r.headers);
|
|
74
|
-
}
|
|
75
|
-
if (raw) {
|
|
76
|
-
res.writeHead(200, r.headers);
|
|
77
|
-
res.write(r.data);
|
|
78
|
-
res.end();
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
res.set(r.headers);
|
|
82
|
-
res.send(r.data);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
catch (err) {
|
|
86
|
-
if (err.response) {
|
|
87
|
-
return res.status(err.response.status).send(err.response.data);
|
|
88
|
-
}
|
|
89
|
-
return res.status(500).send({ message: err.reason || "Proxy error" });
|
|
90
|
-
}
|
|
91
|
-
}));
|
|
92
|
-
logger_1.default.info((0, chalk_1.default) `{magenta ${route}} {yellow.bold =>} ${proxifiedURL}`);
|
|
93
|
-
app.use(route, router);
|
|
94
|
-
};
|
|
95
|
-
app.use((0, cors_1.default)({ credentials: true, origin: FRONT_URL }));
|
|
96
|
-
app.use(body_parser_1.default.text());
|
|
97
|
-
app.use(body_parser_1.default.json());
|
|
98
|
-
const listen = () => {
|
|
99
|
-
const cert = getLocalhostSSLCert();
|
|
100
|
-
const httpsServer = https_1.default.createServer(cert, app);
|
|
101
|
-
httpsServer.listen(8443, () => {
|
|
102
|
-
logger_1.default.success(`Proxy listening on port ${port}`);
|
|
103
|
-
});
|
|
104
|
-
};
|
|
105
|
-
return { listen, register };
|
|
106
|
-
};
|
|
107
|
-
const getLocalhostSSLCert = () => {
|
|
108
|
-
try {
|
|
109
|
-
if (!process.env["VAULT_WORKSPACE_DIR"]) {
|
|
110
|
-
throw new Error("Env var $VAULT_WORKSPACE_DIR is not defined. Check the Vault Guide: https://vault-guide.ldg-tech.com/");
|
|
111
|
-
}
|
|
112
|
-
const workspace = process.env["VAULT_WORKSPACE_DIR"];
|
|
113
|
-
const base = path_1.default.join(workspace, "ledger-vault-front/certificate");
|
|
114
|
-
const cert = fs_1.default.readFileSync(path_1.default.join(base, "localhost.crt"), "utf8");
|
|
115
|
-
const key = fs_1.default.readFileSync(path_1.default.join(base, "localhost.key"), "utf8");
|
|
116
|
-
return { cert, key };
|
|
117
|
-
}
|
|
118
|
-
catch (err) {
|
|
119
|
-
logger_1.default.error("Could not correctly parse cert files");
|
|
120
|
-
throw err;
|
|
121
|
-
}
|
|
122
|
-
};
|
|
123
|
-
function proxyCommand({ positionals }) {
|
|
124
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
125
|
-
const [distantURL] = positionals;
|
|
126
|
-
if (!distantURL)
|
|
127
|
-
throw new Error(`No distant URL given`);
|
|
128
|
-
const distantNetwork = axios_1.default.create({ baseURL: distantURL, httpsAgent });
|
|
129
|
-
const host = new URL(distantURL).hostname;
|
|
130
|
-
const config = yield getDistantConfig(distantNetwork);
|
|
131
|
-
const proxy = createProxy({ port: 8443, host });
|
|
132
|
-
proxy.register({
|
|
133
|
-
name: "Gate",
|
|
134
|
-
route: "/gate",
|
|
135
|
-
url: config.API_BASE_URL,
|
|
136
|
-
transformResponseHeaders: transformGateHeaders,
|
|
137
|
-
});
|
|
138
|
-
proxy.register({
|
|
139
|
-
name: "Device registry",
|
|
140
|
-
route: "/device-registry",
|
|
141
|
-
url: config.DEVICE_REGISTRY_BASE_URL,
|
|
142
|
-
transformURL: (url) => url.replace("domain=localhost", `domain=${host}`),
|
|
143
|
-
});
|
|
144
|
-
proxy.register({
|
|
145
|
-
name: "Device api WebSocket",
|
|
146
|
-
route: "/device-api/socket.io",
|
|
147
|
-
url: "/device-api/socket.io",
|
|
148
|
-
raw: true,
|
|
149
|
-
});
|
|
150
|
-
proxy.register({
|
|
151
|
-
name: "Device api",
|
|
152
|
-
route: "/device-api",
|
|
153
|
-
url: "/device-api",
|
|
154
|
-
});
|
|
155
|
-
proxy.register({
|
|
156
|
-
name: "Platform manager",
|
|
157
|
-
route: "/platform-manager",
|
|
158
|
-
url: "/platform-manager",
|
|
159
|
-
});
|
|
160
|
-
proxy.register({
|
|
161
|
-
name: "Vault notifier",
|
|
162
|
-
url: "/notifier/socket.io",
|
|
163
|
-
route: config.NOTIFIER_URL,
|
|
164
|
-
raw: true,
|
|
165
|
-
});
|
|
166
|
-
proxy.listen();
|
|
167
|
-
const p = new Promise(() => { });
|
|
168
|
-
return p;
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
const transformGateHeaders = (headers) => {
|
|
172
|
-
if (headers["set-cookie"]) {
|
|
173
|
-
headers["set-cookie"] = headers["set-cookie"].map((cookie) => {
|
|
174
|
-
if (cookie.startsWith("ledger_workspace=")) {
|
|
175
|
-
return cookie.replace("Secure;", "");
|
|
176
|
-
}
|
|
177
|
-
if (cookie.startsWith("ledger_token=")) {
|
|
178
|
-
return cookie.replace(/Domain=[^;]+/, "Domain=localhost").replace("Secure;", "");
|
|
179
|
-
}
|
|
180
|
-
return cookie;
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
};
|
|
184
|
-
function getDistantConfig(network) {
|
|
185
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
186
|
-
const networkRes = yield network({
|
|
187
|
-
method: "GET",
|
|
188
|
-
url: "/config.js",
|
|
189
|
-
});
|
|
190
|
-
const res = networkRes.data;
|
|
191
|
-
const config = res.replace("window.config = ", "").replace(";", "");
|
|
192
|
-
const result = config
|
|
193
|
-
.trim()
|
|
194
|
-
.split("\n")
|
|
195
|
-
.map((line, i, lines) => {
|
|
196
|
-
if (i === 0 || i === lines.length - 1)
|
|
197
|
-
return line;
|
|
198
|
-
const [property, ...value] = line.trim().split(":");
|
|
199
|
-
line = `"${property}":${value.join(":")}`;
|
|
200
|
-
if (i === lines.length - 2 && line[line.length - 1] === ",") {
|
|
201
|
-
line = line.slice(0, -1);
|
|
202
|
-
}
|
|
203
|
-
return line;
|
|
204
|
-
})
|
|
205
|
-
.join("\n");
|
|
206
|
-
try {
|
|
207
|
-
return JSON.parse(result);
|
|
208
|
-
}
|
|
209
|
-
catch (_a) {
|
|
210
|
-
throw new Error("Invalid distant config.js file");
|
|
211
|
-
}
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
exports.default = {
|
|
215
|
-
command: "proxy",
|
|
216
|
-
positionals: true,
|
|
217
|
-
description: "Expose a distant gate/device-registry to localhost",
|
|
218
|
-
help: [
|
|
219
|
-
{
|
|
220
|
-
header: "Usage",
|
|
221
|
-
content: ["{grey $} ledger-vault proxy {blue <distant-url>}"],
|
|
222
|
-
},
|
|
223
|
-
],
|
|
224
|
-
options: [],
|
|
225
|
-
run: proxyCommand,
|
|
226
|
-
};
|
|
227
|
-
//# sourceMappingURL=proxy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/commands/proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { GateOptions } from "../types";
|
|
2
|
-
export interface ReceiveOptions extends GateOptions {
|
|
3
|
-
account: string;
|
|
4
|
-
index: number;
|
|
5
|
-
}
|
|
6
|
-
declare const _default: {
|
|
7
|
-
command: string;
|
|
8
|
-
description: string;
|
|
9
|
-
options: ({
|
|
10
|
-
name: string;
|
|
11
|
-
type: BooleanConstructor;
|
|
12
|
-
description: string;
|
|
13
|
-
} | {
|
|
14
|
-
name: string;
|
|
15
|
-
description: string;
|
|
16
|
-
type: StringConstructor;
|
|
17
|
-
} | {
|
|
18
|
-
name: string;
|
|
19
|
-
description: string;
|
|
20
|
-
type: NumberConstructor;
|
|
21
|
-
defaultValue: number;
|
|
22
|
-
} | {
|
|
23
|
-
name: string;
|
|
24
|
-
alias: string;
|
|
25
|
-
description: string;
|
|
26
|
-
type: StringConstructor;
|
|
27
|
-
required: boolean;
|
|
28
|
-
defaultValue?: undefined;
|
|
29
|
-
} | {
|
|
30
|
-
name: string;
|
|
31
|
-
alias: string;
|
|
32
|
-
description: string;
|
|
33
|
-
type: NumberConstructor;
|
|
34
|
-
defaultValue: number;
|
|
35
|
-
required?: undefined;
|
|
36
|
-
})[];
|
|
37
|
-
run: (options: ReceiveOptions) => Promise<void>;
|
|
38
|
-
};
|
|
39
|
-
export default _default;
|
|
40
|
-
//# sourceMappingURL=receive.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"receive.d.ts","sourceRoot":"","sources":["../../src/commands/receive.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAwBsB,cAAc,KAAG,QAAQ,IAAI,CAAC;;AAtBrD,wBA6CE"}
|
package/bin/commands/receive.js
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
const vault_common_1 = require("@ledgerhq/vault-common");
|
|
16
|
-
const cliOptions_1 = __importDefault(require("../cliOptions"));
|
|
17
|
-
const gateOptions_1 = __importDefault(require("../gateOptions"));
|
|
18
|
-
const lamOptions_1 = __importDefault(require("../lamOptions"));
|
|
19
|
-
exports.default = {
|
|
20
|
-
command: "receive",
|
|
21
|
-
description: "Display receive address for given account",
|
|
22
|
-
options: [
|
|
23
|
-
{
|
|
24
|
-
name: "account",
|
|
25
|
-
alias: "a",
|
|
26
|
-
description: "Name of the account",
|
|
27
|
-
type: String,
|
|
28
|
-
required: true,
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
name: "index",
|
|
32
|
-
alias: "i",
|
|
33
|
-
description: "Address index {grey (default: 0)}",
|
|
34
|
-
type: Number,
|
|
35
|
-
defaultValue: 0,
|
|
36
|
-
},
|
|
37
|
-
...gateOptions_1.default,
|
|
38
|
-
...lamOptions_1.default,
|
|
39
|
-
...cliOptions_1.default,
|
|
40
|
-
],
|
|
41
|
-
run: (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
42
|
-
const { account: accountName, index } = options;
|
|
43
|
-
const pool = (0, vault_common_1.createDevicesPool)(Object.assign(Object.assign({}, options), { lamURL: options.lam, deviceAPIURL: options.deviceAPI }));
|
|
44
|
-
const admin = yield pool.login(4);
|
|
45
|
-
const accountsURL = `/accounts?name=${accountName}`;
|
|
46
|
-
const accounts = yield admin.network("GET", accountsURL);
|
|
47
|
-
const account = accounts.edges.find((e) => e.node.name === accountName);
|
|
48
|
-
if (!account) {
|
|
49
|
-
throw new Error(`No account matching name "${accountName}"`);
|
|
50
|
-
}
|
|
51
|
-
const freshAddressesURL = `/accounts/${account.node.id}/fresh_addresses`;
|
|
52
|
-
const freshAddresses = yield admin.network("GET", freshAddressesURL);
|
|
53
|
-
const address = freshAddresses[index];
|
|
54
|
-
if (!address) {
|
|
55
|
-
throw new Error(`No fresh address available at index ${index}`);
|
|
56
|
-
}
|
|
57
|
-
console.log(address.address);
|
|
58
|
-
}),
|
|
59
|
-
};
|
|
60
|
-
//# sourceMappingURL=receive.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"receive.js","sourceRoot":"","sources":["../../src/commands/receive.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,yDAA2D;AAG3D,+DAAuC;AACvC,iEAAyC;AACzC,+DAAuC;AAQvC,kBAAe;IACb,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,2CAA2C;IACxD,OAAO,EAAE;QACP;YACE,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,qBAAqB;YAClC,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,mCAAmC;YAChD,IAAI,EAAE,MAAM;YACZ,YAAY,EAAE,CAAC;SAChB;QACD,GAAG,qBAAW;QACd,GAAG,oBAAU;QACb,GAAG,oBAAU;KACd;IACD,GAAG,EAAE,CAAO,OAAuB,EAAiB,EAAE;QACpD,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAChD,MAAM,IAAI,GAAG,IAAA,gCAAiB,kCACzB,OAAO,KACV,MAAM,EAAE,OAAO,CAAC,GAAG,EACnB,YAAY,EAAE,OAAO,CAAC,SAAS,IAC/B,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,WAAW,GAAG,kBAAkB,WAAW,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAA0B,KAAK,EAAE,WAAW,CAAC,CAAC;QAClF,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QACxE,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,6BAA6B,WAAW,GAAG,CAAC,CAAC;SAC9D;QACD,MAAM,iBAAiB,GAAG,aAAa,OAAO,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC;QACzE,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,OAAO,CAAkB,KAAK,EAAE,iBAAiB,CAAC,CAAC;QACtF,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC;SACjE;QAED,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAA;CACF,CAAC"}
|
package/bin/commands/recipe.d.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { GateOptions } from "../types";
|
|
2
|
-
export type RecipeOptions = GateOptions & {
|
|
3
|
-
saveAccountsIndexes?: boolean;
|
|
4
|
-
saveAccountsTypes?: boolean;
|
|
5
|
-
};
|
|
6
|
-
declare const _default: {
|
|
7
|
-
command: string;
|
|
8
|
-
description: string;
|
|
9
|
-
help: {
|
|
10
|
-
content: string;
|
|
11
|
-
}[];
|
|
12
|
-
options: ({
|
|
13
|
-
name: string;
|
|
14
|
-
type: BooleanConstructor;
|
|
15
|
-
description: string;
|
|
16
|
-
} | {
|
|
17
|
-
name: string;
|
|
18
|
-
description: string;
|
|
19
|
-
type: StringConstructor;
|
|
20
|
-
} | {
|
|
21
|
-
name: string;
|
|
22
|
-
defaultValue: boolean;
|
|
23
|
-
description: string;
|
|
24
|
-
type: BooleanConstructor;
|
|
25
|
-
})[];
|
|
26
|
-
run: (options: RecipeOptions) => Promise<void>;
|
|
27
|
-
};
|
|
28
|
-
export default _default;
|
|
29
|
-
//# sourceMappingURL=recipe.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"recipe.d.ts","sourceRoot":"","sources":["../../src/commands/recipe.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG;IACxC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;;;;;;;;;;;;;;;;;;;;;mBA0BqB,aAAa,KAAG,QAAQ,IAAI,CAAC;;AAxBpD,wBAuCE"}
|
package/bin/commands/recipe.js
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
12
|
-
var t = {};
|
|
13
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
14
|
-
t[p] = s[p];
|
|
15
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
16
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
17
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
18
|
-
t[p[i]] = s[p[i]];
|
|
19
|
-
}
|
|
20
|
-
return t;
|
|
21
|
-
};
|
|
22
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
23
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
const vault_common_1 = require("@ledgerhq/vault-common");
|
|
27
|
-
const prettier_1 = __importDefault(require("prettier"));
|
|
28
|
-
const gateOptions_1 = __importDefault(require("../gateOptions"));
|
|
29
|
-
const lamOptions_1 = __importDefault(require("../lamOptions"));
|
|
30
|
-
exports.default = {
|
|
31
|
-
command: "recipe",
|
|
32
|
-
description: "Build a manifest from a gate",
|
|
33
|
-
help: [
|
|
34
|
-
{
|
|
35
|
-
content: "{grey $} ledger-vault recipe [options]",
|
|
36
|
-
},
|
|
37
|
-
],
|
|
38
|
-
options: [
|
|
39
|
-
...gateOptions_1.default,
|
|
40
|
-
...lamOptions_1.default,
|
|
41
|
-
{
|
|
42
|
-
name: "saveAccountsTypes",
|
|
43
|
-
defaultValue: false,
|
|
44
|
-
description: "If passed, will store the accountType into each account",
|
|
45
|
-
type: Boolean,
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
name: "saveAccountsIndexes",
|
|
49
|
-
defaultValue: false,
|
|
50
|
-
description: "If passed, will store account index into each account",
|
|
51
|
-
type: Boolean,
|
|
52
|
-
},
|
|
53
|
-
],
|
|
54
|
-
run: (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
55
|
-
const { saveAccountsIndexes, saveAccountsTypes } = options, opts = __rest(options, ["saveAccountsIndexes", "saveAccountsTypes"]);
|
|
56
|
-
const data = yield (0, vault_common_1.recipeManifest)((0, vault_common_1.createDevicesPool)(Object.assign(Object.assign({}, opts), { lamURL: options.lam, deviceAPIURL: options.deviceAPI })), { saveAccountsIndexes, saveAccountsTypes });
|
|
57
|
-
const stringified = JSON.stringify(data.manifest);
|
|
58
|
-
const formatted = prettier_1.default.format(stringified, { parser: "json" });
|
|
59
|
-
console.log(formatted.trim());
|
|
60
|
-
}),
|
|
61
|
-
};
|
|
62
|
-
//# sourceMappingURL=recipe.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../src/commands/recipe.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAA2E;AAC3E,wDAAgC;AAEhC,iEAAyC;AACzC,+DAAuC;AAQvC,kBAAe;IACb,OAAO,EAAE,QAAQ;IACjB,WAAW,EAAE,8BAA8B;IAC3C,IAAI,EAAE;QACJ;YACE,OAAO,EAAE,wCAAwC;SAClD;KACF;IACD,OAAO,EAAE;QACP,GAAG,qBAAW;QACd,GAAG,oBAAU;QACb;YACE,IAAI,EAAE,mBAAmB;YACzB,YAAY,EAAE,KAAK;YACnB,WAAW,EAAE,yDAAyD;YACtE,IAAI,EAAE,OAAO;SACd;QACD;YACE,IAAI,EAAE,qBAAqB;YAC3B,YAAY,EAAE,KAAK;YACnB,WAAW,EAAE,uDAAuD;YACpE,IAAI,EAAE,OAAO;SACd;KACF;IACD,GAAG,EAAE,CAAO,OAAsB,EAAiB,EAAE;QACnD,MAAM,EAAE,mBAAmB,EAAE,iBAAiB,KAAc,OAAO,EAAhB,IAAI,UAAK,OAAO,EAA7D,4CAAmD,CAAU,CAAC;QACpE,MAAM,IAAI,GAAG,MAAM,IAAA,6BAAc,EAC/B,IAAA,gCAAiB,kCACZ,IAAI,KACP,MAAM,EAAE,OAAO,CAAC,GAAG,EACnB,YAAY,EAAE,OAAO,CAAC,SAAS,IAC/B,EACF,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAC3C,CAAC;QACF,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,kBAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC,CAAA;CACF,CAAC"}
|
package/bin/commands/reject.d.ts
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { DevicesPool, GateUser } from "@ledgerhq/vault-common";
|
|
2
|
-
import { GateGenericRequest, UserWithDevice } from "@ledgerhq/vault-common";
|
|
3
|
-
import { GateOptions } from "../types";
|
|
4
|
-
export interface RejectOptions extends GateOptions {
|
|
5
|
-
device: number | "lam";
|
|
6
|
-
requestID?: number;
|
|
7
|
-
all?: boolean;
|
|
8
|
-
apiV2User?: string;
|
|
9
|
-
}
|
|
10
|
-
declare const _default: {
|
|
11
|
-
command: string;
|
|
12
|
-
description: string;
|
|
13
|
-
options: ({
|
|
14
|
-
name: string;
|
|
15
|
-
type: BooleanConstructor;
|
|
16
|
-
description: string;
|
|
17
|
-
} | {
|
|
18
|
-
name: string;
|
|
19
|
-
description: string;
|
|
20
|
-
type: StringConstructor;
|
|
21
|
-
} | {
|
|
22
|
-
name: string;
|
|
23
|
-
description: string;
|
|
24
|
-
type: NumberConstructor;
|
|
25
|
-
defaultValue: number;
|
|
26
|
-
} | {
|
|
27
|
-
name: string;
|
|
28
|
-
description: string;
|
|
29
|
-
type: NumberConstructor;
|
|
30
|
-
})[];
|
|
31
|
-
run: (options: RejectOptions) => Promise<void>;
|
|
32
|
-
};
|
|
33
|
-
export default _default;
|
|
34
|
-
export declare const findApprover: (request: GateGenericRequest) => GateUser | undefined;
|
|
35
|
-
export declare const rejectTransactionRequest: ({ pool, request, usersWithDevice, approver, }: {
|
|
36
|
-
pool: DevicesPool;
|
|
37
|
-
request: GateGenericRequest;
|
|
38
|
-
usersWithDevice: UserWithDevice[];
|
|
39
|
-
approver?: GateUser | undefined;
|
|
40
|
-
}) => Promise<void>;
|
|
41
|
-
export declare const rejectTransactionRequestAPIV2: ({ pool, gate, apiGateway, requestID, apiV2UserName, skipDecodeChallenge, }: {
|
|
42
|
-
pool: DevicesPool;
|
|
43
|
-
gate: string;
|
|
44
|
-
apiGateway: string;
|
|
45
|
-
requestID: number;
|
|
46
|
-
apiV2UserName: string;
|
|
47
|
-
skipDecodeChallenge: boolean;
|
|
48
|
-
}) => Promise<void>;
|
|
49
|
-
//# sourceMappingURL=reject.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reject.d.ts","sourceRoot":"","sources":["../../src/commands/reject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAqC,MAAM,wBAAwB,CAAC;AAClG,OAAO,EAEL,kBAAkB,EAClB,cAAc,EAEf,MAAM,wBAAwB,CAAC;AAQhC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;;;;;;;;;;;;;;;;;;;;;;;;AA2GD,wBAyBE;AAEF,eAAO,MAAM,YAAY,YAAa,kBAAkB,KAAG,QAAQ,GAAG,SAerE,CAAC;AAEF,eAAO,MAAM,wBAAwB;UAM7B,WAAW;aACR,kBAAkB;qBACV,cAAc,EAAE;;MAE/B,QAAQ,IAAI,CAWf,CAAC;AAEF,eAAO,MAAM,6BAA6B;UAQlC,WAAW;UACX,MAAM;gBACA,MAAM;eACP,MAAM;mBACF,MAAM;yBACA,OAAO;MAC1B,QAAQ,IAAI,CAqBf,CAAC"}
|