@xyo-network/crypto-nft-collection-witness-plugin 2.70.5 → 2.70.7
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/cjs/Witness.js +23 -2
- package/dist/cjs/Witness.js.map +1 -1
- package/dist/cjs/lib/collectionMetrics/getNftCollectionMetrics.js +21 -0
- package/dist/cjs/lib/collectionMetrics/getNftCollectionMetrics.js.map +1 -0
- package/dist/cjs/lib/collectionMetrics/index.js +5 -0
- package/dist/cjs/lib/collectionMetrics/index.js.map +1 -0
- package/dist/cjs/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.js +30 -0
- package/dist/cjs/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.js.map +1 -0
- package/dist/cjs/lib/collectionMetrics/lib/calculatePropertyDistribution.js +26 -0
- package/dist/cjs/lib/collectionMetrics/lib/calculatePropertyDistribution.js.map +1 -0
- package/dist/cjs/lib/collectionMetrics/lib/distribution.js +3 -0
- package/dist/cjs/lib/collectionMetrics/lib/distribution.js.map +1 -0
- package/dist/cjs/lib/collectionMetrics/lib/index.js +6 -0
- package/dist/cjs/lib/collectionMetrics/lib/index.js.map +1 -0
- package/dist/cjs/lib/getNftCollectionInfo.js +6 -32
- package/dist/cjs/lib/getNftCollectionInfo.js.map +1 -1
- package/dist/cjs/lib/getNftCollectionNfts.js +51 -0
- package/dist/cjs/lib/getNftCollectionNfts.js.map +1 -0
- package/dist/cjs/lib/getNftCollectionTotalNfts.js +33 -0
- package/dist/cjs/lib/getNftCollectionTotalNfts.js.map +1 -0
- package/dist/cjs/lib/index.js +3 -0
- package/dist/cjs/lib/index.js.map +1 -1
- package/dist/cjs/lib/nonEvaluableContractAddresses.js +12 -0
- package/dist/cjs/lib/nonEvaluableContractAddresses.js.map +1 -0
- package/dist/docs.json +2167 -1627
- package/dist/esm/Witness.js +25 -4
- package/dist/esm/Witness.js.map +1 -1
- package/dist/esm/lib/collectionMetrics/getNftCollectionMetrics.js +17 -0
- package/dist/esm/lib/collectionMetrics/getNftCollectionMetrics.js.map +1 -0
- package/dist/esm/lib/collectionMetrics/index.js +2 -0
- package/dist/esm/lib/collectionMetrics/index.js.map +1 -0
- package/dist/esm/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.js +26 -0
- package/dist/esm/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.js.map +1 -0
- package/dist/esm/lib/collectionMetrics/lib/calculatePropertyDistribution.js +22 -0
- package/dist/esm/lib/collectionMetrics/lib/calculatePropertyDistribution.js.map +1 -0
- package/dist/esm/lib/collectionMetrics/lib/distribution.js +2 -0
- package/dist/esm/lib/collectionMetrics/lib/distribution.js.map +1 -0
- package/dist/esm/lib/collectionMetrics/lib/index.js +3 -0
- package/dist/esm/lib/collectionMetrics/lib/index.js.map +1 -0
- package/dist/esm/lib/getNftCollectionInfo.js +4 -30
- package/dist/esm/lib/getNftCollectionInfo.js.map +1 -1
- package/dist/esm/lib/getNftCollectionNfts.js +46 -0
- package/dist/esm/lib/getNftCollectionNfts.js.map +1 -0
- package/dist/esm/lib/getNftCollectionTotalNfts.js +28 -0
- package/dist/esm/lib/getNftCollectionTotalNfts.js.map +1 -0
- package/dist/esm/lib/index.js +3 -0
- package/dist/esm/lib/index.js.map +1 -1
- package/dist/esm/lib/nonEvaluableContractAddresses.js +9 -0
- package/dist/esm/lib/nonEvaluableContractAddresses.js.map +1 -0
- package/dist/types/Witness.d.ts.map +1 -1
- package/dist/types/lib/collectionMetrics/getNftCollectionMetrics.d.ts +13 -0
- package/dist/types/lib/collectionMetrics/getNftCollectionMetrics.d.ts.map +1 -0
- package/dist/types/lib/collectionMetrics/index.d.ts +2 -0
- package/dist/types/lib/collectionMetrics/index.d.ts.map +1 -0
- package/dist/types/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.d.ts +3 -0
- package/dist/types/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.d.ts.map +1 -0
- package/dist/types/lib/collectionMetrics/lib/calculatePropertyDistribution.d.ts +3 -0
- package/dist/types/lib/collectionMetrics/lib/calculatePropertyDistribution.d.ts.map +1 -0
- package/dist/types/lib/collectionMetrics/lib/distribution.d.ts +6 -0
- package/dist/types/lib/collectionMetrics/lib/distribution.d.ts.map +1 -0
- package/dist/types/lib/collectionMetrics/lib/index.d.ts +3 -0
- package/dist/types/lib/collectionMetrics/lib/index.d.ts.map +1 -0
- package/dist/types/lib/getNftCollectionInfo.d.ts +2 -7
- package/dist/types/lib/getNftCollectionInfo.d.ts.map +1 -1
- package/dist/types/lib/getNftCollectionNfts.d.ts +3 -0
- package/dist/types/lib/getNftCollectionNfts.d.ts.map +1 -0
- package/dist/types/lib/getNftCollectionTotalNfts.d.ts +2 -0
- package/dist/types/lib/getNftCollectionTotalNfts.d.ts.map +1 -0
- package/dist/types/lib/index.d.ts +3 -0
- package/dist/types/lib/index.d.ts.map +1 -1
- package/dist/types/lib/nonEvaluableContractAddresses.d.ts +6 -0
- package/dist/types/lib/nonEvaluableContractAddresses.d.ts.map +1 -0
- package/package.json +8 -7
- package/src/Witness.ts +29 -4
- package/src/lib/collectionMetrics/getNftCollectionMetrics.ts +29 -0
- package/src/lib/collectionMetrics/index.ts +1 -0
- package/src/lib/collectionMetrics/lib/calculateAllPropertiesDistribution.ts +25 -0
- package/src/lib/collectionMetrics/lib/calculatePropertyDistribution.ts +19 -0
- package/src/lib/collectionMetrics/lib/distribution.ts +3 -0
- package/src/lib/collectionMetrics/lib/index.ts +2 -0
- package/src/lib/getNftCollectionInfo.ts +5 -32
- package/src/lib/getNftCollectionNfts.ts +52 -0
- package/src/lib/getNftCollectionTotalNfts.ts +35 -0
- package/src/lib/index.ts +3 -0
- package/src/lib/nonEvaluableContractAddresses.ts +8 -0
package/dist/cjs/Witness.js
CHANGED
|
@@ -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
|
|
19
|
-
|
|
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
|
});
|
package/dist/cjs/Witness.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":";;;;AAAA,2CAAyC;AACzC,
|
|
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 @@
|
|
|
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 @@
|
|
|
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 =
|
|
3
|
+
exports.getNftCollectionInfo = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const sdk_1 = require("@infura/sdk");
|
|
6
|
-
const
|
|
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
|
-
|
|
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,
|
|
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;
|
|
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"}
|
package/dist/cjs/lib/index.js
CHANGED
|
@@ -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"}
|