emblem-vault-sdk 1.2.2 → 1.3.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/dist/bundle.js CHANGED
@@ -684189,7 +684189,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
684189
684189
  };
684190
684190
  Object.defineProperty(exports, "__esModule", { value: true });
684191
684191
  const utils_1 = require("./utils");
684192
- const SDK_VERSION = '1.2.2';
684192
+ const SDK_VERSION = '1.3.0';
684193
684193
  class EmblemVaultSDK {
684194
684194
  constructor(apiKey, baseUrl) {
684195
684195
  this.apiKey = apiKey;
@@ -684203,6 +684203,23 @@ class EmblemVaultSDK {
684203
684203
  generateUploadUrl() {
684204
684204
  // Implementation goes here
684205
684205
  }
684206
+ // ** Asset Metadata **
684207
+ //
684208
+ getAssetMetadata(projectName, strict = false) {
684209
+ (0, utils_1.genericGuard)(projectName, "string", "projectName");
684210
+ const NFT_DATA_ARR = (0, utils_1.metadataObj2Arr)(utils_1.NFT_DATA);
684211
+ let filtered = strict ?
684212
+ NFT_DATA_ARR.filter(item => item.projectName === projectName) :
684213
+ NFT_DATA_ARR.filter(item => item.projectName.toLowerCase() === projectName.toLowerCase());
684214
+ return filtered;
684215
+ }
684216
+ getAllProjects() {
684217
+ const NFT_DATA_ARR = (0, utils_1.metadataObj2Arr)(utils_1.NFT_DATA);
684218
+ const projects = (0, utils_1.metadataAllProjects)(NFT_DATA_ARR);
684219
+ return projects;
684220
+ }
684221
+ // ** Curated **
684222
+ //
684206
684223
  fetchCuratedContracts(hideUnMintable = false) {
684207
684224
  return __awaiter(this, void 0, void 0, function* () {
684208
684225
  let url = `${this.baseUrl}/curated`;
@@ -684266,9 +684283,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
684266
684283
  return (mod && mod.__esModule) ? mod : { "default": mod };
684267
684284
  };
684268
684285
  Object.defineProperty(exports, "__esModule", { value: true });
684269
- exports.COIN_TO_NETWORK = exports.genericGuard = exports.templateGuard = exports.generateTemplate = exports.generateImageTemplate = exports.generateAttributeTemplate = exports.fetchData = exports.evaluateFacts = exports.pad = void 0;
684286
+ exports.COIN_TO_NETWORK = exports.genericGuard = exports.templateGuard = exports.generateTemplate = exports.generateImageTemplate = exports.generateAttributeTemplate = exports.fetchData = exports.metadataAllProjects = exports.metadataObj2Arr = exports.evaluateFacts = exports.pad = exports.NFT_DATA = void 0;
684270
684287
  const metadata_json_1 = __importDefault(require("./curated/metadata.json"));
684271
- const NFT_DATA = metadata_json_1.default;
684288
+ exports.NFT_DATA = metadata_json_1.default;
684272
684289
  const pad = (num, size) => {
684273
684290
  if (!num)
684274
684291
  return null;
@@ -684292,6 +684309,15 @@ const evaluateFacts = (allowed, facts, msgCallback) => {
684292
684309
  return allowed;
684293
684310
  };
684294
684311
  exports.evaluateFacts = evaluateFacts;
684312
+ const metadataObj2Arr = (data) => Object.keys(data).map(key => (Object.assign(Object.assign({}, data[key]), { assetName: key })));
684313
+ exports.metadataObj2Arr = metadataObj2Arr;
684314
+ const metadataAllProjects = (projects) => projects.reduce((unique, item) => {
684315
+ if (!unique.includes(item.projectName)) {
684316
+ unique.push(item.projectName);
684317
+ }
684318
+ return unique;
684319
+ }, []);
684320
+ exports.metadataAllProjects = metadataAllProjects;
684295
684321
  const fetchData = (url, apiKey, method = 'GET', body = null) => __awaiter(void 0, void 0, void 0, function* () {
684296
684322
  const fetch = typeof window !== 'undefined' && typeof window.fetch === 'function' ? window.fetch : require('node-fetch');
684297
684323
  const options = {
@@ -684325,28 +684351,28 @@ function generateAttributeTemplate(record) {
684325
684351
  "trait_type": "Series",
684326
684352
  "value": (metadata) => {
684327
684353
  var _a, _b;
684328
- return (_b = (0, exports.pad)((_a = NFT_DATA[metadata.targetAsset.name]) === null || _a === void 0 ? void 0 : _a.series, 2)) === null || _b === void 0 ? void 0 : _b.toString();
684354
+ return (_b = (0, exports.pad)((_a = exports.NFT_DATA[metadata.targetAsset.name]) === null || _a === void 0 ? void 0 : _a.series, 2)) === null || _b === void 0 ? void 0 : _b.toString();
684329
684355
  }
684330
684356
  },
684331
684357
  {
684332
684358
  "trait_type": "Card",
684333
684359
  "value": (metadata) => {
684334
684360
  var _a, _b;
684335
- return (_b = (0, exports.pad)((_a = NFT_DATA[metadata.targetAsset.name]) === null || _a === void 0 ? void 0 : _a.order, 2)) === null || _b === void 0 ? void 0 : _b.toString();
684361
+ return (_b = (0, exports.pad)((_a = exports.NFT_DATA[metadata.targetAsset.name]) === null || _a === void 0 ? void 0 : _a.order, 2)) === null || _b === void 0 ? void 0 : _b.toString();
684336
684362
  }
684337
684363
  },
684338
684364
  {
684339
684365
  "trait_type": "Total Supply",
684340
684366
  "value": (metadata) => {
684341
684367
  var _a, _b, _c, _d;
684342
- return (_d = (0, exports.pad)(((_a = NFT_DATA[metadata.targetAsset.name]) === null || _a === void 0 ? void 0 : _a.remaining) || ((_c = (_b = NFT_DATA[metadata.targetAsset.name]) === null || _b === void 0 ? void 0 : _b.raw) === null || _c === void 0 ? void 0 : _c.supply), 2)) === null || _d === void 0 ? void 0 : _d.toString();
684368
+ return (_d = (0, exports.pad)(((_a = exports.NFT_DATA[metadata.targetAsset.name]) === null || _a === void 0 ? void 0 : _a.remaining) || ((_c = (_b = exports.NFT_DATA[metadata.targetAsset.name]) === null || _b === void 0 ? void 0 : _b.raw) === null || _c === void 0 ? void 0 : _c.supply), 2)) === null || _d === void 0 ? void 0 : _d.toString();
684343
684369
  }
684344
684370
  },
684345
684371
  {
684346
684372
  "trait_type": "Artist",
684347
684373
  "value": (metadata) => {
684348
684374
  var _a, _b, _c;
684349
- return (_c = (0, exports.pad)((_b = (_a = NFT_DATA[metadata.targetAsset.name]) === null || _a === void 0 ? void 0 : _a.raw) === null || _b === void 0 ? void 0 : _b.artist.name, 2)) === null || _c === void 0 ? void 0 : _c.toString();
684375
+ return (_c = (0, exports.pad)((_b = (_a = exports.NFT_DATA[metadata.targetAsset.name]) === null || _a === void 0 ? void 0 : _a.raw) === null || _b === void 0 ? void 0 : _b.artist.name, 2)) === null || _c === void 0 ? void 0 : _c.toString();
684350
684376
  }
684351
684377
  }
684352
684378
  ];
@@ -684354,9 +684380,9 @@ function generateAttributeTemplate(record) {
684354
684380
  template.push({
684355
684381
  "trait_type": "Year",
684356
684382
  "value": (metadata) => {
684357
- return (NFT_DATA[metadata.targetAsset.name].series < 10 ? '2016' :
684358
- NFT_DATA[metadata.targetAsset.name].series > 9 &&
684359
- NFT_DATA[metadata.targetAsset.name].series < 31 ? '2017' :
684383
+ return (exports.NFT_DATA[metadata.targetAsset.name].series < 10 ? '2016' :
684384
+ exports.NFT_DATA[metadata.targetAsset.name].series > 9 &&
684385
+ exports.NFT_DATA[metadata.targetAsset.name].series < 31 ? '2017' :
684360
684386
  '2018');
684361
684387
  }
684362
684388
  });
@@ -684532,7 +684558,7 @@ function generateTemplate(record) {
684532
684558
  allowedName = asset ? true : false;
684533
684559
  }
684534
684560
  else { // XCP
684535
- let curatedItemFound = NFT_DATA[asset];
684561
+ let curatedItemFound = exports.NFT_DATA[asset];
684536
684562
  allowedName = asset && curatedItemFound ? true : false;
684537
684563
  }
684538
684564
  return allowedName;
@@ -684603,7 +684629,7 @@ function generateTemplate(record) {
684603
684629
  }
684604
684630
  }
684605
684631
  // handle xcp image urls
684606
- let assetInformation = NFT_DATA[nameAndImage.name] ? NFT_DATA[nameAndImage.name] : false;
684632
+ let assetInformation = exports.NFT_DATA[nameAndImage.name] ? exports.NFT_DATA[nameAndImage.name] : false;
684607
684633
  if (assetInformation) {
684608
684634
  if (assetInformation.image) {
684609
684635
  nameAndImage.image = assetInformation.image;
package/docs/bundle.js CHANGED
@@ -684189,7 +684189,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
684189
684189
  };
684190
684190
  Object.defineProperty(exports, "__esModule", { value: true });
684191
684191
  const utils_1 = require("./utils");
684192
- const SDK_VERSION = '1.2.2';
684192
+ const SDK_VERSION = '1.3.0';
684193
684193
  class EmblemVaultSDK {
684194
684194
  constructor(apiKey, baseUrl) {
684195
684195
  this.apiKey = apiKey;
@@ -684203,6 +684203,23 @@ class EmblemVaultSDK {
684203
684203
  generateUploadUrl() {
684204
684204
  // Implementation goes here
684205
684205
  }
684206
+ // ** Asset Metadata **
684207
+ //
684208
+ getAssetMetadata(projectName, strict = false) {
684209
+ (0, utils_1.genericGuard)(projectName, "string", "projectName");
684210
+ const NFT_DATA_ARR = (0, utils_1.metadataObj2Arr)(utils_1.NFT_DATA);
684211
+ let filtered = strict ?
684212
+ NFT_DATA_ARR.filter(item => item.projectName === projectName) :
684213
+ NFT_DATA_ARR.filter(item => item.projectName.toLowerCase() === projectName.toLowerCase());
684214
+ return filtered;
684215
+ }
684216
+ getAllProjects() {
684217
+ const NFT_DATA_ARR = (0, utils_1.metadataObj2Arr)(utils_1.NFT_DATA);
684218
+ const projects = (0, utils_1.metadataAllProjects)(NFT_DATA_ARR);
684219
+ return projects;
684220
+ }
684221
+ // ** Curated **
684222
+ //
684206
684223
  fetchCuratedContracts(hideUnMintable = false) {
684207
684224
  return __awaiter(this, void 0, void 0, function* () {
684208
684225
  let url = `${this.baseUrl}/curated`;
@@ -684266,9 +684283,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
684266
684283
  return (mod && mod.__esModule) ? mod : { "default": mod };
684267
684284
  };
684268
684285
  Object.defineProperty(exports, "__esModule", { value: true });
684269
- exports.COIN_TO_NETWORK = exports.genericGuard = exports.templateGuard = exports.generateTemplate = exports.generateImageTemplate = exports.generateAttributeTemplate = exports.fetchData = exports.evaluateFacts = exports.pad = void 0;
684286
+ exports.COIN_TO_NETWORK = exports.genericGuard = exports.templateGuard = exports.generateTemplate = exports.generateImageTemplate = exports.generateAttributeTemplate = exports.fetchData = exports.metadataAllProjects = exports.metadataObj2Arr = exports.evaluateFacts = exports.pad = exports.NFT_DATA = void 0;
684270
684287
  const metadata_json_1 = __importDefault(require("./curated/metadata.json"));
684271
- const NFT_DATA = metadata_json_1.default;
684288
+ exports.NFT_DATA = metadata_json_1.default;
684272
684289
  const pad = (num, size) => {
684273
684290
  if (!num)
684274
684291
  return null;
@@ -684292,6 +684309,15 @@ const evaluateFacts = (allowed, facts, msgCallback) => {
684292
684309
  return allowed;
684293
684310
  };
684294
684311
  exports.evaluateFacts = evaluateFacts;
684312
+ const metadataObj2Arr = (data) => Object.keys(data).map(key => (Object.assign(Object.assign({}, data[key]), { assetName: key })));
684313
+ exports.metadataObj2Arr = metadataObj2Arr;
684314
+ const metadataAllProjects = (projects) => projects.reduce((unique, item) => {
684315
+ if (!unique.includes(item.projectName)) {
684316
+ unique.push(item.projectName);
684317
+ }
684318
+ return unique;
684319
+ }, []);
684320
+ exports.metadataAllProjects = metadataAllProjects;
684295
684321
  const fetchData = (url, apiKey, method = 'GET', body = null) => __awaiter(void 0, void 0, void 0, function* () {
684296
684322
  const fetch = typeof window !== 'undefined' && typeof window.fetch === 'function' ? window.fetch : require('node-fetch');
684297
684323
  const options = {
@@ -684325,28 +684351,28 @@ function generateAttributeTemplate(record) {
684325
684351
  "trait_type": "Series",
684326
684352
  "value": (metadata) => {
684327
684353
  var _a, _b;
684328
- return (_b = (0, exports.pad)((_a = NFT_DATA[metadata.targetAsset.name]) === null || _a === void 0 ? void 0 : _a.series, 2)) === null || _b === void 0 ? void 0 : _b.toString();
684354
+ return (_b = (0, exports.pad)((_a = exports.NFT_DATA[metadata.targetAsset.name]) === null || _a === void 0 ? void 0 : _a.series, 2)) === null || _b === void 0 ? void 0 : _b.toString();
684329
684355
  }
684330
684356
  },
684331
684357
  {
684332
684358
  "trait_type": "Card",
684333
684359
  "value": (metadata) => {
684334
684360
  var _a, _b;
684335
- return (_b = (0, exports.pad)((_a = NFT_DATA[metadata.targetAsset.name]) === null || _a === void 0 ? void 0 : _a.order, 2)) === null || _b === void 0 ? void 0 : _b.toString();
684361
+ return (_b = (0, exports.pad)((_a = exports.NFT_DATA[metadata.targetAsset.name]) === null || _a === void 0 ? void 0 : _a.order, 2)) === null || _b === void 0 ? void 0 : _b.toString();
684336
684362
  }
684337
684363
  },
684338
684364
  {
684339
684365
  "trait_type": "Total Supply",
684340
684366
  "value": (metadata) => {
684341
684367
  var _a, _b, _c, _d;
684342
- return (_d = (0, exports.pad)(((_a = NFT_DATA[metadata.targetAsset.name]) === null || _a === void 0 ? void 0 : _a.remaining) || ((_c = (_b = NFT_DATA[metadata.targetAsset.name]) === null || _b === void 0 ? void 0 : _b.raw) === null || _c === void 0 ? void 0 : _c.supply), 2)) === null || _d === void 0 ? void 0 : _d.toString();
684368
+ return (_d = (0, exports.pad)(((_a = exports.NFT_DATA[metadata.targetAsset.name]) === null || _a === void 0 ? void 0 : _a.remaining) || ((_c = (_b = exports.NFT_DATA[metadata.targetAsset.name]) === null || _b === void 0 ? void 0 : _b.raw) === null || _c === void 0 ? void 0 : _c.supply), 2)) === null || _d === void 0 ? void 0 : _d.toString();
684343
684369
  }
684344
684370
  },
684345
684371
  {
684346
684372
  "trait_type": "Artist",
684347
684373
  "value": (metadata) => {
684348
684374
  var _a, _b, _c;
684349
- return (_c = (0, exports.pad)((_b = (_a = NFT_DATA[metadata.targetAsset.name]) === null || _a === void 0 ? void 0 : _a.raw) === null || _b === void 0 ? void 0 : _b.artist.name, 2)) === null || _c === void 0 ? void 0 : _c.toString();
684375
+ return (_c = (0, exports.pad)((_b = (_a = exports.NFT_DATA[metadata.targetAsset.name]) === null || _a === void 0 ? void 0 : _a.raw) === null || _b === void 0 ? void 0 : _b.artist.name, 2)) === null || _c === void 0 ? void 0 : _c.toString();
684350
684376
  }
684351
684377
  }
684352
684378
  ];
@@ -684354,9 +684380,9 @@ function generateAttributeTemplate(record) {
684354
684380
  template.push({
684355
684381
  "trait_type": "Year",
684356
684382
  "value": (metadata) => {
684357
- return (NFT_DATA[metadata.targetAsset.name].series < 10 ? '2016' :
684358
- NFT_DATA[metadata.targetAsset.name].series > 9 &&
684359
- NFT_DATA[metadata.targetAsset.name].series < 31 ? '2017' :
684383
+ return (exports.NFT_DATA[metadata.targetAsset.name].series < 10 ? '2016' :
684384
+ exports.NFT_DATA[metadata.targetAsset.name].series > 9 &&
684385
+ exports.NFT_DATA[metadata.targetAsset.name].series < 31 ? '2017' :
684360
684386
  '2018');
684361
684387
  }
684362
684388
  });
@@ -684532,7 +684558,7 @@ function generateTemplate(record) {
684532
684558
  allowedName = asset ? true : false;
684533
684559
  }
684534
684560
  else { // XCP
684535
- let curatedItemFound = NFT_DATA[asset];
684561
+ let curatedItemFound = exports.NFT_DATA[asset];
684536
684562
  allowedName = asset && curatedItemFound ? true : false;
684537
684563
  }
684538
684564
  return allowedName;
@@ -684603,7 +684629,7 @@ function generateTemplate(record) {
684603
684629
  }
684604
684630
  }
684605
684631
  // handle xcp image urls
684606
- let assetInformation = NFT_DATA[nameAndImage.name] ? NFT_DATA[nameAndImage.name] : false;
684632
+ let assetInformation = exports.NFT_DATA[nameAndImage.name] ? exports.NFT_DATA[nameAndImage.name] : false;
684607
684633
  if (assetInformation) {
684608
684634
  if (assetInformation.image) {
684609
684635
  nameAndImage.image = assetInformation.image;
package/docs/index.html CHANGED
@@ -29,7 +29,7 @@
29
29
  selectElement().removeChild(selectElement().firstChild);
30
30
  }
31
31
  const defaultOptionElement = document.createElement('option');
32
- defaultOptionElement.value = '0';
32
+ defaultOptionElement.value = '-1';
33
33
  defaultOptionElement.text = 'Select contract';
34
34
  selectElement().appendChild(defaultOptionElement);
35
35
  curatedContracts.forEach((contract, index) => {
@@ -42,6 +42,29 @@
42
42
  });
43
43
  selectElement().style.display = 'block';
44
44
  }
45
+
46
+ function generateAssetDropdown(curatedContract) {
47
+ const selectElement = function () { return document.getElementById('vaultAssetSelect') }
48
+ // let hide = document.getElementById('hideNotMintableCheckbox').checked
49
+ while (selectElement().firstChild) {
50
+ selectElement().removeChild(selectElement().firstChild);
51
+ }
52
+ const defaultOptionElement = document.createElement('option');
53
+ defaultOptionElement.value = '0';
54
+ defaultOptionElement.text = 'Select asset';
55
+ selectElement().appendChild(defaultOptionElement);
56
+ let assets = sdk.getAssetMetadata(curatedContract.name)
57
+ window.assets = assets
58
+ assets.forEach((contract, index) => {
59
+ // if (!hide || (hide && contract.mintable)) {
60
+ const optionElement = document.createElement('option');
61
+ optionElement.value = index.toString();
62
+ optionElement.text = assets[index].assetName;
63
+ selectElement().appendChild(optionElement);
64
+ // }
65
+ });
66
+ selectElement().style.display = 'block';
67
+ }
45
68
 
46
69
  async function createVault() {
47
70
  document.getElementById('vaultDetails').display = 'none';
@@ -51,8 +74,7 @@
51
74
  console.log("--------- Vault Details ---------");
52
75
  console.log(vault)
53
76
  document.getElementById('tokenId').value = vault.tokenId;
54
- await getMetadata();
55
-
77
+ await getMetadata();
56
78
  }
57
79
 
58
80
  async function createMultipleVaults(index = 0, vaultCount = document.getElementById('vaultCount').value) {
@@ -72,16 +94,33 @@
72
94
  function selectContract(index) {
73
95
  let contract = window.curatedContracts[index];
74
96
  let template = contract.generateCreateTemplate(contract)
97
+ template.toAddress = document.getElementById('ethAddress').value;
98
+ template.fromAddress = document.getElementById('ethAddress').value;
99
+ window.contract = contract;
100
+ window.template = template;
101
+
75
102
  console.log("--------- Contract Details ---------");
76
103
  console.log(contract);
77
104
  console.log("---------- Create Template ----------");
78
105
  console.log(template);
106
+ console.log("--------- Populated Template ---------");
107
+ console.log(template);
108
+
109
+
110
+ if (contract.loadTypes.includes('select')) {
111
+ generateAssetDropdown(contract);
112
+ } else {
113
+ document.getElementById('vaultAssetSelect').style.display = 'none';
114
+ }
115
+ }
116
+
117
+ function selectAsset(index) {
118
+ console.log("--------- Asset Details ---------");
119
+ console.log(window.assets[index]);
120
+ template.targetAsset.name = window.assets[index].assetName;
121
+ template.targetAsset.image = window.assets[index].image;
79
122
  console.log("--------- Populated Template ---------");
80
- template.toAddress = document.getElementById('ethAddress').value;
81
- template.fromAddress = document.getElementById('ethAddress').value;
82
123
  console.log(template);
83
- window.contract = contract;
84
- window.template = template;
85
124
  }
86
125
 
87
126
  async function getMetadata() {
@@ -111,9 +150,12 @@
111
150
  }
112
151
 
113
152
  document.body.addEventListener('change', (event) => {
114
- if (event.target.tagName.toLowerCase() === 'select' && event.target.value != '0') {
153
+ if (event.target.id === 'contractSelect' && event.target.value != '-1') {
115
154
  selectContract(event.target.value);
116
155
  }
156
+ if (event.target.id === 'vaultAssetSelect' && event.target.value != '-1') {
157
+ selectAsset(event.target.value);
158
+ }
117
159
  });
118
160
  </script>
119
161
 
@@ -124,10 +166,11 @@
124
166
  <label for="hideNotMintableCheckbox">Hide Not Mintable</label>
125
167
 
126
168
  <select id="contractSelect" style="display: none;"></select>
127
- <input type="number" id="vaultCount" min="1" value="1">
128
- <button id="createButton" onclick="createMultipleVaults()">Create Multiple</button>
129
169
 
130
- <button id="createButton" onclick="createVault()">Create</button>
170
+ <select id="vaultAssetSelect" style="display: none;"></select>
171
+
172
+ <input type="number" id="vaultCount" min="1" value="1">
173
+ <button id="createButton" onclick="createMultipleVaults()">Create</button>
131
174
 
132
175
  <hr>
133
176
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "emblem-vault-sdk",
3
- "version": "1.2.2",
3
+ "version": "1.3.1",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -13,7 +13,8 @@
13
13
  "test:all": "npm run test:node && npm run test:browser",
14
14
  "build": "tsc && npm run postbuild",
15
15
  "postbuild": "node ./script/version.js",
16
- "bundle": "npm run build && browserify build/index.js -o dist/bundle.js && cp dist/bundle.js docs/bundle.js"
16
+ "bundle": "npm run build && browserify build/index.js -o dist/bundle.js && cp dist/bundle.js docs/bundle.js",
17
+ "watch": "onchange 'src/*.ts' -- npm run bundle"
17
18
  },
18
19
  "keywords": [],
19
20
  "author": "",
package/readme.md CHANGED
@@ -47,6 +47,30 @@ const TEST_ADDRESS = "0x9dE9ffB62c159A10cbcC19BdAc7962e9C19a1baa"
47
47
  sdk.fetchVaultsOfType("created", TEST_ADDRESS).then(vaults => {
48
48
  console.log(vaults);
49
49
  });
50
+
51
+ // Get all projects that contain Asset Metadata
52
+ projects = sdk.getAllProjects()
53
+ // [
54
+ // "Emblem Test",
55
+ // "Age of Chains",
56
+ // "Age of Rust",
57
+ // "..."
58
+ // ]
59
+
60
+ // Get asset metadata
61
+ const projectName = projects[1]; // valid item from getAllProjects() above
62
+ assets = sdk.getAssetMetadata(projectName)
63
+ console.log(assets)
64
+ // [
65
+ // {
66
+ // "image":"ELECTRUMCARD.jpg",
67
+ // "projectName":"Age of Chains",
68
+ // "projectLogo":"age-of-chains.jpg",
69
+ // "projectSite":"https://www.ageofchains.com/",
70
+ // "assetName":"ELECTRUMCARD"
71
+ // },...
72
+ // ]
73
+
50
74
  ```
51
75
 
52
76
  ## Simple Html Demo
package/src/index.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Collection, CuratedCollectionsResponse, MetaData, Vault } from './types';
2
- import { COIN_TO_NETWORK, evaluateFacts, fetchData, generateTemplate, genericGuard, pad, templateGuard } from './utils';
2
+ import { COIN_TO_NETWORK, NFT_DATA, evaluateFacts, fetchData, generateTemplate, genericGuard, metadataAllProjects, metadataObj2Arr, pad, templateGuard } from './utils';
3
3
 
4
4
  const SDK_VERSION = '__SDK_VERSION__';
5
5
  class EmblemVaultSDK {
@@ -18,6 +18,25 @@ class EmblemVaultSDK {
18
18
  // Implementation goes here
19
19
  }
20
20
 
21
+ // ** Asset Metadata **
22
+ //
23
+ getAssetMetadata(projectName: string, strict: boolean = false) {
24
+ genericGuard(projectName, "string", "projectName");
25
+ const NFT_DATA_ARR = metadataObj2Arr(NFT_DATA)
26
+ let filtered = strict ?
27
+ NFT_DATA_ARR.filter(item => item.projectName === projectName) :
28
+ NFT_DATA_ARR.filter(item => item.projectName.toLowerCase() === projectName.toLowerCase());
29
+ return filtered
30
+ }
31
+
32
+ getAllProjects() {
33
+ const NFT_DATA_ARR = metadataObj2Arr(NFT_DATA)
34
+ const projects = metadataAllProjects(NFT_DATA_ARR)
35
+ return projects
36
+ }
37
+
38
+ // ** Curated **
39
+ //
21
40
  async fetchCuratedContracts(hideUnMintable: boolean = false): Promise<CuratedCollectionsResponse> {
22
41
  let url = `${this.baseUrl}/curated`;
23
42
  let data = await fetchData(url, this.apiKey);
package/src/utils.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { MetaData } from "./types";
2
2
  import metadataJson from './curated/metadata.json';
3
- const NFT_DATA: any = metadataJson
3
+ export const NFT_DATA: any = metadataJson
4
4
 
5
5
  export const pad = (num: string | any[], size: number) => {
6
6
  if (!num) return null;
@@ -23,6 +23,18 @@ export const evaluateFacts = (allowed: boolean, facts: { eval: any; msg: string
23
23
  return allowed
24
24
  }
25
25
 
26
+ export const metadataObj2Arr = (data: any) => Object.keys(data).map(key => ({
27
+ ...data[key],
28
+ assetName: key
29
+ }));
30
+
31
+ export const metadataAllProjects = (projects: any[]) => projects.reduce((unique: any[], item: any) => {
32
+ if (!unique.includes(item.projectName)) {
33
+ unique.push(item.projectName);
34
+ }
35
+ return unique;
36
+ }, []);
37
+
26
38
  export const fetchData = async (url: string, apiKey: string, method: string = 'GET', body: any = null) => {
27
39
  const fetch = typeof window !== 'undefined' && typeof window.fetch === 'function' ? window.fetch : require('node-fetch');
28
40
  const options: any = {