@xyo-network/crypto-nft-diviner-score-plugin 2.75.15 → 2.75.16
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/docs.json +14 -14
- package/package.json +16 -16
- package/dist/browser/Diviner.cjs +0 -407
- package/dist/browser/Diviner.cjs.map +0 -1
- package/dist/browser/Diviner.js +0 -390
- package/dist/browser/Diviner.js.map +0 -1
- package/dist/browser/Plugin.cjs +0 -421
- package/dist/browser/Plugin.cjs.map +0 -1
- package/dist/browser/Plugin.js +0 -404
- package/dist/browser/Plugin.js.map +0 -1
- package/dist/browser/lib/index.cjs +0 -378
- package/dist/browser/lib/index.cjs.map +0 -1
- package/dist/browser/lib/index.js +0 -355
- package/dist/browser/lib/index.js.map +0 -1
- package/dist/browser/lib/rating/analyzeNft.cjs +0 -378
- package/dist/browser/lib/rating/analyzeNft.cjs.map +0 -1
- package/dist/browser/lib/rating/analyzeNft.js +0 -355
- package/dist/browser/lib/rating/analyzeNft.js.map +0 -1
- package/dist/browser/lib/rating/criteria/index.cjs +0 -364
- package/dist/browser/lib/rating/criteria/index.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/index.js +0 -341
- package/dist/browser/lib/rating/criteria/index.js.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/contract.cjs +0 -37
- package/dist/browser/lib/rating/criteria/scoring/contract.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/contract.js +0 -16
- package/dist/browser/lib/rating/criteria/scoring/contract.js.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/index.cjs +0 -363
- package/dist/browser/lib/rating/criteria/scoring/index.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/index.js +0 -340
- package/dist/browser/lib/rating/criteria/scoring/index.js.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/lib/index.cjs +0 -43
- package/dist/browser/lib/rating/criteria/scoring/lib/index.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/lib/index.js +0 -20
- package/dist/browser/lib/rating/criteria/scoring/lib/index.js.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.cjs +0 -42
- package/dist/browser/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.js +0 -19
- package/dist/browser/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.js.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/lib/toBigNumber.cjs +0 -34
- package/dist/browser/lib/rating/criteria/scoring/lib/toBigNumber.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/lib/toBigNumber.js +0 -13
- package/dist/browser/lib/rating/criteria/scoring/lib/toBigNumber.js.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/animationUrl.cjs +0 -67
- package/dist/browser/lib/rating/criteria/scoring/metadata/animationUrl.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/animationUrl.js +0 -46
- package/dist/browser/lib/rating/criteria/scoring/metadata/animationUrl.js.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.cjs +0 -103
- package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.js +0 -82
- package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.js.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/index.cjs +0 -105
- package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/index.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/index.js +0 -82
- package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/index.js.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/backgroundColor.cjs +0 -44
- package/dist/browser/lib/rating/criteria/scoring/metadata/backgroundColor.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/backgroundColor.js +0 -23
- package/dist/browser/lib/rating/criteria/scoring/metadata/backgroundColor.js.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/description.cjs +0 -37
- package/dist/browser/lib/rating/criteria/scoring/metadata/description.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/description.js +0 -16
- package/dist/browser/lib/rating/criteria/scoring/metadata/description.js.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/externalUrl.cjs +0 -58
- package/dist/browser/lib/rating/criteria/scoring/metadata/externalUrl.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/externalUrl.js +0 -37
- package/dist/browser/lib/rating/criteria/scoring/metadata/externalUrl.js.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/image.cjs +0 -67
- package/dist/browser/lib/rating/criteria/scoring/metadata/image.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/image.js +0 -46
- package/dist/browser/lib/rating/criteria/scoring/metadata/image.js.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/imageData.cjs +0 -50
- package/dist/browser/lib/rating/criteria/scoring/metadata/imageData.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/imageData.js +0 -29
- package/dist/browser/lib/rating/criteria/scoring/metadata/imageData.js.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/index.cjs +0 -287
- package/dist/browser/lib/rating/criteria/scoring/metadata/index.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/index.js +0 -264
- package/dist/browser/lib/rating/criteria/scoring/metadata/index.js.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/lib/index.cjs +0 -48
- package/dist/browser/lib/rating/criteria/scoring/metadata/lib/index.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/lib/index.js +0 -25
- package/dist/browser/lib/rating/criteria/scoring/metadata/lib/index.js.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/lib/urlHelpers.cjs +0 -46
- package/dist/browser/lib/rating/criteria/scoring/metadata/lib/urlHelpers.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/lib/urlHelpers.js +0 -25
- package/dist/browser/lib/rating/criteria/scoring/metadata/lib/urlHelpers.js.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/name.cjs +0 -37
- package/dist/browser/lib/rating/criteria/scoring/metadata/name.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/name.js +0 -16
- package/dist/browser/lib/rating/criteria/scoring/metadata/name.js.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/youtubeUrl.cjs +0 -60
- package/dist/browser/lib/rating/criteria/scoring/metadata/youtubeUrl.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/youtubeUrl.js +0 -39
- package/dist/browser/lib/rating/criteria/scoring/metadata/youtubeUrl.js.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/supply.cjs +0 -56
- package/dist/browser/lib/rating/criteria/scoring/supply.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/supply.js +0 -35
- package/dist/browser/lib/rating/criteria/scoring/supply.js.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/tokenId.cjs +0 -56
- package/dist/browser/lib/rating/criteria/scoring/tokenId.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/tokenId.js +0 -35
- package/dist/browser/lib/rating/criteria/scoring/tokenId.js.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/type.cjs +0 -37
- package/dist/browser/lib/rating/criteria/scoring/type.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/type.js +0 -16
- package/dist/browser/lib/rating/criteria/scoring/type.js.map +0 -1
- package/dist/browser/lib/rating/criteria/scoringCriteria.cjs +0 -364
- package/dist/browser/lib/rating/criteria/scoringCriteria.cjs.map +0 -1
- package/dist/browser/lib/rating/criteria/scoringCriteria.js +0 -341
- package/dist/browser/lib/rating/criteria/scoringCriteria.js.map +0 -1
- package/dist/browser/lib/rating/index.cjs +0 -378
- package/dist/browser/lib/rating/index.cjs.map +0 -1
- package/dist/browser/lib/rating/index.js +0 -355
- package/dist/browser/lib/rating/index.js.map +0 -1
- package/dist/node/Diviner.js +0 -429
- package/dist/node/Diviner.js.map +0 -1
- package/dist/node/Diviner.mjs +0 -407
- package/dist/node/Diviner.mjs.map +0 -1
- package/dist/node/Plugin.js +0 -442
- package/dist/node/Plugin.js.map +0 -1
- package/dist/node/Plugin.mjs +0 -421
- package/dist/node/Plugin.mjs.map +0 -1
- package/dist/node/lib/index.js +0 -399
- package/dist/node/lib/index.js.map +0 -1
- package/dist/node/lib/index.mjs +0 -372
- package/dist/node/lib/index.mjs.map +0 -1
- package/dist/node/lib/rating/analyzeNft.js +0 -399
- package/dist/node/lib/rating/analyzeNft.js.map +0 -1
- package/dist/node/lib/rating/analyzeNft.mjs +0 -372
- package/dist/node/lib/rating/analyzeNft.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/index.js +0 -385
- package/dist/node/lib/rating/criteria/index.js.map +0 -1
- package/dist/node/lib/rating/criteria/index.mjs +0 -358
- package/dist/node/lib/rating/criteria/index.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/contract.js +0 -41
- package/dist/node/lib/rating/criteria/scoring/contract.js.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/contract.mjs +0 -16
- package/dist/node/lib/rating/criteria/scoring/contract.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/index.js +0 -406
- package/dist/node/lib/rating/criteria/scoring/index.js.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/index.mjs +0 -357
- package/dist/node/lib/rating/criteria/scoring/index.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/lib/index.js +0 -48
- package/dist/node/lib/rating/criteria/scoring/lib/index.js.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/lib/index.mjs +0 -20
- package/dist/node/lib/rating/criteria/scoring/lib/index.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.js +0 -46
- package/dist/node/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.js.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.mjs +0 -19
- package/dist/node/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/lib/toBigNumber.js +0 -38
- package/dist/node/lib/rating/criteria/scoring/lib/toBigNumber.js.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/lib/toBigNumber.mjs +0 -13
- package/dist/node/lib/rating/criteria/scoring/lib/toBigNumber.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/animationUrl.js +0 -79
- package/dist/node/lib/rating/criteria/scoring/metadata/animationUrl.js.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/animationUrl.mjs +0 -53
- package/dist/node/lib/rating/criteria/scoring/metadata/animationUrl.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.js +0 -112
- package/dist/node/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.js.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.mjs +0 -85
- package/dist/node/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/attributes/index.js +0 -114
- package/dist/node/lib/rating/criteria/scoring/metadata/attributes/index.js.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/attributes/index.mjs +0 -85
- package/dist/node/lib/rating/criteria/scoring/metadata/attributes/index.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/backgroundColor.js +0 -50
- package/dist/node/lib/rating/criteria/scoring/metadata/backgroundColor.js.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/backgroundColor.mjs +0 -24
- package/dist/node/lib/rating/criteria/scoring/metadata/backgroundColor.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/description.js +0 -43
- package/dist/node/lib/rating/criteria/scoring/metadata/description.js.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/description.mjs +0 -17
- package/dist/node/lib/rating/criteria/scoring/metadata/description.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/externalUrl.js +0 -70
- package/dist/node/lib/rating/criteria/scoring/metadata/externalUrl.js.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/externalUrl.mjs +0 -44
- package/dist/node/lib/rating/criteria/scoring/metadata/externalUrl.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/image.js +0 -79
- package/dist/node/lib/rating/criteria/scoring/metadata/image.js.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/image.mjs +0 -53
- package/dist/node/lib/rating/criteria/scoring/metadata/image.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/imageData.js +0 -56
- package/dist/node/lib/rating/criteria/scoring/metadata/imageData.js.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/imageData.mjs +0 -30
- package/dist/node/lib/rating/criteria/scoring/metadata/imageData.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/index.js +0 -326
- package/dist/node/lib/rating/criteria/scoring/metadata/index.js.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/index.mjs +0 -281
- package/dist/node/lib/rating/criteria/scoring/metadata/index.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/lib/index.js +0 -63
- package/dist/node/lib/rating/criteria/scoring/metadata/lib/index.js.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/lib/index.mjs +0 -31
- package/dist/node/lib/rating/criteria/scoring/metadata/lib/index.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/lib/urlHelpers.js +0 -61
- package/dist/node/lib/rating/criteria/scoring/metadata/lib/urlHelpers.js.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/lib/urlHelpers.mjs +0 -31
- package/dist/node/lib/rating/criteria/scoring/metadata/lib/urlHelpers.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/name.js +0 -43
- package/dist/node/lib/rating/criteria/scoring/metadata/name.js.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/name.mjs +0 -17
- package/dist/node/lib/rating/criteria/scoring/metadata/name.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/youtubeUrl.js +0 -72
- package/dist/node/lib/rating/criteria/scoring/metadata/youtubeUrl.js.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/youtubeUrl.mjs +0 -46
- package/dist/node/lib/rating/criteria/scoring/metadata/youtubeUrl.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/supply.js +0 -60
- package/dist/node/lib/rating/criteria/scoring/supply.js.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/supply.mjs +0 -35
- package/dist/node/lib/rating/criteria/scoring/supply.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/tokenId.js +0 -60
- package/dist/node/lib/rating/criteria/scoring/tokenId.js.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/tokenId.mjs +0 -35
- package/dist/node/lib/rating/criteria/scoring/tokenId.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/type.js +0 -41
- package/dist/node/lib/rating/criteria/scoring/type.js.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/type.mjs +0 -16
- package/dist/node/lib/rating/criteria/scoring/type.mjs.map +0 -1
- package/dist/node/lib/rating/criteria/scoringCriteria.js +0 -385
- package/dist/node/lib/rating/criteria/scoringCriteria.js.map +0 -1
- package/dist/node/lib/rating/criteria/scoringCriteria.mjs +0 -358
- package/dist/node/lib/rating/criteria/scoringCriteria.mjs.map +0 -1
- package/dist/node/lib/rating/index.js +0 -399
- package/dist/node/lib/rating/index.js.map +0 -1
- package/dist/node/lib/rating/index.mjs +0 -372
- package/dist/node/lib/rating/index.mjs.map +0 -1
package/dist/docs.json
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"fileName": "plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/index.ts",
|
|
17
17
|
"line": 9,
|
|
18
18
|
"character": 0,
|
|
19
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
19
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/index.ts#L9"
|
|
20
20
|
}
|
|
21
21
|
],
|
|
22
22
|
"target": 1
|
|
@@ -4268,7 +4268,7 @@
|
|
|
4268
4268
|
"fileName": "plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/Diviner.ts",
|
|
4269
4269
|
"line": 27,
|
|
4270
4270
|
"character": 18,
|
|
4271
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
4271
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/Diviner.ts#L27"
|
|
4272
4272
|
}
|
|
4273
4273
|
],
|
|
4274
4274
|
"type": {
|
|
@@ -7920,7 +7920,7 @@
|
|
|
7920
7920
|
"fileName": "plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/Diviner.ts",
|
|
7921
7921
|
"line": 29,
|
|
7922
7922
|
"character": 21,
|
|
7923
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
7923
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/Diviner.ts#L29"
|
|
7924
7924
|
}
|
|
7925
7925
|
],
|
|
7926
7926
|
"signatures": [
|
|
@@ -7935,7 +7935,7 @@
|
|
|
7935
7935
|
"fileName": "plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/Diviner.ts",
|
|
7936
7936
|
"line": 29,
|
|
7937
7937
|
"character": 37,
|
|
7938
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
7938
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/Diviner.ts#L29"
|
|
7939
7939
|
}
|
|
7940
7940
|
],
|
|
7941
7941
|
"parameters": [
|
|
@@ -17629,7 +17629,7 @@
|
|
|
17629
17629
|
"fileName": "plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/Diviner.ts",
|
|
17630
17630
|
"line": 26,
|
|
17631
17631
|
"character": 13,
|
|
17632
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
17632
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/Diviner.ts#L26"
|
|
17633
17633
|
}
|
|
17634
17634
|
],
|
|
17635
17635
|
"typeParameters": [
|
|
@@ -17684,7 +17684,7 @@
|
|
|
17684
17684
|
"fileName": "plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/lib/rating/analyzeNft.ts",
|
|
17685
17685
|
"line": 8,
|
|
17686
17686
|
"character": 12,
|
|
17687
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
17687
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/lib/rating/analyzeNft.ts#L8"
|
|
17688
17688
|
}
|
|
17689
17689
|
],
|
|
17690
17690
|
"type": {
|
|
@@ -17718,7 +17718,7 @@
|
|
|
17718
17718
|
"fileName": "plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/Diviner.ts",
|
|
17719
17719
|
"line": 17,
|
|
17720
17720
|
"character": 12,
|
|
17721
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
17721
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/Diviner.ts#L17"
|
|
17722
17722
|
}
|
|
17723
17723
|
],
|
|
17724
17724
|
"type": {
|
|
@@ -17764,7 +17764,7 @@
|
|
|
17764
17764
|
"fileName": "plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/lib/rating/analyzeNft.ts",
|
|
17765
17765
|
"line": 6,
|
|
17766
17766
|
"character": 12,
|
|
17767
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
17767
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/lib/rating/analyzeNft.ts#L6"
|
|
17768
17768
|
}
|
|
17769
17769
|
],
|
|
17770
17770
|
"type": {
|
|
@@ -17809,7 +17809,7 @@
|
|
|
17809
17809
|
"fileName": "plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/Plugin.ts",
|
|
17810
17810
|
"line": 7,
|
|
17811
17811
|
"character": 13,
|
|
17812
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
17812
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/Plugin.ts#L7"
|
|
17813
17813
|
}
|
|
17814
17814
|
],
|
|
17815
17815
|
"signatures": [
|
|
@@ -17824,7 +17824,7 @@
|
|
|
17824
17824
|
"fileName": "plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/Plugin.ts",
|
|
17825
17825
|
"line": 7,
|
|
17826
17826
|
"character": 37,
|
|
17827
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
17827
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/Plugin.ts#L7"
|
|
17828
17828
|
}
|
|
17829
17829
|
],
|
|
17830
17830
|
"type": {
|
|
@@ -19550,7 +19550,7 @@
|
|
|
19550
19550
|
"fileName": "plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/lib/rating/analyzeNft.ts",
|
|
19551
19551
|
"line": 12,
|
|
19552
19552
|
"character": 13,
|
|
19553
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
19553
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/lib/rating/analyzeNft.ts#L12"
|
|
19554
19554
|
}
|
|
19555
19555
|
],
|
|
19556
19556
|
"signatures": [
|
|
@@ -19565,7 +19565,7 @@
|
|
|
19565
19565
|
"fileName": "plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/lib/rating/analyzeNft.ts",
|
|
19566
19566
|
"line": 12,
|
|
19567
19567
|
"character": 26,
|
|
19568
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
19568
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/lib/rating/analyzeNft.ts#L12"
|
|
19569
19569
|
}
|
|
19570
19570
|
],
|
|
19571
19571
|
"parameters": [
|
|
@@ -19625,7 +19625,7 @@
|
|
|
19625
19625
|
"fileName": "plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/Diviner.ts",
|
|
19626
19626
|
"line": 24,
|
|
19627
19627
|
"character": 13,
|
|
19628
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
19628
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/Diviner.ts#L24"
|
|
19629
19629
|
}
|
|
19630
19630
|
],
|
|
19631
19631
|
"signatures": [
|
|
@@ -19640,7 +19640,7 @@
|
|
|
19640
19640
|
"fileName": "plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/Diviner.ts",
|
|
19641
19641
|
"line": 24,
|
|
19642
19642
|
"character": 26,
|
|
19643
|
-
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/
|
|
19643
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/b1d6f519bacda/packages/plugins/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/diviner/src/Diviner.ts#L24"
|
|
19644
19644
|
}
|
|
19645
19645
|
],
|
|
19646
19646
|
"parameters": [
|
package/package.json
CHANGED
|
@@ -11,25 +11,25 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@ethersproject/address": "^5.7.0",
|
|
14
|
-
"@xylabs/bignumber": "^2.12.
|
|
15
|
-
"@xylabs/url": "^2.12.
|
|
16
|
-
"@xyo-network/abstract-diviner": "~2.75.
|
|
17
|
-
"@xyo-network/core": "~2.75.
|
|
18
|
-
"@xyo-network/crypto-nft-payload-plugin": "~2.75.
|
|
19
|
-
"@xyo-network/crypto-nft-score-model": "~2.75.
|
|
20
|
-
"@xyo-network/diviner-model": "~2.75.
|
|
21
|
-
"@xyo-network/module-model": "~2.75.
|
|
22
|
-
"@xyo-network/payload-model": "~2.75.
|
|
23
|
-
"@xyo-network/payloadset-plugin": "~2.75.
|
|
14
|
+
"@xylabs/bignumber": "^2.12.23",
|
|
15
|
+
"@xylabs/url": "^2.12.23",
|
|
16
|
+
"@xyo-network/abstract-diviner": "~2.75.16",
|
|
17
|
+
"@xyo-network/core": "~2.75.16",
|
|
18
|
+
"@xyo-network/crypto-nft-payload-plugin": "~2.75.16",
|
|
19
|
+
"@xyo-network/crypto-nft-score-model": "~2.75.16",
|
|
20
|
+
"@xyo-network/diviner-model": "~2.75.16",
|
|
21
|
+
"@xyo-network/module-model": "~2.75.16",
|
|
22
|
+
"@xyo-network/payload-model": "~2.75.16",
|
|
23
|
+
"@xyo-network/payloadset-plugin": "~2.75.16",
|
|
24
24
|
"svg-parser": "^2.0.4"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/svg-parser": "^2.0.4",
|
|
28
|
-
"@xylabs/jest-helpers": "^2.12.
|
|
29
|
-
"@xylabs/ts-scripts-yarn3": "^3.
|
|
30
|
-
"@xylabs/tsconfig": "^3.
|
|
31
|
-
"@xyo-network/account": "~2.75.
|
|
32
|
-
"@xyo-network/payload-wrapper": "~2.75.
|
|
28
|
+
"@xylabs/jest-helpers": "^2.12.23",
|
|
29
|
+
"@xylabs/ts-scripts-yarn3": "^3.1.3",
|
|
30
|
+
"@xylabs/tsconfig": "^3.1.3",
|
|
31
|
+
"@xyo-network/account": "~2.75.16",
|
|
32
|
+
"@xyo-network/payload-wrapper": "~2.75.16",
|
|
33
33
|
"ethers": "^5.7.2",
|
|
34
34
|
"jest": "^29.7.0",
|
|
35
35
|
"typescript": "^5.2.2"
|
|
@@ -77,5 +77,5 @@
|
|
|
77
77
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
78
78
|
},
|
|
79
79
|
"sideEffects": false,
|
|
80
|
-
"version": "2.75.
|
|
80
|
+
"version": "2.75.16"
|
|
81
81
|
}
|
package/dist/browser/Diviner.cjs
DELETED
|
@@ -1,407 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/Diviner.ts
|
|
21
|
-
var Diviner_exports = {};
|
|
22
|
-
__export(Diviner_exports, {
|
|
23
|
-
NftScoreDiviner: () => NftScoreDiviner,
|
|
24
|
-
isNftScore: () => isNftScore
|
|
25
|
-
});
|
|
26
|
-
module.exports = __toCommonJS(Diviner_exports);
|
|
27
|
-
var import_abstract_diviner = require("@xyo-network/abstract-diviner");
|
|
28
|
-
var import_core = require("@xyo-network/core");
|
|
29
|
-
var import_crypto_nft_payload_plugin = require("@xyo-network/crypto-nft-payload-plugin");
|
|
30
|
-
|
|
31
|
-
// src/lib/rating/criteria/scoring/contract.ts
|
|
32
|
-
var import_address = require("@ethersproject/address");
|
|
33
|
-
var import_crypto_nft_score_model = require("@xyo-network/crypto-nft-score-model");
|
|
34
|
-
var scoreContractAddress = (nft) => {
|
|
35
|
-
if (!nft.address)
|
|
36
|
-
return import_crypto_nft_score_model.FAIL;
|
|
37
|
-
if (typeof nft.address !== "string")
|
|
38
|
-
return import_crypto_nft_score_model.FAIL;
|
|
39
|
-
if (!(0, import_address.isAddress)(nft.address))
|
|
40
|
-
return import_crypto_nft_score_model.FAIL;
|
|
41
|
-
return import_crypto_nft_score_model.PASS;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
// src/lib/rating/criteria/scoring/metadata/animationUrl.ts
|
|
45
|
-
var import_crypto_nft_score_model2 = require("@xyo-network/crypto-nft-score-model");
|
|
46
|
-
|
|
47
|
-
// src/lib/rating/criteria/scoring/metadata/lib/urlHelpers.ts
|
|
48
|
-
var import_url = require("@xylabs/url");
|
|
49
|
-
var web3Protocols = ["ipfs:", "ar:"];
|
|
50
|
-
var toUrl = (url) => {
|
|
51
|
-
if (!url)
|
|
52
|
-
return void 0;
|
|
53
|
-
try {
|
|
54
|
-
return new import_url.URL(url);
|
|
55
|
-
} catch (e) {
|
|
56
|
-
return void 0;
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
var isValidUrl = (url) => toUrl(url) !== void 0;
|
|
60
|
-
var isWeb3 = (url) => web3Protocols.some((protocol) => protocol === toUrl(url)?.protocol);
|
|
61
|
-
var isSecure = (url) => isWeb3(url) || toUrl(url)?.protocol === "https:";
|
|
62
|
-
|
|
63
|
-
// src/lib/rating/criteria/scoring/metadata/animationUrl.ts
|
|
64
|
-
var scoreNftAnimationUrl = (nft) => {
|
|
65
|
-
return scoreAnimationUrl(nft.metadata?.animation_url);
|
|
66
|
-
};
|
|
67
|
-
var scoreAnimationUrl = (animation_url) => {
|
|
68
|
-
const score = [0, 0];
|
|
69
|
-
if (animation_url === void 0 || animation_url === null)
|
|
70
|
-
return import_crypto_nft_score_model2.PASS;
|
|
71
|
-
(0, import_crypto_nft_score_model2.incrementPossible)(score);
|
|
72
|
-
if (typeof animation_url !== "string")
|
|
73
|
-
return score;
|
|
74
|
-
(0, import_crypto_nft_score_model2.incrementTotalAndPossible)(score);
|
|
75
|
-
if (!isValidUrl(animation_url))
|
|
76
|
-
return score;
|
|
77
|
-
(0, import_crypto_nft_score_model2.incrementTotalAndPossible)(score);
|
|
78
|
-
if (!isSecure(animation_url))
|
|
79
|
-
return score;
|
|
80
|
-
(0, import_crypto_nft_score_model2.incrementTotalAndPossible)(score);
|
|
81
|
-
if (!isWeb3(animation_url))
|
|
82
|
-
return score;
|
|
83
|
-
return (0, import_crypto_nft_score_model2.incrementTotal)(score);
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
// src/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.ts
|
|
87
|
-
var import_crypto_nft_score_model3 = require("@xyo-network/crypto-nft-score-model");
|
|
88
|
-
var isDate = (value) => {
|
|
89
|
-
if (isNumber(value)) {
|
|
90
|
-
try {
|
|
91
|
-
new Date(value);
|
|
92
|
-
return true;
|
|
93
|
-
} catch (error) {
|
|
94
|
-
return false;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
return false;
|
|
98
|
-
};
|
|
99
|
-
var isNumber = (value) => typeof value === "number";
|
|
100
|
-
var isPercentage = (value) => isNumber(value) && value >= 0 && value <= 100;
|
|
101
|
-
var isNonEmptyString = (value) => typeof value === "string" && value.length > 0;
|
|
102
|
-
var isNonEmptyStringOrNumber = (value) => value === "number" || isNonEmptyString(value);
|
|
103
|
-
var evaluateNftAttributes = (nft) => !nft?.metadata?.attributes ? [0, 1] : evaluateAttributes(nft?.metadata?.attributes);
|
|
104
|
-
var evaluateAttributes = (attributes) => {
|
|
105
|
-
if (!attributes || !Array.isArray(attributes) || attributes.length === 0)
|
|
106
|
-
return [0, 1];
|
|
107
|
-
const score = [0, 0];
|
|
108
|
-
for (const attribute of attributes) {
|
|
109
|
-
const [attributeTotal, attributePossible] = evaluateAttribute(attribute);
|
|
110
|
-
(0, import_crypto_nft_score_model3.incrementTotalAndPossible)(score, attributeTotal, attributePossible);
|
|
111
|
-
}
|
|
112
|
-
return [1, 1];
|
|
113
|
-
};
|
|
114
|
-
var evaluateAttribute = (attribute) => {
|
|
115
|
-
const score = [0, 1];
|
|
116
|
-
const max_value = attribute?.max_value;
|
|
117
|
-
const trait_type = attribute?.trait_type;
|
|
118
|
-
const value = attribute?.value;
|
|
119
|
-
if (!attribute || typeof attribute !== "object" || !isNonEmptyString(trait_type) || !isNonEmptyStringOrNumber(value))
|
|
120
|
-
return score;
|
|
121
|
-
(0, import_crypto_nft_score_model3.incrementTotal)(score);
|
|
122
|
-
(0, import_crypto_nft_score_model3.incrementPossible)(score);
|
|
123
|
-
if (validDisplayType(attribute))
|
|
124
|
-
(0, import_crypto_nft_score_model3.incrementTotal)(score);
|
|
125
|
-
if (max_value !== void 0) {
|
|
126
|
-
(0, import_crypto_nft_score_model3.incrementPossible)(score);
|
|
127
|
-
if (isNumber(max_value) && isNumber(value) && value <= max_value)
|
|
128
|
-
(0, import_crypto_nft_score_model3.incrementTotal)(score);
|
|
129
|
-
}
|
|
130
|
-
return score;
|
|
131
|
-
};
|
|
132
|
-
var validDisplayType = (attribute) => {
|
|
133
|
-
switch (attribute?.display_type) {
|
|
134
|
-
case "number":
|
|
135
|
-
case "boost_number": {
|
|
136
|
-
if (isNumber(attribute?.value))
|
|
137
|
-
return true;
|
|
138
|
-
break;
|
|
139
|
-
}
|
|
140
|
-
case "boost_percentage": {
|
|
141
|
-
if (isPercentage(attribute?.value))
|
|
142
|
-
return true;
|
|
143
|
-
break;
|
|
144
|
-
}
|
|
145
|
-
case "date": {
|
|
146
|
-
if (isDate(attribute?.value))
|
|
147
|
-
return true;
|
|
148
|
-
break;
|
|
149
|
-
}
|
|
150
|
-
case "string":
|
|
151
|
-
case void 0: {
|
|
152
|
-
if (isNonEmptyString(attribute?.value))
|
|
153
|
-
return true;
|
|
154
|
-
break;
|
|
155
|
-
}
|
|
156
|
-
default: {
|
|
157
|
-
break;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
return false;
|
|
161
|
-
};
|
|
162
|
-
|
|
163
|
-
// src/lib/rating/criteria/scoring/metadata/backgroundColor.ts
|
|
164
|
-
var import_crypto_nft_score_model4 = require("@xyo-network/crypto-nft-score-model");
|
|
165
|
-
var isHexColor = /^[0-9A-F]{6}$/i;
|
|
166
|
-
var scoreNftBackgroundColor = (nft) => {
|
|
167
|
-
return scoreBackgroundColor(nft.metadata?.background_color);
|
|
168
|
-
};
|
|
169
|
-
var scoreBackgroundColor = (background_color) => {
|
|
170
|
-
const score = [0, 0];
|
|
171
|
-
if (background_color === void 0 || background_color === null)
|
|
172
|
-
return import_crypto_nft_score_model4.PASS;
|
|
173
|
-
(0, import_crypto_nft_score_model4.incrementPossible)(score);
|
|
174
|
-
if (typeof background_color !== "string")
|
|
175
|
-
return score;
|
|
176
|
-
(0, import_crypto_nft_score_model4.incrementTotalAndPossible)(score);
|
|
177
|
-
if (!background_color.toUpperCase().match(isHexColor))
|
|
178
|
-
return score;
|
|
179
|
-
return (0, import_crypto_nft_score_model4.incrementTotal)(score);
|
|
180
|
-
};
|
|
181
|
-
|
|
182
|
-
// src/lib/rating/criteria/scoring/metadata/description.ts
|
|
183
|
-
var import_crypto_nft_score_model5 = require("@xyo-network/crypto-nft-score-model");
|
|
184
|
-
var scoreNftDescription = (nft) => {
|
|
185
|
-
return scoreDescription(nft.metadata?.description);
|
|
186
|
-
};
|
|
187
|
-
var scoreDescription = (description) => {
|
|
188
|
-
const score = [0, 1];
|
|
189
|
-
if (!description || typeof description !== "string")
|
|
190
|
-
return score;
|
|
191
|
-
return (0, import_crypto_nft_score_model5.incrementTotal)(score);
|
|
192
|
-
};
|
|
193
|
-
|
|
194
|
-
// src/lib/rating/criteria/scoring/metadata/externalUrl.ts
|
|
195
|
-
var import_crypto_nft_score_model6 = require("@xyo-network/crypto-nft-score-model");
|
|
196
|
-
var scoreNftExternalUrl = (nft) => {
|
|
197
|
-
return scoreExternalUrl(nft?.metadata?.external_url);
|
|
198
|
-
};
|
|
199
|
-
var scoreExternalUrl = (external_url) => {
|
|
200
|
-
const score = [0, 2];
|
|
201
|
-
if (external_url === void 0 || external_url === null || typeof external_url !== "string" || !isValidUrl(external_url))
|
|
202
|
-
return score;
|
|
203
|
-
(0, import_crypto_nft_score_model6.incrementTotal)(score);
|
|
204
|
-
if (!isSecure(external_url))
|
|
205
|
-
return score;
|
|
206
|
-
return (0, import_crypto_nft_score_model6.incrementTotal)(score);
|
|
207
|
-
};
|
|
208
|
-
|
|
209
|
-
// src/lib/rating/criteria/scoring/metadata/image.ts
|
|
210
|
-
var import_crypto_nft_score_model7 = require("@xyo-network/crypto-nft-score-model");
|
|
211
|
-
var MaxPossibleImageScore = 3;
|
|
212
|
-
var scoreNftImage = (nft) => {
|
|
213
|
-
if (!nft?.metadata?.image) {
|
|
214
|
-
return nft.metadata?.image_data ? import_crypto_nft_score_model7.PASS : [0, MaxPossibleImageScore];
|
|
215
|
-
} else {
|
|
216
|
-
return scoreImage(nft.metadata?.image);
|
|
217
|
-
}
|
|
218
|
-
};
|
|
219
|
-
var scoreImage = (image) => {
|
|
220
|
-
const score = [0, MaxPossibleImageScore];
|
|
221
|
-
if (!image || typeof image !== "string" || !isValidUrl(image))
|
|
222
|
-
return score;
|
|
223
|
-
(0, import_crypto_nft_score_model7.incrementTotal)(score);
|
|
224
|
-
if (!isSecure(image))
|
|
225
|
-
return score;
|
|
226
|
-
(0, import_crypto_nft_score_model7.incrementTotal)(score);
|
|
227
|
-
if (!isWeb3(image))
|
|
228
|
-
return score;
|
|
229
|
-
(0, import_crypto_nft_score_model7.incrementTotal)(score);
|
|
230
|
-
return score;
|
|
231
|
-
};
|
|
232
|
-
|
|
233
|
-
// src/lib/rating/criteria/scoring/metadata/imageData.ts
|
|
234
|
-
var import_crypto_nft_score_model8 = require("@xyo-network/crypto-nft-score-model");
|
|
235
|
-
var import_svg_parser = require("svg-parser");
|
|
236
|
-
var MaxPossibleImageDataScore = 1;
|
|
237
|
-
var isValidImageData = (image_data) => {
|
|
238
|
-
if (!image_data.startsWith("<svg"))
|
|
239
|
-
return false;
|
|
240
|
-
try {
|
|
241
|
-
(0, import_svg_parser.parse)(image_data);
|
|
242
|
-
return true;
|
|
243
|
-
} catch (error) {
|
|
244
|
-
return false;
|
|
245
|
-
}
|
|
246
|
-
};
|
|
247
|
-
var scoreNftImageData = (nft) => {
|
|
248
|
-
if (!nft?.metadata?.image_data) {
|
|
249
|
-
return nft.metadata?.image ? import_crypto_nft_score_model8.PASS : [0, MaxPossibleImageDataScore];
|
|
250
|
-
} else {
|
|
251
|
-
return scoreImageData(nft.metadata?.image_data);
|
|
252
|
-
}
|
|
253
|
-
};
|
|
254
|
-
var scoreImageData = (image_data) => {
|
|
255
|
-
return !image_data || typeof image_data !== "string" || !isValidImageData(image_data) ? [0, MaxPossibleImageDataScore] : [MaxPossibleImageDataScore, MaxPossibleImageDataScore];
|
|
256
|
-
};
|
|
257
|
-
|
|
258
|
-
// src/lib/rating/criteria/scoring/metadata/name.ts
|
|
259
|
-
var import_crypto_nft_score_model9 = require("@xyo-network/crypto-nft-score-model");
|
|
260
|
-
var scoreNftName = (nft) => {
|
|
261
|
-
return scoreName(nft.metadata?.name);
|
|
262
|
-
};
|
|
263
|
-
var scoreName = (name) => {
|
|
264
|
-
const score = [0, 1];
|
|
265
|
-
if (!name || typeof name !== "string")
|
|
266
|
-
return score;
|
|
267
|
-
return (0, import_crypto_nft_score_model9.incrementTotal)(score);
|
|
268
|
-
};
|
|
269
|
-
|
|
270
|
-
// src/lib/rating/criteria/scoring/metadata/youtubeUrl.ts
|
|
271
|
-
var import_crypto_nft_score_model10 = require("@xyo-network/crypto-nft-score-model");
|
|
272
|
-
var scoreNftYoutubeUrl = (nft) => {
|
|
273
|
-
return scoreYoutubeUrl(nft?.metadata?.youtube_url);
|
|
274
|
-
};
|
|
275
|
-
var scoreYoutubeUrl = (youtube_url) => {
|
|
276
|
-
if (youtube_url === void 0 || youtube_url === null)
|
|
277
|
-
return import_crypto_nft_score_model10.PASS;
|
|
278
|
-
const score = [0, 2];
|
|
279
|
-
if (typeof youtube_url !== "string" || !isValidUrl(youtube_url))
|
|
280
|
-
return score;
|
|
281
|
-
(0, import_crypto_nft_score_model10.incrementTotal)(score);
|
|
282
|
-
if (!isSecure(youtube_url))
|
|
283
|
-
return score;
|
|
284
|
-
return (0, import_crypto_nft_score_model10.incrementTotal)(score);
|
|
285
|
-
};
|
|
286
|
-
|
|
287
|
-
// src/lib/rating/criteria/scoring/supply.ts
|
|
288
|
-
var import_crypto_nft_score_model11 = require("@xyo-network/crypto-nft-score-model");
|
|
289
|
-
|
|
290
|
-
// src/lib/rating/criteria/scoring/lib/toBigNumber.ts
|
|
291
|
-
var import_bignumber = require("@xylabs/bignumber");
|
|
292
|
-
var toBigNumber = (value) => {
|
|
293
|
-
try {
|
|
294
|
-
return new import_bignumber.BigNumber(value);
|
|
295
|
-
} catch (error) {
|
|
296
|
-
return void 0;
|
|
297
|
-
}
|
|
298
|
-
};
|
|
299
|
-
|
|
300
|
-
// src/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.ts
|
|
301
|
-
var isValidPositiveBigNumber = (value) => {
|
|
302
|
-
const num = toBigNumber(value);
|
|
303
|
-
return !num || num.isNeg() ? false : true;
|
|
304
|
-
};
|
|
305
|
-
|
|
306
|
-
// src/lib/rating/criteria/scoring/supply.ts
|
|
307
|
-
var scoreSupply = (nft) => {
|
|
308
|
-
if (!nft.supply)
|
|
309
|
-
return import_crypto_nft_score_model11.FAIL;
|
|
310
|
-
if (typeof nft.supply !== "string")
|
|
311
|
-
return import_crypto_nft_score_model11.FAIL;
|
|
312
|
-
try {
|
|
313
|
-
return isValidPositiveBigNumber(nft.supply) ? import_crypto_nft_score_model11.PASS : import_crypto_nft_score_model11.FAIL;
|
|
314
|
-
} catch (_error) {
|
|
315
|
-
return import_crypto_nft_score_model11.FAIL;
|
|
316
|
-
}
|
|
317
|
-
};
|
|
318
|
-
|
|
319
|
-
// src/lib/rating/criteria/scoring/tokenId.ts
|
|
320
|
-
var import_crypto_nft_score_model12 = require("@xyo-network/crypto-nft-score-model");
|
|
321
|
-
var scoreTokenId = (nft) => {
|
|
322
|
-
if (!nft.tokenId)
|
|
323
|
-
return import_crypto_nft_score_model12.FAIL;
|
|
324
|
-
if (typeof nft.tokenId !== "string")
|
|
325
|
-
return import_crypto_nft_score_model12.FAIL;
|
|
326
|
-
try {
|
|
327
|
-
return isValidPositiveBigNumber(nft.tokenId) ? import_crypto_nft_score_model12.PASS : import_crypto_nft_score_model12.FAIL;
|
|
328
|
-
} catch (_error) {
|
|
329
|
-
return import_crypto_nft_score_model12.FAIL;
|
|
330
|
-
}
|
|
331
|
-
};
|
|
332
|
-
|
|
333
|
-
// src/lib/rating/criteria/scoring/type.ts
|
|
334
|
-
var import_crypto_nft_score_model13 = require("@xyo-network/crypto-nft-score-model");
|
|
335
|
-
var scoreType = (nft) => {
|
|
336
|
-
if (!nft.type)
|
|
337
|
-
return import_crypto_nft_score_model13.FAIL;
|
|
338
|
-
if (typeof nft.type !== "string")
|
|
339
|
-
return import_crypto_nft_score_model13.FAIL;
|
|
340
|
-
const type = nft.type.toUpperCase();
|
|
341
|
-
if (type !== "ERC721" && type !== "ERC1155")
|
|
342
|
-
return import_crypto_nft_score_model13.FAIL;
|
|
343
|
-
return import_crypto_nft_score_model13.PASS;
|
|
344
|
-
};
|
|
345
|
-
|
|
346
|
-
// src/lib/rating/criteria/scoringCriteria.ts
|
|
347
|
-
var attributesScoringCriteria = {
|
|
348
|
-
Attributes: { score: evaluateNftAttributes, weight: 1 }
|
|
349
|
-
};
|
|
350
|
-
var metadataScoringCriteria = {
|
|
351
|
-
"Animation URL": { score: scoreNftAnimationUrl, weight: 1 },
|
|
352
|
-
"Background Color": { score: scoreNftBackgroundColor, weight: 1 },
|
|
353
|
-
Description: { score: scoreNftDescription, weight: 1 },
|
|
354
|
-
"External Url": { score: scoreNftExternalUrl, weight: 1 },
|
|
355
|
-
Image: { score: scoreNftImage, weight: 1 },
|
|
356
|
-
"Image Data": { score: scoreNftImageData, weight: 1 },
|
|
357
|
-
Name: { score: scoreNftName, weight: 1 },
|
|
358
|
-
"YouTube URL": { score: scoreNftYoutubeUrl, weight: 1 },
|
|
359
|
-
...attributesScoringCriteria
|
|
360
|
-
};
|
|
361
|
-
var scoringCriteria = {
|
|
362
|
-
"Contract Address": { score: scoreContractAddress, weight: 1 },
|
|
363
|
-
Supply: { score: scoreSupply, weight: 1 },
|
|
364
|
-
"Token Id": { score: scoreTokenId, weight: 1 },
|
|
365
|
-
Type: { score: scoreType, weight: 1 },
|
|
366
|
-
...metadataScoringCriteria
|
|
367
|
-
};
|
|
368
|
-
|
|
369
|
-
// src/lib/rating/analyzeNft.ts
|
|
370
|
-
var analyzeNft = async (nft) => {
|
|
371
|
-
const result = Object.fromEntries(
|
|
372
|
-
await Promise.all(
|
|
373
|
-
Object.entries(scoringCriteria).map(async ([key, { score, weight }]) => {
|
|
374
|
-
const rawScore = await score(nft);
|
|
375
|
-
const weighted = rawScore.map((v) => v * weight);
|
|
376
|
-
return [key, weighted];
|
|
377
|
-
})
|
|
378
|
-
)
|
|
379
|
-
);
|
|
380
|
-
return result;
|
|
381
|
-
};
|
|
382
|
-
|
|
383
|
-
// src/Diviner.ts
|
|
384
|
-
var toNftScorePayload = (nftInfo, scores) => {
|
|
385
|
-
const { address, chainId, type } = nftInfo;
|
|
386
|
-
return { address, chainId, schema: import_crypto_nft_payload_plugin.NftScoreSchema, scores, type };
|
|
387
|
-
};
|
|
388
|
-
var isNftScore = (payload) => payload.schema === import_crypto_nft_payload_plugin.NftScoreSchema;
|
|
389
|
-
var NftScoreDiviner = class extends import_abstract_diviner.AbstractDiviner {
|
|
390
|
-
static configSchemas = [import_crypto_nft_payload_plugin.NftScoreDivinerConfigSchema];
|
|
391
|
-
divineHandler = async (payloads) => {
|
|
392
|
-
const nftInfos = payloads?.filter(import_crypto_nft_payload_plugin.isNftInfo) ?? [];
|
|
393
|
-
const results = await Promise.all(
|
|
394
|
-
nftInfos.map(async (nftInfo) => {
|
|
395
|
-
const [score, sourceHash] = await Promise.all([
|
|
396
|
-
// Analyze the NFT
|
|
397
|
-
toNftScorePayload(nftInfo, await analyzeNft(nftInfo)),
|
|
398
|
-
// Hash the source payload
|
|
399
|
-
import_core.PayloadHasher.hashAsync(nftInfo)
|
|
400
|
-
]);
|
|
401
|
-
return { ...score, sources: [sourceHash] };
|
|
402
|
-
})
|
|
403
|
-
);
|
|
404
|
-
return results;
|
|
405
|
-
};
|
|
406
|
-
};
|
|
407
|
-
//# sourceMappingURL=Diviner.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Diviner.ts","../../src/lib/rating/criteria/scoring/contract.ts","../../src/lib/rating/criteria/scoring/metadata/animationUrl.ts","../../src/lib/rating/criteria/scoring/metadata/lib/urlHelpers.ts","../../src/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.ts","../../src/lib/rating/criteria/scoring/metadata/backgroundColor.ts","../../src/lib/rating/criteria/scoring/metadata/description.ts","../../src/lib/rating/criteria/scoring/metadata/externalUrl.ts","../../src/lib/rating/criteria/scoring/metadata/image.ts","../../src/lib/rating/criteria/scoring/metadata/imageData.ts","../../src/lib/rating/criteria/scoring/metadata/name.ts","../../src/lib/rating/criteria/scoring/metadata/youtubeUrl.ts","../../src/lib/rating/criteria/scoring/supply.ts","../../src/lib/rating/criteria/scoring/lib/toBigNumber.ts","../../src/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.ts","../../src/lib/rating/criteria/scoring/tokenId.ts","../../src/lib/rating/criteria/scoring/type.ts","../../src/lib/rating/criteria/scoringCriteria.ts","../../src/lib/rating/analyzeNft.ts"],"sourcesContent":["import { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport { PayloadHasher } from '@xyo-network/core'\nimport {\n isNftInfo,\n NftInfo,\n NftScore,\n NftScoreDivinerConfig,\n NftScoreDivinerConfigSchema,\n NftScoreSchema,\n} from '@xyo-network/crypto-nft-payload-plugin'\nimport { DivinerParams } from '@xyo-network/diviner-model'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\n\nimport { analyzeNft, NftAnalysis } from './lib'\n\nexport type NftScoreDivinerParams = DivinerParams<AnyConfigSchema<NftScoreDivinerConfig>>\n\nconst toNftScorePayload = (nftInfo: NftInfo, scores: NftAnalysis): NftScore => {\n const { address, chainId, type } = nftInfo\n return { address, chainId, schema: NftScoreSchema, scores, type }\n}\n\nexport const isNftScore = (payload: Payload): payload is NftScore => payload.schema === NftScoreSchema\n\nexport class NftScoreDiviner<TParams extends NftScoreDivinerParams = NftScoreDivinerParams> extends AbstractDiviner<TParams> {\n static override configSchemas = [NftScoreDivinerConfigSchema]\n\n protected override divineHandler = async (payloads?: Payload[]): Promise<Payload[]> => {\n const nftInfos = payloads?.filter(isNftInfo) ?? []\n const results = await Promise.all(\n nftInfos.map<Promise<NftScore>>(async (nftInfo) => {\n const [score, sourceHash] = await Promise.all([\n // Analyze the NFT\n toNftScorePayload(nftInfo, await analyzeNft(nftInfo)),\n // Hash the source payload\n PayloadHasher.hashAsync(nftInfo),\n ])\n return { ...score, sources: [sourceHash] }\n }),\n )\n return results\n }\n}\n","import { isAddress } from '@ethersproject/address'\nimport { NftInfoFields } from '@xyo-network/crypto-nft-payload-plugin'\nimport { FAIL, PASS, PassFailScoringFunction } from '@xyo-network/crypto-nft-score-model'\n\nexport const scoreContractAddress: PassFailScoringFunction<NftInfoFields> = (nft: NftInfoFields) => {\n if (!nft.address) return FAIL\n if (typeof nft.address !== 'string') return FAIL\n if (!isAddress(nft.address)) return FAIL\n return PASS\n}\n","import { NftInfoFields, OpenSeaNftInfoFields } from '@xyo-network/crypto-nft-payload-plugin'\nimport { incrementPossible, incrementTotal, incrementTotalAndPossible, PASS, ScaledScore } from '@xyo-network/crypto-nft-score-model'\n\nimport { isSecure, isValidUrl, isWeb3 } from './lib'\n\nexport const scoreNftAnimationUrl = (nft: NftInfoFields | OpenSeaNftInfoFields): ScaledScore => {\n return scoreAnimationUrl(nft.metadata?.animation_url)\n}\n\nexport const scoreAnimationUrl = (animation_url: unknown): ScaledScore => {\n const score: ScaledScore = [0, 0]\n if (animation_url === undefined || animation_url === null) return PASS\n incrementPossible(score)\n if (typeof animation_url !== 'string') return score\n incrementTotalAndPossible(score)\n if (!isValidUrl(animation_url)) return score\n incrementTotalAndPossible(score)\n if (!isSecure(animation_url)) return score\n incrementTotalAndPossible(score)\n if (!isWeb3(animation_url)) return score\n return incrementTotal(score)\n}\n","import { URL } from '@xylabs/url'\n\nexport const web3Protocols = ['ipfs:', 'ar:']\n\nexport const toUrl = (url?: string | null): URL | undefined => {\n if (!url) return undefined\n try {\n return new URL(url)\n } catch (e) {\n return undefined\n }\n}\n\nexport const isValidUrl = (url?: string | null): boolean => toUrl(url) !== undefined\nexport const isWeb3 = (url?: string | null): boolean => web3Protocols.some((protocol) => protocol === toUrl(url)?.protocol)\nexport const isWeb2 = (url?: string | null): boolean => !isWeb3(url)\nexport const isSecure = (url?: string | null): boolean => isWeb3(url) || toUrl(url)?.protocol === 'https:'\n","import { NftAttribute, NftInfoFields, OpenSeaNftAttribute, OpenSeaNftInfoFields } from '@xyo-network/crypto-nft-payload-plugin'\nimport { incrementPossible, incrementTotal, incrementTotalAndPossible, ScaledScore } from '@xyo-network/crypto-nft-score-model'\n\nconst isDate = (value: unknown): value is Date => {\n if (isNumber(value)) {\n try {\n new Date(value)\n return true\n } catch (error) {\n return false\n }\n }\n return false\n}\n\nconst isNumber = (value: unknown): value is number => typeof value === 'number'\n\nconst isPercentage = (value: unknown): boolean => isNumber(value) && value >= 0 && value <= 100\n\nconst isNonEmptyString = (value: unknown): value is string => typeof value === 'string' && value.length > 0\n\nconst isNonEmptyStringOrNumber = (value: unknown): value is string | number => value === 'number' || isNonEmptyString(value)\n\nexport const evaluateNftAttributes = (nft: NftInfoFields | OpenSeaNftInfoFields): ScaledScore =>\n !nft?.metadata?.attributes ? [0, 1] : evaluateAttributes(nft?.metadata?.attributes)\n\nexport const evaluateAttributes = (attributes: NftAttribute[] | OpenSeaNftAttribute[] | unknown): ScaledScore => {\n if (!attributes || !Array.isArray(attributes) || attributes.length === 0) return [0, 1]\n const score: ScaledScore = [0, 0]\n for (const attribute of attributes) {\n const [attributeTotal, attributePossible] = evaluateAttribute(attribute)\n incrementTotalAndPossible(score, attributeTotal, attributePossible)\n }\n return [1, 1]\n}\n\nexport const evaluateAttribute = (attribute: OpenSeaNftAttribute): ScaledScore => {\n const score: ScaledScore = [0, 1]\n const max_value = attribute?.max_value\n const trait_type = attribute?.trait_type\n const value = attribute?.value\n\n // Validate trait_type & value\n if (!attribute || typeof attribute !== 'object' || !isNonEmptyString(trait_type) || !isNonEmptyStringOrNumber(value)) return score\n incrementTotal(score)\n\n // Validate display_type\n incrementPossible(score)\n if (validDisplayType(attribute)) incrementTotal(score)\n\n // Validate max_value\n if (max_value !== undefined) {\n incrementPossible(score)\n if (isNumber(max_value) && isNumber(value) && value <= max_value) incrementTotal(score)\n }\n\n return score\n}\n\nconst validDisplayType = (attribute: OpenSeaNftAttribute): boolean => {\n switch (attribute?.display_type) {\n case 'number':\n case 'boost_number': {\n if (isNumber(attribute?.value)) return true\n break\n }\n case 'boost_percentage': {\n if (isPercentage(attribute?.value)) return true\n break\n }\n case 'date': {\n if (isDate(attribute?.value)) return true\n break\n }\n case 'string':\n case undefined: {\n if (isNonEmptyString(attribute?.value)) return true\n break\n }\n default: {\n break\n }\n }\n return false\n}\n","import { NftInfoFields, OpenSeaNftInfoFields } from '@xyo-network/crypto-nft-payload-plugin'\nimport { incrementPossible, incrementTotal, incrementTotalAndPossible, PASS, ScaledScore } from '@xyo-network/crypto-nft-score-model'\n\nconst isHexColor = /^[0-9A-F]{6}$/i\n\nexport const scoreNftBackgroundColor = (nft: NftInfoFields | OpenSeaNftInfoFields): ScaledScore => {\n return scoreBackgroundColor(nft.metadata?.background_color)\n}\n\nexport const scoreBackgroundColor = (background_color: unknown): ScaledScore => {\n const score: ScaledScore = [0, 0]\n if (background_color === undefined || background_color === null) return PASS\n incrementPossible(score)\n if (typeof background_color !== 'string') return score\n incrementTotalAndPossible(score)\n if (!background_color.toUpperCase().match(isHexColor)) return score\n return incrementTotal(score)\n}\n","import { NftInfoFields, OpenSeaNftInfoFields } from '@xyo-network/crypto-nft-payload-plugin'\nimport { incrementTotal, ScaledScore } from '@xyo-network/crypto-nft-score-model'\n\nexport const scoreNftDescription = (nft: NftInfoFields | OpenSeaNftInfoFields): ScaledScore => {\n return scoreDescription(nft.metadata?.description)\n}\n\nexport const scoreDescription = (description: unknown): ScaledScore => {\n const score: ScaledScore = [0, 1]\n if (!description || typeof description !== 'string') return score\n return incrementTotal(score)\n}\n","import { NftInfoFields, OpenSeaNftInfoFields } from '@xyo-network/crypto-nft-payload-plugin'\nimport { incrementTotal, ScaledScore } from '@xyo-network/crypto-nft-score-model'\n\nimport { isSecure, isValidUrl } from './lib'\n\nexport const scoreNftExternalUrl = (nft: NftInfoFields | OpenSeaNftInfoFields): ScaledScore => {\n return scoreExternalUrl(nft?.metadata?.external_url)\n}\nexport const scoreExternalUrl = (external_url: unknown): ScaledScore => {\n const score: ScaledScore = [0, 2]\n if (external_url === undefined || external_url === null || typeof external_url !== 'string' || !isValidUrl(external_url)) return score\n incrementTotal(score)\n if (!isSecure(external_url)) return score\n return incrementTotal(score)\n}\n","import { NftInfoFields, OpenSeaNftInfoFields } from '@xyo-network/crypto-nft-payload-plugin'\nimport { incrementTotal, PASS, ScaledScore } from '@xyo-network/crypto-nft-score-model'\n\nimport { isSecure, isValidUrl, isWeb3 } from './lib'\n\nconst MaxPossibleImageScore = 3\n\nexport const scoreNftImage = (nft: NftInfoFields | OpenSeaNftInfoFields): ScaledScore => {\n // If there's no image data\n if (!nft?.metadata?.image) {\n // but there is image data, skip this scoring criteria, otherwise fail it completely\n return nft.metadata?.image_data ? PASS : [0, MaxPossibleImageScore]\n } else {\n return scoreImage(nft.metadata?.image)\n }\n}\n\nexport const scoreImage = (image: unknown): ScaledScore => {\n const score: ScaledScore = [0, MaxPossibleImageScore]\n if (!image || typeof image !== 'string' || !isValidUrl(image)) return score\n incrementTotal(score)\n if (!isSecure(image)) return score\n incrementTotal(score)\n if (!isWeb3(image)) return score\n incrementTotal(score)\n return score\n}\n","import { NftInfoFields, OpenSeaNftInfoFields } from '@xyo-network/crypto-nft-payload-plugin'\nimport { PASS, ScaledScore } from '@xyo-network/crypto-nft-score-model'\nimport { parse } from 'svg-parser'\n\nconst MaxPossibleImageDataScore = 1\n\n// NOTE: There is probably a deeper check we can do\n// here, but this is a good start\nconst isValidImageData = (image_data: string): boolean => {\n // If it doesn't start with an svg tag, it's not an svg\n if (!image_data.startsWith('<svg')) return false\n try {\n // If it can't be parsed, it's not an svg\n parse(image_data)\n return true\n } catch (error) {\n return false\n }\n}\n\nexport const scoreNftImageData = (nft: NftInfoFields | OpenSeaNftInfoFields): ScaledScore => {\n // If there's no image data\n if (!nft?.metadata?.image_data) {\n // but there is an image, skip this scoring criteria, otherwise fail it completely\n return nft.metadata?.image ? PASS : [0, MaxPossibleImageDataScore]\n } else {\n return scoreImageData(nft.metadata?.image_data)\n }\n}\n\nexport const scoreImageData = (image_data: unknown): ScaledScore => {\n return !image_data || typeof image_data !== 'string' || !isValidImageData(image_data)\n ? [0, MaxPossibleImageDataScore]\n : [MaxPossibleImageDataScore, MaxPossibleImageDataScore]\n}\n","import { NftInfoFields, OpenSeaNftInfoFields } from '@xyo-network/crypto-nft-payload-plugin'\nimport { incrementTotal, ScaledScore } from '@xyo-network/crypto-nft-score-model'\n\nexport const scoreNftName = (nft: NftInfoFields | OpenSeaNftInfoFields): ScaledScore => {\n return scoreName(nft.metadata?.name)\n}\nexport const scoreName = (name: unknown): ScaledScore => {\n const score: ScaledScore = [0, 1]\n if (!name || typeof name !== 'string') return score\n return incrementTotal(score)\n}\n","import { NftInfoFields, OpenSeaNftInfoFields } from '@xyo-network/crypto-nft-payload-plugin'\nimport { incrementTotal, PASS, ScaledScore } from '@xyo-network/crypto-nft-score-model'\n\nimport { isSecure, isValidUrl } from './lib'\n\nexport const scoreNftYoutubeUrl = (nft: NftInfoFields | OpenSeaNftInfoFields): ScaledScore => {\n return scoreYoutubeUrl(nft?.metadata?.youtube_url)\n}\nexport const scoreYoutubeUrl = (youtube_url: unknown): ScaledScore => {\n if (youtube_url === undefined || youtube_url === null) return PASS\n const score: ScaledScore = [0, 2]\n if (typeof youtube_url !== 'string' || !isValidUrl(youtube_url)) return score\n incrementTotal(score)\n if (!isSecure(youtube_url)) return score\n return incrementTotal(score)\n}\n","import { NftInfoFields } from '@xyo-network/crypto-nft-payload-plugin'\nimport { FAIL, PASS, PassFailScoringFunction } from '@xyo-network/crypto-nft-score-model'\n\nimport { isValidPositiveBigNumber } from './lib'\n\nexport const scoreSupply: PassFailScoringFunction<NftInfoFields> = (nft: NftInfoFields) => {\n if (!nft.supply) return FAIL\n if (typeof nft.supply !== 'string') return FAIL\n try {\n // Check for positive BigNumber since data type is uint256\n return isValidPositiveBigNumber(nft.supply) ? PASS : FAIL\n } catch (_error) {\n return FAIL\n }\n}\n","import { BigNumber } from '@xylabs/bignumber'\n\nexport const toBigNumber = (value: string): BigNumber | undefined => {\n try {\n return new BigNumber(value)\n } catch (error) {\n return undefined\n }\n}\n","import { toBigNumber } from './toBigNumber'\n\nexport const isValidPositiveBigNumber = (value: string): boolean => {\n const num = toBigNumber(value)\n return !num || num.isNeg() ? false : true\n}\n","import { NftInfoFields } from '@xyo-network/crypto-nft-payload-plugin'\nimport { FAIL, PASS, PassFailScoringFunction } from '@xyo-network/crypto-nft-score-model'\n\nimport { isValidPositiveBigNumber } from './lib'\n\n/**\n * Callers SHALL NOT assume that ID numbers have any specific pattern to them, and\n * MUST treat the ID as a \"black box\"\n * @param nft\n * @returns\n */\nexport const scoreTokenId: PassFailScoringFunction<NftInfoFields> = (nft: NftInfoFields) => {\n if (!nft.tokenId) return FAIL\n if (typeof nft.tokenId !== 'string') return FAIL\n try {\n // Check for positive BigNumber since data type is uint256\n return isValidPositiveBigNumber(nft.tokenId) ? PASS : FAIL\n } catch (_error) {\n return FAIL\n }\n}\n","import { NftInfoFields } from '@xyo-network/crypto-nft-payload-plugin'\nimport { FAIL, PASS, PassFailScoringFunction } from '@xyo-network/crypto-nft-score-model'\n\nexport const scoreType: PassFailScoringFunction<NftInfoFields> = (nft: NftInfoFields) => {\n if (!nft.type) return FAIL\n if (typeof nft.type !== 'string') return FAIL\n const type = nft.type.toUpperCase()\n if (type !== 'ERC721' && type !== 'ERC1155') return FAIL\n return PASS\n}\n","import {\n evaluateNftAttributes,\n scoreContractAddress,\n scoreNftAnimationUrl,\n scoreNftBackgroundColor,\n scoreNftDescription,\n scoreNftExternalUrl,\n scoreNftImage,\n scoreNftImageData,\n scoreNftName,\n scoreNftYoutubeUrl,\n scoreSupply,\n scoreTokenId,\n scoreType,\n} from './scoring'\n\nconst attributesScoringCriteria = {\n Attributes: { score: evaluateNftAttributes, weight: 1 },\n}\n\nconst metadataScoringCriteria = {\n 'Animation URL': { score: scoreNftAnimationUrl, weight: 1 },\n 'Background Color': { score: scoreNftBackgroundColor, weight: 1 },\n Description: { score: scoreNftDescription, weight: 1 },\n 'External Url': { score: scoreNftExternalUrl, weight: 1 },\n Image: { score: scoreNftImage, weight: 1 },\n 'Image Data': { score: scoreNftImageData, weight: 1 },\n Name: { score: scoreNftName, weight: 1 },\n 'YouTube URL': { score: scoreNftYoutubeUrl, weight: 1 },\n ...attributesScoringCriteria,\n}\n\nexport const scoringCriteria = {\n 'Contract Address': { score: scoreContractAddress, weight: 1 },\n Supply: { score: scoreSupply, weight: 1 },\n 'Token Id': { score: scoreTokenId, weight: 1 },\n Type: { score: scoreType, weight: 1 },\n ...metadataScoringCriteria,\n}\n","import { NftInfoFields } from '@xyo-network/crypto-nft-payload-plugin'\nimport { Score } from '@xyo-network/crypto-nft-score-model'\n\nimport { scoringCriteria } from './criteria'\n\nexport type ScoringCriteriaKey = keyof typeof scoringCriteria & PropertyKey\n\nexport type NftAnalysis = {\n [key in ScoringCriteriaKey]: Score\n}\n\nexport const analyzeNft = async (\n /**\n * The NFT to evaluate\n */\n nft: NftInfoFields,\n): Promise<NftAnalysis> => {\n const result = Object.fromEntries(\n await Promise.all(\n Object.entries(scoringCriteria).map(async ([key, { score, weight }]) => {\n const rawScore = await score(nft)\n const weighted = rawScore.map((v) => v * weight) as Score\n return [key, weighted] as const\n }),\n ),\n ) as NftAnalysis\n return result\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8BAAgC;AAChC,kBAA8B;AAC9B,uCAOO;;;ACTP,qBAA0B;AAE1B,oCAAoD;AAE7C,IAAM,uBAA+D,CAAC,QAAuB;AAClG,MAAI,CAAC,IAAI;AAAS,WAAO;AACzB,MAAI,OAAO,IAAI,YAAY;AAAU,WAAO;AAC5C,MAAI,KAAC,0BAAU,IAAI,OAAO;AAAG,WAAO;AACpC,SAAO;AACT;;;ACRA,IAAAA,iCAAgG;;;ACDhG,iBAAoB;AAEb,IAAM,gBAAgB,CAAC,SAAS,KAAK;AAErC,IAAM,QAAQ,CAAC,QAAyC;AAC7D,MAAI,CAAC;AAAK,WAAO;AACjB,MAAI;AACF,WAAO,IAAI,eAAI,GAAG;AAAA,EACpB,SAAS,GAAG;AACV,WAAO;AAAA,EACT;AACF;AAEO,IAAM,aAAa,CAAC,QAAiC,MAAM,GAAG,MAAM;AACpE,IAAM,SAAS,CAAC,QAAiC,cAAc,KAAK,CAAC,aAAa,aAAa,MAAM,GAAG,GAAG,QAAQ;AAEnH,IAAM,WAAW,CAAC,QAAiC,OAAO,GAAG,KAAK,MAAM,GAAG,GAAG,aAAa;;;ADX3F,IAAM,uBAAuB,CAAC,QAA2D;AAC9F,SAAO,kBAAkB,IAAI,UAAU,aAAa;AACtD;AAEO,IAAM,oBAAoB,CAAC,kBAAwC;AACxE,QAAM,QAAqB,CAAC,GAAG,CAAC;AAChC,MAAI,kBAAkB,UAAa,kBAAkB;AAAM,WAAO;AAClE,wDAAkB,KAAK;AACvB,MAAI,OAAO,kBAAkB;AAAU,WAAO;AAC9C,gEAA0B,KAAK;AAC/B,MAAI,CAAC,WAAW,aAAa;AAAG,WAAO;AACvC,gEAA0B,KAAK;AAC/B,MAAI,CAAC,SAAS,aAAa;AAAG,WAAO;AACrC,gEAA0B,KAAK;AAC/B,MAAI,CAAC,OAAO,aAAa;AAAG,WAAO;AACnC,aAAO,+CAAe,KAAK;AAC7B;;;AEpBA,IAAAC,iCAA0F;AAE1F,IAAM,SAAS,CAAC,UAAkC;AAChD,MAAI,SAAS,KAAK,GAAG;AACnB,QAAI;AACF,UAAI,KAAK,KAAK;AACd,aAAO;AAAA,IACT,SAAS,OAAO;AACd,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEA,IAAM,WAAW,CAAC,UAAoC,OAAO,UAAU;AAEvE,IAAM,eAAe,CAAC,UAA4B,SAAS,KAAK,KAAK,SAAS,KAAK,SAAS;AAE5F,IAAM,mBAAmB,CAAC,UAAoC,OAAO,UAAU,YAAY,MAAM,SAAS;AAE1G,IAAM,2BAA2B,CAAC,UAA6C,UAAU,YAAY,iBAAiB,KAAK;AAEpH,IAAM,wBAAwB,CAAC,QACpC,CAAC,KAAK,UAAU,aAAa,CAAC,GAAG,CAAC,IAAI,mBAAmB,KAAK,UAAU,UAAU;AAE7E,IAAM,qBAAqB,CAAC,eAA8E;AAC/G,MAAI,CAAC,cAAc,CAAC,MAAM,QAAQ,UAAU,KAAK,WAAW,WAAW;AAAG,WAAO,CAAC,GAAG,CAAC;AACtF,QAAM,QAAqB,CAAC,GAAG,CAAC;AAChC,aAAW,aAAa,YAAY;AAClC,UAAM,CAAC,gBAAgB,iBAAiB,IAAI,kBAAkB,SAAS;AACvE,kEAA0B,OAAO,gBAAgB,iBAAiB;AAAA,EACpE;AACA,SAAO,CAAC,GAAG,CAAC;AACd;AAEO,IAAM,oBAAoB,CAAC,cAAgD;AAChF,QAAM,QAAqB,CAAC,GAAG,CAAC;AAChC,QAAM,YAAY,WAAW;AAC7B,QAAM,aAAa,WAAW;AAC9B,QAAM,QAAQ,WAAW;AAGzB,MAAI,CAAC,aAAa,OAAO,cAAc,YAAY,CAAC,iBAAiB,UAAU,KAAK,CAAC,yBAAyB,KAAK;AAAG,WAAO;AAC7H,qDAAe,KAAK;AAGpB,wDAAkB,KAAK;AACvB,MAAI,iBAAiB,SAAS;AAAG,uDAAe,KAAK;AAGrD,MAAI,cAAc,QAAW;AAC3B,0DAAkB,KAAK;AACvB,QAAI,SAAS,SAAS,KAAK,SAAS,KAAK,KAAK,SAAS;AAAW,yDAAe,KAAK;AAAA,EACxF;AAEA,SAAO;AACT;AAEA,IAAM,mBAAmB,CAAC,cAA4C;AACpE,UAAQ,WAAW,cAAc;AAAA,IAC/B,KAAK;AAAA,IACL,KAAK,gBAAgB;AACnB,UAAI,SAAS,WAAW,KAAK;AAAG,eAAO;AACvC;AAAA,IACF;AAAA,IACA,KAAK,oBAAoB;AACvB,UAAI,aAAa,WAAW,KAAK;AAAG,eAAO;AAC3C;AAAA,IACF;AAAA,IACA,KAAK,QAAQ;AACX,UAAI,OAAO,WAAW,KAAK;AAAG,eAAO;AACrC;AAAA,IACF;AAAA,IACA,KAAK;AAAA,IACL,KAAK,QAAW;AACd,UAAI,iBAAiB,WAAW,KAAK;AAAG,eAAO;AAC/C;AAAA,IACF;AAAA,IACA,SAAS;AACP;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;;;ACnFA,IAAAC,iCAAgG;AAEhG,IAAM,aAAa;AAEZ,IAAM,0BAA0B,CAAC,QAA2D;AACjG,SAAO,qBAAqB,IAAI,UAAU,gBAAgB;AAC5D;AAEO,IAAM,uBAAuB,CAAC,qBAA2C;AAC9E,QAAM,QAAqB,CAAC,GAAG,CAAC;AAChC,MAAI,qBAAqB,UAAa,qBAAqB;AAAM,WAAO;AACxE,wDAAkB,KAAK;AACvB,MAAI,OAAO,qBAAqB;AAAU,WAAO;AACjD,gEAA0B,KAAK;AAC/B,MAAI,CAAC,iBAAiB,YAAY,EAAE,MAAM,UAAU;AAAG,WAAO;AAC9D,aAAO,+CAAe,KAAK;AAC7B;;;AChBA,IAAAC,iCAA4C;AAErC,IAAM,sBAAsB,CAAC,QAA2D;AAC7F,SAAO,iBAAiB,IAAI,UAAU,WAAW;AACnD;AAEO,IAAM,mBAAmB,CAAC,gBAAsC;AACrE,QAAM,QAAqB,CAAC,GAAG,CAAC;AAChC,MAAI,CAAC,eAAe,OAAO,gBAAgB;AAAU,WAAO;AAC5D,aAAO,+CAAe,KAAK;AAC7B;;;ACVA,IAAAC,iCAA4C;AAIrC,IAAM,sBAAsB,CAAC,QAA2D;AAC7F,SAAO,iBAAiB,KAAK,UAAU,YAAY;AACrD;AACO,IAAM,mBAAmB,CAAC,iBAAuC;AACtE,QAAM,QAAqB,CAAC,GAAG,CAAC;AAChC,MAAI,iBAAiB,UAAa,iBAAiB,QAAQ,OAAO,iBAAiB,YAAY,CAAC,WAAW,YAAY;AAAG,WAAO;AACjI,qDAAe,KAAK;AACpB,MAAI,CAAC,SAAS,YAAY;AAAG,WAAO;AACpC,aAAO,+CAAe,KAAK;AAC7B;;;ACbA,IAAAC,iCAAkD;AAIlD,IAAM,wBAAwB;AAEvB,IAAM,gBAAgB,CAAC,QAA2D;AAEvF,MAAI,CAAC,KAAK,UAAU,OAAO;AAEzB,WAAO,IAAI,UAAU,aAAa,sCAAO,CAAC,GAAG,qBAAqB;AAAA,EACpE,OAAO;AACL,WAAO,WAAW,IAAI,UAAU,KAAK;AAAA,EACvC;AACF;AAEO,IAAM,aAAa,CAAC,UAAgC;AACzD,QAAM,QAAqB,CAAC,GAAG,qBAAqB;AACpD,MAAI,CAAC,SAAS,OAAO,UAAU,YAAY,CAAC,WAAW,KAAK;AAAG,WAAO;AACtE,qDAAe,KAAK;AACpB,MAAI,CAAC,SAAS,KAAK;AAAG,WAAO;AAC7B,qDAAe,KAAK;AACpB,MAAI,CAAC,OAAO,KAAK;AAAG,WAAO;AAC3B,qDAAe,KAAK;AACpB,SAAO;AACT;;;ACzBA,IAAAC,iCAAkC;AAClC,wBAAsB;AAEtB,IAAM,4BAA4B;AAIlC,IAAM,mBAAmB,CAAC,eAAgC;AAExD,MAAI,CAAC,WAAW,WAAW,MAAM;AAAG,WAAO;AAC3C,MAAI;AAEF,iCAAM,UAAU;AAChB,WAAO;AAAA,EACT,SAAS,OAAO;AACd,WAAO;AAAA,EACT;AACF;AAEO,IAAM,oBAAoB,CAAC,QAA2D;AAE3F,MAAI,CAAC,KAAK,UAAU,YAAY;AAE9B,WAAO,IAAI,UAAU,QAAQ,sCAAO,CAAC,GAAG,yBAAyB;AAAA,EACnE,OAAO;AACL,WAAO,eAAe,IAAI,UAAU,UAAU;AAAA,EAChD;AACF;AAEO,IAAM,iBAAiB,CAAC,eAAqC;AAClE,SAAO,CAAC,cAAc,OAAO,eAAe,YAAY,CAAC,iBAAiB,UAAU,IAChF,CAAC,GAAG,yBAAyB,IAC7B,CAAC,2BAA2B,yBAAyB;AAC3D;;;ACjCA,IAAAC,iCAA4C;AAErC,IAAM,eAAe,CAAC,QAA2D;AACtF,SAAO,UAAU,IAAI,UAAU,IAAI;AACrC;AACO,IAAM,YAAY,CAAC,SAA+B;AACvD,QAAM,QAAqB,CAAC,GAAG,CAAC;AAChC,MAAI,CAAC,QAAQ,OAAO,SAAS;AAAU,WAAO;AAC9C,aAAO,+CAAe,KAAK;AAC7B;;;ACTA,IAAAC,kCAAkD;AAI3C,IAAM,qBAAqB,CAAC,QAA2D;AAC5F,SAAO,gBAAgB,KAAK,UAAU,WAAW;AACnD;AACO,IAAM,kBAAkB,CAAC,gBAAsC;AACpE,MAAI,gBAAgB,UAAa,gBAAgB;AAAM,WAAO;AAC9D,QAAM,QAAqB,CAAC,GAAG,CAAC;AAChC,MAAI,OAAO,gBAAgB,YAAY,CAAC,WAAW,WAAW;AAAG,WAAO;AACxE,sDAAe,KAAK;AACpB,MAAI,CAAC,SAAS,WAAW;AAAG,WAAO;AACnC,aAAO,gDAAe,KAAK;AAC7B;;;ACdA,IAAAC,kCAAoD;;;ACDpD,uBAA0B;AAEnB,IAAM,cAAc,CAAC,UAAyC;AACnE,MAAI;AACF,WAAO,IAAI,2BAAU,KAAK;AAAA,EAC5B,SAAS,OAAO;AACd,WAAO;AAAA,EACT;AACF;;;ACNO,IAAM,2BAA2B,CAAC,UAA2B;AAClE,QAAM,MAAM,YAAY,KAAK;AAC7B,SAAO,CAAC,OAAO,IAAI,MAAM,IAAI,QAAQ;AACvC;;;AFAO,IAAM,cAAsD,CAAC,QAAuB;AACzF,MAAI,CAAC,IAAI;AAAQ,WAAO;AACxB,MAAI,OAAO,IAAI,WAAW;AAAU,WAAO;AAC3C,MAAI;AAEF,WAAO,yBAAyB,IAAI,MAAM,IAAI,uCAAO;AAAA,EACvD,SAAS,QAAQ;AACf,WAAO;AAAA,EACT;AACF;;;AGbA,IAAAC,kCAAoD;AAU7C,IAAM,eAAuD,CAAC,QAAuB;AAC1F,MAAI,CAAC,IAAI;AAAS,WAAO;AACzB,MAAI,OAAO,IAAI,YAAY;AAAU,WAAO;AAC5C,MAAI;AAEF,WAAO,yBAAyB,IAAI,OAAO,IAAI,uCAAO;AAAA,EACxD,SAAS,QAAQ;AACf,WAAO;AAAA,EACT;AACF;;;ACnBA,IAAAC,kCAAoD;AAE7C,IAAM,YAAoD,CAAC,QAAuB;AACvF,MAAI,CAAC,IAAI;AAAM,WAAO;AACtB,MAAI,OAAO,IAAI,SAAS;AAAU,WAAO;AACzC,QAAM,OAAO,IAAI,KAAK,YAAY;AAClC,MAAI,SAAS,YAAY,SAAS;AAAW,WAAO;AACpD,SAAO;AACT;;;ACOA,IAAM,4BAA4B;AAAA,EAChC,YAAY,EAAE,OAAO,uBAAuB,QAAQ,EAAE;AACxD;AAEA,IAAM,0BAA0B;AAAA,EAC9B,iBAAiB,EAAE,OAAO,sBAAsB,QAAQ,EAAE;AAAA,EAC1D,oBAAoB,EAAE,OAAO,yBAAyB,QAAQ,EAAE;AAAA,EAChE,aAAa,EAAE,OAAO,qBAAqB,QAAQ,EAAE;AAAA,EACrD,gBAAgB,EAAE,OAAO,qBAAqB,QAAQ,EAAE;AAAA,EACxD,OAAO,EAAE,OAAO,eAAe,QAAQ,EAAE;AAAA,EACzC,cAAc,EAAE,OAAO,mBAAmB,QAAQ,EAAE;AAAA,EACpD,MAAM,EAAE,OAAO,cAAc,QAAQ,EAAE;AAAA,EACvC,eAAe,EAAE,OAAO,oBAAoB,QAAQ,EAAE;AAAA,EACtD,GAAG;AACL;AAEO,IAAM,kBAAkB;AAAA,EAC7B,oBAAoB,EAAE,OAAO,sBAAsB,QAAQ,EAAE;AAAA,EAC7D,QAAQ,EAAE,OAAO,aAAa,QAAQ,EAAE;AAAA,EACxC,YAAY,EAAE,OAAO,cAAc,QAAQ,EAAE;AAAA,EAC7C,MAAM,EAAE,OAAO,WAAW,QAAQ,EAAE;AAAA,EACpC,GAAG;AACL;;;AC3BO,IAAM,aAAa,OAIxB,QACyB;AACzB,QAAM,SAAS,OAAO;AAAA,IACpB,MAAM,QAAQ;AAAA,MACZ,OAAO,QAAQ,eAAe,EAAE,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,OAAO,CAAC,MAAM;AACtE,cAAM,WAAW,MAAM,MAAM,GAAG;AAChC,cAAM,WAAW,SAAS,IAAI,CAAC,MAAM,IAAI,MAAM;AAC/C,eAAO,CAAC,KAAK,QAAQ;AAAA,MACvB,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO;AACT;;;AlBTA,IAAM,oBAAoB,CAAC,SAAkB,WAAkC;AAC7E,QAAM,EAAE,SAAS,SAAS,KAAK,IAAI;AACnC,SAAO,EAAE,SAAS,SAAS,QAAQ,iDAAgB,QAAQ,KAAK;AAClE;AAEO,IAAM,aAAa,CAAC,YAA0C,QAAQ,WAAW;AAEjF,IAAM,kBAAN,cAA6F,wCAAyB;AAAA,EAC3H,OAAgB,gBAAgB,CAAC,4DAA2B;AAAA,EAEzC,gBAAgB,OAAO,aAA6C;AACrF,UAAM,WAAW,UAAU,OAAO,0CAAS,KAAK,CAAC;AACjD,UAAM,UAAU,MAAM,QAAQ;AAAA,MAC5B,SAAS,IAAuB,OAAO,YAAY;AACjD,cAAM,CAAC,OAAO,UAAU,IAAI,MAAM,QAAQ,IAAI;AAAA;AAAA,UAE5C,kBAAkB,SAAS,MAAM,WAAW,OAAO,CAAC;AAAA;AAAA,UAEpD,0BAAc,UAAU,OAAO;AAAA,QACjC,CAAC;AACD,eAAO,EAAE,GAAG,OAAO,SAAS,CAAC,UAAU,EAAE;AAAA,MAC3C,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AACF;","names":["import_crypto_nft_score_model","import_crypto_nft_score_model","import_crypto_nft_score_model","import_crypto_nft_score_model","import_crypto_nft_score_model","import_crypto_nft_score_model","import_crypto_nft_score_model","import_crypto_nft_score_model","import_crypto_nft_score_model","import_crypto_nft_score_model","import_crypto_nft_score_model","import_crypto_nft_score_model"]}
|