@taquito/tzip12 17.1.0-beta-RC.0 → 17.1.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/dist/lib/errors.js +44 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/taquito-tzip12.js +1 -1
- package/dist/lib/taquito-tzip12.js.map +1 -1
- package/dist/lib/tzip12-contract-abstraction.js +8 -7
- package/dist/lib/tzip12-contract-abstraction.js.map +1 -1
- package/dist/lib/version.js +2 -2
- package/dist/lib/version.js.map +1 -1
- package/dist/taquito-tzip12.es6.js +19 -13
- package/dist/taquito-tzip12.es6.js.map +1 -1
- package/dist/taquito-tzip12.umd.js +22 -17
- package/dist/taquito-tzip12.umd.js.map +1 -1
- package/dist/types/errors.d.ts +25 -0
- package/dist/types/taquito-tzip12.d.ts +1 -1
- package/dist/types/tzip12-contract-abstraction.d.ts +1 -0
- package/package.json +5 -5
- package/dist/lib/tzip12-errors.js +0 -39
- package/dist/lib/tzip12-errors.js.map +0 -1
- package/dist/types/tzip12-errors.d.ts +0 -26
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InvalidTokenMetadata = exports.TokenIdNotFound = exports.TokenMetadataNotFound = void 0;
|
|
4
|
+
const core_1 = require("@taquito/core");
|
|
5
|
+
/**
|
|
6
|
+
* @category Error
|
|
7
|
+
* @description Error indicates the metadata not being found on the contract
|
|
8
|
+
*/
|
|
9
|
+
class TokenMetadataNotFound extends core_1.TaquitoError {
|
|
10
|
+
constructor(address) {
|
|
11
|
+
super();
|
|
12
|
+
this.address = address;
|
|
13
|
+
this.name = 'TokenMetadataNotFound';
|
|
14
|
+
this.message = `No token metadata was found for the contract: ${address}`;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.TokenMetadataNotFound = TokenMetadataNotFound;
|
|
18
|
+
/**
|
|
19
|
+
* @category Error
|
|
20
|
+
* @description Error indicates the token ID not being found
|
|
21
|
+
*/
|
|
22
|
+
class TokenIdNotFound extends core_1.TaquitoError {
|
|
23
|
+
constructor(tokenId) {
|
|
24
|
+
super(`Could not find token metadata for the token ID: ${tokenId}`);
|
|
25
|
+
this.tokenId = tokenId;
|
|
26
|
+
this.name = 'TokenIdNotFound';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.TokenIdNotFound = TokenIdNotFound;
|
|
30
|
+
/**
|
|
31
|
+
* @category Error
|
|
32
|
+
* @description Error indicates that the token metadata is invalid (not compliant with the TZIP-12 standard)
|
|
33
|
+
*/
|
|
34
|
+
class InvalidTokenMetadata extends core_1.TaquitoError {
|
|
35
|
+
constructor(invalidMetadata) {
|
|
36
|
+
super();
|
|
37
|
+
this.invalidMetadata = invalidMetadata;
|
|
38
|
+
this.name = 'InvalidTokenMetadata';
|
|
39
|
+
this.message =
|
|
40
|
+
'Non-compliance with the TZIP-012 standard. The required property `decimals` is missing.';
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.InvalidTokenMetadata = InvalidTokenMetadata;
|
|
44
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":";;;AAAA,wCAA6C;AAE7C;;;GAGG;AACH,MAAa,qBAAsB,SAAQ,mBAAY;IACrD,YAA4B,OAAe;QACzC,KAAK,EAAE,CAAC;QADkB,YAAO,GAAP,OAAO,CAAQ;QAEzC,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,iDAAiD,OAAO,EAAE,CAAC;IAC5E,CAAC;CACF;AAND,sDAMC;AAED;;;GAGG;AACH,MAAa,eAAgB,SAAQ,mBAAY;IAC/C,YAA4B,OAAe;QACzC,KAAK,CAAC,mDAAmD,OAAO,EAAE,CAAC,CAAC;QAD1C,YAAO,GAAP,OAAO,CAAQ;QAEzC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AALD,0CAKC;AAED;;;GAGG;AACH,MAAa,oBAAqB,SAAQ,mBAAY;IACpD,YAA4B,eAAoB;QAC9C,KAAK,EAAE,CAAC;QADkB,oBAAe,GAAf,eAAe,CAAK;QAE9C,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,OAAO;YACV,yFAAyF,CAAC;IAC9F,CAAC;CACF;AAPD,oDAOC"}
|
|
@@ -17,7 +17,7 @@ exports.VERSION = void 0;
|
|
|
17
17
|
*/
|
|
18
18
|
__exportStar(require("./tzip12-contract-abstraction"), exports);
|
|
19
19
|
__exportStar(require("./composer"), exports);
|
|
20
|
-
__exportStar(require("./
|
|
20
|
+
__exportStar(require("./errors"), exports);
|
|
21
21
|
__exportStar(require("./tzip12-extension"), exports);
|
|
22
22
|
var version_1 = require("./version");
|
|
23
23
|
Object.defineProperty(exports, "VERSION", { enumerable: true, get: function () { return version_1.VERSION; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taquito-tzip12.js","sourceRoot":"","sources":["../../src/taquito-tzip12.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA;;;GAGG;AACH,gEAA8C;AAC9C,6CAA2B;AAC3B,
|
|
1
|
+
{"version":3,"file":"taquito-tzip12.js","sourceRoot":"","sources":["../../src/taquito-tzip12.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA;;;GAGG;AACH,gEAA8C;AAC9C,6CAA2B;AAC3B,2CAAyB;AACzB,qDAAmC;AACnC,qCAAoC;AAA3B,kGAAA,OAAO,OAAA"}
|
|
@@ -12,7 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.Tzip12ContractAbstraction = void 0;
|
|
13
13
|
const michelson_encoder_1 = require("@taquito/michelson-encoder");
|
|
14
14
|
const tzip16_1 = require("@taquito/tzip16");
|
|
15
|
-
const
|
|
15
|
+
const errors_1 = require("./errors");
|
|
16
16
|
const tokenMetadataBigMapType = {
|
|
17
17
|
prim: 'big_map',
|
|
18
18
|
args: [
|
|
@@ -73,6 +73,7 @@ class Tzip12ContractAbstraction {
|
|
|
73
73
|
* If there is no view, the function tries to find a `token_metadata` bigmap in the top-level pairs of the storage.
|
|
74
74
|
* @param tokenId The ID of the token for which we want to retrieve token metadata
|
|
75
75
|
* @returns An object of type `TokenMetadata`
|
|
76
|
+
* @throws {@link TokenIdNotFound, TokenMetadataNotFound, InvalidTokenMetadata}
|
|
76
77
|
*/
|
|
77
78
|
getTokenMetadata(tokenId) {
|
|
78
79
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -103,7 +104,7 @@ class Tzip12ContractAbstraction {
|
|
|
103
104
|
const tokenMetadata = yield tokenMetadataView.executeView(tokenId);
|
|
104
105
|
const tokenMap = Object.values(tokenMetadata)[1];
|
|
105
106
|
if (!michelson_encoder_1.MichelsonMap.isMichelsonMap(tokenMap)) {
|
|
106
|
-
throw new
|
|
107
|
+
throw new errors_1.TokenMetadataNotFound(this.contractAbstraction.address);
|
|
107
108
|
}
|
|
108
109
|
const metadataFromUri = yield this.fetchTokenMetadataFromUri(tokenMap);
|
|
109
110
|
return this.formatMetadataToken(tokenId, tokenMap, metadataFromUri);
|
|
@@ -118,7 +119,7 @@ class Tzip12ContractAbstraction {
|
|
|
118
119
|
return metadataFromUri.metadata;
|
|
119
120
|
}
|
|
120
121
|
catch (e) {
|
|
121
|
-
if (e.name === '
|
|
122
|
+
if (e.name === 'InvalidUriError') {
|
|
122
123
|
console.warn(`The URI ${tzip16_1.bytes2Char(uri)} is present in the token metadata, but is invalid.`);
|
|
123
124
|
}
|
|
124
125
|
else {
|
|
@@ -154,7 +155,7 @@ class Tzip12ContractAbstraction {
|
|
|
154
155
|
}
|
|
155
156
|
}
|
|
156
157
|
if (!('decimals' in tokenMetadataDecoded)) {
|
|
157
|
-
throw new
|
|
158
|
+
throw new errors_1.InvalidTokenMetadata(tokenMetadataDecoded);
|
|
158
159
|
}
|
|
159
160
|
return tokenMetadataDecoded;
|
|
160
161
|
}
|
|
@@ -166,11 +167,11 @@ class Tzip12ContractAbstraction {
|
|
|
166
167
|
pairNatMap = yield this.context.contract.getBigMapKeyByID(bigmapTokenMetadataId['int'].toString(), tokenId.toString(), new michelson_encoder_1.Schema(tokenMetadataBigMapType));
|
|
167
168
|
}
|
|
168
169
|
catch (err) {
|
|
169
|
-
throw new
|
|
170
|
+
throw new errors_1.TokenIdNotFound(tokenId);
|
|
170
171
|
}
|
|
171
172
|
const michelsonMap = pairNatMap['token_info'];
|
|
172
173
|
if (!michelson_encoder_1.MichelsonMap.isMichelsonMap(michelsonMap)) {
|
|
173
|
-
throw new
|
|
174
|
+
throw new errors_1.TokenIdNotFound(tokenId);
|
|
174
175
|
}
|
|
175
176
|
const metadataFromUri = yield this.fetchTokenMetadataFromUri(michelsonMap);
|
|
176
177
|
return this.formatMetadataToken(tokenId, michelsonMap, metadataFromUri);
|
|
@@ -180,7 +181,7 @@ class Tzip12ContractAbstraction {
|
|
|
180
181
|
return __awaiter(this, void 0, void 0, function* () {
|
|
181
182
|
const tokenMetadataBigMapId = this.contractAbstraction.schema.FindFirstInTopLevelPair(yield this.context.readProvider.getStorage(this.contractAbstraction.address, 'head'), tokenMetadataBigMapType);
|
|
182
183
|
if (!tokenMetadataBigMapId || !tokenMetadataBigMapId.int) {
|
|
183
|
-
throw new
|
|
184
|
+
throw new errors_1.TokenMetadataNotFound(this.contractAbstraction.address);
|
|
184
185
|
}
|
|
185
186
|
return { int: tokenMetadataBigMapId.int };
|
|
186
187
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tzip12-contract-abstraction.js","sourceRoot":"","sources":["../../src/tzip12-contract-abstraction.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kEAAkE;AAElE,4CAMyB;AACzB,
|
|
1
|
+
{"version":3,"file":"tzip12-contract-abstraction.js","sourceRoot":"","sources":["../../src/tzip12-contract-abstraction.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/version.js
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.VERSION = void 0;
|
|
4
4
|
// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!
|
|
5
5
|
exports.VERSION = {
|
|
6
|
-
"commitHash": "
|
|
7
|
-
"version": "17.1.0
|
|
6
|
+
"commitHash": "a23fb981e79462489c07a1e4656f310390cb1148",
|
|
7
|
+
"version": "17.1.0"
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=version.js.map
|
package/dist/lib/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AACA,2EAA2E;AAC9D,QAAA,OAAO,GAAG;IACnB,YAAY,EAAE,0CAA0C;IACxD,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AACA,2EAA2E;AAC9D,QAAA,OAAO,GAAG;IACnB,YAAY,EAAE,0CAA0C;IACxD,SAAS,EAAE,QAAQ;CACtB,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { MichelsonMap, Schema } from '@taquito/michelson-encoder';
|
|
2
2
|
import { Tzip16ContractAbstraction, bytes2Char, MetadataProvider, DEFAULT_HANDLERS } from '@taquito/tzip16';
|
|
3
|
+
import { TaquitoError } from '@taquito/core';
|
|
3
4
|
|
|
4
5
|
/******************************************************************************
|
|
5
6
|
Copyright (c) Microsoft Corporation.
|
|
@@ -33,20 +34,21 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
|
|
|
33
34
|
|
|
34
35
|
/**
|
|
35
36
|
* @category Error
|
|
36
|
-
* @description Error
|
|
37
|
+
* @description Error indicates the metadata not being found on the contract
|
|
37
38
|
*/
|
|
38
|
-
class TokenMetadataNotFound extends
|
|
39
|
+
class TokenMetadataNotFound extends TaquitoError {
|
|
39
40
|
constructor(address) {
|
|
40
|
-
super(
|
|
41
|
+
super();
|
|
41
42
|
this.address = address;
|
|
42
43
|
this.name = 'TokenMetadataNotFound';
|
|
44
|
+
this.message = `No token metadata was found for the contract: ${address}`;
|
|
43
45
|
}
|
|
44
46
|
}
|
|
45
47
|
/**
|
|
46
48
|
* @category Error
|
|
47
|
-
* @description Error
|
|
49
|
+
* @description Error indicates the token ID not being found
|
|
48
50
|
*/
|
|
49
|
-
class TokenIdNotFound extends
|
|
51
|
+
class TokenIdNotFound extends TaquitoError {
|
|
50
52
|
constructor(tokenId) {
|
|
51
53
|
super(`Could not find token metadata for the token ID: ${tokenId}`);
|
|
52
54
|
this.tokenId = tokenId;
|
|
@@ -55,12 +57,15 @@ class TokenIdNotFound extends Error {
|
|
|
55
57
|
}
|
|
56
58
|
/**
|
|
57
59
|
* @category Error
|
|
58
|
-
* @description Error
|
|
60
|
+
* @description Error indicates that the token metadata is invalid (not compliant with the TZIP-12 standard)
|
|
59
61
|
*/
|
|
60
|
-
class InvalidTokenMetadata extends
|
|
61
|
-
constructor() {
|
|
62
|
-
super(
|
|
62
|
+
class InvalidTokenMetadata extends TaquitoError {
|
|
63
|
+
constructor(invalidMetadata) {
|
|
64
|
+
super();
|
|
65
|
+
this.invalidMetadata = invalidMetadata;
|
|
63
66
|
this.name = 'InvalidTokenMetadata';
|
|
67
|
+
this.message =
|
|
68
|
+
'Non-compliance with the TZIP-012 standard. The required property `decimals` is missing.';
|
|
64
69
|
}
|
|
65
70
|
}
|
|
66
71
|
|
|
@@ -124,6 +129,7 @@ class Tzip12ContractAbstraction {
|
|
|
124
129
|
* If there is no view, the function tries to find a `token_metadata` bigmap in the top-level pairs of the storage.
|
|
125
130
|
* @param tokenId The ID of the token for which we want to retrieve token metadata
|
|
126
131
|
* @returns An object of type `TokenMetadata`
|
|
132
|
+
* @throws {@link TokenIdNotFound, TokenMetadataNotFound, InvalidTokenMetadata}
|
|
127
133
|
*/
|
|
128
134
|
getTokenMetadata(tokenId) {
|
|
129
135
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -169,7 +175,7 @@ class Tzip12ContractAbstraction {
|
|
|
169
175
|
return metadataFromUri.metadata;
|
|
170
176
|
}
|
|
171
177
|
catch (e) {
|
|
172
|
-
if (e.name === '
|
|
178
|
+
if (e.name === 'InvalidUriError') {
|
|
173
179
|
console.warn(`The URI ${bytes2Char(uri)} is present in the token metadata, but is invalid.`);
|
|
174
180
|
}
|
|
175
181
|
else {
|
|
@@ -205,7 +211,7 @@ class Tzip12ContractAbstraction {
|
|
|
205
211
|
}
|
|
206
212
|
}
|
|
207
213
|
if (!('decimals' in tokenMetadataDecoded)) {
|
|
208
|
-
throw new InvalidTokenMetadata();
|
|
214
|
+
throw new InvalidTokenMetadata(tokenMetadataDecoded);
|
|
209
215
|
}
|
|
210
216
|
return tokenMetadataDecoded;
|
|
211
217
|
}
|
|
@@ -264,8 +270,8 @@ class Tzip12Module {
|
|
|
264
270
|
|
|
265
271
|
// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!
|
|
266
272
|
const VERSION = {
|
|
267
|
-
"commitHash": "
|
|
268
|
-
"version": "17.1.0
|
|
273
|
+
"commitHash": "a23fb981e79462489c07a1e4656f310390cb1148",
|
|
274
|
+
"version": "17.1.0"
|
|
269
275
|
};
|
|
270
276
|
|
|
271
277
|
export { InvalidTokenMetadata, TokenIdNotFound, TokenMetadataNotFound, Tzip12ContractAbstraction, Tzip12Module, VERSION, tzip12 };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taquito-tzip12.es6.js","sources":["../src/tzip12-errors.ts","../src/tzip12-contract-abstraction.ts","../src/composer.ts","../src/tzip12-extension.ts","../src/version.ts"],"sourcesContent":["/**\n * @category Error\n * @description Error that indicates the metadata not being found on the contract\n */\nexport class TokenMetadataNotFound extends Error {\n name = 'TokenMetadataNotFound';\n\n constructor(public address: string) {\n super(`No token metadata was found for the contract: ${address}`);\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates the token ID not being found\n */\nexport class TokenIdNotFound extends Error {\n name = 'TokenIdNotFound';\n\n constructor(public tokenId: number) {\n super(`Could not find token metadata for the token ID: ${tokenId}`);\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates that the token metadata is invalid (not compliant with the TZIP-12 standard)\n */\nexport class InvalidTokenMetadata extends Error {\n name = 'InvalidTokenMetadata';\n\n constructor() {\n super(\n 'Non-compliance with the TZIP-012 standard. The required property `decimals` is missing.'\n );\n }\n}\n","import { MichelsonMap, Schema } from '@taquito/michelson-encoder';\nimport { ContractAbstraction, ContractProvider, Wallet } from '@taquito/taquito';\nimport {\n Tzip16ContractAbstraction,\n MetadataContext,\n View,\n bytes2Char,\n BigMapId,\n} from '@taquito/tzip16';\nimport { InvalidTokenMetadata, TokenIdNotFound, TokenMetadataNotFound } from './tzip12-errors';\n\nconst tokenMetadataBigMapType = {\n prim: 'big_map',\n args: [\n { prim: 'nat' },\n {\n prim: 'pair',\n args: [\n { prim: 'nat', annots: ['%token_id'] },\n { prim: 'map', args: [{ prim: 'string' }, { prim: 'bytes' }], annots: ['%token_info'] },\n ],\n },\n ],\n annots: ['%token_metadata'],\n};\n\nexport interface TokenMetadata {\n token_id: number;\n decimals: number;\n name?: string;\n symbol?: string;\n}\n\nexport class Tzip12ContractAbstraction {\n private _tzip16ContractAbstraction: Tzip16ContractAbstraction;\n\n constructor(\n private contractAbstraction: ContractAbstraction<ContractProvider | Wallet>,\n private context: MetadataContext\n ) {\n this._tzip16ContractAbstraction = new Tzip16ContractAbstraction(\n this.contractAbstraction,\n this.context\n );\n }\n\n /**\n * @description Fetches the contract metadata (according to the Tzip-016 standard)\n * @returns An object containing the metadata, the uri, an optional integrity check result and an optional sha256 hash\n * or `Undefined` if the contract has no metadata (non-compliant with Tzip-016)\n */\n private async getContractMetadata() {\n try {\n const contractMetadata = await this._tzip16ContractAbstraction.getMetadata();\n return contractMetadata.metadata;\n } catch (err) {\n // The contract is not compliant with Tzip-016. There is no contract metadata.\n }\n }\n\n /**\n * @description The Tzip-016 \"interfaces\" field MUST be present in the contract metadata. It should contain \"TZIP-012[version-info]\"\n * @returns True if \"interfaces\" field is present and contains \"TZIP-012\", false otherwise\n */\n async isTzip12Compliant() {\n let isCompliant = false;\n const metadata = await this.getContractMetadata();\n if (metadata) {\n const tzip12Interface = metadata.interfaces?.filter((x) => {\n return x.substring(0, 8) === 'TZIP-012';\n });\n isCompliant = tzip12Interface && tzip12Interface.length !== 0 ? true : false;\n }\n return isCompliant;\n }\n\n /**\n * @description Fetches the token metadata for a specified token ID.\n * The function first tries to find a `token_metadata` view in the contract metadata and to execute it with the token ID.\n * If there is no view, the function tries to find a `token_metadata` bigmap in the top-level pairs of the storage.\n * @param tokenId The ID of the token for which we want to retrieve token metadata\n * @returns An object of type `TokenMetadata`\n */\n async getTokenMetadata(tokenId: number) {\n const tokenMetadata = await this.retrieveTokenMetadataFromView(tokenId);\n return !tokenMetadata ? this.retrieveTokenMetadataFromBigMap(tokenId) : tokenMetadata;\n }\n\n private async retrieveTokenMetadataFromView(tokenId: number) {\n if (await this.getContractMetadata()) {\n const views = await this._tzip16ContractAbstraction.metadataViews();\n if (views && this.hasTokenMetadataView(views)) {\n return this.executeTokenMetadataView(views['token_metadata'](), tokenId);\n }\n }\n }\n\n private hasTokenMetadataView(views: object) {\n for (const view of Object.keys(views)) {\n if (view === 'token_metadata') {\n return true;\n }\n }\n return false;\n }\n\n private async executeTokenMetadataView(\n tokenMetadataView: View,\n tokenId: number\n ): Promise<TokenMetadata> {\n const tokenMetadata = await tokenMetadataView.executeView(tokenId);\n const tokenMap = Object.values(tokenMetadata)[1];\n if (!MichelsonMap.isMichelsonMap(tokenMap)) {\n throw new TokenMetadataNotFound(this.contractAbstraction.address);\n }\n const metadataFromUri = await this.fetchTokenMetadataFromUri(\n tokenMap as MichelsonMap<string, string>\n );\n return this.formatMetadataToken(\n tokenId,\n tokenMap as MichelsonMap<string, string>,\n metadataFromUri\n );\n }\n\n private async fetchTokenMetadataFromUri(tokenMetadata: MichelsonMap<string, string>) {\n const uri = tokenMetadata.get('');\n if (uri) {\n try {\n const metadataFromUri = await this.context.metadataProvider.provideMetadata(\n this.contractAbstraction,\n bytes2Char(uri),\n this.context\n );\n return metadataFromUri.metadata;\n } catch (e: any) {\n if (e.name === 'InvalidUri') {\n console.warn(\n `The URI ${bytes2Char(uri)} is present in the token metadata, but is invalid.`\n );\n } else {\n throw e;\n }\n }\n }\n }\n\n private formatMetadataToken(\n tokenId: number,\n metadataTokenMap: MichelsonMap<string, string>,\n metadataFromUri?: any\n ): TokenMetadata {\n const tokenMetadataDecoded = {\n token_id: tokenId,\n };\n for (const keyTokenMetadata of metadataTokenMap.keys()) {\n if (keyTokenMetadata === 'decimals') {\n Object.assign(tokenMetadataDecoded, {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n [keyTokenMetadata]: Number(bytes2Char(metadataTokenMap.get(keyTokenMetadata)!)),\n });\n } else if (!(keyTokenMetadata === '')) {\n Object.assign(tokenMetadataDecoded, {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n [keyTokenMetadata]: bytes2Char(metadataTokenMap.get(keyTokenMetadata)!),\n });\n }\n }\n // if an URI is present, add the fetched properties to the object\n // if a property is in the URI and the map, prevalence is accorded to value from the URI\n if (metadataFromUri) {\n for (const property in metadataFromUri) {\n Object.assign(tokenMetadataDecoded, { [property]: metadataFromUri[property] });\n }\n }\n if (!('decimals' in tokenMetadataDecoded)) {\n throw new InvalidTokenMetadata();\n }\n return tokenMetadataDecoded as TokenMetadata;\n }\n\n private async retrieveTokenMetadataFromBigMap(tokenId: number) {\n const bigmapTokenMetadataId = await this.findTokenMetadataBigMap();\n let pairNatMap;\n try {\n pairNatMap = await this.context.contract.getBigMapKeyByID<{\n token_info: MichelsonMap<string, string>;\n }>(\n bigmapTokenMetadataId['int'].toString(),\n tokenId.toString(),\n new Schema(tokenMetadataBigMapType)\n );\n } catch (err) {\n throw new TokenIdNotFound(tokenId);\n }\n\n const michelsonMap = pairNatMap['token_info'];\n if (!MichelsonMap.isMichelsonMap(michelsonMap)) {\n throw new TokenIdNotFound(tokenId);\n }\n const metadataFromUri = await this.fetchTokenMetadataFromUri(\n michelsonMap as MichelsonMap<string, string>\n );\n return this.formatMetadataToken(\n tokenId,\n michelsonMap as MichelsonMap<string, string>,\n metadataFromUri\n );\n }\n\n private async findTokenMetadataBigMap(): Promise<BigMapId> {\n const tokenMetadataBigMapId = this.contractAbstraction.schema.FindFirstInTopLevelPair<BigMapId>(\n await this.context.readProvider.getStorage(this.contractAbstraction.address, 'head'),\n tokenMetadataBigMapType\n );\n if (!tokenMetadataBigMapId || !tokenMetadataBigMapId.int) {\n throw new TokenMetadataNotFound(this.contractAbstraction.address);\n }\n return { int: tokenMetadataBigMapId.int };\n }\n}\n","import { Context, ContractAbstraction, ContractProvider, Wallet } from '@taquito/taquito';\nimport { Tzip12ContractAbstraction } from './tzip12-contract-abstraction';\nimport { MetadataContext } from '@taquito/tzip16';\n\nconst ABSTRACTION_KEY = Symbol('Tzip12ContractAbstractionObjectKey');\n\nexport function tzip12<T extends ContractAbstraction<ContractProvider | Wallet>>(\n abs: T,\n context: Context\n) {\n return Object.assign(abs, {\n // namespace tzip12\n tzip12(\n this: ContractAbstraction<ContractProvider | Wallet> & {\n [ABSTRACTION_KEY]?: Tzip12ContractAbstraction;\n }\n ) {\n if (!this[ABSTRACTION_KEY]) {\n this[ABSTRACTION_KEY] = new Tzip12ContractAbstraction(this, context as MetadataContext);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this[ABSTRACTION_KEY]!;\n },\n });\n}\n","import { Context, Extension } from \"@taquito/taquito\";\nimport { DEFAULT_HANDLERS, MetadataProviderInterface, MetadataProvider } from '@taquito/tzip16'\n\n// The same default metadataProvider is used for tzip16 and tzip12\nexport class Tzip12Module implements Extension {\n private _metadataProvider: MetadataProviderInterface;\n\n constructor(metadataProvider?: MetadataProviderInterface) {\n this._metadataProvider = metadataProvider ? metadataProvider : new MetadataProvider(DEFAULT_HANDLERS);\n }\n\n configureContext(context: Context) {\n Object.assign(context, { metadataProvider: this._metadataProvider });\n }\n}","\n// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!\nexport const VERSION = {\n \"commitHash\": \"5e47743ada31a9c8118f836c31b50a94d97255a6\",\n \"version\": \"17.1.0-beta-RC.0\"\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taquito-tzip12.es6.js","sources":["../src/errors.ts","../src/tzip12-contract-abstraction.ts","../src/composer.ts","../src/tzip12-extension.ts","../src/version.ts"],"sourcesContent":["import { TaquitoError } from '@taquito/core';\n\n/**\n * @category Error\n * @description Error indicates the metadata not being found on the contract\n */\nexport class TokenMetadataNotFound extends TaquitoError {\n constructor(public readonly address: string) {\n super();\n this.name = 'TokenMetadataNotFound';\n this.message = `No token metadata was found for the contract: ${address}`;\n }\n}\n\n/**\n * @category Error\n * @description Error indicates the token ID not being found\n */\nexport class TokenIdNotFound extends TaquitoError {\n constructor(public readonly tokenId: number) {\n super(`Could not find token metadata for the token ID: ${tokenId}`);\n this.name = 'TokenIdNotFound';\n }\n}\n\n/**\n * @category Error\n * @description Error indicates that the token metadata is invalid (not compliant with the TZIP-12 standard)\n */\nexport class InvalidTokenMetadata extends TaquitoError {\n constructor(public readonly invalidMetadata: any) {\n super();\n this.name = 'InvalidTokenMetadata';\n this.message =\n 'Non-compliance with the TZIP-012 standard. The required property `decimals` is missing.';\n }\n}\n","import { MichelsonMap, Schema } from '@taquito/michelson-encoder';\nimport { ContractAbstraction, ContractProvider, Wallet } from '@taquito/taquito';\nimport {\n Tzip16ContractAbstraction,\n MetadataContext,\n View,\n bytes2Char,\n BigMapId,\n} from '@taquito/tzip16';\nimport { InvalidTokenMetadata, TokenIdNotFound, TokenMetadataNotFound } from './errors';\n\nconst tokenMetadataBigMapType = {\n prim: 'big_map',\n args: [\n { prim: 'nat' },\n {\n prim: 'pair',\n args: [\n { prim: 'nat', annots: ['%token_id'] },\n { prim: 'map', args: [{ prim: 'string' }, { prim: 'bytes' }], annots: ['%token_info'] },\n ],\n },\n ],\n annots: ['%token_metadata'],\n};\n\nexport interface TokenMetadata {\n token_id: number;\n decimals: number;\n name?: string;\n symbol?: string;\n}\n\nexport class Tzip12ContractAbstraction {\n private _tzip16ContractAbstraction: Tzip16ContractAbstraction;\n\n constructor(\n private contractAbstraction: ContractAbstraction<ContractProvider | Wallet>,\n private context: MetadataContext\n ) {\n this._tzip16ContractAbstraction = new Tzip16ContractAbstraction(\n this.contractAbstraction,\n this.context\n );\n }\n\n /**\n * @description Fetches the contract metadata (according to the Tzip-016 standard)\n * @returns An object containing the metadata, the uri, an optional integrity check result and an optional sha256 hash\n * or `Undefined` if the contract has no metadata (non-compliant with Tzip-016)\n */\n private async getContractMetadata() {\n try {\n const contractMetadata = await this._tzip16ContractAbstraction.getMetadata();\n return contractMetadata.metadata;\n } catch (err) {\n // The contract is not compliant with Tzip-016. There is no contract metadata.\n }\n }\n\n /**\n * @description The Tzip-016 \"interfaces\" field MUST be present in the contract metadata. It should contain \"TZIP-012[version-info]\"\n * @returns True if \"interfaces\" field is present and contains \"TZIP-012\", false otherwise\n */\n async isTzip12Compliant() {\n let isCompliant = false;\n const metadata = await this.getContractMetadata();\n if (metadata) {\n const tzip12Interface = metadata.interfaces?.filter((x) => {\n return x.substring(0, 8) === 'TZIP-012';\n });\n isCompliant = tzip12Interface && tzip12Interface.length !== 0 ? true : false;\n }\n return isCompliant;\n }\n\n /**\n * @description Fetches the token metadata for a specified token ID.\n * The function first tries to find a `token_metadata` view in the contract metadata and to execute it with the token ID.\n * If there is no view, the function tries to find a `token_metadata` bigmap in the top-level pairs of the storage.\n * @param tokenId The ID of the token for which we want to retrieve token metadata\n * @returns An object of type `TokenMetadata`\n * @throws {@link TokenIdNotFound, TokenMetadataNotFound, InvalidTokenMetadata}\n */\n async getTokenMetadata(tokenId: number) {\n const tokenMetadata = await this.retrieveTokenMetadataFromView(tokenId);\n return !tokenMetadata ? this.retrieveTokenMetadataFromBigMap(tokenId) : tokenMetadata;\n }\n\n private async retrieveTokenMetadataFromView(tokenId: number) {\n if (await this.getContractMetadata()) {\n const views = await this._tzip16ContractAbstraction.metadataViews();\n if (views && this.hasTokenMetadataView(views)) {\n return this.executeTokenMetadataView(views['token_metadata'](), tokenId);\n }\n }\n }\n\n private hasTokenMetadataView(views: object) {\n for (const view of Object.keys(views)) {\n if (view === 'token_metadata') {\n return true;\n }\n }\n return false;\n }\n\n private async executeTokenMetadataView(\n tokenMetadataView: View,\n tokenId: number\n ): Promise<TokenMetadata> {\n const tokenMetadata = await tokenMetadataView.executeView(tokenId);\n const tokenMap = Object.values(tokenMetadata)[1];\n if (!MichelsonMap.isMichelsonMap(tokenMap)) {\n throw new TokenMetadataNotFound(this.contractAbstraction.address);\n }\n const metadataFromUri = await this.fetchTokenMetadataFromUri(\n tokenMap as MichelsonMap<string, string>\n );\n return this.formatMetadataToken(\n tokenId,\n tokenMap as MichelsonMap<string, string>,\n metadataFromUri\n );\n }\n\n private async fetchTokenMetadataFromUri(tokenMetadata: MichelsonMap<string, string>) {\n const uri = tokenMetadata.get('');\n if (uri) {\n try {\n const metadataFromUri = await this.context.metadataProvider.provideMetadata(\n this.contractAbstraction,\n bytes2Char(uri),\n this.context\n );\n return metadataFromUri.metadata;\n } catch (e: any) {\n if (e.name === 'InvalidUriError') {\n console.warn(\n `The URI ${bytes2Char(uri)} is present in the token metadata, but is invalid.`\n );\n } else {\n throw e;\n }\n }\n }\n }\n\n private formatMetadataToken(\n tokenId: number,\n metadataTokenMap: MichelsonMap<string, string>,\n metadataFromUri?: any\n ): TokenMetadata {\n const tokenMetadataDecoded = {\n token_id: tokenId,\n };\n for (const keyTokenMetadata of metadataTokenMap.keys()) {\n if (keyTokenMetadata === 'decimals') {\n Object.assign(tokenMetadataDecoded, {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n [keyTokenMetadata]: Number(bytes2Char(metadataTokenMap.get(keyTokenMetadata)!)),\n });\n } else if (!(keyTokenMetadata === '')) {\n Object.assign(tokenMetadataDecoded, {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n [keyTokenMetadata]: bytes2Char(metadataTokenMap.get(keyTokenMetadata)!),\n });\n }\n }\n // if an URI is present, add the fetched properties to the object\n // if a property is in the URI and the map, prevalence is accorded to value from the URI\n if (metadataFromUri) {\n for (const property in metadataFromUri) {\n Object.assign(tokenMetadataDecoded, { [property]: metadataFromUri[property] });\n }\n }\n if (!('decimals' in tokenMetadataDecoded)) {\n throw new InvalidTokenMetadata(tokenMetadataDecoded);\n }\n return tokenMetadataDecoded as TokenMetadata;\n }\n\n private async retrieveTokenMetadataFromBigMap(tokenId: number) {\n const bigmapTokenMetadataId = await this.findTokenMetadataBigMap();\n let pairNatMap;\n try {\n pairNatMap = await this.context.contract.getBigMapKeyByID<{\n token_info: MichelsonMap<string, string>;\n }>(\n bigmapTokenMetadataId['int'].toString(),\n tokenId.toString(),\n new Schema(tokenMetadataBigMapType)\n );\n } catch (err) {\n throw new TokenIdNotFound(tokenId);\n }\n\n const michelsonMap = pairNatMap['token_info'];\n if (!MichelsonMap.isMichelsonMap(michelsonMap)) {\n throw new TokenIdNotFound(tokenId);\n }\n const metadataFromUri = await this.fetchTokenMetadataFromUri(\n michelsonMap as MichelsonMap<string, string>\n );\n return this.formatMetadataToken(\n tokenId,\n michelsonMap as MichelsonMap<string, string>,\n metadataFromUri\n );\n }\n\n private async findTokenMetadataBigMap(): Promise<BigMapId> {\n const tokenMetadataBigMapId = this.contractAbstraction.schema.FindFirstInTopLevelPair<BigMapId>(\n await this.context.readProvider.getStorage(this.contractAbstraction.address, 'head'),\n tokenMetadataBigMapType\n );\n if (!tokenMetadataBigMapId || !tokenMetadataBigMapId.int) {\n throw new TokenMetadataNotFound(this.contractAbstraction.address);\n }\n return { int: tokenMetadataBigMapId.int };\n }\n}\n","import { Context, ContractAbstraction, ContractProvider, Wallet } from '@taquito/taquito';\nimport { Tzip12ContractAbstraction } from './tzip12-contract-abstraction';\nimport { MetadataContext } from '@taquito/tzip16';\n\nconst ABSTRACTION_KEY = Symbol('Tzip12ContractAbstractionObjectKey');\n\nexport function tzip12<T extends ContractAbstraction<ContractProvider | Wallet>>(\n abs: T,\n context: Context\n) {\n return Object.assign(abs, {\n // namespace tzip12\n tzip12(\n this: ContractAbstraction<ContractProvider | Wallet> & {\n [ABSTRACTION_KEY]?: Tzip12ContractAbstraction;\n }\n ) {\n if (!this[ABSTRACTION_KEY]) {\n this[ABSTRACTION_KEY] = new Tzip12ContractAbstraction(this, context as MetadataContext);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this[ABSTRACTION_KEY]!;\n },\n });\n}\n","import { Context, Extension } from \"@taquito/taquito\";\nimport { DEFAULT_HANDLERS, MetadataProviderInterface, MetadataProvider } from '@taquito/tzip16'\n\n// The same default metadataProvider is used for tzip16 and tzip12\nexport class Tzip12Module implements Extension {\n private _metadataProvider: MetadataProviderInterface;\n\n constructor(metadataProvider?: MetadataProviderInterface) {\n this._metadataProvider = metadataProvider ? metadataProvider : new MetadataProvider(DEFAULT_HANDLERS);\n }\n\n configureContext(context: Context) {\n Object.assign(context, { metadataProvider: this._metadataProvider });\n }\n}","\n// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!\nexport const VERSION = {\n \"commitHash\": \"a23fb981e79462489c07a1e4656f310390cb1148\",\n \"version\": \"17.1.0\"\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@taquito/michelson-encoder'), require('@taquito/tzip16')) :
|
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports', '@taquito/michelson-encoder', '@taquito/tzip16'], factory) :
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.taquitoTzip12 = {}, global.michelsonEncoder, global.tzip16));
|
|
5
|
-
})(this, (function (exports, michelsonEncoder, tzip16) { 'use strict';
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@taquito/michelson-encoder'), require('@taquito/tzip16'), require('@taquito/core')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', '@taquito/michelson-encoder', '@taquito/tzip16', '@taquito/core'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.taquitoTzip12 = {}, global.michelsonEncoder, global.tzip16, global.core));
|
|
5
|
+
})(this, (function (exports, michelsonEncoder, tzip16, core) { 'use strict';
|
|
6
6
|
|
|
7
7
|
/******************************************************************************
|
|
8
8
|
Copyright (c) Microsoft Corporation.
|
|
@@ -36,20 +36,21 @@
|
|
|
36
36
|
|
|
37
37
|
/**
|
|
38
38
|
* @category Error
|
|
39
|
-
* @description Error
|
|
39
|
+
* @description Error indicates the metadata not being found on the contract
|
|
40
40
|
*/
|
|
41
|
-
class TokenMetadataNotFound extends
|
|
41
|
+
class TokenMetadataNotFound extends core.TaquitoError {
|
|
42
42
|
constructor(address) {
|
|
43
|
-
super(
|
|
43
|
+
super();
|
|
44
44
|
this.address = address;
|
|
45
45
|
this.name = 'TokenMetadataNotFound';
|
|
46
|
+
this.message = `No token metadata was found for the contract: ${address}`;
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
/**
|
|
49
50
|
* @category Error
|
|
50
|
-
* @description Error
|
|
51
|
+
* @description Error indicates the token ID not being found
|
|
51
52
|
*/
|
|
52
|
-
class TokenIdNotFound extends
|
|
53
|
+
class TokenIdNotFound extends core.TaquitoError {
|
|
53
54
|
constructor(tokenId) {
|
|
54
55
|
super(`Could not find token metadata for the token ID: ${tokenId}`);
|
|
55
56
|
this.tokenId = tokenId;
|
|
@@ -58,12 +59,15 @@
|
|
|
58
59
|
}
|
|
59
60
|
/**
|
|
60
61
|
* @category Error
|
|
61
|
-
* @description Error
|
|
62
|
+
* @description Error indicates that the token metadata is invalid (not compliant with the TZIP-12 standard)
|
|
62
63
|
*/
|
|
63
|
-
class InvalidTokenMetadata extends
|
|
64
|
-
constructor() {
|
|
65
|
-
super(
|
|
64
|
+
class InvalidTokenMetadata extends core.TaquitoError {
|
|
65
|
+
constructor(invalidMetadata) {
|
|
66
|
+
super();
|
|
67
|
+
this.invalidMetadata = invalidMetadata;
|
|
66
68
|
this.name = 'InvalidTokenMetadata';
|
|
69
|
+
this.message =
|
|
70
|
+
'Non-compliance with the TZIP-012 standard. The required property `decimals` is missing.';
|
|
67
71
|
}
|
|
68
72
|
}
|
|
69
73
|
|
|
@@ -127,6 +131,7 @@
|
|
|
127
131
|
* If there is no view, the function tries to find a `token_metadata` bigmap in the top-level pairs of the storage.
|
|
128
132
|
* @param tokenId The ID of the token for which we want to retrieve token metadata
|
|
129
133
|
* @returns An object of type `TokenMetadata`
|
|
134
|
+
* @throws {@link TokenIdNotFound, TokenMetadataNotFound, InvalidTokenMetadata}
|
|
130
135
|
*/
|
|
131
136
|
getTokenMetadata(tokenId) {
|
|
132
137
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -172,7 +177,7 @@
|
|
|
172
177
|
return metadataFromUri.metadata;
|
|
173
178
|
}
|
|
174
179
|
catch (e) {
|
|
175
|
-
if (e.name === '
|
|
180
|
+
if (e.name === 'InvalidUriError') {
|
|
176
181
|
console.warn(`The URI ${tzip16.bytes2Char(uri)} is present in the token metadata, but is invalid.`);
|
|
177
182
|
}
|
|
178
183
|
else {
|
|
@@ -208,7 +213,7 @@
|
|
|
208
213
|
}
|
|
209
214
|
}
|
|
210
215
|
if (!('decimals' in tokenMetadataDecoded)) {
|
|
211
|
-
throw new InvalidTokenMetadata();
|
|
216
|
+
throw new InvalidTokenMetadata(tokenMetadataDecoded);
|
|
212
217
|
}
|
|
213
218
|
return tokenMetadataDecoded;
|
|
214
219
|
}
|
|
@@ -267,8 +272,8 @@
|
|
|
267
272
|
|
|
268
273
|
// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!
|
|
269
274
|
const VERSION = {
|
|
270
|
-
"commitHash": "
|
|
271
|
-
"version": "17.1.0
|
|
275
|
+
"commitHash": "a23fb981e79462489c07a1e4656f310390cb1148",
|
|
276
|
+
"version": "17.1.0"
|
|
272
277
|
};
|
|
273
278
|
|
|
274
279
|
exports.InvalidTokenMetadata = InvalidTokenMetadata;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taquito-tzip12.umd.js","sources":["../src/tzip12-errors.ts","../src/tzip12-contract-abstraction.ts","../src/composer.ts","../src/tzip12-extension.ts","../src/version.ts"],"sourcesContent":["/**\n * @category Error\n * @description Error that indicates the metadata not being found on the contract\n */\nexport class TokenMetadataNotFound extends Error {\n name = 'TokenMetadataNotFound';\n\n constructor(public address: string) {\n super(`No token metadata was found for the contract: ${address}`);\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates the token ID not being found\n */\nexport class TokenIdNotFound extends Error {\n name = 'TokenIdNotFound';\n\n constructor(public tokenId: number) {\n super(`Could not find token metadata for the token ID: ${tokenId}`);\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates that the token metadata is invalid (not compliant with the TZIP-12 standard)\n */\nexport class InvalidTokenMetadata extends Error {\n name = 'InvalidTokenMetadata';\n\n constructor() {\n super(\n 'Non-compliance with the TZIP-012 standard. The required property `decimals` is missing.'\n );\n }\n}\n","import { MichelsonMap, Schema } from '@taquito/michelson-encoder';\nimport { ContractAbstraction, ContractProvider, Wallet } from '@taquito/taquito';\nimport {\n Tzip16ContractAbstraction,\n MetadataContext,\n View,\n bytes2Char,\n BigMapId,\n} from '@taquito/tzip16';\nimport { InvalidTokenMetadata, TokenIdNotFound, TokenMetadataNotFound } from './tzip12-errors';\n\nconst tokenMetadataBigMapType = {\n prim: 'big_map',\n args: [\n { prim: 'nat' },\n {\n prim: 'pair',\n args: [\n { prim: 'nat', annots: ['%token_id'] },\n { prim: 'map', args: [{ prim: 'string' }, { prim: 'bytes' }], annots: ['%token_info'] },\n ],\n },\n ],\n annots: ['%token_metadata'],\n};\n\nexport interface TokenMetadata {\n token_id: number;\n decimals: number;\n name?: string;\n symbol?: string;\n}\n\nexport class Tzip12ContractAbstraction {\n private _tzip16ContractAbstraction: Tzip16ContractAbstraction;\n\n constructor(\n private contractAbstraction: ContractAbstraction<ContractProvider | Wallet>,\n private context: MetadataContext\n ) {\n this._tzip16ContractAbstraction = new Tzip16ContractAbstraction(\n this.contractAbstraction,\n this.context\n );\n }\n\n /**\n * @description Fetches the contract metadata (according to the Tzip-016 standard)\n * @returns An object containing the metadata, the uri, an optional integrity check result and an optional sha256 hash\n * or `Undefined` if the contract has no metadata (non-compliant with Tzip-016)\n */\n private async getContractMetadata() {\n try {\n const contractMetadata = await this._tzip16ContractAbstraction.getMetadata();\n return contractMetadata.metadata;\n } catch (err) {\n // The contract is not compliant with Tzip-016. There is no contract metadata.\n }\n }\n\n /**\n * @description The Tzip-016 \"interfaces\" field MUST be present in the contract metadata. It should contain \"TZIP-012[version-info]\"\n * @returns True if \"interfaces\" field is present and contains \"TZIP-012\", false otherwise\n */\n async isTzip12Compliant() {\n let isCompliant = false;\n const metadata = await this.getContractMetadata();\n if (metadata) {\n const tzip12Interface = metadata.interfaces?.filter((x) => {\n return x.substring(0, 8) === 'TZIP-012';\n });\n isCompliant = tzip12Interface && tzip12Interface.length !== 0 ? true : false;\n }\n return isCompliant;\n }\n\n /**\n * @description Fetches the token metadata for a specified token ID.\n * The function first tries to find a `token_metadata` view in the contract metadata and to execute it with the token ID.\n * If there is no view, the function tries to find a `token_metadata` bigmap in the top-level pairs of the storage.\n * @param tokenId The ID of the token for which we want to retrieve token metadata\n * @returns An object of type `TokenMetadata`\n */\n async getTokenMetadata(tokenId: number) {\n const tokenMetadata = await this.retrieveTokenMetadataFromView(tokenId);\n return !tokenMetadata ? this.retrieveTokenMetadataFromBigMap(tokenId) : tokenMetadata;\n }\n\n private async retrieveTokenMetadataFromView(tokenId: number) {\n if (await this.getContractMetadata()) {\n const views = await this._tzip16ContractAbstraction.metadataViews();\n if (views && this.hasTokenMetadataView(views)) {\n return this.executeTokenMetadataView(views['token_metadata'](), tokenId);\n }\n }\n }\n\n private hasTokenMetadataView(views: object) {\n for (const view of Object.keys(views)) {\n if (view === 'token_metadata') {\n return true;\n }\n }\n return false;\n }\n\n private async executeTokenMetadataView(\n tokenMetadataView: View,\n tokenId: number\n ): Promise<TokenMetadata> {\n const tokenMetadata = await tokenMetadataView.executeView(tokenId);\n const tokenMap = Object.values(tokenMetadata)[1];\n if (!MichelsonMap.isMichelsonMap(tokenMap)) {\n throw new TokenMetadataNotFound(this.contractAbstraction.address);\n }\n const metadataFromUri = await this.fetchTokenMetadataFromUri(\n tokenMap as MichelsonMap<string, string>\n );\n return this.formatMetadataToken(\n tokenId,\n tokenMap as MichelsonMap<string, string>,\n metadataFromUri\n );\n }\n\n private async fetchTokenMetadataFromUri(tokenMetadata: MichelsonMap<string, string>) {\n const uri = tokenMetadata.get('');\n if (uri) {\n try {\n const metadataFromUri = await this.context.metadataProvider.provideMetadata(\n this.contractAbstraction,\n bytes2Char(uri),\n this.context\n );\n return metadataFromUri.metadata;\n } catch (e: any) {\n if (e.name === 'InvalidUri') {\n console.warn(\n `The URI ${bytes2Char(uri)} is present in the token metadata, but is invalid.`\n );\n } else {\n throw e;\n }\n }\n }\n }\n\n private formatMetadataToken(\n tokenId: number,\n metadataTokenMap: MichelsonMap<string, string>,\n metadataFromUri?: any\n ): TokenMetadata {\n const tokenMetadataDecoded = {\n token_id: tokenId,\n };\n for (const keyTokenMetadata of metadataTokenMap.keys()) {\n if (keyTokenMetadata === 'decimals') {\n Object.assign(tokenMetadataDecoded, {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n [keyTokenMetadata]: Number(bytes2Char(metadataTokenMap.get(keyTokenMetadata)!)),\n });\n } else if (!(keyTokenMetadata === '')) {\n Object.assign(tokenMetadataDecoded, {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n [keyTokenMetadata]: bytes2Char(metadataTokenMap.get(keyTokenMetadata)!),\n });\n }\n }\n // if an URI is present, add the fetched properties to the object\n // if a property is in the URI and the map, prevalence is accorded to value from the URI\n if (metadataFromUri) {\n for (const property in metadataFromUri) {\n Object.assign(tokenMetadataDecoded, { [property]: metadataFromUri[property] });\n }\n }\n if (!('decimals' in tokenMetadataDecoded)) {\n throw new InvalidTokenMetadata();\n }\n return tokenMetadataDecoded as TokenMetadata;\n }\n\n private async retrieveTokenMetadataFromBigMap(tokenId: number) {\n const bigmapTokenMetadataId = await this.findTokenMetadataBigMap();\n let pairNatMap;\n try {\n pairNatMap = await this.context.contract.getBigMapKeyByID<{\n token_info: MichelsonMap<string, string>;\n }>(\n bigmapTokenMetadataId['int'].toString(),\n tokenId.toString(),\n new Schema(tokenMetadataBigMapType)\n );\n } catch (err) {\n throw new TokenIdNotFound(tokenId);\n }\n\n const michelsonMap = pairNatMap['token_info'];\n if (!MichelsonMap.isMichelsonMap(michelsonMap)) {\n throw new TokenIdNotFound(tokenId);\n }\n const metadataFromUri = await this.fetchTokenMetadataFromUri(\n michelsonMap as MichelsonMap<string, string>\n );\n return this.formatMetadataToken(\n tokenId,\n michelsonMap as MichelsonMap<string, string>,\n metadataFromUri\n );\n }\n\n private async findTokenMetadataBigMap(): Promise<BigMapId> {\n const tokenMetadataBigMapId = this.contractAbstraction.schema.FindFirstInTopLevelPair<BigMapId>(\n await this.context.readProvider.getStorage(this.contractAbstraction.address, 'head'),\n tokenMetadataBigMapType\n );\n if (!tokenMetadataBigMapId || !tokenMetadataBigMapId.int) {\n throw new TokenMetadataNotFound(this.contractAbstraction.address);\n }\n return { int: tokenMetadataBigMapId.int };\n }\n}\n","import { Context, ContractAbstraction, ContractProvider, Wallet } from '@taquito/taquito';\nimport { Tzip12ContractAbstraction } from './tzip12-contract-abstraction';\nimport { MetadataContext } from '@taquito/tzip16';\n\nconst ABSTRACTION_KEY = Symbol('Tzip12ContractAbstractionObjectKey');\n\nexport function tzip12<T extends ContractAbstraction<ContractProvider | Wallet>>(\n abs: T,\n context: Context\n) {\n return Object.assign(abs, {\n // namespace tzip12\n tzip12(\n this: ContractAbstraction<ContractProvider | Wallet> & {\n [ABSTRACTION_KEY]?: Tzip12ContractAbstraction;\n }\n ) {\n if (!this[ABSTRACTION_KEY]) {\n this[ABSTRACTION_KEY] = new Tzip12ContractAbstraction(this, context as MetadataContext);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this[ABSTRACTION_KEY]!;\n },\n });\n}\n","import { Context, Extension } from \"@taquito/taquito\";\nimport { DEFAULT_HANDLERS, MetadataProviderInterface, MetadataProvider } from '@taquito/tzip16'\n\n// The same default metadataProvider is used for tzip16 and tzip12\nexport class Tzip12Module implements Extension {\n private _metadataProvider: MetadataProviderInterface;\n\n constructor(metadataProvider?: MetadataProviderInterface) {\n this._metadataProvider = metadataProvider ? metadataProvider : new MetadataProvider(DEFAULT_HANDLERS);\n }\n\n configureContext(context: Context) {\n Object.assign(context, { metadataProvider: this._metadataProvider });\n }\n}","\n// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!\nexport const VERSION = {\n \"commitHash\": \"5e47743ada31a9c8118f836c31b50a94d97255a6\",\n \"version\": \"17.1.0-beta-RC.0\"\n};\n"],"names":["Tzip16ContractAbstraction","MichelsonMap","bytes2Char","Schema","MetadataProvider","DEFAULT_HANDLERS"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taquito-tzip12.umd.js","sources":["../src/errors.ts","../src/tzip12-contract-abstraction.ts","../src/composer.ts","../src/tzip12-extension.ts","../src/version.ts"],"sourcesContent":["import { TaquitoError } from '@taquito/core';\n\n/**\n * @category Error\n * @description Error indicates the metadata not being found on the contract\n */\nexport class TokenMetadataNotFound extends TaquitoError {\n constructor(public readonly address: string) {\n super();\n this.name = 'TokenMetadataNotFound';\n this.message = `No token metadata was found for the contract: ${address}`;\n }\n}\n\n/**\n * @category Error\n * @description Error indicates the token ID not being found\n */\nexport class TokenIdNotFound extends TaquitoError {\n constructor(public readonly tokenId: number) {\n super(`Could not find token metadata for the token ID: ${tokenId}`);\n this.name = 'TokenIdNotFound';\n }\n}\n\n/**\n * @category Error\n * @description Error indicates that the token metadata is invalid (not compliant with the TZIP-12 standard)\n */\nexport class InvalidTokenMetadata extends TaquitoError {\n constructor(public readonly invalidMetadata: any) {\n super();\n this.name = 'InvalidTokenMetadata';\n this.message =\n 'Non-compliance with the TZIP-012 standard. The required property `decimals` is missing.';\n }\n}\n","import { MichelsonMap, Schema } from '@taquito/michelson-encoder';\nimport { ContractAbstraction, ContractProvider, Wallet } from '@taquito/taquito';\nimport {\n Tzip16ContractAbstraction,\n MetadataContext,\n View,\n bytes2Char,\n BigMapId,\n} from '@taquito/tzip16';\nimport { InvalidTokenMetadata, TokenIdNotFound, TokenMetadataNotFound } from './errors';\n\nconst tokenMetadataBigMapType = {\n prim: 'big_map',\n args: [\n { prim: 'nat' },\n {\n prim: 'pair',\n args: [\n { prim: 'nat', annots: ['%token_id'] },\n { prim: 'map', args: [{ prim: 'string' }, { prim: 'bytes' }], annots: ['%token_info'] },\n ],\n },\n ],\n annots: ['%token_metadata'],\n};\n\nexport interface TokenMetadata {\n token_id: number;\n decimals: number;\n name?: string;\n symbol?: string;\n}\n\nexport class Tzip12ContractAbstraction {\n private _tzip16ContractAbstraction: Tzip16ContractAbstraction;\n\n constructor(\n private contractAbstraction: ContractAbstraction<ContractProvider | Wallet>,\n private context: MetadataContext\n ) {\n this._tzip16ContractAbstraction = new Tzip16ContractAbstraction(\n this.contractAbstraction,\n this.context\n );\n }\n\n /**\n * @description Fetches the contract metadata (according to the Tzip-016 standard)\n * @returns An object containing the metadata, the uri, an optional integrity check result and an optional sha256 hash\n * or `Undefined` if the contract has no metadata (non-compliant with Tzip-016)\n */\n private async getContractMetadata() {\n try {\n const contractMetadata = await this._tzip16ContractAbstraction.getMetadata();\n return contractMetadata.metadata;\n } catch (err) {\n // The contract is not compliant with Tzip-016. There is no contract metadata.\n }\n }\n\n /**\n * @description The Tzip-016 \"interfaces\" field MUST be present in the contract metadata. It should contain \"TZIP-012[version-info]\"\n * @returns True if \"interfaces\" field is present and contains \"TZIP-012\", false otherwise\n */\n async isTzip12Compliant() {\n let isCompliant = false;\n const metadata = await this.getContractMetadata();\n if (metadata) {\n const tzip12Interface = metadata.interfaces?.filter((x) => {\n return x.substring(0, 8) === 'TZIP-012';\n });\n isCompliant = tzip12Interface && tzip12Interface.length !== 0 ? true : false;\n }\n return isCompliant;\n }\n\n /**\n * @description Fetches the token metadata for a specified token ID.\n * The function first tries to find a `token_metadata` view in the contract metadata and to execute it with the token ID.\n * If there is no view, the function tries to find a `token_metadata` bigmap in the top-level pairs of the storage.\n * @param tokenId The ID of the token for which we want to retrieve token metadata\n * @returns An object of type `TokenMetadata`\n * @throws {@link TokenIdNotFound, TokenMetadataNotFound, InvalidTokenMetadata}\n */\n async getTokenMetadata(tokenId: number) {\n const tokenMetadata = await this.retrieveTokenMetadataFromView(tokenId);\n return !tokenMetadata ? this.retrieveTokenMetadataFromBigMap(tokenId) : tokenMetadata;\n }\n\n private async retrieveTokenMetadataFromView(tokenId: number) {\n if (await this.getContractMetadata()) {\n const views = await this._tzip16ContractAbstraction.metadataViews();\n if (views && this.hasTokenMetadataView(views)) {\n return this.executeTokenMetadataView(views['token_metadata'](), tokenId);\n }\n }\n }\n\n private hasTokenMetadataView(views: object) {\n for (const view of Object.keys(views)) {\n if (view === 'token_metadata') {\n return true;\n }\n }\n return false;\n }\n\n private async executeTokenMetadataView(\n tokenMetadataView: View,\n tokenId: number\n ): Promise<TokenMetadata> {\n const tokenMetadata = await tokenMetadataView.executeView(tokenId);\n const tokenMap = Object.values(tokenMetadata)[1];\n if (!MichelsonMap.isMichelsonMap(tokenMap)) {\n throw new TokenMetadataNotFound(this.contractAbstraction.address);\n }\n const metadataFromUri = await this.fetchTokenMetadataFromUri(\n tokenMap as MichelsonMap<string, string>\n );\n return this.formatMetadataToken(\n tokenId,\n tokenMap as MichelsonMap<string, string>,\n metadataFromUri\n );\n }\n\n private async fetchTokenMetadataFromUri(tokenMetadata: MichelsonMap<string, string>) {\n const uri = tokenMetadata.get('');\n if (uri) {\n try {\n const metadataFromUri = await this.context.metadataProvider.provideMetadata(\n this.contractAbstraction,\n bytes2Char(uri),\n this.context\n );\n return metadataFromUri.metadata;\n } catch (e: any) {\n if (e.name === 'InvalidUriError') {\n console.warn(\n `The URI ${bytes2Char(uri)} is present in the token metadata, but is invalid.`\n );\n } else {\n throw e;\n }\n }\n }\n }\n\n private formatMetadataToken(\n tokenId: number,\n metadataTokenMap: MichelsonMap<string, string>,\n metadataFromUri?: any\n ): TokenMetadata {\n const tokenMetadataDecoded = {\n token_id: tokenId,\n };\n for (const keyTokenMetadata of metadataTokenMap.keys()) {\n if (keyTokenMetadata === 'decimals') {\n Object.assign(tokenMetadataDecoded, {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n [keyTokenMetadata]: Number(bytes2Char(metadataTokenMap.get(keyTokenMetadata)!)),\n });\n } else if (!(keyTokenMetadata === '')) {\n Object.assign(tokenMetadataDecoded, {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n [keyTokenMetadata]: bytes2Char(metadataTokenMap.get(keyTokenMetadata)!),\n });\n }\n }\n // if an URI is present, add the fetched properties to the object\n // if a property is in the URI and the map, prevalence is accorded to value from the URI\n if (metadataFromUri) {\n for (const property in metadataFromUri) {\n Object.assign(tokenMetadataDecoded, { [property]: metadataFromUri[property] });\n }\n }\n if (!('decimals' in tokenMetadataDecoded)) {\n throw new InvalidTokenMetadata(tokenMetadataDecoded);\n }\n return tokenMetadataDecoded as TokenMetadata;\n }\n\n private async retrieveTokenMetadataFromBigMap(tokenId: number) {\n const bigmapTokenMetadataId = await this.findTokenMetadataBigMap();\n let pairNatMap;\n try {\n pairNatMap = await this.context.contract.getBigMapKeyByID<{\n token_info: MichelsonMap<string, string>;\n }>(\n bigmapTokenMetadataId['int'].toString(),\n tokenId.toString(),\n new Schema(tokenMetadataBigMapType)\n );\n } catch (err) {\n throw new TokenIdNotFound(tokenId);\n }\n\n const michelsonMap = pairNatMap['token_info'];\n if (!MichelsonMap.isMichelsonMap(michelsonMap)) {\n throw new TokenIdNotFound(tokenId);\n }\n const metadataFromUri = await this.fetchTokenMetadataFromUri(\n michelsonMap as MichelsonMap<string, string>\n );\n return this.formatMetadataToken(\n tokenId,\n michelsonMap as MichelsonMap<string, string>,\n metadataFromUri\n );\n }\n\n private async findTokenMetadataBigMap(): Promise<BigMapId> {\n const tokenMetadataBigMapId = this.contractAbstraction.schema.FindFirstInTopLevelPair<BigMapId>(\n await this.context.readProvider.getStorage(this.contractAbstraction.address, 'head'),\n tokenMetadataBigMapType\n );\n if (!tokenMetadataBigMapId || !tokenMetadataBigMapId.int) {\n throw new TokenMetadataNotFound(this.contractAbstraction.address);\n }\n return { int: tokenMetadataBigMapId.int };\n }\n}\n","import { Context, ContractAbstraction, ContractProvider, Wallet } from '@taquito/taquito';\nimport { Tzip12ContractAbstraction } from './tzip12-contract-abstraction';\nimport { MetadataContext } from '@taquito/tzip16';\n\nconst ABSTRACTION_KEY = Symbol('Tzip12ContractAbstractionObjectKey');\n\nexport function tzip12<T extends ContractAbstraction<ContractProvider | Wallet>>(\n abs: T,\n context: Context\n) {\n return Object.assign(abs, {\n // namespace tzip12\n tzip12(\n this: ContractAbstraction<ContractProvider | Wallet> & {\n [ABSTRACTION_KEY]?: Tzip12ContractAbstraction;\n }\n ) {\n if (!this[ABSTRACTION_KEY]) {\n this[ABSTRACTION_KEY] = new Tzip12ContractAbstraction(this, context as MetadataContext);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this[ABSTRACTION_KEY]!;\n },\n });\n}\n","import { Context, Extension } from \"@taquito/taquito\";\nimport { DEFAULT_HANDLERS, MetadataProviderInterface, MetadataProvider } from '@taquito/tzip16'\n\n// The same default metadataProvider is used for tzip16 and tzip12\nexport class Tzip12Module implements Extension {\n private _metadataProvider: MetadataProviderInterface;\n\n constructor(metadataProvider?: MetadataProviderInterface) {\n this._metadataProvider = metadataProvider ? metadataProvider : new MetadataProvider(DEFAULT_HANDLERS);\n }\n\n configureContext(context: Context) {\n Object.assign(context, { metadataProvider: this._metadataProvider });\n }\n}","\n// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!\nexport const VERSION = {\n \"commitHash\": \"a23fb981e79462489c07a1e4656f310390cb1148\",\n \"version\": \"17.1.0\"\n};\n"],"names":["TaquitoError","Tzip16ContractAbstraction","MichelsonMap","bytes2Char","Schema","MetadataProvider","DEFAULT_HANDLERS"],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { TaquitoError } from '@taquito/core';
|
|
2
|
+
/**
|
|
3
|
+
* @category Error
|
|
4
|
+
* @description Error indicates the metadata not being found on the contract
|
|
5
|
+
*/
|
|
6
|
+
export declare class TokenMetadataNotFound extends TaquitoError {
|
|
7
|
+
readonly address: string;
|
|
8
|
+
constructor(address: string);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* @category Error
|
|
12
|
+
* @description Error indicates the token ID not being found
|
|
13
|
+
*/
|
|
14
|
+
export declare class TokenIdNotFound extends TaquitoError {
|
|
15
|
+
readonly tokenId: number;
|
|
16
|
+
constructor(tokenId: number);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @category Error
|
|
20
|
+
* @description Error indicates that the token metadata is invalid (not compliant with the TZIP-12 standard)
|
|
21
|
+
*/
|
|
22
|
+
export declare class InvalidTokenMetadata extends TaquitoError {
|
|
23
|
+
readonly invalidMetadata: any;
|
|
24
|
+
constructor(invalidMetadata: any);
|
|
25
|
+
}
|
|
@@ -28,6 +28,7 @@ export declare class Tzip12ContractAbstraction {
|
|
|
28
28
|
* If there is no view, the function tries to find a `token_metadata` bigmap in the top-level pairs of the storage.
|
|
29
29
|
* @param tokenId The ID of the token for which we want to retrieve token metadata
|
|
30
30
|
* @returns An object of type `TokenMetadata`
|
|
31
|
+
* @throws {@link TokenIdNotFound, TokenMetadataNotFound, InvalidTokenMetadata}
|
|
31
32
|
*/
|
|
32
33
|
getTokenMetadata(tokenId: number): Promise<TokenMetadata>;
|
|
33
34
|
private retrieveTokenMetadataFromView;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taquito/tzip12",
|
|
3
|
-
"version": "17.1.0
|
|
3
|
+
"version": "17.1.0",
|
|
4
4
|
"description": "Tzip12",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"tezos",
|
|
@@ -63,9 +63,9 @@
|
|
|
63
63
|
]
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
|
-
"@taquito/michelson-encoder": "^17.1.0
|
|
67
|
-
"@taquito/taquito": "^17.1.0
|
|
68
|
-
"@taquito/tzip16": "^17.1.0
|
|
66
|
+
"@taquito/michelson-encoder": "^17.1.0",
|
|
67
|
+
"@taquito/taquito": "^17.1.0",
|
|
68
|
+
"@taquito/tzip16": "^17.1.0"
|
|
69
69
|
},
|
|
70
70
|
"devDependencies": {
|
|
71
71
|
"@types/bluebird": "^3.5.36",
|
|
@@ -96,5 +96,5 @@
|
|
|
96
96
|
"ts-toolbelt": "^9.6.0",
|
|
97
97
|
"typescript": "~4.1.5"
|
|
98
98
|
},
|
|
99
|
-
"gitHead": "
|
|
99
|
+
"gitHead": "8ac541f668bffe24e30a83303aae973c73813adb"
|
|
100
100
|
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InvalidTokenMetadata = exports.TokenIdNotFound = exports.TokenMetadataNotFound = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* @category Error
|
|
6
|
-
* @description Error that indicates the metadata not being found on the contract
|
|
7
|
-
*/
|
|
8
|
-
class TokenMetadataNotFound extends Error {
|
|
9
|
-
constructor(address) {
|
|
10
|
-
super(`No token metadata was found for the contract: ${address}`);
|
|
11
|
-
this.address = address;
|
|
12
|
-
this.name = 'TokenMetadataNotFound';
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
exports.TokenMetadataNotFound = TokenMetadataNotFound;
|
|
16
|
-
/**
|
|
17
|
-
* @category Error
|
|
18
|
-
* @description Error that indicates the token ID not being found
|
|
19
|
-
*/
|
|
20
|
-
class TokenIdNotFound extends Error {
|
|
21
|
-
constructor(tokenId) {
|
|
22
|
-
super(`Could not find token metadata for the token ID: ${tokenId}`);
|
|
23
|
-
this.tokenId = tokenId;
|
|
24
|
-
this.name = 'TokenIdNotFound';
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
exports.TokenIdNotFound = TokenIdNotFound;
|
|
28
|
-
/**
|
|
29
|
-
* @category Error
|
|
30
|
-
* @description Error that indicates that the token metadata is invalid (not compliant with the TZIP-12 standard)
|
|
31
|
-
*/
|
|
32
|
-
class InvalidTokenMetadata extends Error {
|
|
33
|
-
constructor() {
|
|
34
|
-
super('Non-compliance with the TZIP-012 standard. The required property `decimals` is missing.');
|
|
35
|
-
this.name = 'InvalidTokenMetadata';
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
exports.InvalidTokenMetadata = InvalidTokenMetadata;
|
|
39
|
-
//# sourceMappingURL=tzip12-errors.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tzip12-errors.js","sourceRoot":"","sources":["../../src/tzip12-errors.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,MAAa,qBAAsB,SAAQ,KAAK;IAG9C,YAAmB,OAAe;QAChC,KAAK,CAAC,iDAAiD,OAAO,EAAE,CAAC,CAAC;QADjD,YAAO,GAAP,OAAO,CAAQ;QAFlC,SAAI,GAAG,uBAAuB,CAAC;IAI/B,CAAC;CACF;AAND,sDAMC;AAED;;;GAGG;AACH,MAAa,eAAgB,SAAQ,KAAK;IAGxC,YAAmB,OAAe;QAChC,KAAK,CAAC,mDAAmD,OAAO,EAAE,CAAC,CAAC;QADnD,YAAO,GAAP,OAAO,CAAQ;QAFlC,SAAI,GAAG,iBAAiB,CAAC;IAIzB,CAAC;CACF;AAND,0CAMC;AAED;;;GAGG;AACH,MAAa,oBAAqB,SAAQ,KAAK;IAG7C;QACE,KAAK,CACH,yFAAyF,CAC1F,CAAC;QALJ,SAAI,GAAG,sBAAsB,CAAC;IAM9B,CAAC;CACF;AARD,oDAQC"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @category Error
|
|
3
|
-
* @description Error that indicates the metadata not being found on the contract
|
|
4
|
-
*/
|
|
5
|
-
export declare class TokenMetadataNotFound extends Error {
|
|
6
|
-
address: string;
|
|
7
|
-
name: string;
|
|
8
|
-
constructor(address: string);
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* @category Error
|
|
12
|
-
* @description Error that indicates the token ID not being found
|
|
13
|
-
*/
|
|
14
|
-
export declare class TokenIdNotFound extends Error {
|
|
15
|
-
tokenId: number;
|
|
16
|
-
name: string;
|
|
17
|
-
constructor(tokenId: number);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* @category Error
|
|
21
|
-
* @description Error that indicates that the token metadata is invalid (not compliant with the TZIP-12 standard)
|
|
22
|
-
*/
|
|
23
|
-
export declare class InvalidTokenMetadata extends Error {
|
|
24
|
-
name: string;
|
|
25
|
-
constructor();
|
|
26
|
-
}
|