@xyo-network/crypto-nft-diviner-score-plugin 2.99.5 → 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/browser/index.mjs +131 -237
- package/dist/browser/index.mjs.map +1 -1
- package/dist/neutral/index.d.ts +102 -4
- package/dist/neutral/index.mjs +131 -237
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/node/index.d.ts +102 -4
- package/dist/node/index.mjs +153 -280
- package/dist/node/index.mjs.map +1 -1
- package/package.json +17 -37
- package/src/index.ts +1 -1
- package/src/lib/rating/criteria/scoring/metadata/lib/urlHelpers.ts +0 -2
- 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 -479
- 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 -8
- 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 -8
- 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 -8
- 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 -479
- 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 -8
- 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 -8
- 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 -8
- 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 -508
- 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 -8
- 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 -8
- 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 -8
- 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/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","import { URL } from '@xylabs/url'\n\nexport const web3Protocols = ['ipfs:', 'ar:']\n\nexport const toUrl = (url?: string | null): URL | undefined => {\n if (!url) return undefined\n try {\n return new URL(url)\n } catch {\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":["isNftInfo","NftScoreDivinerConfigSchema","NftScoreSchema","AbstractDiviner","PayloadBuilder","FAIL","PASS","isAddress","scoreContractAddress","nft","address","FAIL","isAddress","PASS","incrementPossible","incrementTotal","incrementTotalAndPossible","PASS","URL","web3Protocols","toUrl","url","undefined","URL","isValidUrl","isWeb3","some","protocol","isSecure","url","isWeb3","toUrl","protocol","scoreNftAnimationUrl","nft","scoreAnimationUrl","metadata","animation_url","score","undefined","PASS","incrementPossible","incrementTotalAndPossible","isValidUrl","isSecure","isWeb3","incrementTotal","incrementPossible","incrementTotal","incrementTotalAndPossible","isDate","value","isNumber","Date","isPercentage","isNonEmptyString","length","isNonEmptyStringOrNumber","evaluateNftAttributes","nft","metadata","attributes","evaluateAttributes","Array","isArray","score","attribute","attributeTotal","attributePossible","evaluateAttribute","incrementTotalAndPossible","max_value","trait_type","incrementTotal","incrementPossible","validDisplayType","undefined","display_type","incrementPossible","incrementTotal","incrementTotalAndPossible","PASS","isHexColor","scoreNftBackgroundColor","nft","scoreBackgroundColor","metadata","background_color","score","undefined","PASS","incrementPossible","incrementTotalAndPossible","test","toUpperCase","incrementTotal","incrementTotal","scoreNftDescription","nft","scoreDescription","metadata","description","score","incrementTotal","incrementTotal","scoreNftExternalUrl","nft","scoreExternalUrl","metadata","external_url","score","undefined","isValidUrl","incrementTotal","isSecure","incrementTotal","PASS","MaxPossibleImageScore","scoreNftImage","nft","metadata","image","scoreImage","image_data","PASS","score","isValidUrl","incrementTotal","isSecure","isWeb3","PASS","parse","MaxPossibleImageDataScore","isValidImageData","image_data","startsWith","parse","scoreNftImageData","nft","metadata","scoreImageData","image","PASS","incrementTotal","scoreNftName","nft","scoreName","metadata","name","score","incrementTotal","incrementTotal","PASS","scoreNftYoutubeUrl","nft","scoreYoutubeUrl","metadata","youtube_url","undefined","PASS","score","isValidUrl","incrementTotal","isSecure","FAIL","PASS","scoreSupply","nft","supply","FAIL","BigInt","tokenId","PASS","FAIL","PASS","scoreTokenId","nft","tokenId","FAIL","BigInt","PASS","FAIL","PASS","scoreType","nft","type","FAIL","toUpperCase","PASS","attributesScoringCriteria","Attributes","score","evaluateNftAttributes","weight","metadataScoringCriteria","scoreNftAnimationUrl","scoreNftBackgroundColor","scoreNftDescription","scoreNftExternalUrl","scoreNftImage","scoreNftImageData","scoreNftName","scoreNftYoutubeUrl","scoringCriteria","scoreContractAddress","scoreSupply","scoreTokenId","scoreType","analyzeNft","nft","result","Object","fromEntries","Promise","all","entries","scoringCriteria","map","key","score","weight","rawScore","weighted","v","toNftScorePayload","nftInfo","scores","address","chainId","type","schema","NftScoreSchema","isNftScore","payload","NftScoreDiviner","AbstractDiviner","divineHandler","payloads","nftInfos","filter","isNftInfo","results","Promise","all","map","score","sourceHash","analyzeNft","PayloadBuilder","dataHash","sources","configSchemas","NftScoreDivinerConfigSchema","defaultConfigSchema","NftSchema","PayloadSetSchema","createPayloadSetDivinerPlugin","NftScoreDivinerPlugin","createPayloadSetDivinerPlugin","required","NftSchema","schema","PayloadSetSchema","diviner","params","result","NftScoreDiviner","create"]}
|
|
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"]}
|
package/package.json
CHANGED
|
@@ -10,56 +10,36 @@
|
|
|
10
10
|
"url": "https://github.com/XYOracleNetwork/plugins/issues"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@
|
|
14
|
-
"@xyo-network/crypto-nft-
|
|
15
|
-
"@xyo-network/
|
|
16
|
-
"@xyo-network/diviner-
|
|
17
|
-
"@xyo-network/
|
|
18
|
-
"@xyo-network/
|
|
19
|
-
"@xyo-network/payload-
|
|
20
|
-
"@xyo-network/
|
|
21
|
-
"@xyo-network/payloadset-plugin": "^2.111.2",
|
|
13
|
+
"@xyo-network/crypto-nft-payload-plugin": "^3.0.0",
|
|
14
|
+
"@xyo-network/crypto-nft-score-model": "^3.0.0",
|
|
15
|
+
"@xyo-network/diviner-abstract": "^3.0.1",
|
|
16
|
+
"@xyo-network/diviner-model": "^3.0.1",
|
|
17
|
+
"@xyo-network/module-model": "^3.0.1",
|
|
18
|
+
"@xyo-network/payload-builder": "^3.0.1",
|
|
19
|
+
"@xyo-network/payload-model": "^3.0.1",
|
|
20
|
+
"@xyo-network/payloadset-plugin": "^3.0.1",
|
|
22
21
|
"ethers": "^6.13.2",
|
|
23
22
|
"svg-parser": "^2.0.4"
|
|
24
23
|
},
|
|
25
24
|
"devDependencies": {
|
|
26
25
|
"@types/svg-parser": "^2.0.6",
|
|
27
|
-
"@xylabs/jest-helpers": "^
|
|
28
|
-
"@xylabs/ts-scripts-yarn3": "^
|
|
29
|
-
"@xylabs/tsconfig": "^
|
|
30
|
-
"@xyo-network/payload-wrapper": "^
|
|
26
|
+
"@xylabs/jest-helpers": "^4.0.0",
|
|
27
|
+
"@xylabs/ts-scripts-yarn3": "^4.0.0-rc.15",
|
|
28
|
+
"@xylabs/tsconfig": "^4.0.0-rc.15",
|
|
29
|
+
"@xyo-network/payload-wrapper": "^3.0.1",
|
|
31
30
|
"jest": "^29.7.0",
|
|
32
31
|
"typescript": "^5.5.4"
|
|
33
32
|
},
|
|
34
33
|
"description": "Typescript/Javascript Plugins for XYO Platform",
|
|
35
|
-
"types": "dist/
|
|
34
|
+
"types": "dist/neutral/index.d.ts",
|
|
36
35
|
"exports": {
|
|
37
36
|
".": {
|
|
38
|
-
"
|
|
39
|
-
|
|
40
|
-
"types": "./dist/browser/index.d.cts",
|
|
41
|
-
"default": "./dist/browser/index.cjs"
|
|
42
|
-
},
|
|
43
|
-
"import": {
|
|
44
|
-
"types": "./dist/browser/index.d.mts",
|
|
45
|
-
"default": "./dist/browser/index.mjs"
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
"node": {
|
|
49
|
-
"require": {
|
|
50
|
-
"types": "./dist/node/index.d.cts",
|
|
51
|
-
"default": "./dist/node/index.cjs"
|
|
52
|
-
},
|
|
53
|
-
"import": {
|
|
54
|
-
"types": "./dist/node/index.d.mts",
|
|
55
|
-
"default": "./dist/node/index.mjs"
|
|
56
|
-
}
|
|
57
|
-
}
|
|
37
|
+
"types": "./dist/neutral/index.d.ts",
|
|
38
|
+
"default": "./dist/neutral/index.mjs"
|
|
58
39
|
},
|
|
59
40
|
"./package.json": "./package.json"
|
|
60
41
|
},
|
|
61
|
-
"
|
|
62
|
-
"module": "dist/node/index.mjs",
|
|
42
|
+
"module": "dist/neutral/index.mjs",
|
|
63
43
|
"homepage": "https://xyo.network",
|
|
64
44
|
"license": "LGPL-3.0-only",
|
|
65
45
|
"publishConfig": {
|
|
@@ -70,6 +50,6 @@
|
|
|
70
50
|
"url": "https://github.com/XYOracleNetwork/plugins.git"
|
|
71
51
|
},
|
|
72
52
|
"sideEffects": false,
|
|
73
|
-
"version": "
|
|
53
|
+
"version": "3.0.0",
|
|
74
54
|
"type": "module"
|
|
75
55
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { NftScore, NftScoreDivinerConfig } from '@xyo-network/crypto-nft-payload-plugin';
|
|
2
|
-
import { AbstractDiviner } from '@xyo-network/diviner-abstract';
|
|
3
|
-
import { DivinerParams } from '@xyo-network/diviner-model';
|
|
4
|
-
import { AnyConfigSchema } from '@xyo-network/module-model';
|
|
5
|
-
import { Payload, Schema } from '@xyo-network/payload-model';
|
|
6
|
-
export type NftScoreDivinerParams = DivinerParams<AnyConfigSchema<NftScoreDivinerConfig>>;
|
|
7
|
-
export declare const isNftScore: (payload: Payload) => payload is NftScore;
|
|
8
|
-
export declare class NftScoreDiviner<TParams extends NftScoreDivinerParams = NftScoreDivinerParams> extends AbstractDiviner<TParams> {
|
|
9
|
-
static readonly configSchemas: Schema[];
|
|
10
|
-
static readonly defaultConfigSchema: Schema;
|
|
11
|
-
protected divineHandler: (payloads?: Payload[]) => Promise<Payload[]>;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=Diviner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,QAAQ,EACR,qBAAqB,EAGtB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAI5D,MAAM,MAAM,qBAAqB,GAAG,aAAa,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,CAAA;AAOzF,eAAO,MAAM,UAAU,YAAa,OAAO,KAAG,OAAO,IAAI,QAA6C,CAAA;AAEtG,qBAAa,eAAe,CAAC,OAAO,SAAS,qBAAqB,GAAG,qBAAqB,CAAE,SAAQ,eAAe,CAAC,OAAO,CAAC;IAC1H,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAwD;IACxG,gBAAyB,mBAAmB,EAAE,MAAM,CAA8B;IAElF,UAAmB,aAAa,cAAqB,OAAO,EAAE,KAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAclF;CACF"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { NftScore, NftScoreDivinerConfig } from '@xyo-network/crypto-nft-payload-plugin';
|
|
2
|
-
import { AbstractDiviner } from '@xyo-network/diviner-abstract';
|
|
3
|
-
import { DivinerParams } from '@xyo-network/diviner-model';
|
|
4
|
-
import { AnyConfigSchema } from '@xyo-network/module-model';
|
|
5
|
-
import { Payload, Schema } from '@xyo-network/payload-model';
|
|
6
|
-
export type NftScoreDivinerParams = DivinerParams<AnyConfigSchema<NftScoreDivinerConfig>>;
|
|
7
|
-
export declare const isNftScore: (payload: Payload) => payload is NftScore;
|
|
8
|
-
export declare class NftScoreDiviner<TParams extends NftScoreDivinerParams = NftScoreDivinerParams> extends AbstractDiviner<TParams> {
|
|
9
|
-
static readonly configSchemas: Schema[];
|
|
10
|
-
static readonly defaultConfigSchema: Schema;
|
|
11
|
-
protected divineHandler: (payloads?: Payload[]) => Promise<Payload[]>;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=Diviner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,QAAQ,EACR,qBAAqB,EAGtB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAI5D,MAAM,MAAM,qBAAqB,GAAG,aAAa,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,CAAA;AAOzF,eAAO,MAAM,UAAU,YAAa,OAAO,KAAG,OAAO,IAAI,QAA6C,CAAA;AAEtG,qBAAa,eAAe,CAAC,OAAO,SAAS,qBAAqB,GAAG,qBAAqB,CAAE,SAAQ,eAAe,CAAC,OAAO,CAAC;IAC1H,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAwD;IACxG,gBAAyB,mBAAmB,EAAE,MAAM,CAA8B;IAElF,UAAmB,aAAa,cAAqB,OAAO,EAAE,KAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAclF;CACF"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { NftScore, NftScoreDivinerConfig } from '@xyo-network/crypto-nft-payload-plugin';
|
|
2
|
-
import { AbstractDiviner } from '@xyo-network/diviner-abstract';
|
|
3
|
-
import { DivinerParams } from '@xyo-network/diviner-model';
|
|
4
|
-
import { AnyConfigSchema } from '@xyo-network/module-model';
|
|
5
|
-
import { Payload, Schema } from '@xyo-network/payload-model';
|
|
6
|
-
export type NftScoreDivinerParams = DivinerParams<AnyConfigSchema<NftScoreDivinerConfig>>;
|
|
7
|
-
export declare const isNftScore: (payload: Payload) => payload is NftScore;
|
|
8
|
-
export declare class NftScoreDiviner<TParams extends NftScoreDivinerParams = NftScoreDivinerParams> extends AbstractDiviner<TParams> {
|
|
9
|
-
static readonly configSchemas: Schema[];
|
|
10
|
-
static readonly defaultConfigSchema: Schema;
|
|
11
|
-
protected divineHandler: (payloads?: Payload[]) => Promise<Payload[]>;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=Diviner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,QAAQ,EACR,qBAAqB,EAGtB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAI5D,MAAM,MAAM,qBAAqB,GAAG,aAAa,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,CAAA;AAOzF,eAAO,MAAM,UAAU,YAAa,OAAO,KAAG,OAAO,IAAI,QAA6C,CAAA;AAEtG,qBAAa,eAAe,CAAC,OAAO,SAAS,qBAAqB,GAAG,qBAAqB,CAAE,SAAQ,eAAe,CAAC,OAAO,CAAC;IAC1H,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAwD;IACxG,gBAAyB,mBAAmB,EAAE,MAAM,CAA8B;IAElF,UAAmB,aAAa,cAAqB,OAAO,EAAE,KAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAclF;CACF"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { NftScoreDiviner } from './Diviner.ts';
|
|
2
|
-
export declare const NftScoreDivinerPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetDivinerPlugin<NftScoreDiviner<import("@xylabs/object").BaseParamsFields & {
|
|
3
|
-
account?: import("@xyo-network/account-model").AccountInstance | "random";
|
|
4
|
-
addToResolvers?: boolean;
|
|
5
|
-
additionalSigners?: import("@xyo-network/account-model").AccountInstance[];
|
|
6
|
-
allowNameResolution?: boolean;
|
|
7
|
-
config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
|
|
8
|
-
schema: "network.xyo.crypto.nft.score.diviner.config";
|
|
9
|
-
} & {
|
|
10
|
-
schema: import("@xyo-network/crypto-nft-payload-plugin").NftScoreDivinerConfigSchema;
|
|
11
|
-
}, "schema"> & {
|
|
12
|
-
schema: "network.xyo.crypto.nft.score.diviner.config";
|
|
13
|
-
}, "schema"> & {
|
|
14
|
-
schema: string;
|
|
15
|
-
};
|
|
16
|
-
ephemeralQueryAccountEnabled?: boolean;
|
|
17
|
-
moduleIdentifierTransformers?: import("@xyo-network/module-model").ModuleIdentifierTransformer[];
|
|
18
|
-
}>>;
|
|
19
|
-
//# sourceMappingURL=Plugin.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;GAS/B,CAAA"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { NftScoreDiviner } from './Diviner.ts';
|
|
2
|
-
export declare const NftScoreDivinerPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetDivinerPlugin<NftScoreDiviner<import("@xylabs/object").BaseParamsFields & {
|
|
3
|
-
account?: import("@xyo-network/account-model").AccountInstance | "random";
|
|
4
|
-
addToResolvers?: boolean;
|
|
5
|
-
additionalSigners?: import("@xyo-network/account-model").AccountInstance[];
|
|
6
|
-
allowNameResolution?: boolean;
|
|
7
|
-
config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
|
|
8
|
-
schema: "network.xyo.crypto.nft.score.diviner.config";
|
|
9
|
-
} & {
|
|
10
|
-
schema: import("@xyo-network/crypto-nft-payload-plugin").NftScoreDivinerConfigSchema;
|
|
11
|
-
}, "schema"> & {
|
|
12
|
-
schema: "network.xyo.crypto.nft.score.diviner.config";
|
|
13
|
-
}, "schema"> & {
|
|
14
|
-
schema: string;
|
|
15
|
-
};
|
|
16
|
-
ephemeralQueryAccountEnabled?: boolean;
|
|
17
|
-
moduleIdentifierTransformers?: import("@xyo-network/module-model").ModuleIdentifierTransformer[];
|
|
18
|
-
}>>;
|
|
19
|
-
//# sourceMappingURL=Plugin.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;GAS/B,CAAA"}
|
package/dist/browser/Plugin.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { NftScoreDiviner } from './Diviner.ts';
|
|
2
|
-
export declare const NftScoreDivinerPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetDivinerPlugin<NftScoreDiviner<import("@xylabs/object").BaseParamsFields & {
|
|
3
|
-
account?: import("@xyo-network/account-model").AccountInstance | "random";
|
|
4
|
-
addToResolvers?: boolean;
|
|
5
|
-
additionalSigners?: import("@xyo-network/account-model").AccountInstance[];
|
|
6
|
-
allowNameResolution?: boolean;
|
|
7
|
-
config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
|
|
8
|
-
schema: "network.xyo.crypto.nft.score.diviner.config";
|
|
9
|
-
} & {
|
|
10
|
-
schema: import("@xyo-network/crypto-nft-payload-plugin").NftScoreDivinerConfigSchema;
|
|
11
|
-
}, "schema"> & {
|
|
12
|
-
schema: "network.xyo.crypto.nft.score.diviner.config";
|
|
13
|
-
}, "schema"> & {
|
|
14
|
-
schema: string;
|
|
15
|
-
};
|
|
16
|
-
ephemeralQueryAccountEnabled?: boolean;
|
|
17
|
-
moduleIdentifierTransformers?: import("@xyo-network/module-model").ModuleIdentifierTransformer[];
|
|
18
|
-
}>>;
|
|
19
|
-
//# sourceMappingURL=Plugin.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;GAS/B,CAAA"}
|