@xyo-network/crypto-nft-collection-witness-plugin 2.70.5 → 2.70.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/dist/cjs/Witness.js +23 -2
  2. package/dist/cjs/Witness.js.map +1 -1
  3. package/dist/cjs/lib/collectionMetrics/getNftCollectionMetrics.js +21 -0
  4. package/dist/cjs/lib/collectionMetrics/getNftCollectionMetrics.js.map +1 -0
  5. package/dist/cjs/lib/collectionMetrics/index.js +5 -0
  6. package/dist/cjs/lib/collectionMetrics/index.js.map +1 -0
  7. package/dist/cjs/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.js +30 -0
  8. package/dist/cjs/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.js.map +1 -0
  9. package/dist/cjs/lib/collectionMetrics/lib/calculatePropertyDistribution.js +26 -0
  10. package/dist/cjs/lib/collectionMetrics/lib/calculatePropertyDistribution.js.map +1 -0
  11. package/dist/cjs/lib/collectionMetrics/lib/distribution.js +3 -0
  12. package/dist/cjs/lib/collectionMetrics/lib/distribution.js.map +1 -0
  13. package/dist/cjs/lib/collectionMetrics/lib/index.js +6 -0
  14. package/dist/cjs/lib/collectionMetrics/lib/index.js.map +1 -0
  15. package/dist/cjs/lib/getNftCollectionInfo.js +6 -32
  16. package/dist/cjs/lib/getNftCollectionInfo.js.map +1 -1
  17. package/dist/cjs/lib/getNftCollectionNfts.js +51 -0
  18. package/dist/cjs/lib/getNftCollectionNfts.js.map +1 -0
  19. package/dist/cjs/lib/getNftCollectionTotalNfts.js +33 -0
  20. package/dist/cjs/lib/getNftCollectionTotalNfts.js.map +1 -0
  21. package/dist/cjs/lib/index.js +3 -0
  22. package/dist/cjs/lib/index.js.map +1 -1
  23. package/dist/cjs/lib/nonEvaluableContractAddresses.js +12 -0
  24. package/dist/cjs/lib/nonEvaluableContractAddresses.js.map +1 -0
  25. package/dist/docs.json +2167 -1627
  26. package/dist/esm/Witness.js +25 -4
  27. package/dist/esm/Witness.js.map +1 -1
  28. package/dist/esm/lib/collectionMetrics/getNftCollectionMetrics.js +17 -0
  29. package/dist/esm/lib/collectionMetrics/getNftCollectionMetrics.js.map +1 -0
  30. package/dist/esm/lib/collectionMetrics/index.js +2 -0
  31. package/dist/esm/lib/collectionMetrics/index.js.map +1 -0
  32. package/dist/esm/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.js +26 -0
  33. package/dist/esm/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.js.map +1 -0
  34. package/dist/esm/lib/collectionMetrics/lib/calculatePropertyDistribution.js +22 -0
  35. package/dist/esm/lib/collectionMetrics/lib/calculatePropertyDistribution.js.map +1 -0
  36. package/dist/esm/lib/collectionMetrics/lib/distribution.js +2 -0
  37. package/dist/esm/lib/collectionMetrics/lib/distribution.js.map +1 -0
  38. package/dist/esm/lib/collectionMetrics/lib/index.js +3 -0
  39. package/dist/esm/lib/collectionMetrics/lib/index.js.map +1 -0
  40. package/dist/esm/lib/getNftCollectionInfo.js +4 -30
  41. package/dist/esm/lib/getNftCollectionInfo.js.map +1 -1
  42. package/dist/esm/lib/getNftCollectionNfts.js +46 -0
  43. package/dist/esm/lib/getNftCollectionNfts.js.map +1 -0
  44. package/dist/esm/lib/getNftCollectionTotalNfts.js +28 -0
  45. package/dist/esm/lib/getNftCollectionTotalNfts.js.map +1 -0
  46. package/dist/esm/lib/index.js +3 -0
  47. package/dist/esm/lib/index.js.map +1 -1
  48. package/dist/esm/lib/nonEvaluableContractAddresses.js +9 -0
  49. package/dist/esm/lib/nonEvaluableContractAddresses.js.map +1 -0
  50. package/dist/types/Witness.d.ts.map +1 -1
  51. package/dist/types/lib/collectionMetrics/getNftCollectionMetrics.d.ts +13 -0
  52. package/dist/types/lib/collectionMetrics/getNftCollectionMetrics.d.ts.map +1 -0
  53. package/dist/types/lib/collectionMetrics/index.d.ts +2 -0
  54. package/dist/types/lib/collectionMetrics/index.d.ts.map +1 -0
  55. package/dist/types/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.d.ts +3 -0
  56. package/dist/types/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.d.ts.map +1 -0
  57. package/dist/types/lib/collectionMetrics/lib/calculatePropertyDistribution.d.ts +3 -0
  58. package/dist/types/lib/collectionMetrics/lib/calculatePropertyDistribution.d.ts.map +1 -0
  59. package/dist/types/lib/collectionMetrics/lib/distribution.d.ts +6 -0
  60. package/dist/types/lib/collectionMetrics/lib/distribution.d.ts.map +1 -0
  61. package/dist/types/lib/collectionMetrics/lib/index.d.ts +3 -0
  62. package/dist/types/lib/collectionMetrics/lib/index.d.ts.map +1 -0
  63. package/dist/types/lib/getNftCollectionInfo.d.ts +2 -7
  64. package/dist/types/lib/getNftCollectionInfo.d.ts.map +1 -1
  65. package/dist/types/lib/getNftCollectionNfts.d.ts +3 -0
  66. package/dist/types/lib/getNftCollectionNfts.d.ts.map +1 -0
  67. package/dist/types/lib/getNftCollectionTotalNfts.d.ts +2 -0
  68. package/dist/types/lib/getNftCollectionTotalNfts.d.ts.map +1 -0
  69. package/dist/types/lib/index.d.ts +3 -0
  70. package/dist/types/lib/index.d.ts.map +1 -1
  71. package/dist/types/lib/nonEvaluableContractAddresses.d.ts +6 -0
  72. package/dist/types/lib/nonEvaluableContractAddresses.d.ts.map +1 -0
  73. package/package.json +8 -7
  74. package/src/Witness.ts +29 -4
  75. package/src/lib/collectionMetrics/getNftCollectionMetrics.ts +29 -0
  76. package/src/lib/collectionMetrics/index.ts +1 -0
  77. package/src/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.ts +25 -0
  78. package/src/lib/collectionMetrics/lib/calculatePropertyDistribution.ts +19 -0
  79. package/src/lib/collectionMetrics/lib/distribution.ts +3 -0
  80. package/src/lib/collectionMetrics/lib/index.ts +2 -0
  81. package/src/lib/getNftCollectionInfo.ts +5 -32
  82. package/src/lib/getNftCollectionNfts.ts +52 -0
  83. package/src/lib/getNftCollectionTotalNfts.ts +35 -0
  84. package/src/lib/index.ts +3 -0
  85. package/src/lib/nonEvaluableContractAddresses.ts +8 -0
