@ledgerhq/hw-app-eth 6.21.3 → 6.22.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/README.md +66 -100
  2. package/erc20.js +1 -1
  3. package/lib/Eth.d.ts +30 -33
  4. package/lib/Eth.d.ts.map +1 -1
  5. package/lib/Eth.js +282 -324
  6. package/lib/Eth.js.map +1 -1
  7. package/lib/errors.d.ts +7 -0
  8. package/lib/errors.d.ts.map +1 -0
  9. package/lib/errors.js +7 -0
  10. package/lib/errors.js.map +1 -0
  11. package/lib/services/ledger/contracts.d.ts +14 -0
  12. package/lib/services/ledger/contracts.d.ts.map +1 -0
  13. package/lib/{contracts.js → services/ledger/contracts.js} +0 -0
  14. package/lib/services/ledger/contracts.js.map +1 -0
  15. package/lib/services/ledger/erc20.d.ts +22 -0
  16. package/lib/services/ledger/erc20.d.ts.map +1 -0
  17. package/lib/{erc20.js → services/ledger/erc20.js} +0 -0
  18. package/lib/services/ledger/erc20.js.map +1 -0
  19. package/lib/services/ledger/index.d.ts +4 -0
  20. package/lib/services/ledger/index.d.ts.map +1 -0
  21. package/lib/services/ledger/index.js +191 -0
  22. package/lib/services/ledger/index.js.map +1 -0
  23. package/lib/services/ledger/loadConfig.d.ts +3 -0
  24. package/lib/services/ledger/loadConfig.d.ts.map +1 -0
  25. package/lib/{loadConfig.js → services/ledger/loadConfig.js} +0 -0
  26. package/lib/services/ledger/loadConfig.js.map +1 -0
  27. package/lib/services/ledger/nfts.d.ts +10 -0
  28. package/lib/services/ledger/nfts.d.ts.map +1 -0
  29. package/lib/{nfts.js → services/ledger/nfts.js} +10 -10
  30. package/lib/services/ledger/nfts.js.map +1 -0
  31. package/lib/services/types.d.ts +27 -0
  32. package/lib/services/types.d.ts.map +1 -0
  33. package/lib/services/types.js +3 -0
  34. package/lib/services/types.js.map +1 -0
  35. package/lib/utils.d.ts +8 -27
  36. package/lib/utils.d.ts.map +1 -1
  37. package/lib/utils.js +68 -68
  38. package/lib/utils.js.map +1 -1
  39. package/lib-es/Eth.d.ts +30 -33
  40. package/lib-es/Eth.d.ts.map +1 -1
  41. package/lib-es/Eth.js +271 -316
  42. package/lib-es/Eth.js.map +1 -1
  43. package/lib-es/errors.d.ts +7 -0
  44. package/lib-es/errors.d.ts.map +1 -0
  45. package/lib-es/errors.js +4 -0
  46. package/lib-es/errors.js.map +1 -0
  47. package/{lib → lib-es/services/ledger}/contracts.d.ts +1 -1
  48. package/lib-es/services/ledger/contracts.d.ts.map +1 -0
  49. package/lib-es/services/ledger/contracts.js +96 -0
  50. package/lib-es/services/ledger/contracts.js.map +1 -0
  51. package/{lib → lib-es/services/ledger}/erc20.d.ts +0 -0
  52. package/lib-es/services/ledger/erc20.d.ts.map +1 -0
  53. package/lib-es/services/ledger/erc20.js +64 -0
  54. package/lib-es/services/ledger/erc20.js.map +1 -0
  55. package/lib-es/services/ledger/index.d.ts +4 -0
  56. package/lib-es/services/ledger/index.d.ts.map +1 -0
  57. package/lib-es/services/ledger/index.js +189 -0
  58. package/lib-es/services/ledger/index.js.map +1 -0
  59. package/lib-es/services/ledger/loadConfig.d.ts +3 -0
  60. package/lib-es/services/ledger/loadConfig.d.ts.map +1 -0
  61. package/lib-es/services/ledger/loadConfig.js +20 -0
  62. package/lib-es/services/ledger/loadConfig.js.map +1 -0
  63. package/{lib → lib-es/services/ledger}/nfts.d.ts +2 -3
  64. package/lib-es/services/ledger/nfts.d.ts.map +1 -0
  65. package/lib-es/services/ledger/nfts.js +94 -0
  66. package/lib-es/services/ledger/nfts.js.map +1 -0
  67. package/lib-es/services/types.d.ts +27 -0
  68. package/lib-es/services/types.d.ts.map +1 -0
  69. package/lib-es/services/types.js +2 -0
  70. package/lib-es/services/types.js.map +1 -0
  71. package/lib-es/utils.d.ts +8 -27
  72. package/lib-es/utils.d.ts.map +1 -1
  73. package/lib-es/utils.js +66 -61
  74. package/lib-es/utils.js.map +1 -1
  75. package/package.json +3 -3
  76. package/src/Eth.ts +139 -261
  77. package/src/errors.ts +8 -0
  78. package/src/{contracts.ts → services/ledger/contracts.ts} +1 -1
  79. package/src/{erc20.ts → services/ledger/erc20.ts} +0 -0
  80. package/src/services/ledger/index.ts +125 -0
  81. package/src/services/ledger/loadConfig.ts +14 -0
  82. package/src/{nfts.ts → services/ledger/nfts.ts} +11 -12
  83. package/src/services/types.ts +42 -0
  84. package/src/utils.ts +72 -94
  85. package/tests/Eth.test.ts +2 -2
  86. package/lib/contracts.d.ts.map +0 -1
  87. package/lib/contracts.js.map +0 -1
  88. package/lib/erc20.d.ts.map +0 -1
  89. package/lib/erc20.js.map +0 -1
  90. package/lib/loadConfig.d.ts +0 -7
  91. package/lib/loadConfig.d.ts.map +0 -1
  92. package/lib/loadConfig.js.map +0 -1
  93. package/lib/nfts.d.ts.map +0 -1
  94. package/lib/nfts.js.map +0 -1
  95. package/src/loadConfig.ts +0 -23
