@xyo-network/crypto-nft-diviner-score-plugin 2.70.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/LICENSE +165 -0
- package/README.md +13 -0
- package/dist/cjs/Diviner.js +30 -0
- package/dist/cjs/Diviner.js.map +1 -0
- package/dist/cjs/Plugin.js +16 -0
- package/dist/cjs/Plugin.js.map +1 -0
- package/dist/cjs/index.js +11 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lib/index.js +5 -0
- package/dist/cjs/lib/index.js.map +1 -0
- package/dist/cjs/lib/rating/analyzeNft.js +19 -0
- package/dist/cjs/lib/rating/analyzeNft.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/index.js +5 -0
- package/dist/cjs/lib/rating/criteria/index.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/contract.js +16 -0
- package/dist/cjs/lib/rating/criteria/scoring/contract.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/index.js +9 -0
- package/dist/cjs/lib/rating/criteria/scoring/index.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/lib/index.js +6 -0
- package/dist/cjs/lib/rating/criteria/scoring/lib/index.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.js +10 -0
- package/dist/cjs/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/lib/toBigNumber.js +14 -0
- package/dist/cjs/lib/rating/criteria/scoring/lib/toBigNumber.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/animationUrl.js +30 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/animationUrl.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.js +86 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/attributes/index.js +5 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/attributes/index.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/backgroundColor.js +24 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/backgroundColor.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/description.js +17 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/description.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/externalUrl.js +21 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/externalUrl.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/image.js +33 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/image.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/imageData.js +40 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/imageData.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/index.js +13 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/index.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/lib/index.js +5 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/lib/index.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/lib/urlHelpers.js +25 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/lib/urlHelpers.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/name.js +17 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/name.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/youtubeUrl.js +23 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/youtubeUrl.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/supply.js +20 -0
- package/dist/cjs/lib/rating/criteria/scoring/supply.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/tokenId.js +26 -0
- package/dist/cjs/lib/rating/criteria/scoring/tokenId.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/type.js +16 -0
- package/dist/cjs/lib/rating/criteria/scoring/type.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoringCriteria.js +10 -0
- package/dist/cjs/lib/rating/criteria/scoringCriteria.js.map +1 -0
- package/dist/cjs/lib/rating/index.js +6 -0
- package/dist/cjs/lib/rating/index.js.map +1 -0
- package/dist/cjs/lib/rating/score.js +23 -0
- package/dist/cjs/lib/rating/score.js.map +1 -0
- package/dist/esm/Diviner.js +20 -0
- package/dist/esm/Diviner.js.map +1 -0
- package/dist/esm/Plugin.js +11 -0
- package/dist/esm/Plugin.js.map +1 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/index.js +2 -0
- package/dist/esm/lib/index.js.map +1 -0
- package/dist/esm/lib/rating/analyzeNft.js +14 -0
- package/dist/esm/lib/rating/analyzeNft.js.map +1 -0
- package/dist/esm/lib/rating/criteria/index.js +2 -0
- package/dist/esm/lib/rating/criteria/index.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/contract.js +12 -0
- package/dist/esm/lib/rating/criteria/scoring/contract.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/index.js +6 -0
- package/dist/esm/lib/rating/criteria/scoring/index.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/lib/index.js +3 -0
- package/dist/esm/lib/rating/criteria/scoring/lib/index.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.js +6 -0
- package/dist/esm/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/lib/toBigNumber.js +10 -0
- package/dist/esm/lib/rating/criteria/scoring/lib/toBigNumber.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/animationUrl.js +24 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/animationUrl.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.js +80 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/attributes/index.js +2 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/attributes/index.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/backgroundColor.js +18 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/backgroundColor.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/description.js +11 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/description.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/externalUrl.js +15 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/externalUrl.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/image.js +27 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/image.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/imageData.js +34 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/imageData.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/index.js +10 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/index.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/lib/index.js +2 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/lib/index.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/lib/urlHelpers.js +17 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/lib/urlHelpers.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/name.js +11 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/name.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/youtubeUrl.js +17 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/youtubeUrl.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/supply.js +16 -0
- package/dist/esm/lib/rating/criteria/scoring/supply.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/tokenId.js +22 -0
- package/dist/esm/lib/rating/criteria/scoring/tokenId.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/type.js +12 -0
- package/dist/esm/lib/rating/criteria/scoring/type.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoringCriteria.js +23 -0
- package/dist/esm/lib/rating/criteria/scoringCriteria.js.map +1 -0
- package/dist/esm/lib/rating/index.js +3 -0
- package/dist/esm/lib/rating/index.js.map +1 -0
- package/dist/esm/lib/rating/score.js +17 -0
- package/dist/esm/lib/rating/score.js.map +1 -0
- package/dist/types/Diviner.d.ts +16 -0
- package/dist/types/Diviner.d.ts.map +1 -0
- package/dist/types/Plugin.d.ts +47 -0
- package/dist/types/Plugin.d.ts.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/lib/index.d.ts +2 -0
- package/dist/types/lib/index.d.ts.map +1 -0
- package/dist/types/lib/rating/analyzeNft.d.ts +9 -0
- package/dist/types/lib/rating/analyzeNft.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/index.d.ts +2 -0
- package/dist/types/lib/rating/criteria/index.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/contract.d.ts +3 -0
- package/dist/types/lib/rating/criteria/scoring/contract.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/index.d.ts +6 -0
- package/dist/types/lib/rating/criteria/scoring/index.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/lib/index.d.ts +3 -0
- package/dist/types/lib/rating/criteria/scoring/lib/index.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.d.ts +2 -0
- package/dist/types/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/lib/toBigNumber.d.ts +3 -0
- package/dist/types/lib/rating/criteria/scoring/lib/toBigNumber.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/animationUrl.d.ts +5 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/animationUrl.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.ts +6 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/attributes/index.d.ts +2 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/attributes/index.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/backgroundColor.d.ts +5 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/backgroundColor.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/description.d.ts +5 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/description.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/externalUrl.d.ts +5 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/externalUrl.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/image.d.ts +5 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/image.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/imageData.d.ts +5 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/imageData.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/index.d.ts +10 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/index.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/lib/index.d.ts +2 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/lib/index.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.ts +8 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/name.d.ts +5 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/name.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/youtubeUrl.d.ts +5 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/youtubeUrl.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/supply.d.ts +3 -0
- package/dist/types/lib/rating/criteria/scoring/supply.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/tokenId.d.ts +9 -0
- package/dist/types/lib/rating/criteria/scoring/tokenId.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/type.d.ts +3 -0
- package/dist/types/lib/rating/criteria/scoring/type.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoringCriteria.d.ts +55 -0
- package/dist/types/lib/rating/criteria/scoringCriteria.d.ts.map +1 -0
- package/dist/types/lib/rating/index.d.ts +3 -0
- package/dist/types/lib/rating/index.d.ts.map +1 -0
- package/dist/types/lib/rating/score.d.ts +18 -0
- package/dist/types/lib/rating/score.d.ts.map +1 -0
- package/package.json +68 -0
- package/src/Diviner.ts +37 -0
- package/src/Plugin.ts +16 -0
- package/src/index.ts +9 -0
- package/src/lib/index.ts +1 -0
- package/src/lib/rating/analyzeNft.ts +28 -0
- package/src/lib/rating/criteria/index.ts +1 -0
- package/src/lib/rating/criteria/scoring/contract.ts +11 -0
- package/src/lib/rating/criteria/scoring/index.ts +5 -0
- package/src/lib/rating/criteria/scoring/lib/index.ts +2 -0
- package/src/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.ts +6 -0
- package/src/lib/rating/criteria/scoring/lib/toBigNumber.ts +9 -0
- package/src/lib/rating/criteria/scoring/metadata/animationUrl.ts +22 -0
- package/src/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.ts +86 -0
- package/src/lib/rating/criteria/scoring/metadata/attributes/index.ts +1 -0
- package/src/lib/rating/criteria/scoring/metadata/backgroundColor.ts +19 -0
- package/src/lib/rating/criteria/scoring/metadata/description.ts +13 -0
- package/src/lib/rating/criteria/scoring/metadata/externalUrl.ts +15 -0
- package/src/lib/rating/criteria/scoring/metadata/image.ts +27 -0
- package/src/lib/rating/criteria/scoring/metadata/imageData.ts +36 -0
- package/src/lib/rating/criteria/scoring/metadata/index.ts +9 -0
- package/src/lib/rating/criteria/scoring/metadata/lib/index.ts +1 -0
- package/src/lib/rating/criteria/scoring/metadata/lib/urlHelpers.ts +17 -0
- package/src/lib/rating/criteria/scoring/metadata/name.ts +12 -0
- package/src/lib/rating/criteria/scoring/metadata/spec/testHelpers.ts +29 -0
- package/src/lib/rating/criteria/scoring/metadata/youtubeUrl.ts +16 -0
- package/src/lib/rating/criteria/scoring/supply.ts +15 -0
- package/src/lib/rating/criteria/scoring/tokenId.ts +21 -0
- package/src/lib/rating/criteria/scoring/type.ts +11 -0
- package/src/lib/rating/criteria/scoringCriteria.ts +39 -0
- package/src/lib/rating/index.ts +2 -0
- package/src/lib/rating/score.ts +33 -0
- package/typedoc.json +5 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/image.ts"],"names":[],"mappings":";;;AAEA,0CAAkE;AAClE,+BAAoD;AAEpD,MAAM,qBAAqB,GAAG,CAAC,CAAA;AAExB,MAAM,aAAa,GAAG,CAAC,GAA6B,EAAe,EAAE;;IAC1E,2BAA2B;IAC3B,IAAI,CAAC,CAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,0CAAE,KAAK,CAAA,EAAE;QACzB,oFAAoF;QACpF,OAAO,CAAA,MAAA,GAAG,CAAC,QAAQ,0CAAE,UAAU,EAAC,CAAC,CAAC,YAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAA;KACpE;SAAM;QACL,OAAO,IAAA,kBAAU,EAAC,MAAA,GAAG,CAAC,QAAQ,0CAAE,KAAK,CAAC,CAAA;KACvC;AACH,CAAC,CAAA;AARY,QAAA,aAAa,iBAQzB;AAEM,MAAM,UAAU,GAAG,CAAC,KAAc,EAAe,EAAE;IACxD,MAAM,KAAK,GAAgB,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAA;IACrD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,IAAA,gBAAU,EAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAC3E,IAAA,sBAAc,EAAC,KAAK,CAAC,CAAA;IACrB,IAAI,CAAC,IAAA,cAAQ,EAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAClC,IAAA,sBAAc,EAAC,KAAK,CAAC,CAAA;IACrB,IAAI,CAAC,IAAA,YAAM,EAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAChC,IAAA,sBAAc,EAAC,KAAK,CAAC,CAAA;IACrB,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AATY,QAAA,UAAU,cAStB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.scoreImageData = exports.scoreNftImageData = void 0;
|
|
4
|
+
const svg_parser_1 = require("svg-parser");
|
|
5
|
+
const score_1 = require("../../../score");
|
|
6
|
+
const MaxPossibleImageDataScore = 1;
|
|
7
|
+
// NOTE: There is probably a deeper check we can do
|
|
8
|
+
// here, but this is a good start
|
|
9
|
+
const isValidImageData = (image_data) => {
|
|
10
|
+
// If it doesn't start with an svg tag, it's not an svg
|
|
11
|
+
if (!image_data.startsWith('<svg'))
|
|
12
|
+
return false;
|
|
13
|
+
try {
|
|
14
|
+
// If it can't be parsed, it's not an svg
|
|
15
|
+
(0, svg_parser_1.parse)(image_data);
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
const scoreNftImageData = (nft) => {
|
|
23
|
+
var _a, _b, _c;
|
|
24
|
+
// If there's no image data
|
|
25
|
+
if (!((_a = nft === null || nft === void 0 ? void 0 : nft.metadata) === null || _a === void 0 ? void 0 : _a.image_data)) {
|
|
26
|
+
// but there is an image, skip this scoring criteria, otherwise fail it completely
|
|
27
|
+
return ((_b = nft.metadata) === null || _b === void 0 ? void 0 : _b.image) ? score_1.PASS : [0, MaxPossibleImageDataScore];
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
return (0, exports.scoreImageData)((_c = nft.metadata) === null || _c === void 0 ? void 0 : _c.image_data);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
exports.scoreNftImageData = scoreNftImageData;
|
|
34
|
+
const scoreImageData = (image_data) => {
|
|
35
|
+
return !image_data || typeof image_data !== 'string' || !isValidImageData(image_data)
|
|
36
|
+
? [0, MaxPossibleImageDataScore]
|
|
37
|
+
: [MaxPossibleImageDataScore, MaxPossibleImageDataScore];
|
|
38
|
+
};
|
|
39
|
+
exports.scoreImageData = scoreImageData;
|
|
40
|
+
//# sourceMappingURL=imageData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imageData.js","sourceRoot":"","sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/imageData.ts"],"names":[],"mappings":";;;AACA,2CAAkC;AAElC,0CAAkD;AAElD,MAAM,yBAAyB,GAAG,CAAC,CAAA;AAEnC,mDAAmD;AACnD,iCAAiC;AACjC,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAW,EAAE;IACvD,uDAAuD;IACvD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAA;IAChD,IAAI;QACF,yCAAyC;QACzC,IAAA,kBAAK,EAAC,UAAU,CAAC,CAAA;QACjB,OAAO,IAAI,CAAA;KACZ;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,KAAK,CAAA;KACb;AACH,CAAC,CAAA;AAEM,MAAM,iBAAiB,GAAG,CAAC,GAA6B,EAAe,EAAE;;IAC9E,2BAA2B;IAC3B,IAAI,CAAC,CAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,0CAAE,UAAU,CAAA,EAAE;QAC9B,kFAAkF;QAClF,OAAO,CAAA,MAAA,GAAG,CAAC,QAAQ,0CAAE,KAAK,EAAC,CAAC,CAAC,YAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAA;KACnE;SAAM;QACL,OAAO,IAAA,sBAAc,EAAC,MAAA,GAAG,CAAC,QAAQ,0CAAE,UAAU,CAAC,CAAA;KAChD;AACH,CAAC,CAAA;AARY,QAAA,iBAAiB,qBAQ7B;AAEM,MAAM,cAAc,GAAG,CAAC,UAAmB,EAAe,EAAE;IACjE,OAAO,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;QACnF,CAAC,CAAC,CAAC,CAAC,EAAE,yBAAyB,CAAC;QAChC,CAAC,CAAC,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CAAA;AAC5D,CAAC,CAAA;AAJY,QAAA,cAAc,kBAI1B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./animationUrl"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./attributes"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./backgroundColor"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./description"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./externalUrl"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./image"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./imageData"), exports);
|
|
11
|
+
tslib_1.__exportStar(require("./name"), exports);
|
|
12
|
+
tslib_1.__exportStar(require("./youtubeUrl"), exports);
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/index.ts"],"names":[],"mappings":";;;AAAA,yDAA8B;AAC9B,uDAA4B;AAC5B,4DAAiC;AACjC,wDAA6B;AAC7B,wDAA6B;AAC7B,kDAAuB;AACvB,sDAA2B;AAC3B,iDAAsB;AACtB,uDAA4B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../src/lib/rating/criteria/scoring/metadata/lib/index.ts"],"names":[],"mappings":";;;AAAA,uDAA4B"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isSecure = exports.isWeb2 = exports.isWeb3 = exports.isValidUrl = exports.toUrl = exports.web3Protocols = void 0;
|
|
4
|
+
const url_1 = require("@xylabs/url");
|
|
5
|
+
exports.web3Protocols = ['ipfs:', 'ar:'];
|
|
6
|
+
const toUrl = (url) => {
|
|
7
|
+
if (!url)
|
|
8
|
+
return undefined;
|
|
9
|
+
try {
|
|
10
|
+
return new url_1.URL(url);
|
|
11
|
+
}
|
|
12
|
+
catch (e) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
exports.toUrl = toUrl;
|
|
17
|
+
const isValidUrl = (url) => (0, exports.toUrl)(url) !== undefined;
|
|
18
|
+
exports.isValidUrl = isValidUrl;
|
|
19
|
+
const isWeb3 = (url) => exports.web3Protocols.some((protocol) => { var _a; return protocol === ((_a = (0, exports.toUrl)(url)) === null || _a === void 0 ? void 0 : _a.protocol); });
|
|
20
|
+
exports.isWeb3 = isWeb3;
|
|
21
|
+
const isWeb2 = (url) => !(0, exports.isWeb3)(url);
|
|
22
|
+
exports.isWeb2 = isWeb2;
|
|
23
|
+
const isSecure = (url) => { var _a; return (0, exports.isWeb3)(url) || ((_a = (0, exports.toUrl)(url)) === null || _a === void 0 ? void 0 : _a.protocol) === 'https:'; };
|
|
24
|
+
exports.isSecure = isSecure;
|
|
25
|
+
//# sourceMappingURL=urlHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlHelpers.js","sourceRoot":"","sources":["../../../../../../../../src/lib/rating/criteria/scoring/metadata/lib/urlHelpers.ts"],"names":[],"mappings":";;;AAAA,qCAAiC;AAEpB,QAAA,aAAa,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AAEtC,MAAM,KAAK,GAAG,CAAC,GAAmB,EAAmB,EAAE;IAC5D,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IAC1B,IAAI;QACF,OAAO,IAAI,SAAG,CAAC,GAAG,CAAC,CAAA;KACpB;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,SAAS,CAAA;KACjB;AACH,CAAC,CAAA;AAPY,QAAA,KAAK,SAOjB;AAEM,MAAM,UAAU,GAAG,CAAC,GAAmB,EAAW,EAAE,CAAC,IAAA,aAAK,EAAC,GAAG,CAAC,KAAK,SAAS,CAAA;AAAvE,QAAA,UAAU,cAA6D;AAC7E,MAAM,MAAM,GAAG,CAAC,GAAmB,EAAW,EAAE,CAAC,qBAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,WAAC,OAAA,QAAQ,MAAK,MAAA,IAAA,aAAK,EAAC,GAAG,CAAC,0CAAE,QAAQ,CAAA,CAAA,EAAA,CAAC,CAAA;AAA9G,QAAA,MAAM,UAAwG;AACpH,MAAM,MAAM,GAAG,CAAC,GAAmB,EAAW,EAAE,CAAC,CAAC,IAAA,cAAM,EAAC,GAAG,CAAC,CAAA;AAAvD,QAAA,MAAM,UAAiD;AAC7D,MAAM,QAAQ,GAAG,CAAC,GAAmB,EAAW,EAAE,WAAC,OAAA,IAAA,cAAM,EAAC,GAAG,CAAC,IAAI,CAAA,MAAA,IAAA,aAAK,EAAC,GAAG,CAAC,0CAAE,QAAQ,MAAK,QAAQ,CAAA,EAAA,CAAA;AAA7F,QAAA,QAAQ,YAAqF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.scoreName = exports.scoreNftName = void 0;
|
|
4
|
+
const score_1 = require("../../../score");
|
|
5
|
+
const scoreNftName = (nft) => {
|
|
6
|
+
var _a;
|
|
7
|
+
return (0, exports.scoreName)((_a = nft.metadata) === null || _a === void 0 ? void 0 : _a.name);
|
|
8
|
+
};
|
|
9
|
+
exports.scoreNftName = scoreNftName;
|
|
10
|
+
const scoreName = (name) => {
|
|
11
|
+
const score = [0, 1];
|
|
12
|
+
if (!name || typeof name !== 'string')
|
|
13
|
+
return score;
|
|
14
|
+
return (0, score_1.incrementTotal)(score);
|
|
15
|
+
};
|
|
16
|
+
exports.scoreName = scoreName;
|
|
17
|
+
//# sourceMappingURL=name.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"name.js","sourceRoot":"","sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/name.ts"],"names":[],"mappings":";;;AAEA,0CAA4D;AAErD,MAAM,YAAY,GAAG,CAAC,GAA6B,EAAe,EAAE;;IACzE,OAAO,IAAA,iBAAS,EAAC,MAAA,GAAG,CAAC,QAAQ,0CAAE,IAAI,CAAC,CAAA;AACtC,CAAC,CAAA;AAFY,QAAA,YAAY,gBAExB;AACM,MAAM,SAAS,GAAG,CAAC,IAAa,EAAe,EAAE;IACtD,MAAM,KAAK,GAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACjC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACnD,OAAO,IAAA,sBAAc,EAAC,KAAK,CAAC,CAAA;AAC9B,CAAC,CAAA;AAJY,QAAA,SAAS,aAIrB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.scoreYoutubeUrl = exports.scoreNftYoutubeUrl = void 0;
|
|
4
|
+
const score_1 = require("../../../score");
|
|
5
|
+
const lib_1 = require("./lib");
|
|
6
|
+
const scoreNftYoutubeUrl = (nft) => {
|
|
7
|
+
var _a;
|
|
8
|
+
return (0, exports.scoreYoutubeUrl)((_a = nft === null || nft === void 0 ? void 0 : nft.metadata) === null || _a === void 0 ? void 0 : _a.youtube_url);
|
|
9
|
+
};
|
|
10
|
+
exports.scoreNftYoutubeUrl = scoreNftYoutubeUrl;
|
|
11
|
+
const scoreYoutubeUrl = (youtube_url) => {
|
|
12
|
+
if (youtube_url === undefined || youtube_url === null)
|
|
13
|
+
return score_1.PASS;
|
|
14
|
+
const score = [0, 2];
|
|
15
|
+
if (typeof youtube_url !== 'string' || !(0, lib_1.isValidUrl)(youtube_url))
|
|
16
|
+
return score;
|
|
17
|
+
(0, score_1.incrementTotal)(score);
|
|
18
|
+
if (!(0, lib_1.isSecure)(youtube_url))
|
|
19
|
+
return score;
|
|
20
|
+
return (0, score_1.incrementTotal)(score);
|
|
21
|
+
};
|
|
22
|
+
exports.scoreYoutubeUrl = scoreYoutubeUrl;
|
|
23
|
+
//# sourceMappingURL=youtubeUrl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"youtubeUrl.js","sourceRoot":"","sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/youtubeUrl.ts"],"names":[],"mappings":";;;AAEA,0CAAkE;AAClE,+BAA4C;AAErC,MAAM,kBAAkB,GAAG,CAAC,GAA6B,EAAe,EAAE;;IAC/E,OAAO,IAAA,uBAAe,EAAC,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,0CAAE,WAAW,CAAC,CAAA;AACpD,CAAC,CAAA;AAFY,QAAA,kBAAkB,sBAE9B;AACM,MAAM,eAAe,GAAG,CAAC,WAAoB,EAAe,EAAE;IACnE,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI;QAAE,OAAO,YAAI,CAAA;IAClE,MAAM,KAAK,GAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACjC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,IAAA,gBAAU,EAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAA;IAC7E,IAAA,sBAAc,EAAC,KAAK,CAAC,CAAA;IACrB,IAAI,CAAC,IAAA,cAAQ,EAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAA;IACxC,OAAO,IAAA,sBAAc,EAAC,KAAK,CAAC,CAAA;AAC9B,CAAC,CAAA;AAPY,QAAA,eAAe,mBAO3B"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.scoreSupply = void 0;
|
|
4
|
+
const score_1 = require("../../score");
|
|
5
|
+
const lib_1 = require("./lib");
|
|
6
|
+
const scoreSupply = (nft) => {
|
|
7
|
+
if (!nft.supply)
|
|
8
|
+
return score_1.FAIL;
|
|
9
|
+
if (typeof nft.supply !== 'string')
|
|
10
|
+
return score_1.FAIL;
|
|
11
|
+
try {
|
|
12
|
+
// Check for positive BigNumber since data type is uint256
|
|
13
|
+
return (0, lib_1.isValidPositiveBigNumber)(nft.supply) ? score_1.PASS : score_1.FAIL;
|
|
14
|
+
}
|
|
15
|
+
catch (_error) {
|
|
16
|
+
return score_1.FAIL;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
exports.scoreSupply = scoreSupply;
|
|
20
|
+
//# sourceMappingURL=supply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supply.js","sourceRoot":"","sources":["../../../../../../src/lib/rating/criteria/scoring/supply.ts"],"names":[],"mappings":";;;AAEA,uCAAiE;AACjE,+BAAgD;AAEzC,MAAM,WAAW,GAA4B,CAAC,GAAY,EAAE,EAAE;IACnE,IAAI,CAAC,GAAG,CAAC,MAAM;QAAE,OAAO,YAAI,CAAA;IAC5B,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,YAAI,CAAA;IAC/C,IAAI;QACF,0DAA0D;QAC1D,OAAO,IAAA,8BAAwB,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAI,CAAC,CAAC,CAAC,YAAI,CAAA;KAC1D;IAAC,OAAO,MAAM,EAAE;QACf,OAAO,YAAI,CAAA;KACZ;AACH,CAAC,CAAA;AATY,QAAA,WAAW,eASvB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.scoreTokenId = void 0;
|
|
4
|
+
const score_1 = require("../../score");
|
|
5
|
+
const lib_1 = require("./lib");
|
|
6
|
+
/**
|
|
7
|
+
* Callers SHALL NOT assume that ID numbers have any specific pattern to them, and
|
|
8
|
+
* MUST treat the ID as a "black box"
|
|
9
|
+
* @param nft
|
|
10
|
+
* @returns
|
|
11
|
+
*/
|
|
12
|
+
const scoreTokenId = (nft) => {
|
|
13
|
+
if (!nft.tokenId)
|
|
14
|
+
return score_1.FAIL;
|
|
15
|
+
if (typeof nft.tokenId !== 'string')
|
|
16
|
+
return score_1.FAIL;
|
|
17
|
+
try {
|
|
18
|
+
// Check for positive BigNumber since data type is uint256
|
|
19
|
+
return (0, lib_1.isValidPositiveBigNumber)(nft.tokenId) ? score_1.PASS : score_1.FAIL;
|
|
20
|
+
}
|
|
21
|
+
catch (_error) {
|
|
22
|
+
return score_1.FAIL;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
exports.scoreTokenId = scoreTokenId;
|
|
26
|
+
//# sourceMappingURL=tokenId.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenId.js","sourceRoot":"","sources":["../../../../../../src/lib/rating/criteria/scoring/tokenId.ts"],"names":[],"mappings":";;;AAEA,uCAAiE;AACjE,+BAAgD;AAEhD;;;;;GAKG;AACI,MAAM,YAAY,GAA4B,CAAC,GAAY,EAAE,EAAE;IACpE,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO,YAAI,CAAA;IAC7B,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,YAAI,CAAA;IAChD,IAAI;QACF,0DAA0D;QAC1D,OAAO,IAAA,8BAAwB,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAI,CAAC,CAAC,CAAC,YAAI,CAAA;KAC3D;IAAC,OAAO,MAAM,EAAE;QACf,OAAO,YAAI,CAAA;KACZ;AACH,CAAC,CAAA;AATY,QAAA,YAAY,gBASxB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.scoreType = void 0;
|
|
4
|
+
const score_1 = require("../../score");
|
|
5
|
+
const scoreType = (nft) => {
|
|
6
|
+
if (!nft.type)
|
|
7
|
+
return score_1.FAIL;
|
|
8
|
+
if (typeof nft.type !== 'string')
|
|
9
|
+
return score_1.FAIL;
|
|
10
|
+
const type = nft.type.toUpperCase();
|
|
11
|
+
if (type !== 'ERC721' && type !== 'ERC1155')
|
|
12
|
+
return score_1.FAIL;
|
|
13
|
+
return score_1.PASS;
|
|
14
|
+
};
|
|
15
|
+
exports.scoreType = scoreType;
|
|
16
|
+
//# sourceMappingURL=type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.js","sourceRoot":"","sources":["../../../../../../src/lib/rating/criteria/scoring/type.ts"],"names":[],"mappings":";;;AAEA,uCAAiE;AAE1D,MAAM,SAAS,GAA4B,CAAC,GAAY,EAAE,EAAE;IACjE,IAAI,CAAC,GAAG,CAAC,IAAI;QAAE,OAAO,YAAI,CAAA;IAC1B,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,YAAI,CAAA;IAC7C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;IACnC,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,YAAI,CAAA;IACxD,OAAO,YAAI,CAAA;AACb,CAAC,CAAA;AANY,QAAA,SAAS,aAMrB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.scoringCriteria = void 0;
|
|
4
|
+
const scoring_1 = require("./scoring");
|
|
5
|
+
const attributesScoringCriteria = {
|
|
6
|
+
Attributes: { score: scoring_1.evaluateNftAttributes, weight: 1 },
|
|
7
|
+
};
|
|
8
|
+
const metadataScoringCriteria = Object.assign({ 'Animation URL': { score: scoring_1.scoreNftAnimationUrl, weight: 1 }, 'Background Color': { score: scoring_1.scoreNftBackgroundColor, weight: 1 }, Description: { score: scoring_1.scoreNftDescription, weight: 1 }, 'External Url': { score: scoring_1.scoreNftExternalUrl, weight: 1 }, Image: { score: scoring_1.scoreNftImage, weight: 1 }, 'Image Data': { score: scoring_1.scoreNftImageData, weight: 1 }, Name: { score: scoring_1.scoreNftName, weight: 1 }, 'YouTube URL': { score: scoring_1.scoreNftYoutubeUrl, weight: 1 } }, attributesScoringCriteria);
|
|
9
|
+
exports.scoringCriteria = Object.assign({ 'Contract Address': { score: scoring_1.scoreContractAddress, weight: 1 }, Supply: { score: scoring_1.scoreSupply, weight: 1 }, 'Token Id': { score: scoring_1.scoreTokenId, weight: 1 }, Type: { score: scoring_1.scoreType, weight: 1 } }, metadataScoringCriteria);
|
|
10
|
+
//# sourceMappingURL=scoringCriteria.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoringCriteria.js","sourceRoot":"","sources":["../../../../../src/lib/rating/criteria/scoringCriteria.ts"],"names":[],"mappings":";;;AAAA,uCAckB;AAElB,MAAM,yBAAyB,GAAG;IAChC,UAAU,EAAE,EAAE,KAAK,EAAE,+BAAqB,EAAE,MAAM,EAAE,CAAC,EAAE;CACxD,CAAA;AAED,MAAM,uBAAuB,mBAC3B,eAAe,EAAE,EAAE,KAAK,EAAE,8BAAoB,EAAE,MAAM,EAAE,CAAC,EAAE,EAC3D,kBAAkB,EAAE,EAAE,KAAK,EAAE,iCAAuB,EAAE,MAAM,EAAE,CAAC,EAAE,EACjE,WAAW,EAAE,EAAE,KAAK,EAAE,6BAAmB,EAAE,MAAM,EAAE,CAAC,EAAE,EACtD,cAAc,EAAE,EAAE,KAAK,EAAE,6BAAmB,EAAE,MAAM,EAAE,CAAC,EAAE,EACzD,KAAK,EAAE,EAAE,KAAK,EAAE,uBAAa,EAAE,MAAM,EAAE,CAAC,EAAE,EAC1C,YAAY,EAAE,EAAE,KAAK,EAAE,2BAAiB,EAAE,MAAM,EAAE,CAAC,EAAE,EACrD,IAAI,EAAE,EAAE,KAAK,EAAE,sBAAY,EAAE,MAAM,EAAE,CAAC,EAAE,EACxC,aAAa,EAAE,EAAE,KAAK,EAAE,4BAAkB,EAAE,MAAM,EAAE,CAAC,EAAE,IACpD,yBAAyB,CAC7B,CAAA;AAEY,QAAA,eAAe,mBAC1B,kBAAkB,EAAE,EAAE,KAAK,EAAE,8BAAoB,EAAE,MAAM,EAAE,CAAC,EAAE,EAC9D,MAAM,EAAE,EAAE,KAAK,EAAE,qBAAW,EAAE,MAAM,EAAE,CAAC,EAAE,EACzC,UAAU,EAAE,EAAE,KAAK,EAAE,sBAAY,EAAE,MAAM,EAAE,CAAC,EAAE,EAC9C,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAS,EAAE,MAAM,EAAE,CAAC,EAAE,IAClC,uBAAuB,EAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/rating/index.ts"],"names":[],"mappings":";;;AAAA,uDAA4B;AAC5B,kDAAuB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.incrementTotalAndPossible = exports.incrementPossible = exports.incrementTotal = exports.SKIP = exports.FAIL = exports.PASS = void 0;
|
|
4
|
+
exports.PASS = [1, 1];
|
|
5
|
+
exports.FAIL = [0, 1];
|
|
6
|
+
exports.SKIP = [0, 0];
|
|
7
|
+
const incrementTotal = (score, by = 1) => {
|
|
8
|
+
score[0] += by;
|
|
9
|
+
return score;
|
|
10
|
+
};
|
|
11
|
+
exports.incrementTotal = incrementTotal;
|
|
12
|
+
const incrementPossible = (score, by = 1) => {
|
|
13
|
+
score[1] += by;
|
|
14
|
+
return score;
|
|
15
|
+
};
|
|
16
|
+
exports.incrementPossible = incrementPossible;
|
|
17
|
+
const incrementTotalAndPossible = (score, totalBy = 1, possibleBy = 1) => {
|
|
18
|
+
score[0] += totalBy;
|
|
19
|
+
score[1] += possibleBy;
|
|
20
|
+
return score;
|
|
21
|
+
};
|
|
22
|
+
exports.incrementTotalAndPossible = incrementTotalAndPossible;
|
|
23
|
+
//# sourceMappingURL=score.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"score.js","sourceRoot":"","sources":["../../../../src/lib/rating/score.ts"],"names":[],"mappings":";;;AAGa,QAAA,IAAI,GAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAC5B,QAAA,IAAI,GAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAE5B,QAAA,IAAI,GAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAYhC,MAAM,cAAc,GAAG,CAAC,KAAkB,EAAE,EAAE,GAAG,CAAC,EAAe,EAAE;IACxE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IACd,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAHY,QAAA,cAAc,kBAG1B;AAEM,MAAM,iBAAiB,GAAG,CAAC,KAAkB,EAAE,EAAE,GAAG,CAAC,EAAe,EAAE;IAC3E,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IACd,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAHY,QAAA,iBAAiB,qBAG7B;AAEM,MAAM,yBAAyB,GAAG,CAAC,KAAkB,EAAE,OAAO,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,EAAe,EAAE;IACxG,KAAK,CAAC,CAAC,CAAC,IAAI,OAAO,CAAA;IACnB,KAAK,CAAC,CAAC,CAAC,IAAI,UAAU,CAAA;IACtB,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAJY,QAAA,yBAAyB,6BAIrC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AbstractDiviner } from '@xyo-network/abstract-diviner';
|
|
2
|
+
import { PayloadHasher } from '@xyo-network/core';
|
|
3
|
+
import { isNftInfoPayload, NftScoreDivinerConfigSchema, NftScoreSchema, } from '@xyo-network/crypto-nft-payload-plugin';
|
|
4
|
+
import { analyzeNft } from './lib';
|
|
5
|
+
const toNftScorePayload = (rating) => {
|
|
6
|
+
return { ...rating, schema: NftScoreSchema };
|
|
7
|
+
};
|
|
8
|
+
export const isNftScorePayload = (payload) => payload.schema === NftScoreSchema;
|
|
9
|
+
export class NftScoreDiviner extends AbstractDiviner {
|
|
10
|
+
static configSchemas = [NftScoreDivinerConfigSchema];
|
|
11
|
+
divineHandler = async (payloads) => {
|
|
12
|
+
const nfts = payloads?.filter(isNftInfoPayload) ?? [];
|
|
13
|
+
const results = await Promise.all(nfts.map(async (p) => {
|
|
14
|
+
const [score, sourceHash] = await Promise.all([toNftScorePayload(await analyzeNft(p)), PayloadHasher.hashAsync(p)]);
|
|
15
|
+
return { ...score, sources: [sourceHash] };
|
|
16
|
+
}));
|
|
17
|
+
return results;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=Diviner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Diviner.js","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EACL,gBAAgB,EAEhB,2BAA2B,EAE3B,cAAc,GACf,MAAM,wCAAwC,CAAA;AAK/C,OAAO,EAAE,UAAU,EAAe,MAAM,OAAO,CAAA;AAI/C,MAAM,iBAAiB,GAAG,CAAC,MAAmB,EAAmB,EAAE;IACjE,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,cAAc,EAAqB,CAAA;AACjE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAgB,EAA8B,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,cAAc,CAAA;AAEpH,MAAM,OAAO,eAA+E,SAAQ,eAAwB;IAC1H,MAAM,CAAU,aAAa,GAAG,CAAC,2BAA2B,CAAC,CAAA;IAE1C,aAAa,GAAG,KAAK,EAAE,QAAoB,EAAsB,EAAE;QACpF,MAAM,IAAI,GAAG,QAAQ,EAAE,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAA;QACrD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,IAAI,CAAC,GAAG,CAA2B,KAAK,EAAE,CAAC,EAAE,EAAE;YAC7C,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC,MAAM,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACnH,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAA;QAC5C,CAAC,CAAC,CACH,CAAA;QACD,OAAO,OAAO,CAAA;IAChB,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { NftSchema } from '@xyo-network/crypto-nft-payload-plugin';
|
|
2
|
+
import { PayloadSetSchema } from '@xyo-network/payload-model';
|
|
3
|
+
import { createPayloadSetDivinerPlugin } from '@xyo-network/payloadset-plugin';
|
|
4
|
+
import { NftScoreDiviner } from './Diviner';
|
|
5
|
+
export const NftScoreDivinerPlugin = () => createPayloadSetDivinerPlugin({ required: { [NftSchema]: 1 }, schema: PayloadSetSchema }, {
|
|
6
|
+
diviner: async (params) => {
|
|
7
|
+
const result = await NftScoreDiviner.create(params);
|
|
8
|
+
return result;
|
|
9
|
+
},
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=Plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAA;AAE9E,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE,CACxC,6BAA6B,CAC3B,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAC1D;IACE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACnD,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CACF,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { NftScoreDivinerPlugin } from './Plugin';
|
|
2
|
+
export * from './Diviner';
|
|
3
|
+
export * from './lib';
|
|
4
|
+
export { NftScoreDivinerPlugin };
|
|
5
|
+
// eslint-disable-next-line import/no-default-export
|
|
6
|
+
export default NftScoreDivinerPlugin;
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAEhD,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA;AAErB,OAAO,EAAE,qBAAqB,EAAE,CAAA;AAEhC,oDAAoD;AACpD,eAAe,qBAAqB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { scoringCriteria } from './criteria';
|
|
2
|
+
export const analyzeNft = async (
|
|
3
|
+
/**
|
|
4
|
+
* The NFT to evaluate
|
|
5
|
+
*/
|
|
6
|
+
nft) => {
|
|
7
|
+
const result = Object.fromEntries(await Promise.all(Object.entries(scoringCriteria).map(async ([key, { score, weight }]) => {
|
|
8
|
+
const rawScore = await score(nft);
|
|
9
|
+
const weighted = rawScore.map((v) => v * weight);
|
|
10
|
+
return [key, weighted];
|
|
11
|
+
})));
|
|
12
|
+
return result;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=analyzeNft.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzeNft.js","sourceRoot":"","sources":["../../../../src/lib/rating/analyzeNft.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAS5C,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK;AAC7B;;GAEG;AACH,GAAY,EACU,EAAE;IACxB,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;QACrE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;QACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAU,CAAA;QACzD,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAU,CAAA;IACjC,CAAC,CAAC,CACH,CACa,CAAA;IAChB,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/lib/rating/criteria/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { isAddress } from '@ethersproject/address';
|
|
2
|
+
import { FAIL, PASS } from '../../score';
|
|
3
|
+
export const scoreContractAddress = (nft) => {
|
|
4
|
+
if (!nft.contract)
|
|
5
|
+
return FAIL;
|
|
6
|
+
if (typeof nft.contract !== 'string')
|
|
7
|
+
return FAIL;
|
|
8
|
+
if (!isAddress(nft.contract))
|
|
9
|
+
return FAIL;
|
|
10
|
+
return PASS;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../../../../../src/lib/rating/criteria/scoring/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAGlD,OAAO,EAAE,IAAI,EAAE,IAAI,EAA2B,MAAM,aAAa,CAAA;AAEjE,MAAM,CAAC,MAAM,oBAAoB,GAA4B,CAAC,GAAY,EAAE,EAAE;IAC5E,IAAI,CAAC,GAAG,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC9B,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IACjD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAA;IACzC,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/lib/rating/criteria/scoring/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/lib/rating/criteria/scoring/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isValidPositiveBigNumber.js","sourceRoot":"","sources":["../../../../../../../src/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,KAAa,EAAW,EAAE;IACjE,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;IAC9B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;AAC3C,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toBigNumber.js","sourceRoot":"","sources":["../../../../../../../src/lib/rating/criteria/scoring/lib/toBigNumber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE7C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAa,EAAyB,EAAE;IAClE,IAAI;QACF,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,CAAA;KAC5B;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,SAAS,CAAA;KACjB;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { incrementPossible, incrementTotal, incrementTotalAndPossible, PASS } from '../../../score';
|
|
2
|
+
import { isSecure, isValidUrl, isWeb3 } from './lib';
|
|
3
|
+
export const scoreNftAnimationUrl = (nft) => {
|
|
4
|
+
return scoreAnimationUrl(nft.metadata?.animation_url);
|
|
5
|
+
};
|
|
6
|
+
export const scoreAnimationUrl = (animation_url) => {
|
|
7
|
+
const score = [0, 0];
|
|
8
|
+
if (animation_url === undefined || animation_url === null)
|
|
9
|
+
return PASS;
|
|
10
|
+
incrementPossible(score);
|
|
11
|
+
if (typeof animation_url !== 'string')
|
|
12
|
+
return score;
|
|
13
|
+
incrementTotalAndPossible(score);
|
|
14
|
+
if (!isValidUrl(animation_url))
|
|
15
|
+
return score;
|
|
16
|
+
incrementTotalAndPossible(score);
|
|
17
|
+
if (!isSecure(animation_url))
|
|
18
|
+
return score;
|
|
19
|
+
incrementTotalAndPossible(score);
|
|
20
|
+
if (!isWeb3(animation_url))
|
|
21
|
+
return score;
|
|
22
|
+
return incrementTotal(score);
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=animationUrl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"animationUrl.js","sourceRoot":"","sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/animationUrl.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,yBAAyB,EAAE,IAAI,EAAe,MAAM,gBAAgB,CAAA;AAChH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAEpD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAA6B,EAAe,EAAE;IACjF,OAAO,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;AACvD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,aAAsB,EAAe,EAAE;IACvE,MAAM,KAAK,GAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACjC,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IACtE,iBAAiB,CAAC,KAAK,CAAC,CAAA;IACxB,IAAI,OAAO,aAAa,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACnD,yBAAyB,CAAC,KAAK,CAAC,CAAA;IAChC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,KAAK,CAAA;IAC5C,yBAAyB,CAAC,KAAK,CAAC,CAAA;IAChC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QAAE,OAAO,KAAK,CAAA;IAC1C,yBAAyB,CAAC,KAAK,CAAC,CAAA;IAChC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QAAE,OAAO,KAAK,CAAA;IACxC,OAAO,cAAc,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC,CAAA"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { incrementPossible, incrementTotal, incrementTotalAndPossible } from '../../../../score';
|
|
2
|
+
const isDate = (value) => {
|
|
3
|
+
if (isNumber(value)) {
|
|
4
|
+
try {
|
|
5
|
+
new Date(value);
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
catch (error) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
return false;
|
|
13
|
+
};
|
|
14
|
+
const isNumber = (value) => typeof value === 'number';
|
|
15
|
+
const isPercentage = (value) => isNumber(value) && value >= 0 && value <= 100;
|
|
16
|
+
const isNonEmptyString = (value) => typeof value === 'string' && value.length > 0;
|
|
17
|
+
const isNonEmptyStringOrNumber = (value) => value === 'number' || isNonEmptyString(value);
|
|
18
|
+
export const evaluateNftAttributes = (nft) => !nft?.metadata?.attributes ? [0, 1] : evaluateAttributes(nft?.metadata?.attributes);
|
|
19
|
+
export const evaluateAttributes = (attributes) => {
|
|
20
|
+
if (!attributes || !Array.isArray(attributes) || attributes.length === 0)
|
|
21
|
+
return [0, 1];
|
|
22
|
+
const score = [0, 0];
|
|
23
|
+
for (const attribute of attributes) {
|
|
24
|
+
const [attributeTotal, attributePossible] = evaluateAttribute(attribute);
|
|
25
|
+
incrementTotalAndPossible(score, attributeTotal, attributePossible);
|
|
26
|
+
}
|
|
27
|
+
return [1, 1];
|
|
28
|
+
};
|
|
29
|
+
export const evaluateAttribute = (attribute) => {
|
|
30
|
+
const score = [0, 1];
|
|
31
|
+
const max_value = attribute?.max_value;
|
|
32
|
+
const trait_type = attribute?.trait_type;
|
|
33
|
+
const value = attribute?.value;
|
|
34
|
+
// Validate trait_type & value
|
|
35
|
+
if (!attribute || typeof attribute !== 'object' || !isNonEmptyString(trait_type) || !isNonEmptyStringOrNumber(value))
|
|
36
|
+
return score;
|
|
37
|
+
incrementTotal(score);
|
|
38
|
+
// Validate display_type
|
|
39
|
+
incrementPossible(score);
|
|
40
|
+
if (validDisplayType(attribute))
|
|
41
|
+
incrementTotal(score);
|
|
42
|
+
// Validate max_value
|
|
43
|
+
if (max_value !== undefined) {
|
|
44
|
+
incrementPossible(score);
|
|
45
|
+
if (isNumber(max_value) && isNumber(value) && value <= max_value)
|
|
46
|
+
incrementTotal(score);
|
|
47
|
+
}
|
|
48
|
+
return score;
|
|
49
|
+
};
|
|
50
|
+
const validDisplayType = (attribute) => {
|
|
51
|
+
switch (attribute?.display_type) {
|
|
52
|
+
case 'number':
|
|
53
|
+
case 'boost_number': {
|
|
54
|
+
if (isNumber(attribute?.value))
|
|
55
|
+
return true;
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
case 'boost_percentage': {
|
|
59
|
+
if (isPercentage(attribute?.value))
|
|
60
|
+
return true;
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
case 'date': {
|
|
64
|
+
if (isDate(attribute?.value))
|
|
65
|
+
return true;
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
case 'string':
|
|
69
|
+
case undefined: {
|
|
70
|
+
if (isNonEmptyString(attribute?.value))
|
|
71
|
+
return true;
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
default: {
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return false;
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=evaluateAttributes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluateAttributes.js","sourceRoot":"","sources":["../../../../../../../../src/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,yBAAyB,EAAe,MAAM,mBAAmB,CAAA;AAE7G,MAAM,MAAM,GAAG,CAAC,KAAc,EAAiB,EAAE;IAC/C,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;QACnB,IAAI;YACF,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;YACf,OAAO,IAAI,CAAA;SACZ;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,KAAK,CAAA;SACb;KACF;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAA;AAE/E,MAAM,YAAY,GAAG,CAAC,KAAc,EAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG,CAAA;AAE/F,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;AAE3G,MAAM,wBAAwB,GAAG,CAAC,KAAc,EAA4B,EAAE,CAAC,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAA;AAE5H,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAA6B,EAAe,EAAE,CAClF,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;AAErF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,UAA4D,EAAe,EAAE;IAC9G,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACvF,MAAM,KAAK,GAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACjC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;QAClC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAA;QACxE,yBAAyB,CAAC,KAAK,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAA;KACpE;IACD,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAA8B,EAAe,EAAE;IAC/E,MAAM,KAAK,GAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACjC,MAAM,SAAS,GAAG,SAAS,EAAE,SAAS,CAAA;IACtC,MAAM,UAAU,GAAG,SAAS,EAAE,UAAU,CAAA;IACxC,MAAM,KAAK,GAAG,SAAS,EAAE,KAAK,CAAA;IAE9B,8BAA8B;IAC9B,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAClI,cAAc,CAAC,KAAK,CAAC,CAAA;IAErB,wBAAwB;IACxB,iBAAiB,CAAC,KAAK,CAAC,CAAA;IACxB,IAAI,gBAAgB,CAAC,SAAS,CAAC;QAAE,cAAc,CAAC,KAAK,CAAC,CAAA;IAEtD,qBAAqB;IACrB,IAAI,SAAS,KAAK,SAAS,EAAE;QAC3B,iBAAiB,CAAC,KAAK,CAAC,CAAA;QACxB,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,SAAS;YAAE,cAAc,CAAC,KAAK,CAAC,CAAA;KACxF;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,CAAC,SAA8B,EAAW,EAAE;IACnE,QAAQ,SAAS,EAAE,YAAY,EAAE;QAC/B,KAAK,QAAQ,CAAC;QACd,KAAK,cAAc,CAAC,CAAC;YACnB,IAAI,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAA;YAC3C,MAAK;SACN;QACD,KAAK,kBAAkB,CAAC,CAAC;YACvB,IAAI,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAA;YAC/C,MAAK;SACN;QACD,KAAK,MAAM,CAAC,CAAC;YACX,IAAI,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAA;YACzC,MAAK;SACN;QACD,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC,CAAC;YACd,IAAI,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAA;YACnD,MAAK;SACN;QACD,OAAO,CAAC,CAAC;YACP,MAAK;SACN;KACF;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../src/lib/rating/criteria/scoring/metadata/attributes/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { incrementPossible, incrementTotal, incrementTotalAndPossible, PASS } from '../../../score';
|
|
2
|
+
const isHexColor = /^[0-9A-F]{6}$/i;
|
|
3
|
+
export const scoreNftBackgroundColor = (nft) => {
|
|
4
|
+
return scoreBackgroundColor(nft.metadata?.background_color);
|
|
5
|
+
};
|
|
6
|
+
export const scoreBackgroundColor = (background_color) => {
|
|
7
|
+
const score = [0, 0];
|
|
8
|
+
if (background_color === undefined || background_color === null)
|
|
9
|
+
return PASS;
|
|
10
|
+
incrementPossible(score);
|
|
11
|
+
if (typeof background_color !== 'string')
|
|
12
|
+
return score;
|
|
13
|
+
incrementTotalAndPossible(score);
|
|
14
|
+
if (!background_color.toUpperCase().match(isHexColor))
|
|
15
|
+
return score;
|
|
16
|
+
return incrementTotal(score);
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=backgroundColor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backgroundColor.js","sourceRoot":"","sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/backgroundColor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,yBAAyB,EAAE,IAAI,EAAe,MAAM,gBAAgB,CAAA;AAEhH,MAAM,UAAU,GAAG,gBAAgB,CAAA;AAEnC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAA6B,EAAe,EAAE;IACpF,OAAO,oBAAoB,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAA;AAC7D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,gBAAyB,EAAe,EAAE;IAC7E,MAAM,KAAK,GAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACjC,IAAI,gBAAgB,KAAK,SAAS,IAAI,gBAAgB,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAC5E,iBAAiB,CAAC,KAAK,CAAC,CAAA;IACxB,IAAI,OAAO,gBAAgB,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACtD,yBAAyB,CAAC,KAAK,CAAC,CAAA;IAChC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAA;IACnE,OAAO,cAAc,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC,CAAA"}
|