@@ -3,9 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CryptoNftCollectionWitness = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const assert_1 = require("@xylabs/assert");
6
+ const core_1 = require("@xyo-network/core");
6
7
  const crypto_nft_collection_payload_plugin_1 = require("@xyo-network/crypto-nft-collection-payload-plugin");
7
8
  const witness_1 = require("@xyo-network/witness");
8
9
  const lib_1 = require("./lib");
10
+ const defaultMaxNftSampleSize = 100;
11
+ /**
12
+ * A "no operation" Promise to be used
13
+ * when no action is desired but a Promise
14
+ * is required to be returned
15
+ */
16
+ const NoOp = Promise.resolve();
9
17
  class CryptoNftCollectionWitness extends witness_1.AbstractWitness {
10
18
  observeHandler(payloads) {
11
19
  var _a;
@@ -15,8 +23,21 @@ class CryptoNftCollectionWitness extends witness_1.AbstractWitness {
15
23
  const observations = yield Promise.all(queries.map((query) => tslib_1.__awaiter(this, void 0, void 0, function* () {
16
24
  const address = (0, assert_1.assertEx)((query === null || query === void 0 ? void 0 : query.address) || this.config.address, 'params.address is required');
17
25
  const chainId = (0, assert_1.assertEx)((query === null || query === void 0 ? void 0 : query.chainId) || this.config.chainId, 'params.chainId is required');
18
- const observation = yield (0, lib_1.getNftCollectionInfo)(address, chainId, this.account.private.hex);
19
- return observation;
26
+ const maxNftSampleSize = (query === null || query === void 0 ? void 0 : query.maxNftSampleSize) || defaultMaxNftSampleSize;
27
+ const [info, total, nfts, archivist] = yield Promise.all([
28
+ (0, lib_1.getNftCollectionInfo)(address, chainId, this.account.private.hex),
29
+ (0, lib_1.getNftCollectionTotalNfts)(address, chainId, this.account.private.hex),
30
+ (0, lib_1.getNftCollectionNfts)(address, chainId, this.account.private.hex, maxNftSampleSize),
31
+ this.writeArchivist(),
32
+ ]);
33
+ const distribution = (0, lib_1.getNftCollectionMetrics)(nfts);
34
+ const [sources] = yield Promise.all([
35
+ // Hash all the payloads
36
+ Promise.all(nfts.map((nft) => core_1.PayloadHasher.hashAsync(nft))),
37
+ // Insert them into the archivist if we have one
38
+ archivist ? archivist.insert(nfts) : NoOp,
39
+ ]);
40
+ return Object.assign(Object.assign(Object.assign({}, info), distribution), { schema: crypto_nft_collection_payload_plugin_1.NftCollectionSchema, sources, total });
20
41
  })));
21
42
  return observations.flat();
22
43
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":";;;;AAAA,2CAAyC;AACzC,4GAI0D;AAG1D,kDAAqE;AAErE,+BAA4C;AAI5C,MAAa,0BAEX,SAAQ,yBAAwB;IAGP,cAAc,CAAC,QAAoB;;;YAC1D,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YAC3B,MAAM,OAAO,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAC,yEAAkC,CAAC,mCAAI,EAAE,CAAA;YAC1E,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,OAAO,CAAC,GAAG,CAAC,CAAO,KAAK,EAAE,EAAE;gBAC1B,MAAM,OAAO,GAAG,IAAA,iBAAQ,EAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,KAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAA;gBAC7F,MAAM,OAAO,GAAG,IAAA,iBAAQ,EAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,KAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAA;gBAC7F,MAAM,WAAW,GAAG,MAAM,IAAA,0BAAoB,EAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;gBAC1F,OAAO,WAAW,CAAA;YACpB,CAAC,CAAA,CAAC,CACH,CAAA;YACD,OAAO,YAAY,CAAC,IAAI,EAAE,CAAA;;KAC3B;;AAjBH,gEAkBC;AAfiB,wCAAa,GAAG,CAAC,uEAAgC,CAAC,CAAA"}
1
+ {"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":";;;;AAAA,2CAAyC;AACzC,4CAAiD;AACjD,4GAM0D;AAG1D,kDAAqE;AAErE,+BAAsH;AAItH,MAAM,uBAAuB,GAAG,GAAG,CAAA;AAEnC;;;;GAIG;AACH,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;AAE9B,MAAa,0BAEX,SAAQ,yBAAwB;IAGP,cAAc,CAAC,QAAoB;;;YAC1D,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YAC3B,MAAM,OAAO,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAC,yEAAkC,CAAC,mCAAI,EAAE,CAAA;YAC1E,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,OAAO,CAAC,GAAG,CAAoC,CAAO,KAAK,EAAE,EAAE;gBAC7D,MAAM,OAAO,GAAG,IAAA,iBAAQ,EAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,KAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAA;gBAC7F,MAAM,OAAO,GAAG,IAAA,iBAAQ,EAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,KAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAA;gBAC7F,MAAM,gBAAgB,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,gBAAgB,KAAI,uBAAuB,CAAA;gBAC3E,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;oBACvD,IAAA,0BAAoB,EAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;oBAChE,IAAA,+BAAyB,EAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;oBACrE,IAAA,0BAAoB,EAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC;oBAClF,IAAI,CAAC,cAAc,EAAE;iBACtB,CAAC,CAAA;gBACF,MAAM,YAAY,GAAG,IAAA,6BAAuB,EAAC,IAAI,CAAC,CAAA;gBAClD,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;oBAClC,wBAAwB;oBACxB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC5D,gDAAgD;oBAChD,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;iBAC1C,CAAC,CAAA;gBACF,qDAAY,IAAI,GAAK,YAAY,KAAE,MAAM,EAAE,0DAAmB,EAAE,OAAO,EAAE,KAAK,IAAE;YAClF,CAAC,CAAA,CAAC,CACH,CAAA;YACD,OAAO,YAAY,CAAC,IAAI,EAAE,CAAA;;KAC3B;;AA9BH,gEA+BC;AA5BiB,wCAAa,GAAG,CAAC,uEAAgC,CAAC,CAAA"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getNftCollectionMetrics = void 0;
4
+ const lib_1 = require("./lib");
5
+ const getNftCollectionMetrics = (nfts) => {
6
+ const attributes = nfts
7
+ .map((nft) => { var _a; return (_a = nft.metadata) === null || _a === void 0 ? void 0 : _a.attributes; })
8
+ .map((attributes) => {
9
+ return Object.fromEntries(attributes.map((attribute) => [attribute.trait_type, attribute.value]));
10
+ });
11
+ const distribution = (0, lib_1.calculateAllPropertiesDistribution)(attributes);
12
+ return {
13
+ distribution: {
14
+ metadata: {
15
+ attributes: distribution,
16
+ },
17
+ },
18
+ };
19
+ };
20
+ exports.getNftCollectionMetrics = getNftCollectionMetrics;
21
+ //# sourceMappingURL=getNftCollectionMetrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getNftCollectionMetrics.js","sourceRoot":"","sources":["../../../../src/lib/collectionMetrics/getNftCollectionMetrics.ts"],"names":[],"mappings":";;;AAEA,+BAAwE;AAYjE,MAAM,uBAAuB,GAAG,CAAC,IAAe,EAAwB,EAAE;IAC/E,MAAM,UAAU,GAAG,IAAI;SACpB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAC,OAAA,MAAA,GAAG,CAAC,QAAQ,0CAAE,UAAmC,CAAA,EAAA,CAAC;SAC/D,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QAClB,OAAO,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACnG,CAAC,CAAC,CAAA;IACJ,MAAM,YAAY,GAAG,IAAA,wCAAkC,EAAC,UAAU,CAAC,CAAA;IACnE,OAAO;QACL,YAAY,EAAE;YACZ,QAAQ,EAAE;gBACR,UAAU,EAAE,YAAY;aACzB;SACF;KACF,CAAA;AACH,CAAC,CAAA;AAdY,QAAA,uBAAuB,2BAcnC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./getNftCollectionMetrics"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/collectionMetrics/index.ts"],"names":[],"mappings":";;;AAAA,oEAAyC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateAllPropertiesDistribution = void 0;
4
+ const calculateAllPropertiesDistribution = (array) => {
5
+ const distribution = {};
6
+ array.forEach((item) => {
7
+ for (const property in item) {
8
+ if (Object.prototype.hasOwnProperty.call(item, property)) {
9
+ const value = item[property];
10
+ if (value !== undefined && value !== null) {
11
+ const valueString = value.toString();
12
+ if (!distribution[property]) {
13
+ distribution[property] = { [valueString]: 1 };
14
+ }
15
+ else if (!distribution[property][valueString]) {
16
+ ;
17
+ distribution[property][valueString] = 1;
18
+ }
19
+ else {
20
+ ;
21
+ distribution[property][valueString] += 1;
22
+ }
23
+ }
24
+ }
25
+ }
26
+ });
27
+ return distribution;
28
+ };
29
+ exports.calculateAllPropertiesDistribution = calculateAllPropertiesDistribution;
30
+ //# sourceMappingURL=calculateAllPropertiesDistribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculateAllPropertiesDistribution.js","sourceRoot":"","sources":["../../../../../src/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.ts"],"names":[],"mappings":";;;AAEO,MAAM,kCAAkC,GAAG,CAAI,KAAU,EAAmB,EAAE;IACnF,MAAM,YAAY,GAAoB,EAAE,CAAA;IAExC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE;YAC3B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE;gBACxD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAmB,CAAC,CAAA;gBACvC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;oBACzC,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;oBACpC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;wBAC3B,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAA;qBAC9C;yBAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAE,CAAC,WAAW,CAAC,EAAE;wBAChD,CAAC;wBAAC,YAAY,CAAC,QAAQ,CAA4B,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;qBACrE;yBAAM;wBACL,CAAC;wBAAC,YAAY,CAAC,QAAQ,CAA4B,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;qBACtE;iBACF;aACF;SACF;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA;AAtBY,QAAA,kCAAkC,sCAsB9C"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculatePropertyDistribution = void 0;
4
+ const calculatePropertyDistribution = (array, property) => {
5
+ const distribution = {};
6
+ array.forEach((item) => {
7
+ const value = item[property];
8
+ if (value !== undefined && value !== null) {
9
+ const valueString = value.toString();
10
+ if (!distribution[property]) {
11
+ distribution[property] = { [valueString]: 1 };
12
+ }
13
+ else if (!distribution[property][valueString]) {
14
+ ;
15
+ distribution[property][valueString] = 1;
16
+ }
17
+ else {
18
+ ;
19
+ distribution[property][valueString] += 1;
20
+ }
21
+ }
22
+ });
23
+ return distribution;
24
+ };
25
+ exports.calculatePropertyDistribution = calculatePropertyDistribution;
26
+ //# sourceMappingURL=calculatePropertyDistribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculatePropertyDistribution.js","sourceRoot":"","sources":["../../../../../src/lib/collectionMetrics/lib/calculatePropertyDistribution.ts"],"names":[],"mappings":";;;AAEO,MAAM,6BAA6B,GAAG,CAAI,KAAU,EAAE,QAAiB,EAAmB,EAAE;IACjG,MAAM,YAAY,GAAoB,EAAE,CAAA;IACxC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC5B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;YACzC,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;YACpC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;gBAC3B,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAA;aAC9C;iBAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAE,CAAC,WAAW,CAAC,EAAE;gBAChD,CAAC;gBAAC,YAAY,CAAC,QAAQ,CAA4B,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;aACrE;iBAAM;gBACL,CAAC;gBAAC,YAAY,CAAC,QAAQ,CAA4B,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;aACtE;SACF;IACH,CAAC,CAAC,CAAA;IACF,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA;AAhBY,QAAA,6BAA6B,iCAgBzC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=distribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distribution.js","sourceRoot":"","sources":["../../../../../src/lib/collectionMetrics/lib/distribution.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./calculateAllPropertiesDistribution"), exports);
5
+ tslib_1.__exportStar(require("./distribution"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/lib/collectionMetrics/lib/index.ts"],"names":[],"mappings":";;;AAAA,+EAAoD;AACpD,yDAA8B"}
@@ -1,17 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getNftCollectionInfo = exports.nonEvaluableContractAddresses = void 0;
3
+ exports.getNftCollectionInfo = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const sdk_1 = require("@infura/sdk");
6
- const crypto_nft_collection_payload_plugin_1 = require("@xyo-network/crypto-nft-collection-payload-plugin");
7
- /**
8
- * These contracts are not evaluable for some
9
- * reason (too large, nonsensical, etc.)
10
- */
11
- exports.nonEvaluableContractAddresses = [
12
- // ENS
13
- '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72',
14
- ].map((address) => address.toUpperCase());
6
+ const nonEvaluableContractAddresses_1 = require("./nonEvaluableContractAddresses");
15
7
  const getNftCollectionInfo = (
16
8
  /**
17
9
  * The address of the NFT contract to search for
@@ -28,32 +20,14 @@ chainId,
28
20
  /**
29
21
  * The private key of the wallet to use to search for NFTs
30
22
  */
31
- privateKey,
32
- /**
33
- * The maximum number of NFTs to return. Configurable to prevent
34
- * large wallets from exhausting Infura API credits.
35
- */
36
- maxNftCount = 20000) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
37
- if (exports.nonEvaluableContractAddresses.includes(contractAddress.toUpperCase())) {
23
+ privateKey) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
24
+ if (nonEvaluableContractAddresses_1.nonEvaluableContractAddresses.includes(contractAddress.toUpperCase())) {
38
25
  throw new Error(`Unable to evaluate collection with contractAddress: ${contractAddress}`);
39
26
  }
40
- // Instantiate SDK
41
- const sdk = new sdk_1.SDK(new sdk_1.Auth({
42
- chainId,
43
- privateKey,
44
- projectId: process.env.INFURA_PROJECT_ID,
45
- // ipfs: {
46
- // apiKeySecret: process.env.INFURA_IPFS_PROJECT_SECRET,
47
- // projectId: process.env.INFURA_IPFS_PROJECT_ID,
48
- // },
49
- // provider,
50
- // NOTE: rpcUrl is not required if chainId & projectId are provided
51
- // rpcUrl: process.env.EVM_RPC_URL,
52
- secretId: process.env.INFURA_PROJECT_SECRET,
53
- }));
27
+ const sdk = new sdk_1.SDK(new sdk_1.Auth({ chainId, privateKey, projectId: process.env.INFURA_PROJECT_ID, secretId: process.env.INFURA_PROJECT_SECRET }));
54
28
  const opts = { contractAddress };
55
29
  const { name, symbol, tokenType } = yield sdk.api.getContractMetadata(opts);
56
- return { address: contractAddress, chainId, name, schema: crypto_nft_collection_payload_plugin_1.NftCollectionSchema, symbol, tokenType };
30
+ return { address: contractAddress, chainId, name, symbol, tokenType };
57
31
  });
58
32
  exports.getNftCollectionInfo = getNftCollectionInfo;
59
33
  //# sourceMappingURL=getNftCollectionInfo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getNftCollectionInfo.js","sourceRoot":"","sources":["../../../src/lib/getNftCollectionInfo.ts"],"names":[],"mappings":";;;;AAAA,qCAAuC;AACvC,4GAAiH;AAEjH;;;GAGG;AACU,QAAA,6BAA6B,GAAG;IAC3C,MAAM;IACN,4CAA4C;CAC7C,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;AAOlC,MAAM,oBAAoB,GAAG;AAClC;;GAEG;AACH,eAAuB;AACvB;;GAEG;AACH,OAAe;AACf,MAAM;AACN,mDAAmD;AACnD,MAAM;AACN,iDAAiD;AACjD;;GAEG;AACH,UAAkB;AAClB;;;GAGG;AACH,WAAW,GAAG,KAAK,EACgB,EAAE;IACrC,IAAI,qCAA6B,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,EAAE;QACzE,MAAM,IAAI,KAAK,CAAC,uDAAuD,eAAe,EAAE,CAAC,CAAA;KAC1F;IACD,kBAAkB;IAClB,MAAM,GAAG,GAAG,IAAI,SAAG,CACjB,IAAI,UAAI,CAAC;QACP,OAAO;QACP,UAAU;QACV,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;QACxC,UAAU;QACV,0DAA0D;QAC1D,mDAAmD;QACnD,KAAK;QACL,YAAY;QACZ,mEAAmE;QACnE,mCAAmC;QACnC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;KAC5C,CAAC,CACH,CAAA;IACD,MAAM,IAAI,GAA2B,EAAE,eAAe,EAAE,CAAA;IACxD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;IAC3E,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,0DAAmB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;AACpG,CAAC,CAAA,CAAA;AA7CY,QAAA,oBAAoB,wBA6ChC"}
1
+ {"version":3,"file":"getNftCollectionInfo.js","sourceRoot":"","sources":["../../../src/lib/getNftCollectionInfo.ts"],"names":[],"mappings":";;;;AAAA,qCAAuC;AAGvC,mFAA+E;AAOxE,MAAM,oBAAoB,GAAG;AAClC;;GAEG;AACH,eAAuB;AACvB;;GAEG;AACH,OAAe;AACf,MAAM;AACN,mDAAmD;AACnD,MAAM;AACN,iDAAiD;AACjD;;GAEG;AACH,UAAkB,EACyB,EAAE;IAC7C,IAAI,6DAA6B,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,EAAE;QACzE,MAAM,IAAI,KAAK,CAAC,uDAAuD,eAAe,EAAE,CAAC,CAAA;KAC1F;IACD,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,IAAI,UAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAA;IAC7I,MAAM,IAAI,GAA2B,EAAE,eAAe,EAAE,CAAA;IACxD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;IAC3E,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;AACvE,CAAC,CAAA,CAAA;AAzBY,QAAA,oBAAoB,wBAyBhC"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getNftCollectionNfts = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const sdk_1 = require("@infura/sdk");
6
+ const crypto_nft_payload_plugin_1 = require("@xyo-network/crypto-nft-payload-plugin");
7
+ const nonEvaluableContractAddresses_1 = require("./nonEvaluableContractAddresses");
8
+ const getNftCollectionNfts = (
9
+ /**
10
+ * The address of the NFT contract to search for
11
+ */
12
+ contractAddress,
13
+ /**
14
+ * The chain ID (1 = Ethereum Mainnet, 4 = Rinkeby, etc.) of the chain to search for NFTs on
15
+ */
16
+ chainId,
17
+ // /**
18
+ // * The ethers provider to use to search for NFTs
19
+ // */
20
+ // provider: ExternalProvider | JsonRpcFetchFunc,
21
+ /**
22
+ * The private key of the wallet to use to search for NFTs
23
+ */
24
+ privateKey,
25
+ /**
26
+ * The maximum number of NFTs to return. Configurable to prevent
27
+ * large wallets from exhausting Infura API credits. Ideally a
28
+ * multiple of 100 as that appears to be the default page size.
29
+ */
30
+ maxNftSampleSize = 100) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
31
+ if (nonEvaluableContractAddresses_1.nonEvaluableContractAddresses.includes(contractAddress.toUpperCase())) {
32
+ throw new Error(`Unable to evaluate collection with contractAddress: ${contractAddress}`);
33
+ }
34
+ const sdk = new sdk_1.SDK(new sdk_1.Auth({ chainId, privateKey, projectId: process.env.INFURA_PROJECT_ID, secretId: process.env.INFURA_PROJECT_SECRET }));
35
+ const nfts = [];
36
+ let cursor = undefined;
37
+ do {
38
+ const opts = { contractAddress, cursor };
39
+ const { cursor: nextCursor, pageSize, total, assets } = yield sdk.api.getNFTsForCollection(opts);
40
+ const batch = assets.slice(0, Math.min(pageSize, total - nfts.length));
41
+ nfts.push(...batch);
42
+ cursor = nextCursor;
43
+ if (nfts.length >= total || !cursor)
44
+ break;
45
+ } while (nfts.length < maxNftSampleSize);
46
+ return nfts.map((nft) => {
47
+ return Object.assign(Object.assign({}, nft), { schema: crypto_nft_payload_plugin_1.NftSchema });
48
+ });
49
+ });
50
+ exports.getNftCollectionNfts = getNftCollectionNfts;
51
+ //# sourceMappingURL=getNftCollectionNfts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getNftCollectionNfts.js","sourceRoot":"","sources":["../../../src/lib/getNftCollectionNfts.ts"],"names":[],"mappings":";;;;AAAA,qCAAuC;AACvC,sFAA2F;AAE3F,mFAA+E;AAOxE,MAAM,oBAAoB,GAAG;AAClC;;GAEG;AACH,eAAuB;AACvB;;GAEG;AACH,OAAe;AACf,MAAM;AACN,mDAAmD;AACnD,MAAM;AACN,iDAAiD;AACjD;;GAEG;AACH,UAAkB;AAClB;;;;GAIG;AACH,gBAAgB,GAAG,GAAG,EACK,EAAE;IAC7B,IAAI,6DAA6B,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,EAAE;QACzE,MAAM,IAAI,KAAK,CAAC,uDAAuD,eAAe,EAAE,CAAC,CAAA;KAC1F;IACD,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,IAAI,UAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAA;IAC7I,MAAM,IAAI,GAAc,EAAE,CAAA;IAC1B,IAAI,MAAM,GAAuB,SAAS,CAAA;IAC1C,GAAG;QACD,MAAM,IAAI,GAA2B,EAAE,eAAe,EAAE,MAAM,EAAE,CAAA;QAChE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;QAChG,MAAM,KAAK,GAAc,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QACjF,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAA;QACnB,MAAM,GAAG,UAAU,CAAA;QACnB,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,IAAI,CAAC,MAAM;YAAE,MAAK;KAC3C,QAAQ,IAAI,CAAC,MAAM,GAAG,gBAAgB,EAAC;IACxC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACtB,uCAAY,GAAG,KAAE,MAAM,EAAE,qCAAS,IAAE;IACtC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AAzCY,QAAA,oBAAoB,wBAyChC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getNftCollectionTotalNfts = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const sdk_1 = require("@infura/sdk");
6
+ const nonEvaluableContractAddresses_1 = require("./nonEvaluableContractAddresses");
7
+ const getNftCollectionTotalNfts = (
8
+ /**
9
+ * The address of the NFT contract to search for
10
+ */
11
+ contractAddress,
12
+ /**
13
+ * The chain ID (1 = Ethereum Mainnet, 4 = Rinkeby, etc.) of the chain to search for NFTs on
14
+ */
15
+ chainId,
16
+ // /**
17
+ // * The ethers provider to use to search for NFTs
18
+ // */
19
+ // provider: ExternalProvider | JsonRpcFetchFunc,
20
+ /**
21
+ * The private key of the wallet to use to search for NFTs
22
+ */
23
+ privateKey) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
24
+ if (nonEvaluableContractAddresses_1.nonEvaluableContractAddresses.includes(contractAddress.toUpperCase())) {
25
+ throw new Error(`Unable to evaluate collection with contractAddress: ${contractAddress}`);
26
+ }
27
+ const sdk = new sdk_1.SDK(new sdk_1.Auth({ chainId, privateKey, projectId: process.env.INFURA_PROJECT_ID, secretId: process.env.INFURA_PROJECT_SECRET }));
28
+ const opts = { contractAddress };
29
+ const { total } = yield sdk.api.getNFTsForCollection(opts);
30
+ return total;
31
+ });
32
+ exports.getNftCollectionTotalNfts = getNftCollectionTotalNfts;
33
+ //# sourceMappingURL=getNftCollectionTotalNfts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getNftCollectionTotalNfts.js","sourceRoot":"","sources":["../../../src/lib/getNftCollectionTotalNfts.ts"],"names":[],"mappings":";;;;AAAA,qCAAuC;AAEvC,mFAA+E;AAOxE,MAAM,yBAAyB,GAAG;AACvC;;GAEG;AACH,eAAuB;AACvB;;GAEG;AACH,OAAe;AACf,MAAM;AACN,mDAAmD;AACnD,MAAM;AACN,iDAAiD;AACjD;;GAEG;AACH,UAAkB,EACD,EAAE;IACnB,IAAI,6DAA6B,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,EAAE;QACzE,MAAM,IAAI,KAAK,CAAC,uDAAuD,eAAe,EAAE,CAAC,CAAA;KAC1F;IACD,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,IAAI,UAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAA;IAC7I,MAAM,IAAI,GAA2B,EAAE,eAAe,EAAE,CAAA;IACxD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAC1D,OAAO,KAAK,CAAA;AACd,CAAC,CAAA,CAAA;AAzBY,QAAA,yBAAyB,6BAyBrC"}
@@ -1,5 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./collectionMetrics"), exports);
4
5
  tslib_1.__exportStar(require("./getNftCollectionInfo"), exports);
6
+ tslib_1.__exportStar(require("./getNftCollectionNfts"), exports);
7
+ tslib_1.__exportStar(require("./getNftCollectionTotalNfts"), exports);
5
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":";;;AAAA,iEAAsC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":";;;AAAA,8DAAmC;AACnC,iEAAsC;AACtC,iEAAsC;AACtC,sEAA2C"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.nonEvaluableContractAddresses = void 0;
4
+ /**
5
+ * These contracts are not evaluable for some
6
+ * reason (too large, nonsensical, etc.)
7
+ */
8
+ exports.nonEvaluableContractAddresses = [
9
+ // ENS
10
+ '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72',
11
+ ].map((address) => address.toUpperCase());
12
+ //# sourceMappingURL=nonEvaluableContractAddresses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nonEvaluableContractAddresses.js","sourceRoot":"","sources":["../../../src/lib/nonEvaluableContractAddresses.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,6BAA6B,GAAG;IAC3C,MAAM;IACN,4CAA4C;CAC7C,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA"}