@@ -1,18 +1,23 @@
1
1
  import axios from "axios";
2
2
  import { getLoadConfig } from "./loadConfig";
3
- import type { LoadConfig } from "./loadConfig";
4
- import { log } from "@ledgerhq/logs";
3
+ import type { LoadConfig } from "../types";
5
4
 
6
5
  type NftInfo = {
7
6
  contractAddress: string;
8
7
  collectionName: string;
9
- data: Buffer;
8
+ data: string;
10
9
  };
11
10
 
12
11
  type BackendResponse = {
13
12
  payload: string;
14
13
  };
15
14
 
15
+ function axiosErrorHandling(e) {
16
+ if (!e || !e.status) throw e;
17
+ if (e.status === 404) return null;
18
+ throw e;
19
+ }
20
+
16
21
  export const getNFTInfo = async (
17
22
  contractAddress: string,
18
23
  chainId: number,
@@ -24,10 +29,7 @@ export const getNFTInfo = async (
24
29
  const response = await axios
25
30
  .get<BackendResponse>(url)
26
31
  .then((r) => r.data)
27
- .catch((e) => {
28
- log("error", "could not fetch from " + url + ": " + String(e));
29
- return null;
30
- });
32
+ .catch(axiosErrorHandling);
31
33
  if (!response) return;
32
34
 
33
35
  const payload = response["payload"];
@@ -36,7 +38,7 @@ export const getNFTInfo = async (
36
38
  return {
37
39
  contractAddress: contractAddress,
38
40
  collectionName: collectionName,
39
- data: Buffer.from(payload, "hex"),
41
+ data: payload,
40
42
  };
41
43
  };
42
44
 
@@ -53,10 +55,7 @@ export const loadNftPlugin = async (
53
55
  const response = await axios
54
56
  .get<BackendResponse>(url)
55
57
  .then((r) => r.data)
56
- .catch((e) => {
57
- log("error", "could not fetch from " + url + ": " + String(e));
58
- return null;
59
- });
58
+ .catch(axiosErrorHandling);
60
59
  if (!response) return;
61
60
 
62
61
  const payload = response["payload"];
@@ -0,0 +1,42 @@
1
+ export type LedgerEthTransactionResolution = {
2
+ // device serialized data that contains ERC20 data (hex format)
3
+ erc20Tokens: Array<string>;
4
+ // device serialized data that contains NFT data (hex format)
5
+ nfts: Array<string>;
6
+ // device serialized data that contains external plugin data (hex format)
7
+ externalPlugin: Array<{ payload: string; signature: string }>;
8
+ // device serialized data that contains plugin data (hex format)
9
+ plugin: Array<string>;
10
+ };
11
+
12
+ export type LoadConfig = {
13
+ nftExplorerBaseURL?: string | null;
14
+ // example of payload https://cdn.live.ledger.com/plugins/ethereum/1.json
15
+ // fetch against an api (base url is an api that hosts /plugins/ethereum/${chainId}.json )
16
+ // set to null will disable it
17
+ pluginBaseURL?: string | null;
18
+ // provide manually some extra plugins to add for the resolution (e.g. for dev purpose)
19
+ // object will be merged with the returned value of the Ledger cdn payload
20
+ extraPlugins?: any | null;
21
+ };
22
+
23
+ /**
24
+ * Allows to configure precisely what the service need to resolve.
25
+ * for instance you can set nft:true if you need clear signing on NFTs. If you set it and it is not a NFT transaction, it should still work but will do a useless service resolution.
26
+ */
27
+ export type ResolutionConfig = {
28
+ // NFT resolution service
29
+ nft?: boolean;
30
+ // external plugins resolution service (e.G. LIDO)
31
+ externalPlugins?: boolean;
32
+ // ERC20 resolution service (to clear sign erc20 transfers & other actions)
33
+ erc20?: boolean;
34
+ };
35
+
36
+ export type LedgerEthTransactionService = {
37
+ resolveTransaction: (
38
+ rawTxHex: string,
39
+ loadConfig: LoadConfig,
40
+ resolutionConfig: ResolutionConfig
41
+ ) => Promise<LedgerEthTransactionResolution>;
42
+ };
package/src/utils.ts CHANGED
@@ -1,104 +1,82 @@
1
- /********************************************************************************
2
- * Ledger Node JS API
3
- * (c) 2016-2017 Ledger
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- ********************************************************************************/
17
- type Defer<T> = {
18
- promise: Promise<T>;
19
- resolve: (arg0: T) => void;
20
- reject: (arg0: any) => void;
21
- };
22
- export function defer<T>(): Defer<T> {
23
- let resolve, reject;
24
- const promise = new Promise<T>(function (success, failure) {
25
- resolve = success;
26
- reject = failure;
27
- });
28
- if (!resolve || !reject) throw "defer() error"; // this never happens and is just to make flow happy
1
+ import { ethers } from "ethers";
2
+ import { BigNumber } from "bignumber.js";
29
3
 
30
- return {
31
- promise,
32
- resolve,
33
- reject,
34
- };
35
- }
36
- // TODO use bip32-path library
37
- export function splitPath(path: string): number[] {
38
- const result: number[] = [];
39
- const components = path.split("/");
40
- components.forEach((element) => {
41
- let number = parseInt(element, 10);
4
+ export function decodeTxInfo(rawTx: Buffer) {
5
+ const VALID_TYPES = [1, 2];
6
+ const txType = VALID_TYPES.includes(rawTx[0]) ? rawTx[0] : null;
7
+ const rlpData = txType === null ? rawTx : rawTx.slice(1);
8
+ const rlpTx = ethers.utils.RLP.decode(rlpData).map((hex) =>
9
+ Buffer.from(hex.slice(2), "hex")
10
+ );
11
+ let chainIdTruncated = 0;
12
+ const rlpDecoded = ethers.utils.RLP.decode(rlpData);
42
13
 
43
- if (isNaN(number)) {
44
- return; // FIXME shouldn't it throws instead?
45
- }
14
+ let decodedTx;
15
+ if (txType === 2) {
16
+ // EIP1559
17
+ decodedTx = {
18
+ data: rlpDecoded[7],
19
+ to: rlpDecoded[5],
20
+ chainId: rlpTx[0],
21
+ };
22
+ } else if (txType === 1) {
23
+ // EIP2930
24
+ decodedTx = {
25
+ data: rlpDecoded[6],
26
+ to: rlpDecoded[4],
27
+ chainId: rlpTx[0],
28
+ };
29
+ } else {
30
+ // Legacy tx
31
+ decodedTx = {
32
+ data: rlpDecoded[5],
33
+ to: rlpDecoded[3],
34
+ // Default to 1 for non EIP 155 txs
35
+ chainId: rlpTx.length > 6 ? rlpTx[6] : Buffer.from("0x01", "hex"),
36
+ };
37
+ }
46
38
 
47
- if (element.length > 1 && element[element.length - 1] === "'") {
48
- number += 0x80000000;
39
+ const chainIdSrc = decodedTx.chainId;
40
+ let chainId = new BigNumber(0);
41
+ if (chainIdSrc) {
42
+ // Using BigNumber because chainID could be any uint256.
43
+ chainId = new BigNumber(chainIdSrc.toString("hex"), 16);
44
+ const chainIdTruncatedBuf = Buffer.alloc(4);
45
+ if (chainIdSrc.length > 4) {
46
+ chainIdSrc.copy(chainIdTruncatedBuf);
47
+ } else {
48
+ chainIdSrc.copy(chainIdTruncatedBuf, 4 - chainIdSrc.length);
49
49
  }
50
-
51
- result.push(number);
52
- });
53
- return result;
54
- }
55
- // TODO use async await
56
- export function eachSeries<A>(
57
- arr: A[],
58
- fun: (arg0: A) => Promise<any>
59
- ): Promise<any> {
60
- return arr.reduce((p, e) => p.then(() => fun(e)), Promise.resolve());
61
- }
62
- export function foreach<T, A>(
63
- arr: T[],
64
- callback: (arg0: T, arg1: number) => Promise<A>
65
- ): Promise<A[]> {
66
- function iterate(index, array, result) {
67
- if (index >= array.length) {
68
- return result;
69
- } else
70
- return callback(array[index], index).then(function (res) {
71
- result.push(res);
72
- return iterate(index + 1, array, result);
73
- });
50
+ chainIdTruncated = chainIdTruncatedBuf.readUInt32BE(0);
74
51
  }
75
52
 
76
- return Promise.resolve().then(() => iterate(0, arr, []));
77
- }
78
- export function doIf(
79
- condition: boolean,
80
- callback: () => any | Promise<any>
81
- ): Promise<void> {
82
- return Promise.resolve().then(() => {
83
- if (condition) {
84
- return callback();
85
- }
86
- });
87
- }
88
- export function asyncWhile<T>(
89
- predicate: () => boolean,
90
- callback: () => Promise<T>
91
- ): Promise<Array<T>> {
92
- function iterate(result) {
93
- if (!predicate()) {
94
- return result;
95
- } else {
96
- return callback().then((res) => {
97
- result.push(res);
98
- return iterate(result);
99
- });
53
+ let vrsOffset = 0;
54
+ if (txType === null && rlpTx.length > 6) {
55
+ const rlpVrs = Buffer.from(
56
+ ethers.utils.RLP.encode(rlpTx.slice(-3)).slice(2),
57
+ "hex"
58
+ );
59
+
60
+ vrsOffset = rawTx.length - (rlpVrs.length - 1);
61
+
62
+ // First byte > 0xf7 means the length of the list length doesn't fit in a single byte.
63
+ if (rlpVrs[0] > 0xf7) {
64
+ // Increment vrsOffset to account for that extra byte.
65
+ vrsOffset++;
66
+
67
+ // Compute size of the list length.
68
+ const sizeOfListLen = rlpVrs[0] - 0xf7;
69
+
70
+ // Increase rlpOffset by the size of the list length.
71
+ vrsOffset += sizeOfListLen - 1;
100
72
  }
101
73
  }
102
74
 
103
- return Promise.resolve([]).then(iterate);
75
+ return {
76
+ decodedTx,
77
+ txType,
78
+ chainId,
79
+ chainIdTruncated,
80
+ vrsOffset,
81
+ };
104
82
  }
package/tests/Eth.test.ts CHANGED
@@ -3,9 +3,9 @@ import {
3
3
  RecordStore,
4
4
  } from "@ledgerhq/hw-transport-mocker";
5
5
  import Eth from "../src/Eth";
6
- import { TokenInfo } from "../src/erc20";
6
+ import { TokenInfo } from "../src/services/ledger/erc20";
7
7
  import { BigNumber } from "bignumber.js";
8
- import { byContractAddressAndChainId } from "../src/erc20";
8
+ import { byContractAddressAndChainId } from "../src/services/ledger/erc20";
9
9
  import paraswapJSON from "./paraswap.json";
10
10
 
11
11
  test("getAppConfiguration", async () => {
@@ -1 +0,0 @@
1
- {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,aAAK,cAAc,GAAG;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,GAAG,EAAE,GAAG,CAAC;CACV,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,oBACpB,MAAM,YACb,MAAM,WACP,MAAM,kBACC,UAAU,KACzB,QAAQ,cAAc,GAAG,SAAS,CAsCpC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAA0B;AAC1B,2CAA6C;AAE7C,uCAAqC;AAUrC;;GAEG;AACI,IAAM,0BAA0B,GAAG,UACxC,eAAuB,EACvB,QAAgB,EAChB,OAAe,EACf,cAA0B;;;;;gBAEpB,KAAkC,IAAA,0BAAa,EAAC,cAAc,CAAC,EAA7D,aAAa,mBAAA,EAAE,YAAY,kBAAA,CAAmC;gBAElE,IAAI,GAAG,EAAE,CAAC;qBAEV,aAAa,EAAb,wBAAa;gBACT,QAAM,UAAG,aAAa,2BAAwB,CAAC;gBAC9C,qBAAM,kBAAK;yBACf,GAAG,CAAC,UAAG,aAAa,2BAAwB,CAAC;yBAC7C,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAW,EAAb,CAAa,CAAC,CAC1B,OAAK,CAAA,CAAC,UAAC,CAAC;wBACP,IAAA,UAAG,EAAC,OAAO,EAAE,uBAAuB,GAAG,KAAG,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC/D,OAAO,IAAI,CAAC;oBACd,CAAC,CAAC,EAAA;;gBANJ,IAAI,GAAG,SAMH,CAAC;;;gBAGP,IAAI,YAAY,EAAE;oBAChB,IAAI,yBAAQ,IAAI,GAAK,YAAY,CAAE,CAAC;iBACrC;gBAED,IAAI,CAAC,IAAI;oBAAE,sBAAO;gBAEZ,UAAU,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACpC,iBAAiB,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;gBAExD,IAAI,iBAAiB,IAAI,IAAI,EAAE;oBACvB,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBAElD,IAAI,UAAU,IAAI,iBAAiB,EAAE;wBACnC,sBAAO;gCACL,OAAO,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC;gCACzD,SAAS,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC;gCACrD,MAAM,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC;gCAC/C,eAAe,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC;gCACjE,GAAG,EAAE,iBAAiB,CAAC,KAAK,CAAC;6BAC9B,EAAC;qBACH;iBACF;;;;KACF,CAAC;AA3CW,QAAA,0BAA0B,8BA2CrC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"erc20.d.ts","sourceRoot":"","sources":["../src/erc20.ts"],"names":[],"mappings":";AAEA;;GAEG;AACH,eAAO,MAAM,2BAA2B,aAC5B,MAAM,WACP,MAAM,KACd,SAAS,GAAG,IAAI,GAAG,SAC4C,CAAC;AAEnE;;GAEG;AACH,eAAO,MAAM,IAAI,QAAO,SAAS,EAAkB,CAAC;AACpD,oBAAY,SAAS,GAAG;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AACF,oBAAY,GAAG,GAAG;IAChB,oBAAoB,EAAE,CACpB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,KACP,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,IAAI,EAAE,MAAM,SAAS,EAAE,CAAC;CACzB,CAAC"}
package/lib/erc20.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"erc20.js","sourceRoot":"","sources":["../src/erc20.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- export declare type LoadConfig = {
2
- nftExplorerBaseURL?: string | null;
3
- pluginBaseURL?: string | null;
4
- extraPlugins?: any | null;
5
- };
6
- export declare function getLoadConfig(userLoadConfig?: LoadConfig): LoadConfig;
7
- //# sourceMappingURL=loadConfig.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loadConfig.d.ts","sourceRoot":"","sources":["../src/loadConfig.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU,GAAG;IACvB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAInC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAG9B,YAAY,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;CAC3B,CAAC;AAQF,wBAAgB,aAAa,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,UAAU,CAKrE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"loadConfig.js","sourceRoot":"","sources":["../src/loadConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAWA,IAAM,iBAAiB,GAAG;IACxB,kBAAkB,EAAE,IAAI;IACxB,aAAa,EAAE,6BAA6B;IAC5C,YAAY,EAAE,IAAI;CACnB,CAAC;AAEF,SAAgB,aAAa,CAAC,cAA2B;IACvD,6BACK,iBAAiB,GACjB,cAAc,EACjB;AACJ,CAAC;AALD,sCAKC"}
package/lib/nfts.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"nfts.d.ts","sourceRoot":"","sources":["../src/nfts.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,aAAK,OAAO,GAAG;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAMF,eAAO,MAAM,UAAU,oBACJ,MAAM,WACd,MAAM,kBACC,UAAU,KACzB,QAAQ,OAAO,GAAG,SAAS,CAqB7B,CAAC;AAEF,eAAO,MAAM,aAAa,oBACP,MAAM,YACb,MAAM,WACP,MAAM,kBACC,UAAU,KACzB,QAAQ,MAAM,GAAG,SAAS,CAgB5B,CAAC"}
package/lib/nfts.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"nfts.js","sourceRoot":"","sources":["../src/nfts.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAA0B;AAC1B,2CAA6C;AAE7C,uCAAqC;AAY9B,IAAM,UAAU,GAAG,UACxB,eAAuB,EACvB,OAAe,EACf,cAA0B;;;;;gBAElB,kBAAkB,GAAK,IAAA,0BAAa,EAAC,cAAc,CAAC,mBAAlC,CAAmC;gBAC7D,IAAI,CAAC,kBAAkB;oBAAE,sBAAO;gBAC1B,GAAG,GAAG,UAAG,kBAAkB,cAAI,OAAO,wBAAc,eAAe,CAAE,CAAC;gBAC3D,qBAAM,kBAAK;yBACzB,GAAG,CAAkB,GAAG,CAAC;yBACzB,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,CACnB,OAAK,CAAA,CAAC,UAAC,CAAC;wBACP,IAAA,UAAG,EAAC,OAAO,EAAE,uBAAuB,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC/D,OAAO,IAAI,CAAC;oBACd,CAAC,CAAC,EAAA;;gBANE,QAAQ,GAAG,SAMb;gBACJ,IAAI,CAAC,QAAQ;oBAAE,sBAAO;gBAEhB,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAC9B,oBAAoB,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACnD,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC7E,sBAAO;wBACL,eAAe,EAAE,eAAe;wBAChC,cAAc,EAAE,cAAc;wBAC9B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;qBAClC,EAAC;;;KACH,CAAC;AAzBW,QAAA,UAAU,cAyBrB;AAEK,IAAM,aAAa,GAAG,UAC3B,eAAuB,EACvB,QAAgB,EAChB,OAAe,EACf,cAA0B;;;;;gBAElB,kBAAkB,GAAK,IAAA,0BAAa,EAAC,cAAc,CAAC,mBAAlC,CAAmC;gBAC7D,IAAI,CAAC,kBAAkB;oBAAE,sBAAO;gBAC1B,GAAG,GAAG,UAAG,kBAAkB,cAAI,OAAO,wBAAc,eAAe,8BAAoB,QAAQ,CAAE,CAAC;gBAEvF,qBAAM,kBAAK;yBACzB,GAAG,CAAkB,GAAG,CAAC;yBACzB,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,CACnB,OAAK,CAAA,CAAC,UAAC,CAAC;wBACP,IAAA,UAAG,EAAC,OAAO,EAAE,uBAAuB,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC/D,OAAO,IAAI,CAAC;oBACd,CAAC,CAAC,EAAA;;gBANE,QAAQ,GAAG,SAMb;gBACJ,IAAI,CAAC,QAAQ;oBAAE,sBAAO;gBAEhB,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACpC,sBAAO,OAAO,EAAC;;;KAChB,CAAC;AArBW,QAAA,aAAa,iBAqBxB"}
package/src/loadConfig.ts DELETED
@@ -1,23 +0,0 @@
1
- export type LoadConfig = {
2
- nftExplorerBaseURL?: string | null;
3
- // example of payload https://cdn.live.ledger.com/plugins/ethereum/1.json
4
- // fetch against an api (base url is an api that hosts /plugins/ethereum/${chainId}.json )
5
- // set to null will disable it
6
- pluginBaseURL?: string | null;
7
- // provide manually some extra plugins to add for the resolution (e.g. for dev purpose)
8
- // object will be merged with the returned value of the Ledger cdn payload
9
- extraPlugins?: any | null;
10
- };
11
-
12
- const defaultLoadConfig = {
13
- nftExplorerBaseURL: null, // set a value when an official production endpoint is released
14
- pluginBaseURL: "https://cdn.live.ledger.com",
15
- extraPlugins: null,
16
- };
17
-
18
- export function getLoadConfig(userLoadConfig?: LoadConfig): LoadConfig {
19
- return {
20
- ...defaultLoadConfig,
21
- ...userLoadConfig,
22
- };
23
- }