@xyo-network/crypto-nft-diviner-score-plugin 2.99.6 → 3.0.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/dist/browser/index.d.ts +102 -4
- package/dist/neutral/index.d.ts +102 -4
- package/dist/node/index.d.ts +102 -4
- package/dist/node/index.mjs +24 -41
- package/dist/node/index.mjs.map +1 -1
- package/package.json +17 -36
- package/src/index.ts +1 -1
- package/dist/browser/Diviner.d.cts +0 -13
- package/dist/browser/Diviner.d.cts.map +0 -1
- package/dist/browser/Diviner.d.mts +0 -13
- package/dist/browser/Diviner.d.mts.map +0 -1
- package/dist/browser/Diviner.d.ts +0 -13
- package/dist/browser/Diviner.d.ts.map +0 -1
- package/dist/browser/Plugin.d.cts +0 -19
- package/dist/browser/Plugin.d.cts.map +0 -1
- package/dist/browser/Plugin.d.mts +0 -19
- package/dist/browser/Plugin.d.mts.map +0 -1
- package/dist/browser/Plugin.d.ts +0 -19
- package/dist/browser/Plugin.d.ts.map +0 -1
- package/dist/browser/index.cjs +0 -371
- package/dist/browser/index.cjs.map +0 -1
- package/dist/browser/index.d.cts +0 -4
- package/dist/browser/index.d.cts.map +0 -1
- package/dist/browser/index.d.mts +0 -4
- package/dist/browser/index.d.mts.map +0 -1
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/lib/index.d.cts +0 -2
- package/dist/browser/lib/index.d.cts.map +0 -1
- package/dist/browser/lib/index.d.mts +0 -2
- package/dist/browser/lib/index.d.mts.map +0 -1
- package/dist/browser/lib/index.d.ts +0 -2
- package/dist/browser/lib/index.d.ts.map +0 -1
- package/dist/browser/lib/rating/analyzeNft.d.cts +0 -9
- package/dist/browser/lib/rating/analyzeNft.d.cts.map +0 -1
- package/dist/browser/lib/rating/analyzeNft.d.mts +0 -9
- package/dist/browser/lib/rating/analyzeNft.d.mts.map +0 -1
- package/dist/browser/lib/rating/analyzeNft.d.ts +0 -9
- package/dist/browser/lib/rating/analyzeNft.d.ts.map +0 -1
- package/dist/browser/lib/rating/criteria/index.d.cts +0 -2
- package/dist/browser/lib/rating/criteria/index.d.cts.map +0 -1
- package/dist/browser/lib/rating/criteria/index.d.mts +0 -2
- package/dist/browser/lib/rating/criteria/index.d.mts.map +0 -1
- package/dist/browser/lib/rating/criteria/index.d.ts +0 -2
- package/dist/browser/lib/rating/criteria/index.d.ts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/contract.d.cts +0 -4
- package/dist/browser/lib/rating/criteria/scoring/contract.d.cts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/contract.d.mts +0 -4
- package/dist/browser/lib/rating/criteria/scoring/contract.d.mts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/contract.d.ts +0 -4
- package/dist/browser/lib/rating/criteria/scoring/contract.d.ts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/index.d.cts +0 -6
- package/dist/browser/lib/rating/criteria/scoring/index.d.cts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/index.d.mts +0 -6
- package/dist/browser/lib/rating/criteria/scoring/index.d.mts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/index.d.ts +0 -6
- package/dist/browser/lib/rating/criteria/scoring/index.d.ts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/animationUrl.d.cts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/animationUrl.d.cts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/animationUrl.d.mts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/animationUrl.d.mts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/animationUrl.d.ts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/animationUrl.d.ts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.cts +0 -6
- package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.cts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.mts +0 -6
- package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.mts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.ts +0 -6
- package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.ts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/index.d.cts +0 -2
- package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/index.d.cts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/index.d.mts +0 -2
- package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/index.d.mts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/index.d.ts +0 -2
- package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/index.d.ts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/backgroundColor.d.cts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/backgroundColor.d.cts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/backgroundColor.d.mts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/backgroundColor.d.mts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/backgroundColor.d.ts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/backgroundColor.d.ts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/description.d.cts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/description.d.cts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/description.d.mts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/description.d.mts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/description.d.ts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/description.d.ts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/externalUrl.d.cts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/externalUrl.d.cts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/externalUrl.d.mts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/externalUrl.d.mts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/externalUrl.d.ts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/externalUrl.d.ts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/image.d.cts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/image.d.cts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/image.d.mts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/image.d.mts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/image.d.ts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/image.d.ts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/imageData.d.cts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/imageData.d.cts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/imageData.d.mts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/imageData.d.mts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/imageData.d.ts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/imageData.d.ts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/index.d.cts +0 -10
- package/dist/browser/lib/rating/criteria/scoring/metadata/index.d.cts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/index.d.mts +0 -10
- package/dist/browser/lib/rating/criteria/scoring/metadata/index.d.mts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/index.d.ts +0 -10
- package/dist/browser/lib/rating/criteria/scoring/metadata/index.d.ts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/lib/index.d.cts +0 -2
- package/dist/browser/lib/rating/criteria/scoring/metadata/lib/index.d.cts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/lib/index.d.mts +0 -2
- package/dist/browser/lib/rating/criteria/scoring/metadata/lib/index.d.mts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/lib/index.d.ts +0 -2
- package/dist/browser/lib/rating/criteria/scoring/metadata/lib/index.d.ts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.cts +0 -7
- package/dist/browser/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.cts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.mts +0 -7
- package/dist/browser/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.mts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.ts +0 -7
- package/dist/browser/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.ts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/name.d.cts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/name.d.cts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/name.d.mts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/name.d.mts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/name.d.ts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/name.d.ts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/youtubeUrl.d.cts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/youtubeUrl.d.cts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/youtubeUrl.d.mts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/youtubeUrl.d.mts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/metadata/youtubeUrl.d.ts +0 -5
- package/dist/browser/lib/rating/criteria/scoring/metadata/youtubeUrl.d.ts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/supply.d.cts +0 -4
- package/dist/browser/lib/rating/criteria/scoring/supply.d.cts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/supply.d.mts +0 -4
- package/dist/browser/lib/rating/criteria/scoring/supply.d.mts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/supply.d.ts +0 -4
- package/dist/browser/lib/rating/criteria/scoring/supply.d.ts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/tokenId.d.cts +0 -4
- package/dist/browser/lib/rating/criteria/scoring/tokenId.d.cts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/tokenId.d.mts +0 -4
- package/dist/browser/lib/rating/criteria/scoring/tokenId.d.mts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/tokenId.d.ts +0 -4
- package/dist/browser/lib/rating/criteria/scoring/tokenId.d.ts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/type.d.cts +0 -4
- package/dist/browser/lib/rating/criteria/scoring/type.d.cts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/type.d.mts +0 -4
- package/dist/browser/lib/rating/criteria/scoring/type.d.mts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoring/type.d.ts +0 -4
- package/dist/browser/lib/rating/criteria/scoring/type.d.ts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoringCriteria.d.cts +0 -55
- package/dist/browser/lib/rating/criteria/scoringCriteria.d.cts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoringCriteria.d.mts +0 -55
- package/dist/browser/lib/rating/criteria/scoringCriteria.d.mts.map +0 -1
- package/dist/browser/lib/rating/criteria/scoringCriteria.d.ts +0 -55
- package/dist/browser/lib/rating/criteria/scoringCriteria.d.ts.map +0 -1
- package/dist/browser/lib/rating/index.d.cts +0 -3
- package/dist/browser/lib/rating/index.d.cts.map +0 -1
- package/dist/browser/lib/rating/index.d.mts +0 -3
- package/dist/browser/lib/rating/index.d.mts.map +0 -1
- package/dist/browser/lib/rating/index.d.ts +0 -3
- package/dist/browser/lib/rating/index.d.ts.map +0 -1
- package/dist/neutral/Diviner.d.cts +0 -13
- package/dist/neutral/Diviner.d.cts.map +0 -1
- package/dist/neutral/Diviner.d.mts +0 -13
- package/dist/neutral/Diviner.d.mts.map +0 -1
- package/dist/neutral/Diviner.d.ts +0 -13
- package/dist/neutral/Diviner.d.ts.map +0 -1
- package/dist/neutral/Plugin.d.cts +0 -19
- package/dist/neutral/Plugin.d.cts.map +0 -1
- package/dist/neutral/Plugin.d.mts +0 -19
- package/dist/neutral/Plugin.d.mts.map +0 -1
- package/dist/neutral/Plugin.d.ts +0 -19
- package/dist/neutral/Plugin.d.ts.map +0 -1
- package/dist/neutral/index.cjs +0 -371
- package/dist/neutral/index.cjs.map +0 -1
- package/dist/neutral/index.d.cts +0 -4
- package/dist/neutral/index.d.cts.map +0 -1
- package/dist/neutral/index.d.mts +0 -4
- package/dist/neutral/index.d.mts.map +0 -1
- package/dist/neutral/index.d.ts.map +0 -1
- package/dist/neutral/lib/index.d.cts +0 -2
- package/dist/neutral/lib/index.d.cts.map +0 -1
- package/dist/neutral/lib/index.d.mts +0 -2
- package/dist/neutral/lib/index.d.mts.map +0 -1
- package/dist/neutral/lib/index.d.ts +0 -2
- package/dist/neutral/lib/index.d.ts.map +0 -1
- package/dist/neutral/lib/rating/analyzeNft.d.cts +0 -9
- package/dist/neutral/lib/rating/analyzeNft.d.cts.map +0 -1
- package/dist/neutral/lib/rating/analyzeNft.d.mts +0 -9
- package/dist/neutral/lib/rating/analyzeNft.d.mts.map +0 -1
- package/dist/neutral/lib/rating/analyzeNft.d.ts +0 -9
- package/dist/neutral/lib/rating/analyzeNft.d.ts.map +0 -1
- package/dist/neutral/lib/rating/criteria/index.d.cts +0 -2
- package/dist/neutral/lib/rating/criteria/index.d.cts.map +0 -1
- package/dist/neutral/lib/rating/criteria/index.d.mts +0 -2
- package/dist/neutral/lib/rating/criteria/index.d.mts.map +0 -1
- package/dist/neutral/lib/rating/criteria/index.d.ts +0 -2
- package/dist/neutral/lib/rating/criteria/index.d.ts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/contract.d.cts +0 -4
- package/dist/neutral/lib/rating/criteria/scoring/contract.d.cts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/contract.d.mts +0 -4
- package/dist/neutral/lib/rating/criteria/scoring/contract.d.mts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/contract.d.ts +0 -4
- package/dist/neutral/lib/rating/criteria/scoring/contract.d.ts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/index.d.cts +0 -6
- package/dist/neutral/lib/rating/criteria/scoring/index.d.cts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/index.d.mts +0 -6
- package/dist/neutral/lib/rating/criteria/scoring/index.d.mts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/index.d.ts +0 -6
- package/dist/neutral/lib/rating/criteria/scoring/index.d.ts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/animationUrl.d.cts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/animationUrl.d.cts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/animationUrl.d.mts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/animationUrl.d.mts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/animationUrl.d.ts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/animationUrl.d.ts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.cts +0 -6
- package/dist/neutral/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.cts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.mts +0 -6
- package/dist/neutral/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.mts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.ts +0 -6
- package/dist/neutral/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.ts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/attributes/index.d.cts +0 -2
- package/dist/neutral/lib/rating/criteria/scoring/metadata/attributes/index.d.cts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/attributes/index.d.mts +0 -2
- package/dist/neutral/lib/rating/criteria/scoring/metadata/attributes/index.d.mts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/attributes/index.d.ts +0 -2
- package/dist/neutral/lib/rating/criteria/scoring/metadata/attributes/index.d.ts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/backgroundColor.d.cts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/backgroundColor.d.cts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/backgroundColor.d.mts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/backgroundColor.d.mts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/backgroundColor.d.ts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/backgroundColor.d.ts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/description.d.cts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/description.d.cts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/description.d.mts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/description.d.mts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/description.d.ts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/description.d.ts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/externalUrl.d.cts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/externalUrl.d.cts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/externalUrl.d.mts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/externalUrl.d.mts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/externalUrl.d.ts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/externalUrl.d.ts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/image.d.cts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/image.d.cts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/image.d.mts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/image.d.mts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/image.d.ts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/image.d.ts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/imageData.d.cts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/imageData.d.cts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/imageData.d.mts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/imageData.d.mts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/imageData.d.ts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/imageData.d.ts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/index.d.cts +0 -10
- package/dist/neutral/lib/rating/criteria/scoring/metadata/index.d.cts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/index.d.mts +0 -10
- package/dist/neutral/lib/rating/criteria/scoring/metadata/index.d.mts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/index.d.ts +0 -10
- package/dist/neutral/lib/rating/criteria/scoring/metadata/index.d.ts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/lib/index.d.cts +0 -2
- package/dist/neutral/lib/rating/criteria/scoring/metadata/lib/index.d.cts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/lib/index.d.mts +0 -2
- package/dist/neutral/lib/rating/criteria/scoring/metadata/lib/index.d.mts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/lib/index.d.ts +0 -2
- package/dist/neutral/lib/rating/criteria/scoring/metadata/lib/index.d.ts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.cts +0 -7
- package/dist/neutral/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.cts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.mts +0 -7
- package/dist/neutral/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.mts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.ts +0 -7
- package/dist/neutral/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.ts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/name.d.cts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/name.d.cts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/name.d.mts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/name.d.mts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/name.d.ts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/name.d.ts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/youtubeUrl.d.cts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/youtubeUrl.d.cts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/youtubeUrl.d.mts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/youtubeUrl.d.mts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/metadata/youtubeUrl.d.ts +0 -5
- package/dist/neutral/lib/rating/criteria/scoring/metadata/youtubeUrl.d.ts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/supply.d.cts +0 -4
- package/dist/neutral/lib/rating/criteria/scoring/supply.d.cts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/supply.d.mts +0 -4
- package/dist/neutral/lib/rating/criteria/scoring/supply.d.mts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/supply.d.ts +0 -4
- package/dist/neutral/lib/rating/criteria/scoring/supply.d.ts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/tokenId.d.cts +0 -4
- package/dist/neutral/lib/rating/criteria/scoring/tokenId.d.cts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/tokenId.d.mts +0 -4
- package/dist/neutral/lib/rating/criteria/scoring/tokenId.d.mts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/tokenId.d.ts +0 -4
- package/dist/neutral/lib/rating/criteria/scoring/tokenId.d.ts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/type.d.cts +0 -4
- package/dist/neutral/lib/rating/criteria/scoring/type.d.cts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/type.d.mts +0 -4
- package/dist/neutral/lib/rating/criteria/scoring/type.d.mts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoring/type.d.ts +0 -4
- package/dist/neutral/lib/rating/criteria/scoring/type.d.ts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoringCriteria.d.cts +0 -55
- package/dist/neutral/lib/rating/criteria/scoringCriteria.d.cts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoringCriteria.d.mts +0 -55
- package/dist/neutral/lib/rating/criteria/scoringCriteria.d.mts.map +0 -1
- package/dist/neutral/lib/rating/criteria/scoringCriteria.d.ts +0 -55
- package/dist/neutral/lib/rating/criteria/scoringCriteria.d.ts.map +0 -1
- package/dist/neutral/lib/rating/index.d.cts +0 -3
- package/dist/neutral/lib/rating/index.d.cts.map +0 -1
- package/dist/neutral/lib/rating/index.d.mts +0 -3
- package/dist/neutral/lib/rating/index.d.mts.map +0 -1
- package/dist/neutral/lib/rating/index.d.ts +0 -3
- package/dist/neutral/lib/rating/index.d.ts.map +0 -1
- package/dist/node/Diviner.d.cts +0 -13
- package/dist/node/Diviner.d.cts.map +0 -1
- package/dist/node/Diviner.d.mts +0 -13
- package/dist/node/Diviner.d.mts.map +0 -1
- package/dist/node/Diviner.d.ts +0 -13
- package/dist/node/Diviner.d.ts.map +0 -1
- package/dist/node/Plugin.d.cts +0 -19
- package/dist/node/Plugin.d.cts.map +0 -1
- package/dist/node/Plugin.d.mts +0 -19
- package/dist/node/Plugin.d.mts.map +0 -1
- package/dist/node/Plugin.d.ts +0 -19
- package/dist/node/Plugin.d.ts.map +0 -1
- package/dist/node/index.cjs +0 -396
- package/dist/node/index.cjs.map +0 -1
- package/dist/node/index.d.cts +0 -4
- package/dist/node/index.d.cts.map +0 -1
- package/dist/node/index.d.mts +0 -4
- package/dist/node/index.d.mts.map +0 -1
- package/dist/node/index.d.ts.map +0 -1
- package/dist/node/lib/index.d.cts +0 -2
- package/dist/node/lib/index.d.cts.map +0 -1
- package/dist/node/lib/index.d.mts +0 -2
- package/dist/node/lib/index.d.mts.map +0 -1
- package/dist/node/lib/index.d.ts +0 -2
- package/dist/node/lib/index.d.ts.map +0 -1
- package/dist/node/lib/rating/analyzeNft.d.cts +0 -9
- package/dist/node/lib/rating/analyzeNft.d.cts.map +0 -1
- package/dist/node/lib/rating/analyzeNft.d.mts +0 -9
- package/dist/node/lib/rating/analyzeNft.d.mts.map +0 -1
- package/dist/node/lib/rating/analyzeNft.d.ts +0 -9
- package/dist/node/lib/rating/analyzeNft.d.ts.map +0 -1
- package/dist/node/lib/rating/criteria/index.d.cts +0 -2
- package/dist/node/lib/rating/criteria/index.d.cts.map +0 -1
- package/dist/node/lib/rating/criteria/index.d.mts +0 -2
- package/dist/node/lib/rating/criteria/index.d.mts.map +0 -1
- package/dist/node/lib/rating/criteria/index.d.ts +0 -2
- package/dist/node/lib/rating/criteria/index.d.ts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/contract.d.cts +0 -4
- package/dist/node/lib/rating/criteria/scoring/contract.d.cts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/contract.d.mts +0 -4
- package/dist/node/lib/rating/criteria/scoring/contract.d.mts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/contract.d.ts +0 -4
- package/dist/node/lib/rating/criteria/scoring/contract.d.ts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/index.d.cts +0 -6
- package/dist/node/lib/rating/criteria/scoring/index.d.cts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/index.d.mts +0 -6
- package/dist/node/lib/rating/criteria/scoring/index.d.mts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/index.d.ts +0 -6
- package/dist/node/lib/rating/criteria/scoring/index.d.ts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/animationUrl.d.cts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/animationUrl.d.cts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/animationUrl.d.mts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/animationUrl.d.mts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/animationUrl.d.ts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/animationUrl.d.ts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.cts +0 -6
- package/dist/node/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.cts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.mts +0 -6
- package/dist/node/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.mts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.ts +0 -6
- package/dist/node/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.ts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/attributes/index.d.cts +0 -2
- package/dist/node/lib/rating/criteria/scoring/metadata/attributes/index.d.cts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/attributes/index.d.mts +0 -2
- package/dist/node/lib/rating/criteria/scoring/metadata/attributes/index.d.mts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/attributes/index.d.ts +0 -2
- package/dist/node/lib/rating/criteria/scoring/metadata/attributes/index.d.ts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/backgroundColor.d.cts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/backgroundColor.d.cts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/backgroundColor.d.mts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/backgroundColor.d.mts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/backgroundColor.d.ts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/backgroundColor.d.ts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/description.d.cts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/description.d.cts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/description.d.mts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/description.d.mts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/description.d.ts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/description.d.ts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/externalUrl.d.cts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/externalUrl.d.cts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/externalUrl.d.mts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/externalUrl.d.mts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/externalUrl.d.ts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/externalUrl.d.ts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/image.d.cts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/image.d.cts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/image.d.mts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/image.d.mts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/image.d.ts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/image.d.ts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/imageData.d.cts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/imageData.d.cts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/imageData.d.mts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/imageData.d.mts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/imageData.d.ts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/imageData.d.ts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/index.d.cts +0 -10
- package/dist/node/lib/rating/criteria/scoring/metadata/index.d.cts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/index.d.mts +0 -10
- package/dist/node/lib/rating/criteria/scoring/metadata/index.d.mts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/index.d.ts +0 -10
- package/dist/node/lib/rating/criteria/scoring/metadata/index.d.ts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/lib/index.d.cts +0 -2
- package/dist/node/lib/rating/criteria/scoring/metadata/lib/index.d.cts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/lib/index.d.mts +0 -2
- package/dist/node/lib/rating/criteria/scoring/metadata/lib/index.d.mts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/lib/index.d.ts +0 -2
- package/dist/node/lib/rating/criteria/scoring/metadata/lib/index.d.ts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.cts +0 -7
- package/dist/node/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.cts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.mts +0 -7
- package/dist/node/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.mts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.ts +0 -7
- package/dist/node/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.ts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/name.d.cts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/name.d.cts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/name.d.mts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/name.d.mts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/name.d.ts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/name.d.ts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/youtubeUrl.d.cts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/youtubeUrl.d.cts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/youtubeUrl.d.mts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/youtubeUrl.d.mts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/metadata/youtubeUrl.d.ts +0 -5
- package/dist/node/lib/rating/criteria/scoring/metadata/youtubeUrl.d.ts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/supply.d.cts +0 -4
- package/dist/node/lib/rating/criteria/scoring/supply.d.cts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/supply.d.mts +0 -4
- package/dist/node/lib/rating/criteria/scoring/supply.d.mts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/supply.d.ts +0 -4
- package/dist/node/lib/rating/criteria/scoring/supply.d.ts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/tokenId.d.cts +0 -4
- package/dist/node/lib/rating/criteria/scoring/tokenId.d.cts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/tokenId.d.mts +0 -4
- package/dist/node/lib/rating/criteria/scoring/tokenId.d.mts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/tokenId.d.ts +0 -4
- package/dist/node/lib/rating/criteria/scoring/tokenId.d.ts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/type.d.cts +0 -4
- package/dist/node/lib/rating/criteria/scoring/type.d.cts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/type.d.mts +0 -4
- package/dist/node/lib/rating/criteria/scoring/type.d.mts.map +0 -1
- package/dist/node/lib/rating/criteria/scoring/type.d.ts +0 -4
- package/dist/node/lib/rating/criteria/scoring/type.d.ts.map +0 -1
- package/dist/node/lib/rating/criteria/scoringCriteria.d.cts +0 -55
- package/dist/node/lib/rating/criteria/scoringCriteria.d.cts.map +0 -1
- package/dist/node/lib/rating/criteria/scoringCriteria.d.mts +0 -55
- package/dist/node/lib/rating/criteria/scoringCriteria.d.mts.map +0 -1
- package/dist/node/lib/rating/criteria/scoringCriteria.d.ts +0 -55
- package/dist/node/lib/rating/criteria/scoringCriteria.d.ts.map +0 -1
- package/dist/node/lib/rating/index.d.cts +0 -3
- package/dist/node/lib/rating/index.d.cts.map +0 -1
- package/dist/node/lib/rating/index.d.mts +0 -3
- package/dist/node/lib/rating/index.d.mts.map +0 -1
- package/dist/node/lib/rating/index.d.ts +0 -3
- package/dist/node/lib/rating/index.d.ts.map +0 -1
package/dist/browser/index.d.ts
CHANGED
|
@@ -1,4 +1,102 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import * as _xyo_network_crypto_nft_payload_plugin from '@xyo-network/crypto-nft-payload-plugin';
|
|
2
|
+
import { NftScoreDivinerConfig, NftScore, NftInfoFields } from '@xyo-network/crypto-nft-payload-plugin';
|
|
3
|
+
import { AbstractDiviner } from '@xyo-network/diviner-abstract';
|
|
4
|
+
import { DivinerParams } from '@xyo-network/diviner-model';
|
|
5
|
+
import * as _xyo_network_module_model from '@xyo-network/module-model';
|
|
6
|
+
import { AnyConfigSchema } from '@xyo-network/module-model';
|
|
7
|
+
import * as _xyo_network_payload_model from '@xyo-network/payload-model';
|
|
8
|
+
import { Payload, Schema } from '@xyo-network/payload-model';
|
|
9
|
+
import * as _xyo_network_crypto_nft_score_model from '@xyo-network/crypto-nft-score-model';
|
|
10
|
+
import { Score } from '@xyo-network/crypto-nft-score-model';
|
|
11
|
+
import * as _xyo_network_payloadset_plugin from '@xyo-network/payloadset-plugin';
|
|
12
|
+
import * as _store__xyo_network_account_model_virtual_3afa553815_package from '.store/@xyo-network-account-model-virtual-3afa553815/package';
|
|
13
|
+
import * as _xylabs_object from '@xylabs/object';
|
|
14
|
+
|
|
15
|
+
type NftScoreDivinerParams = DivinerParams<AnyConfigSchema<NftScoreDivinerConfig>>;
|
|
16
|
+
declare const isNftScore: (payload: Payload) => payload is NftScore;
|
|
17
|
+
declare class NftScoreDiviner<TParams extends NftScoreDivinerParams = NftScoreDivinerParams> extends AbstractDiviner<TParams> {
|
|
18
|
+
static readonly configSchemas: Schema[];
|
|
19
|
+
static readonly defaultConfigSchema: Schema;
|
|
20
|
+
protected divineHandler: (payloads?: Payload[]) => Promise<Payload[]>;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
declare const scoringCriteria: {
|
|
24
|
+
Attributes: {
|
|
25
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
26
|
+
weight: number;
|
|
27
|
+
};
|
|
28
|
+
'Animation URL': {
|
|
29
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
30
|
+
weight: number;
|
|
31
|
+
};
|
|
32
|
+
'Background Color': {
|
|
33
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
34
|
+
weight: number;
|
|
35
|
+
};
|
|
36
|
+
Description: {
|
|
37
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
38
|
+
weight: number;
|
|
39
|
+
};
|
|
40
|
+
'External Url': {
|
|
41
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
42
|
+
weight: number;
|
|
43
|
+
};
|
|
44
|
+
Image: {
|
|
45
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
46
|
+
weight: number;
|
|
47
|
+
};
|
|
48
|
+
'Image Data': {
|
|
49
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
50
|
+
weight: number;
|
|
51
|
+
};
|
|
52
|
+
Name: {
|
|
53
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
54
|
+
weight: number;
|
|
55
|
+
};
|
|
56
|
+
'YouTube URL': {
|
|
57
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
58
|
+
weight: number;
|
|
59
|
+
};
|
|
60
|
+
'Contract Address': {
|
|
61
|
+
score: _xyo_network_crypto_nft_score_model.PassFailScoringFunction<_xyo_network_crypto_nft_payload_plugin.NftInfoFields>;
|
|
62
|
+
weight: number;
|
|
63
|
+
};
|
|
64
|
+
Supply: {
|
|
65
|
+
score: _xyo_network_crypto_nft_score_model.PassFailScoringFunction<_xyo_network_crypto_nft_payload_plugin.NftInfoFields>;
|
|
66
|
+
weight: number;
|
|
67
|
+
};
|
|
68
|
+
'Token Id': {
|
|
69
|
+
score: _xyo_network_crypto_nft_score_model.PassFailScoringFunction<_xyo_network_crypto_nft_payload_plugin.NftInfoFields>;
|
|
70
|
+
weight: number;
|
|
71
|
+
};
|
|
72
|
+
Type: {
|
|
73
|
+
score: _xyo_network_crypto_nft_score_model.PassFailScoringFunction<_xyo_network_crypto_nft_payload_plugin.NftInfoFields>;
|
|
74
|
+
weight: number;
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
type ScoringCriteriaKey = keyof typeof scoringCriteria & PropertyKey;
|
|
79
|
+
type NftAnalysis = {
|
|
80
|
+
[key in ScoringCriteriaKey]: Score;
|
|
81
|
+
};
|
|
82
|
+
declare const analyzeNft: (nft: NftInfoFields) => Promise<NftAnalysis>;
|
|
83
|
+
|
|
84
|
+
declare const NftScoreDivinerPlugin: () => _xyo_network_payloadset_plugin.PayloadSetDivinerPlugin<NftScoreDiviner<_xylabs_object.BaseParamsFields & {
|
|
85
|
+
account?: _store__xyo_network_account_model_virtual_3afa553815_package.AccountInstance | "random";
|
|
86
|
+
addToResolvers?: boolean;
|
|
87
|
+
additionalSigners?: _store__xyo_network_account_model_virtual_3afa553815_package.AccountInstance[];
|
|
88
|
+
allowNameResolution?: boolean;
|
|
89
|
+
config: _xyo_network_payload_model.SchemaFields & _xyo_network_payload_model.PayloadFields & Omit<_xyo_network_module_model.ArchivingModuleConfig & _xyo_network_module_model.ModuleConfigFields & _xyo_network_payload_model.SchemaFields & _xyo_network_payload_model.PayloadFields & Omit<_xyo_network_module_model.ArchivingModuleConfig & _xyo_network_module_model.ModuleConfigFields & {
|
|
90
|
+
schema: "network.xyo.crypto.nft.score.diviner.config";
|
|
91
|
+
} & {
|
|
92
|
+
schema: _xyo_network_crypto_nft_payload_plugin.NftScoreDivinerConfigSchema;
|
|
93
|
+
}, "schema"> & {
|
|
94
|
+
schema: "network.xyo.crypto.nft.score.diviner.config";
|
|
95
|
+
}, "schema"> & {
|
|
96
|
+
schema: string;
|
|
97
|
+
};
|
|
98
|
+
ephemeralQueryAccountEnabled?: boolean;
|
|
99
|
+
moduleIdentifierTransformers?: _xyo_network_module_model.ModuleIdentifierTransformer[];
|
|
100
|
+
}>>;
|
|
101
|
+
|
|
102
|
+
export { type NftAnalysis, NftScoreDiviner, type NftScoreDivinerParams, NftScoreDivinerPlugin, type ScoringCriteriaKey, analyzeNft, NftScoreDivinerPlugin as default, isNftScore, scoringCriteria };
|
package/dist/neutral/index.d.ts
CHANGED
|
@@ -1,4 +1,102 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import * as _xyo_network_crypto_nft_payload_plugin from '@xyo-network/crypto-nft-payload-plugin';
|
|
2
|
+
import { NftScoreDivinerConfig, NftScore, NftInfoFields } from '@xyo-network/crypto-nft-payload-plugin';
|
|
3
|
+
import { AbstractDiviner } from '@xyo-network/diviner-abstract';
|
|
4
|
+
import { DivinerParams } from '@xyo-network/diviner-model';
|
|
5
|
+
import * as _xyo_network_module_model from '@xyo-network/module-model';
|
|
6
|
+
import { AnyConfigSchema } from '@xyo-network/module-model';
|
|
7
|
+
import * as _xyo_network_payload_model from '@xyo-network/payload-model';
|
|
8
|
+
import { Payload, Schema } from '@xyo-network/payload-model';
|
|
9
|
+
import * as _xyo_network_crypto_nft_score_model from '@xyo-network/crypto-nft-score-model';
|
|
10
|
+
import { Score } from '@xyo-network/crypto-nft-score-model';
|
|
11
|
+
import * as _xyo_network_payloadset_plugin from '@xyo-network/payloadset-plugin';
|
|
12
|
+
import * as _store__xyo_network_account_model_virtual_3afa553815_package from '.store/@xyo-network-account-model-virtual-3afa553815/package';
|
|
13
|
+
import * as _xylabs_object from '@xylabs/object';
|
|
14
|
+
|
|
15
|
+
type NftScoreDivinerParams = DivinerParams<AnyConfigSchema<NftScoreDivinerConfig>>;
|
|
16
|
+
declare const isNftScore: (payload: Payload) => payload is NftScore;
|
|
17
|
+
declare class NftScoreDiviner<TParams extends NftScoreDivinerParams = NftScoreDivinerParams> extends AbstractDiviner<TParams> {
|
|
18
|
+
static readonly configSchemas: Schema[];
|
|
19
|
+
static readonly defaultConfigSchema: Schema;
|
|
20
|
+
protected divineHandler: (payloads?: Payload[]) => Promise<Payload[]>;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
declare const scoringCriteria: {
|
|
24
|
+
Attributes: {
|
|
25
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
26
|
+
weight: number;
|
|
27
|
+
};
|
|
28
|
+
'Animation URL': {
|
|
29
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
30
|
+
weight: number;
|
|
31
|
+
};
|
|
32
|
+
'Background Color': {
|
|
33
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
34
|
+
weight: number;
|
|
35
|
+
};
|
|
36
|
+
Description: {
|
|
37
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
38
|
+
weight: number;
|
|
39
|
+
};
|
|
40
|
+
'External Url': {
|
|
41
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
42
|
+
weight: number;
|
|
43
|
+
};
|
|
44
|
+
Image: {
|
|
45
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
46
|
+
weight: number;
|
|
47
|
+
};
|
|
48
|
+
'Image Data': {
|
|
49
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
50
|
+
weight: number;
|
|
51
|
+
};
|
|
52
|
+
Name: {
|
|
53
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
54
|
+
weight: number;
|
|
55
|
+
};
|
|
56
|
+
'YouTube URL': {
|
|
57
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
58
|
+
weight: number;
|
|
59
|
+
};
|
|
60
|
+
'Contract Address': {
|
|
61
|
+
score: _xyo_network_crypto_nft_score_model.PassFailScoringFunction<_xyo_network_crypto_nft_payload_plugin.NftInfoFields>;
|
|
62
|
+
weight: number;
|
|
63
|
+
};
|
|
64
|
+
Supply: {
|
|
65
|
+
score: _xyo_network_crypto_nft_score_model.PassFailScoringFunction<_xyo_network_crypto_nft_payload_plugin.NftInfoFields>;
|
|
66
|
+
weight: number;
|
|
67
|
+
};
|
|
68
|
+
'Token Id': {
|
|
69
|
+
score: _xyo_network_crypto_nft_score_model.PassFailScoringFunction<_xyo_network_crypto_nft_payload_plugin.NftInfoFields>;
|
|
70
|
+
weight: number;
|
|
71
|
+
};
|
|
72
|
+
Type: {
|
|
73
|
+
score: _xyo_network_crypto_nft_score_model.PassFailScoringFunction<_xyo_network_crypto_nft_payload_plugin.NftInfoFields>;
|
|
74
|
+
weight: number;
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
type ScoringCriteriaKey = keyof typeof scoringCriteria & PropertyKey;
|
|
79
|
+
type NftAnalysis = {
|
|
80
|
+
[key in ScoringCriteriaKey]: Score;
|
|
81
|
+
};
|
|
82
|
+
declare const analyzeNft: (nft: NftInfoFields) => Promise<NftAnalysis>;
|
|
83
|
+
|
|
84
|
+
declare const NftScoreDivinerPlugin: () => _xyo_network_payloadset_plugin.PayloadSetDivinerPlugin<NftScoreDiviner<_xylabs_object.BaseParamsFields & {
|
|
85
|
+
account?: _store__xyo_network_account_model_virtual_3afa553815_package.AccountInstance | "random";
|
|
86
|
+
addToResolvers?: boolean;
|
|
87
|
+
additionalSigners?: _store__xyo_network_account_model_virtual_3afa553815_package.AccountInstance[];
|
|
88
|
+
allowNameResolution?: boolean;
|
|
89
|
+
config: _xyo_network_payload_model.SchemaFields & _xyo_network_payload_model.PayloadFields & Omit<_xyo_network_module_model.ArchivingModuleConfig & _xyo_network_module_model.ModuleConfigFields & _xyo_network_payload_model.SchemaFields & _xyo_network_payload_model.PayloadFields & Omit<_xyo_network_module_model.ArchivingModuleConfig & _xyo_network_module_model.ModuleConfigFields & {
|
|
90
|
+
schema: "network.xyo.crypto.nft.score.diviner.config";
|
|
91
|
+
} & {
|
|
92
|
+
schema: _xyo_network_crypto_nft_payload_plugin.NftScoreDivinerConfigSchema;
|
|
93
|
+
}, "schema"> & {
|
|
94
|
+
schema: "network.xyo.crypto.nft.score.diviner.config";
|
|
95
|
+
}, "schema"> & {
|
|
96
|
+
schema: string;
|
|
97
|
+
};
|
|
98
|
+
ephemeralQueryAccountEnabled?: boolean;
|
|
99
|
+
moduleIdentifierTransformers?: _xyo_network_module_model.ModuleIdentifierTransformer[];
|
|
100
|
+
}>>;
|
|
101
|
+
|
|
102
|
+
export { type NftAnalysis, NftScoreDiviner, type NftScoreDivinerParams, NftScoreDivinerPlugin, type ScoringCriteriaKey, analyzeNft, NftScoreDivinerPlugin as default, isNftScore, scoringCriteria };
|
package/dist/node/index.d.ts
CHANGED
|
@@ -1,4 +1,102 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import * as _xyo_network_crypto_nft_payload_plugin from '@xyo-network/crypto-nft-payload-plugin';
|
|
2
|
+
import { NftScoreDivinerConfig, NftScore, NftInfoFields } from '@xyo-network/crypto-nft-payload-plugin';
|
|
3
|
+
import { AbstractDiviner } from '@xyo-network/diviner-abstract';
|
|
4
|
+
import { DivinerParams } from '@xyo-network/diviner-model';
|
|
5
|
+
import * as _xyo_network_module_model from '@xyo-network/module-model';
|
|
6
|
+
import { AnyConfigSchema } from '@xyo-network/module-model';
|
|
7
|
+
import * as _xyo_network_payload_model from '@xyo-network/payload-model';
|
|
8
|
+
import { Payload, Schema } from '@xyo-network/payload-model';
|
|
9
|
+
import * as _xyo_network_crypto_nft_score_model from '@xyo-network/crypto-nft-score-model';
|
|
10
|
+
import { Score } from '@xyo-network/crypto-nft-score-model';
|
|
11
|
+
import * as _xyo_network_payloadset_plugin from '@xyo-network/payloadset-plugin';
|
|
12
|
+
import * as _store__xyo_network_account_model_virtual_3afa553815_package from '.store/@xyo-network-account-model-virtual-3afa553815/package';
|
|
13
|
+
import * as _xylabs_object from '@xylabs/object';
|
|
14
|
+
|
|
15
|
+
type NftScoreDivinerParams = DivinerParams<AnyConfigSchema<NftScoreDivinerConfig>>;
|
|
16
|
+
declare const isNftScore: (payload: Payload) => payload is NftScore;
|
|
17
|
+
declare class NftScoreDiviner<TParams extends NftScoreDivinerParams = NftScoreDivinerParams> extends AbstractDiviner<TParams> {
|
|
18
|
+
static readonly configSchemas: Schema[];
|
|
19
|
+
static readonly defaultConfigSchema: Schema;
|
|
20
|
+
protected divineHandler: (payloads?: Payload[]) => Promise<Payload[]>;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
declare const scoringCriteria: {
|
|
24
|
+
Attributes: {
|
|
25
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
26
|
+
weight: number;
|
|
27
|
+
};
|
|
28
|
+
'Animation URL': {
|
|
29
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
30
|
+
weight: number;
|
|
31
|
+
};
|
|
32
|
+
'Background Color': {
|
|
33
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
34
|
+
weight: number;
|
|
35
|
+
};
|
|
36
|
+
Description: {
|
|
37
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
38
|
+
weight: number;
|
|
39
|
+
};
|
|
40
|
+
'External Url': {
|
|
41
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
42
|
+
weight: number;
|
|
43
|
+
};
|
|
44
|
+
Image: {
|
|
45
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
46
|
+
weight: number;
|
|
47
|
+
};
|
|
48
|
+
'Image Data': {
|
|
49
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
50
|
+
weight: number;
|
|
51
|
+
};
|
|
52
|
+
Name: {
|
|
53
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
54
|
+
weight: number;
|
|
55
|
+
};
|
|
56
|
+
'YouTube URL': {
|
|
57
|
+
score: (nft: _xyo_network_crypto_nft_payload_plugin.NftInfoFields | _xyo_network_crypto_nft_payload_plugin.OpenSeaNftInfoFields) => _xyo_network_crypto_nft_score_model.ScaledScore;
|
|
58
|
+
weight: number;
|
|
59
|
+
};
|
|
60
|
+
'Contract Address': {
|
|
61
|
+
score: _xyo_network_crypto_nft_score_model.PassFailScoringFunction<_xyo_network_crypto_nft_payload_plugin.NftInfoFields>;
|
|
62
|
+
weight: number;
|
|
63
|
+
};
|
|
64
|
+
Supply: {
|
|
65
|
+
score: _xyo_network_crypto_nft_score_model.PassFailScoringFunction<_xyo_network_crypto_nft_payload_plugin.NftInfoFields>;
|
|
66
|
+
weight: number;
|
|
67
|
+
};
|
|
68
|
+
'Token Id': {
|
|
69
|
+
score: _xyo_network_crypto_nft_score_model.PassFailScoringFunction<_xyo_network_crypto_nft_payload_plugin.NftInfoFields>;
|
|
70
|
+
weight: number;
|
|
71
|
+
};
|
|
72
|
+
Type: {
|
|
73
|
+
score: _xyo_network_crypto_nft_score_model.PassFailScoringFunction<_xyo_network_crypto_nft_payload_plugin.NftInfoFields>;
|
|
74
|
+
weight: number;
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
type ScoringCriteriaKey = keyof typeof scoringCriteria & PropertyKey;
|
|
79
|
+
type NftAnalysis = {
|
|
80
|
+
[key in ScoringCriteriaKey]: Score;
|
|
81
|
+
};
|
|
82
|
+
declare const analyzeNft: (nft: NftInfoFields) => Promise<NftAnalysis>;
|
|
83
|
+
|
|
84
|
+
declare const NftScoreDivinerPlugin: () => _xyo_network_payloadset_plugin.PayloadSetDivinerPlugin<NftScoreDiviner<_xylabs_object.BaseParamsFields & {
|
|
85
|
+
account?: _store__xyo_network_account_model_virtual_3afa553815_package.AccountInstance | "random";
|
|
86
|
+
addToResolvers?: boolean;
|
|
87
|
+
additionalSigners?: _store__xyo_network_account_model_virtual_3afa553815_package.AccountInstance[];
|
|
88
|
+
allowNameResolution?: boolean;
|
|
89
|
+
config: _xyo_network_payload_model.SchemaFields & _xyo_network_payload_model.PayloadFields & Omit<_xyo_network_module_model.ArchivingModuleConfig & _xyo_network_module_model.ModuleConfigFields & _xyo_network_payload_model.SchemaFields & _xyo_network_payload_model.PayloadFields & Omit<_xyo_network_module_model.ArchivingModuleConfig & _xyo_network_module_model.ModuleConfigFields & {
|
|
90
|
+
schema: "network.xyo.crypto.nft.score.diviner.config";
|
|
91
|
+
} & {
|
|
92
|
+
schema: _xyo_network_crypto_nft_payload_plugin.NftScoreDivinerConfigSchema;
|
|
93
|
+
}, "schema"> & {
|
|
94
|
+
schema: "network.xyo.crypto.nft.score.diviner.config";
|
|
95
|
+
}, "schema"> & {
|
|
96
|
+
schema: string;
|
|
97
|
+
};
|
|
98
|
+
ephemeralQueryAccountEnabled?: boolean;
|
|
99
|
+
moduleIdentifierTransformers?: _xyo_network_module_model.ModuleIdentifierTransformer[];
|
|
100
|
+
}>>;
|
|
101
|
+
|
|
102
|
+
export { type NftAnalysis, NftScoreDiviner, type NftScoreDivinerParams, NftScoreDivinerPlugin, type ScoringCriteriaKey, analyzeNft, NftScoreDivinerPlugin as default, isNftScore, scoringCriteria };
|
package/dist/node/index.mjs
CHANGED
|
@@ -31,19 +31,12 @@ var toUrl = (url) => {
|
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
33
|
var isValidUrl = (url) => toUrl(url) !== void 0;
|
|
34
|
-
var isWeb3 = (url) => web3Protocols.some((protocol) =>
|
|
35
|
-
|
|
36
|
-
return protocol === ((_a = toUrl(url)) == null ? void 0 : _a.protocol);
|
|
37
|
-
});
|
|
38
|
-
var isSecure = (url) => {
|
|
39
|
-
var _a;
|
|
40
|
-
return isWeb3(url) || ((_a = toUrl(url)) == null ? void 0 : _a.protocol) === "https:";
|
|
41
|
-
};
|
|
34
|
+
var isWeb3 = (url) => web3Protocols.some((protocol) => protocol === toUrl(url)?.protocol);
|
|
35
|
+
var isSecure = (url) => isWeb3(url) || toUrl(url)?.protocol === "https:";
|
|
42
36
|
|
|
43
37
|
// src/lib/rating/criteria/scoring/metadata/animationUrl.ts
|
|
44
38
|
var scoreNftAnimationUrl = (nft) => {
|
|
45
|
-
|
|
46
|
-
return scoreAnimationUrl((_a = nft.metadata) == null ? void 0 : _a.animation_url);
|
|
39
|
+
return scoreAnimationUrl(nft.metadata?.animation_url);
|
|
47
40
|
};
|
|
48
41
|
var scoreAnimationUrl = (animation_url) => {
|
|
49
42
|
const score = [0, 0];
|
|
@@ -76,10 +69,7 @@ var isNumber = (value) => typeof value === "number";
|
|
|
76
69
|
var isPercentage = (value) => isNumber(value) && value >= 0 && value <= 100;
|
|
77
70
|
var isNonEmptyString = (value) => typeof value === "string" && value.length > 0;
|
|
78
71
|
var isNonEmptyStringOrNumber = (value) => value === "number" || isNonEmptyString(value);
|
|
79
|
-
var evaluateNftAttributes = (nft) =>
|
|
80
|
-
var _a, _b;
|
|
81
|
-
return ((_a = nft == null ? void 0 : nft.metadata) == null ? void 0 : _a.attributes) ? evaluateAttributes((_b = nft == null ? void 0 : nft.metadata) == null ? void 0 : _b.attributes) : [0, 1];
|
|
82
|
-
};
|
|
72
|
+
var evaluateNftAttributes = (nft) => nft?.metadata?.attributes ? evaluateAttributes(nft?.metadata?.attributes) : [0, 1];
|
|
83
73
|
var evaluateAttributes = (attributes) => {
|
|
84
74
|
if (!attributes || !Array.isArray(attributes) || attributes.length === 0) return [0, 1];
|
|
85
75
|
const score = [0, 0];
|
|
@@ -91,9 +81,9 @@ var evaluateAttributes = (attributes) => {
|
|
|
91
81
|
};
|
|
92
82
|
var evaluateAttribute = (attribute) => {
|
|
93
83
|
const score = [0, 1];
|
|
94
|
-
const max_value = attribute
|
|
95
|
-
const trait_type = attribute
|
|
96
|
-
const value = attribute
|
|
84
|
+
const max_value = attribute?.max_value;
|
|
85
|
+
const trait_type = attribute?.trait_type;
|
|
86
|
+
const value = attribute?.value;
|
|
97
87
|
if (!attribute || typeof attribute !== "object" || !isNonEmptyString(trait_type) || !isNonEmptyStringOrNumber(value)) return score;
|
|
98
88
|
incrementTotal2(score);
|
|
99
89
|
incrementPossible2(score);
|
|
@@ -105,23 +95,23 @@ var evaluateAttribute = (attribute) => {
|
|
|
105
95
|
return score;
|
|
106
96
|
};
|
|
107
97
|
var validDisplayType = (attribute) => {
|
|
108
|
-
switch (attribute
|
|
98
|
+
switch (attribute?.display_type) {
|
|
109
99
|
case "number":
|
|
110
100
|
case "boost_number": {
|
|
111
|
-
if (isNumber(attribute
|
|
101
|
+
if (isNumber(attribute?.value)) return true;
|
|
112
102
|
break;
|
|
113
103
|
}
|
|
114
104
|
case "boost_percentage": {
|
|
115
|
-
if (isPercentage(attribute
|
|
105
|
+
if (isPercentage(attribute?.value)) return true;
|
|
116
106
|
break;
|
|
117
107
|
}
|
|
118
108
|
case "date": {
|
|
119
|
-
if (isDate(attribute
|
|
109
|
+
if (isDate(attribute?.value)) return true;
|
|
120
110
|
break;
|
|
121
111
|
}
|
|
122
112
|
case "string":
|
|
123
113
|
case void 0: {
|
|
124
|
-
if (isNonEmptyString(attribute
|
|
114
|
+
if (isNonEmptyString(attribute?.value)) return true;
|
|
125
115
|
break;
|
|
126
116
|
}
|
|
127
117
|
default: {
|
|
@@ -135,8 +125,7 @@ var validDisplayType = (attribute) => {
|
|
|
135
125
|
import { incrementPossible as incrementPossible3, incrementTotal as incrementTotal3, incrementTotalAndPossible as incrementTotalAndPossible3, PASS as PASS3 } from "@xyo-network/crypto-nft-score-model";
|
|
136
126
|
var isHexColor = /^[\da-f]{6}$/i;
|
|
137
127
|
var scoreNftBackgroundColor = (nft) => {
|
|
138
|
-
|
|
139
|
-
return scoreBackgroundColor((_a = nft.metadata) == null ? void 0 : _a.background_color);
|
|
128
|
+
return scoreBackgroundColor(nft.metadata?.background_color);
|
|
140
129
|
};
|
|
141
130
|
var scoreBackgroundColor = (background_color) => {
|
|
142
131
|
const score = [0, 0];
|
|
@@ -151,8 +140,7 @@ var scoreBackgroundColor = (background_color) => {
|
|
|
151
140
|
// src/lib/rating/criteria/scoring/metadata/description.ts
|
|
152
141
|
import { incrementTotal as incrementTotal4 } from "@xyo-network/crypto-nft-score-model";
|
|
153
142
|
var scoreNftDescription = (nft) => {
|
|
154
|
-
|
|
155
|
-
return scoreDescription((_a = nft.metadata) == null ? void 0 : _a.description);
|
|
143
|
+
return scoreDescription(nft.metadata?.description);
|
|
156
144
|
};
|
|
157
145
|
var scoreDescription = (description) => {
|
|
158
146
|
const score = [0, 1];
|
|
@@ -163,8 +151,7 @@ var scoreDescription = (description) => {
|
|
|
163
151
|
// src/lib/rating/criteria/scoring/metadata/externalUrl.ts
|
|
164
152
|
import { incrementTotal as incrementTotal5 } from "@xyo-network/crypto-nft-score-model";
|
|
165
153
|
var scoreNftExternalUrl = (nft) => {
|
|
166
|
-
|
|
167
|
-
return scoreExternalUrl((_a = nft == null ? void 0 : nft.metadata) == null ? void 0 : _a.external_url);
|
|
154
|
+
return scoreExternalUrl(nft?.metadata?.external_url);
|
|
168
155
|
};
|
|
169
156
|
var scoreExternalUrl = (external_url) => {
|
|
170
157
|
const score = [0, 2];
|
|
@@ -178,11 +165,10 @@ var scoreExternalUrl = (external_url) => {
|
|
|
178
165
|
import { incrementTotal as incrementTotal6, PASS as PASS4 } from "@xyo-network/crypto-nft-score-model";
|
|
179
166
|
var MaxPossibleImageScore = 3;
|
|
180
167
|
var scoreNftImage = (nft) => {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
return scoreImage((_b = nft.metadata) == null ? void 0 : _b.image);
|
|
168
|
+
if (nft?.metadata?.image) {
|
|
169
|
+
return scoreImage(nft.metadata?.image);
|
|
184
170
|
} else {
|
|
185
|
-
return
|
|
171
|
+
return nft.metadata?.image_data ? PASS4 : [0, MaxPossibleImageScore];
|
|
186
172
|
}
|
|
187
173
|
};
|
|
188
174
|
var scoreImage = (image) => {
|
|
@@ -210,11 +196,10 @@ var isValidImageData = (image_data) => {
|
|
|
210
196
|
}
|
|
211
197
|
};
|
|
212
198
|
var scoreNftImageData = (nft) => {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
return scoreImageData((_b = nft.metadata) == null ? void 0 : _b.image_data);
|
|
199
|
+
if (nft?.metadata?.image_data) {
|
|
200
|
+
return scoreImageData(nft.metadata?.image_data);
|
|
216
201
|
} else {
|
|
217
|
-
return
|
|
202
|
+
return nft.metadata?.image ? PASS5 : [0, MaxPossibleImageDataScore];
|
|
218
203
|
}
|
|
219
204
|
};
|
|
220
205
|
var scoreImageData = (image_data) => {
|
|
@@ -224,8 +209,7 @@ var scoreImageData = (image_data) => {
|
|
|
224
209
|
// src/lib/rating/criteria/scoring/metadata/name.ts
|
|
225
210
|
import { incrementTotal as incrementTotal7 } from "@xyo-network/crypto-nft-score-model";
|
|
226
211
|
var scoreNftName = (nft) => {
|
|
227
|
-
|
|
228
|
-
return scoreName((_a = nft.metadata) == null ? void 0 : _a.name);
|
|
212
|
+
return scoreName(nft.metadata?.name);
|
|
229
213
|
};
|
|
230
214
|
var scoreName = (name) => {
|
|
231
215
|
const score = [0, 1];
|
|
@@ -236,8 +220,7 @@ var scoreName = (name) => {
|
|
|
236
220
|
// src/lib/rating/criteria/scoring/metadata/youtubeUrl.ts
|
|
237
221
|
import { incrementTotal as incrementTotal8, PASS as PASS6 } from "@xyo-network/crypto-nft-score-model";
|
|
238
222
|
var scoreNftYoutubeUrl = (nft) => {
|
|
239
|
-
|
|
240
|
-
return scoreYoutubeUrl((_a = nft == null ? void 0 : nft.metadata) == null ? void 0 : _a.youtube_url);
|
|
223
|
+
return scoreYoutubeUrl(nft?.metadata?.youtube_url);
|
|
241
224
|
};
|
|
242
225
|
var scoreYoutubeUrl = (youtube_url) => {
|
|
243
226
|
if (youtube_url === void 0 || youtube_url === null) return PASS6;
|
|
@@ -329,7 +312,7 @@ var NftScoreDiviner = class extends AbstractDiviner {
|
|
|
329
312
|
static configSchemas = [...super.configSchemas, NftScoreDivinerConfigSchema];
|
|
330
313
|
static defaultConfigSchema = NftScoreDivinerConfigSchema;
|
|
331
314
|
divineHandler = async (payloads) => {
|
|
332
|
-
const nftInfos =
|
|
315
|
+
const nftInfos = payloads?.filter(isNftInfo) ?? [];
|
|
333
316
|
const results = await Promise.all(
|
|
334
317
|
nftInfos.map(async (nftInfo) => {
|
|
335
318
|
const [score, sourceHash] = await Promise.all([
|
package/dist/node/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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/tokenId.ts","../../src/lib/rating/criteria/scoring/type.ts","../../src/lib/rating/criteria/scoringCriteria.ts","../../src/lib/rating/analyzeNft.ts","../../src/Plugin.ts"],"sourcesContent":["import {\n isNftInfo,\n NftInfo,\n NftScore,\n NftScoreDivinerConfig,\n NftScoreDivinerConfigSchema,\n NftScoreSchema,\n} from '@xyo-network/crypto-nft-payload-plugin'\nimport { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { DivinerParams } from '@xyo-network/diviner-model'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, Schema } from '@xyo-network/payload-model'\n\nimport { analyzeNft, NftAnalysis } from './lib/index.ts'\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 readonly configSchemas: Schema[] = [...super.configSchemas, NftScoreDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = 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 PayloadBuilder.dataHash(nftInfo),\n ])\n return { ...score, sources: [sourceHash] }\n }),\n )\n return results\n }\n}\n","import { NftInfoFields } from '@xyo-network/crypto-nft-payload-plugin'\nimport { FAIL, PASS, PassFailScoringFunction } from '@xyo-network/crypto-nft-score-model'\nimport { isAddress } from 'ethers'\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/index.ts'\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","export 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 {\n return undefined\n }\n}\n\nexport const isValidUrl = (url?: string | null): boolean => toUrl(url) !== undefined\n// eslint-disable-next-line unicorn/prefer-includes\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 {\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 ? evaluateAttributes(nft?.metadata?.attributes) : [0, 1]\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 = /^[\\da-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 (!isHexColor.test(background_color.toUpperCase())) 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/index.ts'\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/index.ts'\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 return scoreImage(nft.metadata?.image)\n } else {\n // but there is image data, skip this scoring criteria, otherwise fail it completely\n return nft.metadata?.image_data ? PASS : [0, MaxPossibleImageScore]\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 {\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 return scoreImageData(nft.metadata?.image_data)\n } else {\n // but there is an image, skip this scoring criteria, otherwise fail it completely\n return nft.metadata?.image ? PASS : [0, MaxPossibleImageDataScore]\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/index.ts'\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\nexport const scoreSupply: PassFailScoringFunction<NftInfoFields> = (nft: NftInfoFields) => {\n if (!nft.supply) return FAIL\n if (typeof nft.supply !== 'string') return FAIL\n try {\n return BigInt(nft.tokenId) >= 0n && BigInt(nft.tokenId) < 2n ** 256n ? PASS : FAIL\n } catch {\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\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 return BigInt(nft.tokenId) >= 0n && BigInt(nft.tokenId) < 2n ** 256n ? PASS : FAIL\n } catch {\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/index.ts'\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/index.ts'\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","import { NftSchema } from '@xyo-network/crypto-nft-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetDivinerPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { NftScoreDiviner } from './Diviner.ts'\n\nexport const NftScoreDivinerPlugin = () =>\n createPayloadSetDivinerPlugin<NftScoreDiviner>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n diviner: async (params) => {\n const result = await NftScoreDiviner.create(params)\n return result\n },\n },\n )\n"],"mappings":"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","names":["PASS","PASS","incrementPossible","incrementTotal","incrementTotalAndPossible","incrementPossible","incrementTotal","incrementTotalAndPossible","PASS","incrementTotal","incrementTotal","incrementTotal","incrementTotal","PASS","PASS","incrementTotal","PASS","incrementTotal","incrementTotal","PASS","PASS","incrementTotal","FAIL","PASS","FAIL","PASS","FAIL","PASS"]}
|
|
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/tokenId.ts","../../src/lib/rating/criteria/scoring/type.ts","../../src/lib/rating/criteria/scoringCriteria.ts","../../src/lib/rating/analyzeNft.ts","../../src/Plugin.ts"],"sourcesContent":["import {\n isNftInfo,\n NftInfo,\n NftScore,\n NftScoreDivinerConfig,\n NftScoreDivinerConfigSchema,\n NftScoreSchema,\n} from '@xyo-network/crypto-nft-payload-plugin'\nimport { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { DivinerParams } from '@xyo-network/diviner-model'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, Schema } from '@xyo-network/payload-model'\n\nimport { analyzeNft, NftAnalysis } from './lib/index.ts'\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 readonly configSchemas: Schema[] = [...super.configSchemas, NftScoreDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = 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 PayloadBuilder.dataHash(nftInfo),\n ])\n return { ...score, sources: [sourceHash] }\n }),\n )\n return results\n }\n}\n","import { NftInfoFields } from '@xyo-network/crypto-nft-payload-plugin'\nimport { FAIL, PASS, PassFailScoringFunction } from '@xyo-network/crypto-nft-score-model'\nimport { isAddress } from 'ethers'\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/index.ts'\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","export 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 {\n return undefined\n }\n}\n\nexport const isValidUrl = (url?: string | null): boolean => toUrl(url) !== undefined\n// eslint-disable-next-line unicorn/prefer-includes\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 {\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 ? evaluateAttributes(nft?.metadata?.attributes) : [0, 1]\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 = /^[\\da-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 (!isHexColor.test(background_color.toUpperCase())) 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/index.ts'\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/index.ts'\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 return scoreImage(nft.metadata?.image)\n } else {\n // but there is image data, skip this scoring criteria, otherwise fail it completely\n return nft.metadata?.image_data ? PASS : [0, MaxPossibleImageScore]\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 {\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 return scoreImageData(nft.metadata?.image_data)\n } else {\n // but there is an image, skip this scoring criteria, otherwise fail it completely\n return nft.metadata?.image ? PASS : [0, MaxPossibleImageDataScore]\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/index.ts'\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\nexport const scoreSupply: PassFailScoringFunction<NftInfoFields> = (nft: NftInfoFields) => {\n if (!nft.supply) return FAIL\n if (typeof nft.supply !== 'string') return FAIL\n try {\n return BigInt(nft.tokenId) >= 0n && BigInt(nft.tokenId) < 2n ** 256n ? PASS : FAIL\n } catch {\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\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 return BigInt(nft.tokenId) >= 0n && BigInt(nft.tokenId) < 2n ** 256n ? PASS : FAIL\n } catch {\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/index.ts'\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/index.ts'\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","import { NftSchema } from '@xyo-network/crypto-nft-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetDivinerPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { NftScoreDiviner } from './Diviner.ts'\n\nexport const NftScoreDivinerPlugin = () =>\n createPayloadSetDivinerPlugin<NftScoreDiviner>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n diviner: async (params) => {\n const result = await NftScoreDiviner.create(params)\n return result\n },\n },\n )\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EAIA;AAAA,EACA;AAAA,OACK;AACP,SAAS,uBAAuB;AAGhC,SAAS,sBAAsB;;;ACV/B,SAAS,MAAM,YAAqC;AACpD,SAAS,iBAAiB;AAEnB,IAAM,uBAA+D,CAAC,QAAuB;AAClG,MAAI,CAAC,IAAI,QAAS,QAAO;AACzB,MAAI,OAAO,IAAI,YAAY,SAAU,QAAO;AAC5C,MAAI,CAAC,UAAU,IAAI,OAAO,EAAG,QAAO;AACpC,SAAO;AACT;;;ACRA,SAAS,mBAAmB,gBAAgB,2BAA2B,QAAAA,aAAyB;;;ACDzF,IAAM,gBAAgB,CAAC,SAAS,KAAK;AAErC,IAAM,QAAQ,CAAC,QAAyC;AAC7D,MAAI,CAAC,IAAK,QAAO;AACjB,MAAI;AACF,WAAO,IAAI,IAAI,GAAG;AAAA,EACpB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEO,IAAM,aAAa,CAAC,QAAiC,MAAM,GAAG,MAAM;AAEpE,IAAM,SAAS,CAAC,QAAiC,cAAc,KAAK,cAAY,aAAa,MAAM,GAAG,GAAG,QAAQ;AAEjH,IAAM,WAAW,CAAC,QAAiC,OAAO,GAAG,KAAK,MAAM,GAAG,GAAG,aAAa;;;ADV3F,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,KAAM,QAAOC;AAClE,oBAAkB,KAAK;AACvB,MAAI,OAAO,kBAAkB,SAAU,QAAO;AAC9C,4BAA0B,KAAK;AAC/B,MAAI,CAAC,WAAW,aAAa,EAAG,QAAO;AACvC,4BAA0B,KAAK;AAC/B,MAAI,CAAC,SAAS,aAAa,EAAG,QAAO;AACrC,4BAA0B,KAAK;AAC/B,MAAI,CAAC,OAAO,aAAa,EAAG,QAAO;AACnC,SAAO,eAAe,KAAK;AAC7B;;;AEpBA,SAAS,qBAAAC,oBAAmB,kBAAAC,iBAAgB,6BAAAC,kCAA8C;AAE1F,IAAM,SAAS,CAAC,UAAkC;AAChD,MAAI,SAAS,KAAK,GAAG;AACnB,QAAI;AACF,UAAI,KAAK,KAAK;AACd,aAAO;AAAA,IACT,QAAQ;AACN,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,KAAK,UAAU,aAAa,mBAAmB,KAAK,UAAU,UAAU,IAAI,CAAC,GAAG,CAAC;AAE5E,IAAM,qBAAqB,CAAC,eAA8E;AAC/G,MAAI,CAAC,cAAc,CAAC,MAAM,QAAQ,UAAU,KAAK,WAAW,WAAW,EAAG,QAAO,CAAC,GAAG,CAAC;AACtF,QAAM,QAAqB,CAAC,GAAG,CAAC;AAChC,aAAW,aAAa,YAAY;AAClC,UAAM,CAAC,gBAAgB,iBAAiB,IAAI,kBAAkB,SAAS;AACvE,IAAAA,2BAA0B,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,EAAG,QAAO;AAC7H,EAAAD,gBAAe,KAAK;AAGpB,EAAAD,mBAAkB,KAAK;AACvB,MAAI,iBAAiB,SAAS,EAAG,CAAAC,gBAAe,KAAK;AAGrD,MAAI,cAAc,QAAW;AAC3B,IAAAD,mBAAkB,KAAK;AACvB,QAAI,SAAS,SAAS,KAAK,SAAS,KAAK,KAAK,SAAS,UAAW,CAAAC,gBAAe,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,EAAG,QAAO;AACvC;AAAA,IACF;AAAA,IACA,KAAK,oBAAoB;AACvB,UAAI,aAAa,WAAW,KAAK,EAAG,QAAO;AAC3C;AAAA,IACF;AAAA,IACA,KAAK,QAAQ;AACX,UAAI,OAAO,WAAW,KAAK,EAAG,QAAO;AACrC;AAAA,IACF;AAAA,IACA,KAAK;AAAA,IACL,KAAK,QAAW;AACd,UAAI,iBAAiB,WAAW,KAAK,EAAG,QAAO;AAC/C;AAAA,IACF;AAAA,IACA,SAAS;AACP;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;;;ACnFA,SAAS,qBAAAE,oBAAmB,kBAAAC,iBAAgB,6BAAAC,4BAA2B,QAAAC,aAAyB;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,KAAM,QAAOA;AACxE,EAAAH,mBAAkB,KAAK;AACvB,MAAI,OAAO,qBAAqB,SAAU,QAAO;AACjD,EAAAE,2BAA0B,KAAK;AAC/B,MAAI,CAAC,WAAW,KAAK,iBAAiB,YAAY,CAAC,EAAG,QAAO;AAC7D,SAAOD,gBAAe,KAAK;AAC7B;;;AChBA,SAAS,kBAAAG,uBAAmC;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,SAAU,QAAO;AAC5D,SAAOA,gBAAe,KAAK;AAC7B;;;ACVA,SAAS,kBAAAC,uBAAmC;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,EAAG,QAAO;AACjI,EAAAC,gBAAe,KAAK;AACpB,MAAI,CAAC,SAAS,YAAY,EAAG,QAAO;AACpC,SAAOA,gBAAe,KAAK;AAC7B;;;ACbA,SAAS,kBAAAC,iBAAgB,QAAAC,aAAyB;AAIlD,IAAM,wBAAwB;AAEvB,IAAM,gBAAgB,CAAC,QAA2D;AAEvF,MAAI,KAAK,UAAU,OAAO;AACxB,WAAO,WAAW,IAAI,UAAU,KAAK;AAAA,EACvC,OAAO;AAEL,WAAO,IAAI,UAAU,aAAaC,QAAO,CAAC,GAAG,qBAAqB;AAAA,EACpE;AACF;AAEO,IAAM,aAAa,CAAC,UAAgC;AACzD,QAAM,QAAqB,CAAC,GAAG,qBAAqB;AACpD,MAAI,CAAC,SAAS,OAAO,UAAU,YAAY,CAAC,WAAW,KAAK,EAAG,QAAO;AACtE,EAAAC,gBAAe,KAAK;AACpB,MAAI,CAAC,SAAS,KAAK,EAAG,QAAO;AAC7B,EAAAA,gBAAe,KAAK;AACpB,MAAI,CAAC,OAAO,KAAK,EAAG,QAAO;AAC3B,EAAAA,gBAAe,KAAK;AACpB,SAAO;AACT;;;ACzBA,SAAS,QAAAC,aAAyB;AAClC,SAAS,aAAa;AAEtB,IAAM,4BAA4B;AAIlC,IAAM,mBAAmB,CAAC,eAAgC;AAExD,MAAI,CAAC,WAAW,WAAW,MAAM,EAAG,QAAO;AAC3C,MAAI;AAEF,UAAM,UAAU;AAChB,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEO,IAAM,oBAAoB,CAAC,QAA2D;AAE3F,MAAI,KAAK,UAAU,YAAY;AAC7B,WAAO,eAAe,IAAI,UAAU,UAAU;AAAA,EAChD,OAAO;AAEL,WAAO,IAAI,UAAU,QAAQA,QAAO,CAAC,GAAG,yBAAyB;AAAA,EACnE;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,SAAS,kBAAAC,uBAAmC;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,SAAU,QAAO;AAC9C,SAAOA,gBAAe,KAAK;AAC7B;;;ACTA,SAAS,kBAAAC,iBAAgB,QAAAC,aAAyB;AAI3C,IAAM,qBAAqB,CAAC,QAA2D;AAC5F,SAAO,gBAAgB,KAAK,UAAU,WAAW;AACnD;AACO,IAAM,kBAAkB,CAAC,gBAAsC;AACpE,MAAI,gBAAgB,UAAa,gBAAgB,KAAM,QAAOC;AAC9D,QAAM,QAAqB,CAAC,GAAG,CAAC;AAChC,MAAI,OAAO,gBAAgB,YAAY,CAAC,WAAW,WAAW,EAAG,QAAO;AACxE,EAAAC,gBAAe,KAAK;AACpB,MAAI,CAAC,SAAS,WAAW,EAAG,QAAO;AACnC,SAAOA,gBAAe,KAAK;AAC7B;;;ACdA,SAAS,QAAAC,OAAM,QAAAC,aAAqC;AAE7C,IAAM,cAAsD,CAAC,QAAuB;AACzF,MAAI,CAAC,IAAI,OAAQ,QAAOD;AACxB,MAAI,OAAO,IAAI,WAAW,SAAU,QAAOA;AAC3C,MAAI;AACF,WAAO,OAAO,IAAI,OAAO,KAAK,MAAM,OAAO,IAAI,OAAO,IAAI,MAAM,OAAOC,QAAOD;AAAA,EAChF,QAAQ;AACN,WAAOA;AAAA,EACT;AACF;;;ACVA,SAAS,QAAAE,OAAM,QAAAC,aAAqC;AAQ7C,IAAM,eAAuD,CAAC,QAAuB;AAC1F,MAAI,CAAC,IAAI,QAAS,QAAOD;AACzB,MAAI,OAAO,IAAI,YAAY,SAAU,QAAOA;AAC5C,MAAI;AACF,WAAO,OAAO,IAAI,OAAO,KAAK,MAAM,OAAO,IAAI,OAAO,IAAI,MAAM,OAAOC,QAAOD;AAAA,EAChF,QAAQ;AACN,WAAOA;AAAA,EACT;AACF;;;AChBA,SAAS,QAAAE,OAAM,QAAAC,aAAqC;AAE7C,IAAM,YAAoD,CAAC,QAAuB;AACvF,MAAI,CAAC,IAAI,KAAM,QAAOD;AACtB,MAAI,OAAO,IAAI,SAAS,SAAU,QAAOA;AACzC,QAAM,OAAO,IAAI,KAAK,YAAY;AAClC,MAAI,SAAS,YAAY,SAAS,UAAW,QAAOA;AACpD,SAAOC;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,eAAe,EAAE,OAAO,qBAAqB,QAAQ,EAAE;AAAA,EACvD,gBAAgB,EAAE,OAAO,qBAAqB,QAAQ,EAAE;AAAA,EACxD,SAAS,EAAE,OAAO,eAAe,QAAQ,EAAE;AAAA,EAC3C,cAAc,EAAE,OAAO,mBAAmB,QAAQ,EAAE;AAAA,EACpD,QAAQ,EAAE,OAAO,cAAc,QAAQ,EAAE;AAAA,EACzC,eAAe,EAAE,OAAO,oBAAoB,QAAQ,EAAE;AAAA,EACtD,GAAG;AACL;AAEO,IAAM,kBAAkB;AAAA,EAC7B,oBAAoB,EAAE,OAAO,sBAAsB,QAAQ,EAAE;AAAA,EAC7D,UAAU,EAAE,OAAO,aAAa,QAAQ,EAAE;AAAA,EAC1C,YAAY,EAAE,OAAO,cAAc,QAAQ,EAAE;AAAA,EAC7C,QAAQ,EAAE,OAAO,WAAW,QAAQ,EAAE;AAAA,EACtC,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,OAAK,IAAI,MAAM;AAC7C,eAAO,CAAC,KAAK,QAAQ;AAAA,MACvB,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO;AACT;;;AhBTA,IAAM,oBAAoB,CAAC,SAAkB,WAAkC;AAC7E,QAAM,EAAE,SAAS,SAAS,KAAK,IAAI;AACnC,SAAO,EAAE,SAAS,SAAS,QAAQ,gBAAgB,QAAQ,KAAK;AAClE;AAEO,IAAM,aAAa,CAAC,YAA0C,QAAQ,WAAW;AAEjF,IAAM,kBAAN,cAA6F,gBAAyB;AAAA,EAC3H,OAAyB,gBAA0B,CAAC,GAAG,MAAM,eAAe,2BAA2B;AAAA,EACvG,OAAyB,sBAA8B;AAAA,EAEpC,gBAAgB,OAAO,aAA6C;AACrF,UAAM,WAAW,UAAU,OAAO,SAAS,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,eAAe,SAAS,OAAO;AAAA,QACjC,CAAC;AACD,eAAO,EAAE,GAAG,OAAO,SAAS,CAAC,UAAU,EAAE;AAAA,MAC3C,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AACF;;;AiB5CA,SAAS,iBAAiB;AAC1B,SAAS,wBAAwB;AACjC,SAAS,qCAAqC;AAIvC,IAAM,wBAAwB,MACnC;AAAA,EACE,EAAE,UAAU,EAAE,CAAC,SAAS,GAAG,EAAE,GAAG,QAAQ,iBAAiB;AAAA,EACzD;AAAA,IACE,SAAS,OAAO,WAAW;AACzB,YAAM,SAAS,MAAM,gBAAgB,OAAO,MAAM;AAClD,aAAO;AAAA,IACT;AAAA,EACF;AACF;","names":["PASS","PASS","incrementPossible","incrementTotal","incrementTotalAndPossible","incrementPossible","incrementTotal","incrementTotalAndPossible","PASS","incrementTotal","incrementTotal","incrementTotal","incrementTotal","PASS","PASS","incrementTotal","PASS","incrementTotal","incrementTotal","PASS","PASS","incrementTotal","FAIL","PASS","FAIL","PASS","FAIL","PASS"]}
|