@ledgerhq/live-common 22.2.0-next.0 → 22.2.0-next.1
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/lib/families/ethereum/nft.unit.test.d.ts.map +1 -1
- package/lib/families/ethereum/nft.unit.test.js +83 -0
- package/lib/families/ethereum/nft.unit.test.js.map +1 -1
- package/lib/nft/support.d.ts +7 -4
- package/lib/nft/support.d.ts.map +1 -1
- package/lib/nft/support.js +4 -4
- package/lib/nft/support.js.map +1 -1
- package/lib/types/nft.d.ts +2 -2
- package/lib/types/nft.d.ts.map +1 -1
- package/lib/types/operation.d.ts +3 -3
- package/lib/types/operation.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/families/ethereum/nft.unit.test.ts +110 -1
- package/src/nft/support.ts +19 -11
- package/src/types/nft.ts +2 -2
- package/src/types/operation.ts +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nft.unit.test.d.ts","sourceRoot":"","sources":["../../../src/families/ethereum/nft.unit.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nft.unit.test.d.ts","sourceRoot":"","sources":["../../../src/families/ethereum/nft.unit.test.ts"],"names":[],"mappings":"AACA,OAAO,oCAAoC,CAAC"}
|
|
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
exports.__esModule = true;
|
|
6
|
+
var cryptoassets_1 = require("@ledgerhq/cryptoassets");
|
|
6
7
|
require("../../__tests__/test-helpers/setup");
|
|
7
8
|
var bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
8
9
|
var account_1 = require("../../account");
|
|
@@ -126,4 +127,86 @@ describe("OpenSea lazy minting bs", function () {
|
|
|
126
127
|
expect(nfts[0].amount.toNumber()).toBe(1);
|
|
127
128
|
});
|
|
128
129
|
});
|
|
130
|
+
describe("nft helpers", function () {
|
|
131
|
+
describe("isNftTransaction ", function () {
|
|
132
|
+
test("should return that it's an NFT transaction", function () {
|
|
133
|
+
var transaction = {
|
|
134
|
+
family: "ethereum",
|
|
135
|
+
mode: "erc721.transfer",
|
|
136
|
+
amount: new bignumber_js_1["default"](0),
|
|
137
|
+
recipient: "",
|
|
138
|
+
gasPrice: null,
|
|
139
|
+
userGasLimit: null,
|
|
140
|
+
estimatedGasLimit: null,
|
|
141
|
+
feeCustomUnit: null,
|
|
142
|
+
networkInfo: null
|
|
143
|
+
};
|
|
144
|
+
expect((0, nft_1.isNftTransaction)(transaction)).toEqual(true);
|
|
145
|
+
});
|
|
146
|
+
test("should return that it's not an NFT transaction", function () {
|
|
147
|
+
var transaction = {
|
|
148
|
+
family: "ethereum",
|
|
149
|
+
mode: "compound.supply",
|
|
150
|
+
amount: new bignumber_js_1["default"](0),
|
|
151
|
+
recipient: "",
|
|
152
|
+
gasPrice: null,
|
|
153
|
+
userGasLimit: null,
|
|
154
|
+
estimatedGasLimit: null,
|
|
155
|
+
feeCustomUnit: null,
|
|
156
|
+
networkInfo: null
|
|
157
|
+
};
|
|
158
|
+
expect((0, nft_1.isNftTransaction)(transaction)).toEqual(false);
|
|
159
|
+
});
|
|
160
|
+
test("should not throw with null or undefined", function () {
|
|
161
|
+
expect((0, nft_1.isNftTransaction)(null)).toEqual(false);
|
|
162
|
+
expect((0, nft_1.isNftTransaction)(undefined)).toEqual(false);
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
describe("isNFTActive", function () {
|
|
166
|
+
test("should return that's it's activated for ethereum", function () {
|
|
167
|
+
var currency = (0, cryptoassets_1.findCryptoCurrencyByTicker)("ETH");
|
|
168
|
+
expect((0, nft_1.isNFTActive)(currency)).toBe(true);
|
|
169
|
+
});
|
|
170
|
+
test("should return that's it's not activated for ripple", function () {
|
|
171
|
+
var currency = (0, cryptoassets_1.findCryptoCurrencyByTicker)("XRP");
|
|
172
|
+
expect((0, nft_1.isNFTActive)(currency)).toBe(false);
|
|
173
|
+
});
|
|
174
|
+
test("should not throw with null or undefined", function () {
|
|
175
|
+
expect((0, nft_1.isNFTActive)(null)).toBe(false);
|
|
176
|
+
expect((0, nft_1.isNFTActive)(undefined)).toBe(false);
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
describe("getNftCapabilities", function () {
|
|
180
|
+
test("should return the capabilities of an NFT ERC1155", function () {
|
|
181
|
+
var nft = {
|
|
182
|
+
id: "",
|
|
183
|
+
contract: "",
|
|
184
|
+
tokenId: "",
|
|
185
|
+
amount: new bignumber_js_1["default"](0),
|
|
186
|
+
currencyId: "ethereum",
|
|
187
|
+
standard: "ERC1155"
|
|
188
|
+
};
|
|
189
|
+
expect((0, nft_1.getNftCapabilities)(nft)).toEqual(expect.objectContaining({
|
|
190
|
+
hasQuantity: true
|
|
191
|
+
}));
|
|
192
|
+
});
|
|
193
|
+
test("should return the capabilities of an NFT ERC721", function () {
|
|
194
|
+
var nft = {
|
|
195
|
+
id: "",
|
|
196
|
+
contract: "",
|
|
197
|
+
tokenId: "",
|
|
198
|
+
amount: new bignumber_js_1["default"](0),
|
|
199
|
+
currencyId: "ethereum",
|
|
200
|
+
standard: "ERC721"
|
|
201
|
+
};
|
|
202
|
+
expect((0, nft_1.getNftCapabilities)(nft)).toEqual(expect.objectContaining({
|
|
203
|
+
hasQuantity: false
|
|
204
|
+
}));
|
|
205
|
+
});
|
|
206
|
+
test("should not throw with null or undefined", function () {
|
|
207
|
+
expect((0, nft_1.getNftCapabilities)(null)).toMatchObject({});
|
|
208
|
+
expect((0, nft_1.getNftCapabilities)(undefined)).toMatchObject({});
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
});
|
|
129
212
|
//# sourceMappingURL=nft.unit.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nft.unit.test.js","sourceRoot":"","sources":["../../../src/families/ethereum/nft.unit.test.ts"],"names":[],"mappings":";;;;;AAAA,8CAA4C;AAC5C,8DAAqC;AACrC,yCAA0D;AAG1D,oDAAmD;AACnD,
|
|
1
|
+
{"version":3,"file":"nft.unit.test.js","sourceRoot":"","sources":["../../../src/families/ethereum/nft.unit.test.ts"],"names":[],"mappings":"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"}
|
package/lib/nft/support.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import { Transaction, CryptoCurrency, ProtoNFT } from "../types";
|
|
2
|
-
export declare const isNftTransaction: (transaction: Transaction) => boolean;
|
|
3
|
-
export declare function isNFTActive(currency: CryptoCurrency): boolean;
|
|
4
|
-
|
|
1
|
+
import { Transaction, CryptoCurrency, ProtoNFT, NFTStandard } from "../types";
|
|
2
|
+
export declare const isNftTransaction: (transaction: Transaction | undefined | null) => boolean;
|
|
3
|
+
export declare function isNFTActive(currency: CryptoCurrency | undefined | null): boolean;
|
|
4
|
+
declare const nftCapabilities: Record<string, NFTStandard[]>;
|
|
5
|
+
declare type NFTCapabilty = keyof typeof nftCapabilities;
|
|
6
|
+
export declare const getNftCapabilities: (nft: ProtoNFT | undefined | null) => Record<NFTCapabilty, boolean>;
|
|
7
|
+
export {};
|
|
5
8
|
//# sourceMappingURL=support.d.ts.map
|
package/lib/nft/support.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"support.d.ts","sourceRoot":"","sources":["../../src/nft/support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"support.d.ts","sourceRoot":"","sources":["../../src/nft/support.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG9E,eAAO,MAAM,gBAAgB,gBACd,WAAW,GAAG,SAAS,GAAG,IAAI,KAC1C,OAMF,CAAC;AAEF,wBAAgB,WAAW,CACzB,QAAQ,EAAE,cAAc,GAAG,SAAS,GAAG,IAAI,GAC1C,OAAO,CAET;AAED,QAAA,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAElD,CAAC;AAEF,aAAK,YAAY,GAAG,MAAM,OAAO,eAAe,CAAC;AAEjD,eAAO,MAAM,kBAAkB,QACxB,QAAQ,GAAG,SAAS,GAAG,IAAI,KAC/B,OAAO,YAAY,EAAE,OAAO,CAO5B,CAAC"}
|
package/lib/nft/support.js
CHANGED
|
@@ -30,14 +30,14 @@ exports.__esModule = true;
|
|
|
30
30
|
exports.getNftCapabilities = exports.isNFTActive = exports.isNftTransaction = void 0;
|
|
31
31
|
var env_1 = require("../env");
|
|
32
32
|
var isNftTransaction = function (transaction) {
|
|
33
|
-
if (transaction.family === "ethereum") {
|
|
34
|
-
return ["erc721.transfer", "erc1155.transfer"].includes(transaction.mode);
|
|
33
|
+
if ((transaction === null || transaction === void 0 ? void 0 : transaction.family) === "ethereum") {
|
|
34
|
+
return ["erc721.transfer", "erc1155.transfer"].includes(transaction === null || transaction === void 0 ? void 0 : transaction.mode);
|
|
35
35
|
}
|
|
36
36
|
return false;
|
|
37
37
|
};
|
|
38
38
|
exports.isNftTransaction = isNftTransaction;
|
|
39
39
|
function isNFTActive(currency) {
|
|
40
|
-
return (0, env_1.getEnv)("NFT_CURRENCIES").split(",").includes(currency.id);
|
|
40
|
+
return (0, env_1.getEnv)("NFT_CURRENCIES").split(",").includes(currency === null || currency === void 0 ? void 0 : currency.id);
|
|
41
41
|
}
|
|
42
42
|
exports.isNFTActive = isNFTActive;
|
|
43
43
|
var nftCapabilities = {
|
|
@@ -47,7 +47,7 @@ var getNftCapabilities = function (nft) {
|
|
|
47
47
|
return Object.entries(nftCapabilities).reduce(function (acc, _a) {
|
|
48
48
|
var _b;
|
|
49
49
|
var _c = __read(_a, 2), capability = _c[0], standards = _c[1];
|
|
50
|
-
return (__assign(__assign({}, acc), (_b = {}, _b[capability] = standards.includes(nft.standard), _b)));
|
|
50
|
+
return (__assign(__assign({}, acc), (_b = {}, _b[capability] = (nft === null || nft === void 0 ? void 0 : nft.standard) ? standards.includes(nft.standard) : false, _b)));
|
|
51
51
|
}, {});
|
|
52
52
|
};
|
|
53
53
|
exports.getNftCapabilities = getNftCapabilities;
|
package/lib/nft/support.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"support.js","sourceRoot":"","sources":["../../src/nft/support.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,8BAAgC;AAEzB,IAAM,gBAAgB,GAAG,
|
|
1
|
+
{"version":3,"file":"support.js","sourceRoot":"","sources":["../../src/nft/support.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,8BAAgC;AAEzB,IAAM,gBAAgB,GAAG,UAC9B,WAA2C;IAE3C,IAAI,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,MAAK,UAAU,EAAE;QACtC,OAAO,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,QAAQ,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,CAAC,CAAC;KAC5E;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AARW,QAAA,gBAAgB,oBAQ3B;AAEF,SAAgB,WAAW,CACzB,QAA2C;IAE3C,OAAO,IAAA,YAAM,EAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,EAAE,CAAC,CAAC;AACpE,CAAC;AAJD,kCAIC;AAED,IAAM,eAAe,GAAkC;IACrD,WAAW,EAAE,CAAC,SAAS,CAAC;CACzB,CAAC;AAIK,IAAM,kBAAkB,GAAG,UAChC,GAAgC;IAEhC,OAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAqC,CAAC,MAAM,CACzE,UAAC,GAAG,EAAE,EAAuB;;YAAvB,KAAA,aAAuB,EAAtB,UAAU,QAAA,EAAE,SAAS,QAAA;QAAM,OAAA,uBAC7B,GAAG,gBACL,UAAU,IAAG,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,EAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,OACtE;IAHgC,CAGhC,EACF,EAAmC,CACpC;AAND,CAMC,CAAC;AATS,QAAA,kBAAkB,sBAS3B"}
|
package/lib/types/nft.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type BigNumber from "bignumber.js";
|
|
2
2
|
import { CryptoCurrencyIds } from ".";
|
|
3
|
-
export declare type
|
|
3
|
+
export declare type NFTStandard = "ERC721" | "ERC1155";
|
|
4
4
|
export declare type NFTMediaSizes = "preview" | "big" | "original";
|
|
5
5
|
export declare type NFTMedias = Record<NFTMediaSizes, {
|
|
6
6
|
uri: string;
|
|
@@ -22,7 +22,7 @@ export declare type ProtoNFT = {
|
|
|
22
22
|
tokenId: string;
|
|
23
23
|
amount: BigNumber;
|
|
24
24
|
contract: string;
|
|
25
|
-
standard:
|
|
25
|
+
standard: NFTStandard;
|
|
26
26
|
currencyId: CryptoCurrencyIds;
|
|
27
27
|
metadata?: NFTMetadata;
|
|
28
28
|
};
|
package/lib/types/nft.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nft.d.ts","sourceRoot":"","sources":["../../src/types/nft.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,GAAG,CAAC;AAEtC,oBAAY,
|
|
1
|
+
{"version":3,"file":"nft.d.ts","sourceRoot":"","sources":["../../src/types/nft.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,GAAG,CAAC;AAEtC,oBAAY,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE/C,oBAAY,aAAa,GAAG,SAAS,GAAG,KAAK,GAAG,UAAU,CAAC;AAE3D,oBAAY,SAAS,GAAG,MAAM,CAC5B,aAAa,EACb;IACE,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB,CACF,CAAC;AAEF,oBAAY,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,SAAS,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,KAAK,EAAE,MAAM,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;CAClD,CAAC;AAEF,oBAAY,qBAAqB,GAAG;IAClC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,oBAAY,QAAQ,GAAG;IAErB,EAAE,EAAE,MAAM,CAAC;IAEX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB,CAAC;AAEF,oBAAY,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG;IACnD,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oBAAY,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG;IAC7C,QAAQ,EAAE,WAAW,CAAC;CACvB,CAAC;AAEF,oBAAY,yBAAyB,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AAE3E,oBAAY,mBAAmB,GAAG;IAChC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACxB,MAAM,CAAC,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,MAAM,EAAE,SAAS,CAAC;QAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACnD,KAAK,EAAE,MAAM,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;KAClD,GAAG,IAAI,CAAC;CACV,CAAC;AAEF,oBAAY,6BAA6B,GAAG;IAC1C,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACxB,MAAM,CAAC,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,GAAG,IAAI,CAAC;CACV,CAAC"}
|
package/lib/types/operation.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { BigNumber } from "bignumber.js";
|
|
2
|
-
import {
|
|
2
|
+
import { NFTStandard } from "./nft";
|
|
3
3
|
export declare type OperationType = "IN" | "OUT" | "NONE" | "CREATE" | "REVEAL" | "DELEGATE" | "UNDELEGATE" | "REDELEGATE" | "REWARD" | "FEES" | "FREEZE" | "UNFREEZE" | "VOTE" | "REWARD_PAYOUT" | "BOND" | "UNBOND" | "WITHDRAW_UNBONDED" | "SET_CONTROLLER" | "SLASH" | "NOMINATE" | "CHILL" | "SUPPLY" | "REDEEM" | "APPROVE" | "OPT_IN" | "OPT_OUT" | "NFT_IN" | "NFT_OUT";
|
|
4
4
|
export declare type Operation = {
|
|
5
5
|
id: string;
|
|
@@ -13,7 +13,7 @@ export declare type Operation = {
|
|
|
13
13
|
blockHash: string | null | undefined;
|
|
14
14
|
transactionSequenceNumber?: number;
|
|
15
15
|
accountId: string;
|
|
16
|
-
standard?:
|
|
16
|
+
standard?: NFTStandard | string;
|
|
17
17
|
operator?: string;
|
|
18
18
|
contract?: string;
|
|
19
19
|
tokenId?: string;
|
|
@@ -37,7 +37,7 @@ export declare type OperationRaw = {
|
|
|
37
37
|
transactionSequenceNumber?: number;
|
|
38
38
|
accountId: string;
|
|
39
39
|
hasFailed?: boolean;
|
|
40
|
-
standard?:
|
|
40
|
+
standard?: NFTStandard | string;
|
|
41
41
|
operator?: string;
|
|
42
42
|
contract?: string;
|
|
43
43
|
tokenId?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../src/types/operation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../src/types/operation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEpC,oBAAY,aAAa,GACrB,IAAI,GACJ,KAAK,GACL,MAAM,GACN,QAAQ,GACR,QAAQ,GAER,UAAU,GACV,YAAY,GACZ,YAAY,GACZ,QAAQ,GAER,MAAM,GACN,QAAQ,GACR,UAAU,GAEV,MAAM,GACN,eAAe,GACf,MAAM,GACN,QAAQ,GACR,mBAAmB,GACnB,gBAAgB,GAChB,OAAO,GACP,UAAU,GACV,OAAO,GAEP,QAAQ,GACR,QAAQ,GACR,SAAS,GAET,QAAQ,GACR,SAAS,GAET,QAAQ,GACR,SAAS,CAAC;AACd,oBAAY,SAAS,GAAG;IAEtB,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,EAAE,MAAM,CAAC;IAKb,IAAI,EAAE,aAAa,CAAC;IAGpB,KAAK,EAAE,SAAS,CAAC;IAEjB,GAAG,EAAE,SAAS,CAAC;IAEf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IAGrB,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAEvC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAErC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC,SAAS,EAAE,MAAM,CAAC;IAGlB,QAAQ,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAEhC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,IAAI,EAAE,IAAI,CAAC;IAEX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE3B,SAAS,CAAC,EAAE,OAAO,CAAC;IAGpB,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;IAG5B,kBAAkB,CAAC,EAAE,SAAS,EAAE,CAAC;IAEjC,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;CAC7B,CAAC;AACF,oBAAY,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACvC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,QAAQ,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE3B,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAG/B,kBAAkB,CAAC,EAAE,YAAY,EAAE,CAAC;IAEpC,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;CAChC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,18 @@
|
|
|
1
|
+
import { findCryptoCurrencyByTicker } from "@ledgerhq/cryptoassets";
|
|
1
2
|
import "../../__tests__/test-helpers/setup";
|
|
2
3
|
import BigNumber from "bignumber.js";
|
|
3
4
|
import { encodeAccountId, toNFTRaw } from "../../account";
|
|
4
5
|
import { Operation } from "../../types";
|
|
5
6
|
import { ProtoNFT } from "../../types/nft";
|
|
6
7
|
import { mergeNfts } from "../../bridge/jsHelpers";
|
|
7
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
encodeNftId,
|
|
10
|
+
getNftCapabilities,
|
|
11
|
+
isNFTActive,
|
|
12
|
+
isNftTransaction,
|
|
13
|
+
nftsFromOperations,
|
|
14
|
+
} from "../../nft";
|
|
15
|
+
import { Transaction } from "./types";
|
|
8
16
|
|
|
9
17
|
describe("nft merging", () => {
|
|
10
18
|
const makeNFT = (
|
|
@@ -147,3 +155,104 @@ describe("OpenSea lazy minting bs", () => {
|
|
|
147
155
|
expect(nfts[0].amount.toNumber()).toBe(1);
|
|
148
156
|
});
|
|
149
157
|
});
|
|
158
|
+
|
|
159
|
+
describe("nft helpers", () => {
|
|
160
|
+
describe("isNftTransaction ", () => {
|
|
161
|
+
test("should return that it's an NFT transaction", () => {
|
|
162
|
+
const transaction: Transaction = {
|
|
163
|
+
family: "ethereum",
|
|
164
|
+
mode: "erc721.transfer",
|
|
165
|
+
amount: new BigNumber(0),
|
|
166
|
+
recipient: "",
|
|
167
|
+
gasPrice: null,
|
|
168
|
+
userGasLimit: null,
|
|
169
|
+
estimatedGasLimit: null,
|
|
170
|
+
feeCustomUnit: null,
|
|
171
|
+
networkInfo: null,
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
expect(isNftTransaction(transaction)).toEqual(true);
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
test("should return that it's not an NFT transaction", () => {
|
|
178
|
+
const transaction: Transaction = {
|
|
179
|
+
family: "ethereum",
|
|
180
|
+
mode: "compound.supply",
|
|
181
|
+
amount: new BigNumber(0),
|
|
182
|
+
recipient: "",
|
|
183
|
+
gasPrice: null,
|
|
184
|
+
userGasLimit: null,
|
|
185
|
+
estimatedGasLimit: null,
|
|
186
|
+
feeCustomUnit: null,
|
|
187
|
+
networkInfo: null,
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
expect(isNftTransaction(transaction)).toEqual(false);
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
test("should not throw with null or undefined", () => {
|
|
194
|
+
expect(isNftTransaction(null)).toEqual(false);
|
|
195
|
+
expect(isNftTransaction(undefined)).toEqual(false);
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
describe("isNFTActive", () => {
|
|
200
|
+
test("should return that's it's activated for ethereum", () => {
|
|
201
|
+
const currency = findCryptoCurrencyByTicker("ETH");
|
|
202
|
+
|
|
203
|
+
expect(isNFTActive(currency)).toBe(true);
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
test("should return that's it's not activated for ripple", () => {
|
|
207
|
+
const currency = findCryptoCurrencyByTicker("XRP");
|
|
208
|
+
|
|
209
|
+
expect(isNFTActive(currency)).toBe(false);
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
test("should not throw with null or undefined", () => {
|
|
213
|
+
expect(isNFTActive(null)).toBe(false);
|
|
214
|
+
expect(isNFTActive(undefined)).toBe(false);
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
describe("getNftCapabilities", () => {
|
|
219
|
+
test("should return the capabilities of an NFT ERC1155", () => {
|
|
220
|
+
const nft: ProtoNFT = {
|
|
221
|
+
id: "",
|
|
222
|
+
contract: "",
|
|
223
|
+
tokenId: "",
|
|
224
|
+
amount: new BigNumber(0),
|
|
225
|
+
currencyId: "ethereum",
|
|
226
|
+
standard: "ERC1155",
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
expect(getNftCapabilities(nft)).toEqual(
|
|
230
|
+
expect.objectContaining({
|
|
231
|
+
hasQuantity: true,
|
|
232
|
+
})
|
|
233
|
+
);
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
test("should return the capabilities of an NFT ERC721", () => {
|
|
237
|
+
const nft: ProtoNFT = {
|
|
238
|
+
id: "",
|
|
239
|
+
contract: "",
|
|
240
|
+
tokenId: "",
|
|
241
|
+
amount: new BigNumber(0),
|
|
242
|
+
currencyId: "ethereum",
|
|
243
|
+
standard: "ERC721",
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
expect(getNftCapabilities(nft)).toEqual(
|
|
247
|
+
expect.objectContaining({
|
|
248
|
+
hasQuantity: false,
|
|
249
|
+
})
|
|
250
|
+
);
|
|
251
|
+
});
|
|
252
|
+
|
|
253
|
+
test("should not throw with null or undefined", () => {
|
|
254
|
+
expect(getNftCapabilities(null)).toMatchObject({});
|
|
255
|
+
expect(getNftCapabilities(undefined)).toMatchObject({});
|
|
256
|
+
});
|
|
257
|
+
});
|
|
258
|
+
});
|
package/src/nft/support.ts
CHANGED
|
@@ -1,27 +1,35 @@
|
|
|
1
|
-
import { Transaction, CryptoCurrency, ProtoNFT } from "../types";
|
|
1
|
+
import { Transaction, CryptoCurrency, ProtoNFT, NFTStandard } from "../types";
|
|
2
2
|
import { getEnv } from "../env";
|
|
3
3
|
|
|
4
|
-
export const isNftTransaction = (
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
export const isNftTransaction = (
|
|
5
|
+
transaction: Transaction | undefined | null
|
|
6
|
+
): boolean => {
|
|
7
|
+
if (transaction?.family === "ethereum") {
|
|
8
|
+
return ["erc721.transfer", "erc1155.transfer"].includes(transaction?.mode);
|
|
7
9
|
}
|
|
8
10
|
|
|
9
11
|
return false;
|
|
10
12
|
};
|
|
11
13
|
|
|
12
|
-
export function isNFTActive(
|
|
13
|
-
|
|
14
|
+
export function isNFTActive(
|
|
15
|
+
currency: CryptoCurrency | undefined | null
|
|
16
|
+
): boolean {
|
|
17
|
+
return getEnv("NFT_CURRENCIES").split(",").includes(currency?.id);
|
|
14
18
|
}
|
|
15
19
|
|
|
16
|
-
const nftCapabilities = {
|
|
20
|
+
const nftCapabilities: Record<string, NFTStandard[]> = {
|
|
17
21
|
hasQuantity: ["ERC1155"],
|
|
18
22
|
};
|
|
19
23
|
|
|
20
|
-
|
|
21
|
-
|
|
24
|
+
type NFTCapabilty = keyof typeof nftCapabilities;
|
|
25
|
+
|
|
26
|
+
export const getNftCapabilities = (
|
|
27
|
+
nft: ProtoNFT | undefined | null
|
|
28
|
+
): Record<NFTCapabilty, boolean> =>
|
|
29
|
+
(Object.entries(nftCapabilities) as [NFTCapabilty, NFTStandard[]][]).reduce(
|
|
22
30
|
(acc, [capability, standards]) => ({
|
|
23
31
|
...acc,
|
|
24
|
-
[capability]: standards.includes(nft.standard),
|
|
32
|
+
[capability]: nft?.standard ? standards.includes(nft.standard) : false,
|
|
25
33
|
}),
|
|
26
|
-
{}
|
|
34
|
+
{} as Record<NFTCapabilty, boolean>
|
|
27
35
|
);
|
package/src/types/nft.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type BigNumber from "bignumber.js";
|
|
2
2
|
import { CryptoCurrencyIds } from ".";
|
|
3
3
|
|
|
4
|
-
export type
|
|
4
|
+
export type NFTStandard = "ERC721" | "ERC1155";
|
|
5
5
|
|
|
6
6
|
export type NFTMediaSizes = "preview" | "big" | "original";
|
|
7
7
|
|
|
@@ -33,7 +33,7 @@ export type ProtoNFT = {
|
|
|
33
33
|
tokenId: string;
|
|
34
34
|
amount: BigNumber;
|
|
35
35
|
contract: string;
|
|
36
|
-
standard:
|
|
36
|
+
standard: NFTStandard;
|
|
37
37
|
currencyId: CryptoCurrencyIds;
|
|
38
38
|
metadata?: NFTMetadata;
|
|
39
39
|
};
|
package/src/types/operation.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { BigNumber } from "bignumber.js";
|
|
2
|
-
import {
|
|
2
|
+
import { NFTStandard } from "./nft";
|
|
3
3
|
|
|
4
4
|
export type OperationType =
|
|
5
5
|
| "IN"
|
|
@@ -65,7 +65,7 @@ export type Operation = {
|
|
|
65
65
|
accountId: string;
|
|
66
66
|
// --------------------------------------------- properties related to NFTs
|
|
67
67
|
// the specification used for the transaction's event
|
|
68
|
-
standard?:
|
|
68
|
+
standard?: NFTStandard | string;
|
|
69
69
|
// address of an account/contract that is approved to make the transfer
|
|
70
70
|
operator?: string;
|
|
71
71
|
// address of the contract/collection containing an NFT (tokenId)
|
|
@@ -102,7 +102,7 @@ export type OperationRaw = {
|
|
|
102
102
|
accountId: string;
|
|
103
103
|
hasFailed?: boolean;
|
|
104
104
|
// --------------------------------------------- properties related to NFTs
|
|
105
|
-
standard?:
|
|
105
|
+
standard?: NFTStandard | string;
|
|
106
106
|
operator?: string;
|
|
107
107
|
contract?: string;
|
|
108
108
|
tokenId?: string;
|