@xyo-network/crypto-nft-diviner-score-plugin 2.70.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +165 -0
- package/README.md +13 -0
- package/dist/cjs/Diviner.js +30 -0
- package/dist/cjs/Diviner.js.map +1 -0
- package/dist/cjs/Plugin.js +16 -0
- package/dist/cjs/Plugin.js.map +1 -0
- package/dist/cjs/index.js +11 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lib/index.js +5 -0
- package/dist/cjs/lib/index.js.map +1 -0
- package/dist/cjs/lib/rating/analyzeNft.js +19 -0
- package/dist/cjs/lib/rating/analyzeNft.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/index.js +5 -0
- package/dist/cjs/lib/rating/criteria/index.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/contract.js +16 -0
- package/dist/cjs/lib/rating/criteria/scoring/contract.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/index.js +9 -0
- package/dist/cjs/lib/rating/criteria/scoring/index.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/lib/index.js +6 -0
- package/dist/cjs/lib/rating/criteria/scoring/lib/index.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.js +10 -0
- package/dist/cjs/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/lib/toBigNumber.js +14 -0
- package/dist/cjs/lib/rating/criteria/scoring/lib/toBigNumber.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/animationUrl.js +30 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/animationUrl.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.js +86 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/attributes/index.js +5 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/attributes/index.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/backgroundColor.js +24 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/backgroundColor.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/description.js +17 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/description.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/externalUrl.js +21 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/externalUrl.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/image.js +33 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/image.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/imageData.js +40 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/imageData.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/index.js +13 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/index.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/lib/index.js +5 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/lib/index.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/lib/urlHelpers.js +25 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/lib/urlHelpers.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/name.js +17 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/name.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/youtubeUrl.js +23 -0
- package/dist/cjs/lib/rating/criteria/scoring/metadata/youtubeUrl.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/supply.js +20 -0
- package/dist/cjs/lib/rating/criteria/scoring/supply.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/tokenId.js +26 -0
- package/dist/cjs/lib/rating/criteria/scoring/tokenId.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoring/type.js +16 -0
- package/dist/cjs/lib/rating/criteria/scoring/type.js.map +1 -0
- package/dist/cjs/lib/rating/criteria/scoringCriteria.js +10 -0
- package/dist/cjs/lib/rating/criteria/scoringCriteria.js.map +1 -0
- package/dist/cjs/lib/rating/index.js +6 -0
- package/dist/cjs/lib/rating/index.js.map +1 -0
- package/dist/cjs/lib/rating/score.js +23 -0
- package/dist/cjs/lib/rating/score.js.map +1 -0
- package/dist/esm/Diviner.js +20 -0
- package/dist/esm/Diviner.js.map +1 -0
- package/dist/esm/Plugin.js +11 -0
- package/dist/esm/Plugin.js.map +1 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/index.js +2 -0
- package/dist/esm/lib/index.js.map +1 -0
- package/dist/esm/lib/rating/analyzeNft.js +14 -0
- package/dist/esm/lib/rating/analyzeNft.js.map +1 -0
- package/dist/esm/lib/rating/criteria/index.js +2 -0
- package/dist/esm/lib/rating/criteria/index.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/contract.js +12 -0
- package/dist/esm/lib/rating/criteria/scoring/contract.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/index.js +6 -0
- package/dist/esm/lib/rating/criteria/scoring/index.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/lib/index.js +3 -0
- package/dist/esm/lib/rating/criteria/scoring/lib/index.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.js +6 -0
- package/dist/esm/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/lib/toBigNumber.js +10 -0
- package/dist/esm/lib/rating/criteria/scoring/lib/toBigNumber.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/animationUrl.js +24 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/animationUrl.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.js +80 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/attributes/index.js +2 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/attributes/index.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/backgroundColor.js +18 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/backgroundColor.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/description.js +11 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/description.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/externalUrl.js +15 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/externalUrl.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/image.js +27 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/image.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/imageData.js +34 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/imageData.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/index.js +10 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/index.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/lib/index.js +2 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/lib/index.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/lib/urlHelpers.js +17 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/lib/urlHelpers.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/name.js +11 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/name.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/youtubeUrl.js +17 -0
- package/dist/esm/lib/rating/criteria/scoring/metadata/youtubeUrl.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/supply.js +16 -0
- package/dist/esm/lib/rating/criteria/scoring/supply.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/tokenId.js +22 -0
- package/dist/esm/lib/rating/criteria/scoring/tokenId.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoring/type.js +12 -0
- package/dist/esm/lib/rating/criteria/scoring/type.js.map +1 -0
- package/dist/esm/lib/rating/criteria/scoringCriteria.js +23 -0
- package/dist/esm/lib/rating/criteria/scoringCriteria.js.map +1 -0
- package/dist/esm/lib/rating/index.js +3 -0
- package/dist/esm/lib/rating/index.js.map +1 -0
- package/dist/esm/lib/rating/score.js +17 -0
- package/dist/esm/lib/rating/score.js.map +1 -0
- package/dist/types/Diviner.d.ts +16 -0
- package/dist/types/Diviner.d.ts.map +1 -0
- package/dist/types/Plugin.d.ts +47 -0
- package/dist/types/Plugin.d.ts.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/lib/index.d.ts +2 -0
- package/dist/types/lib/index.d.ts.map +1 -0
- package/dist/types/lib/rating/analyzeNft.d.ts +9 -0
- package/dist/types/lib/rating/analyzeNft.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/index.d.ts +2 -0
- package/dist/types/lib/rating/criteria/index.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/contract.d.ts +3 -0
- package/dist/types/lib/rating/criteria/scoring/contract.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/index.d.ts +6 -0
- package/dist/types/lib/rating/criteria/scoring/index.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/lib/index.d.ts +3 -0
- package/dist/types/lib/rating/criteria/scoring/lib/index.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.d.ts +2 -0
- package/dist/types/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/lib/toBigNumber.d.ts +3 -0
- package/dist/types/lib/rating/criteria/scoring/lib/toBigNumber.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/animationUrl.d.ts +5 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/animationUrl.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.ts +6 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/attributes/index.d.ts +2 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/attributes/index.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/backgroundColor.d.ts +5 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/backgroundColor.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/description.d.ts +5 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/description.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/externalUrl.d.ts +5 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/externalUrl.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/image.d.ts +5 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/image.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/imageData.d.ts +5 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/imageData.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/index.d.ts +10 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/index.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/lib/index.d.ts +2 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/lib/index.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.ts +8 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/name.d.ts +5 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/name.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/youtubeUrl.d.ts +5 -0
- package/dist/types/lib/rating/criteria/scoring/metadata/youtubeUrl.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/supply.d.ts +3 -0
- package/dist/types/lib/rating/criteria/scoring/supply.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/tokenId.d.ts +9 -0
- package/dist/types/lib/rating/criteria/scoring/tokenId.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoring/type.d.ts +3 -0
- package/dist/types/lib/rating/criteria/scoring/type.d.ts.map +1 -0
- package/dist/types/lib/rating/criteria/scoringCriteria.d.ts +55 -0
- package/dist/types/lib/rating/criteria/scoringCriteria.d.ts.map +1 -0
- package/dist/types/lib/rating/index.d.ts +3 -0
- package/dist/types/lib/rating/index.d.ts.map +1 -0
- package/dist/types/lib/rating/score.d.ts +18 -0
- package/dist/types/lib/rating/score.d.ts.map +1 -0
- package/package.json +68 -0
- package/src/Diviner.ts +37 -0
- package/src/Plugin.ts +16 -0
- package/src/index.ts +9 -0
- package/src/lib/index.ts +1 -0
- package/src/lib/rating/analyzeNft.ts +28 -0
- package/src/lib/rating/criteria/index.ts +1 -0
- package/src/lib/rating/criteria/scoring/contract.ts +11 -0
- package/src/lib/rating/criteria/scoring/index.ts +5 -0
- package/src/lib/rating/criteria/scoring/lib/index.ts +2 -0
- package/src/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.ts +6 -0
- package/src/lib/rating/criteria/scoring/lib/toBigNumber.ts +9 -0
- package/src/lib/rating/criteria/scoring/metadata/animationUrl.ts +22 -0
- package/src/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.ts +86 -0
- package/src/lib/rating/criteria/scoring/metadata/attributes/index.ts +1 -0
- package/src/lib/rating/criteria/scoring/metadata/backgroundColor.ts +19 -0
- package/src/lib/rating/criteria/scoring/metadata/description.ts +13 -0
- package/src/lib/rating/criteria/scoring/metadata/externalUrl.ts +15 -0
- package/src/lib/rating/criteria/scoring/metadata/image.ts +27 -0
- package/src/lib/rating/criteria/scoring/metadata/imageData.ts +36 -0
- package/src/lib/rating/criteria/scoring/metadata/index.ts +9 -0
- package/src/lib/rating/criteria/scoring/metadata/lib/index.ts +1 -0
- package/src/lib/rating/criteria/scoring/metadata/lib/urlHelpers.ts +17 -0
- package/src/lib/rating/criteria/scoring/metadata/name.ts +12 -0
- package/src/lib/rating/criteria/scoring/metadata/spec/testHelpers.ts +29 -0
- package/src/lib/rating/criteria/scoring/metadata/youtubeUrl.ts +16 -0
- package/src/lib/rating/criteria/scoring/supply.ts +15 -0
- package/src/lib/rating/criteria/scoring/tokenId.ts +21 -0
- package/src/lib/rating/criteria/scoring/type.ts +11 -0
- package/src/lib/rating/criteria/scoringCriteria.ts +39 -0
- package/src/lib/rating/index.ts +2 -0
- package/src/lib/rating/score.ts +33 -0
- package/typedoc.json +5 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { NftInfo, OpenSeaNftInfo } from '@xyo-network/crypto-nft-payload-plugin'
|
|
2
|
+
|
|
3
|
+
import { incrementTotal, ScaledScore } from '../../../score'
|
|
4
|
+
|
|
5
|
+
export const scoreNftName = (nft: NftInfo | OpenSeaNftInfo): ScaledScore => {
|
|
6
|
+
return scoreName(nft.metadata?.name)
|
|
7
|
+
}
|
|
8
|
+
export const scoreName = (name: unknown): ScaledScore => {
|
|
9
|
+
const score: ScaledScore = [0, 1]
|
|
10
|
+
if (!name || typeof name !== 'string') return score
|
|
11
|
+
return incrementTotal(score)
|
|
12
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { PASS, ScaledScore } from '../../../../score'
|
|
2
|
+
|
|
3
|
+
export const expectMaxPossibleScore = (score: ScaledScore) => {
|
|
4
|
+
const [total, possible] = score
|
|
5
|
+
expect(total).toBeNumber()
|
|
6
|
+
expect(total).toBePositive()
|
|
7
|
+
expect(possible).toBeNumber()
|
|
8
|
+
expect(possible).toBePositive()
|
|
9
|
+
expect(total).toEqual(possible)
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export const expectLoweredScore = (score: ScaledScore) => {
|
|
13
|
+
const [total, possible] = score
|
|
14
|
+
expect(total).toBeNumber()
|
|
15
|
+
expect(total).not.toBeNegative()
|
|
16
|
+
expect(possible).toBeNumber()
|
|
17
|
+
expect(possible).toBePositive()
|
|
18
|
+
expect(total).toBeLessThan(possible)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const expectMiniumScore = (score: ScaledScore) => {
|
|
22
|
+
const [total] = score
|
|
23
|
+
expectLoweredScore(score)
|
|
24
|
+
expect(total).toBe(0)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export const expectNoScore = (score: ScaledScore) => {
|
|
28
|
+
expect(score).toEqual(PASS)
|
|
29
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { NftInfo, OpenSeaNftInfo } from '@xyo-network/crypto-nft-payload-plugin'
|
|
2
|
+
|
|
3
|
+
import { incrementTotal, PASS, ScaledScore } from '../../../score'
|
|
4
|
+
import { isSecure, isValidUrl } from './lib'
|
|
5
|
+
|
|
6
|
+
export const scoreNftYoutubeUrl = (nft: NftInfo | OpenSeaNftInfo): ScaledScore => {
|
|
7
|
+
return scoreYoutubeUrl(nft?.metadata?.youtube_url)
|
|
8
|
+
}
|
|
9
|
+
export const scoreYoutubeUrl = (youtube_url: unknown): ScaledScore => {
|
|
10
|
+
if (youtube_url === undefined || youtube_url === null) return PASS
|
|
11
|
+
const score: ScaledScore = [0, 2]
|
|
12
|
+
if (typeof youtube_url !== 'string' || !isValidUrl(youtube_url)) return score
|
|
13
|
+
incrementTotal(score)
|
|
14
|
+
if (!isSecure(youtube_url)) return score
|
|
15
|
+
return incrementTotal(score)
|
|
16
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { NftInfo } from '@xyo-network/crypto-nft-payload-plugin'
|
|
2
|
+
|
|
3
|
+
import { FAIL, PASS, PassFailScoringFunction } from '../../score'
|
|
4
|
+
import { isValidPositiveBigNumber } from './lib'
|
|
5
|
+
|
|
6
|
+
export const scoreSupply: PassFailScoringFunction = (nft: NftInfo) => {
|
|
7
|
+
if (!nft.supply) return FAIL
|
|
8
|
+
if (typeof nft.supply !== 'string') return FAIL
|
|
9
|
+
try {
|
|
10
|
+
// Check for positive BigNumber since data type is uint256
|
|
11
|
+
return isValidPositiveBigNumber(nft.supply) ? PASS : FAIL
|
|
12
|
+
} catch (_error) {
|
|
13
|
+
return FAIL
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { NftInfo } from '@xyo-network/crypto-nft-payload-plugin'
|
|
2
|
+
|
|
3
|
+
import { FAIL, PASS, PassFailScoringFunction } from '../../score'
|
|
4
|
+
import { isValidPositiveBigNumber } from './lib'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Callers SHALL NOT assume that ID numbers have any specific pattern to them, and
|
|
8
|
+
* MUST treat the ID as a "black box"
|
|
9
|
+
* @param nft
|
|
10
|
+
* @returns
|
|
11
|
+
*/
|
|
12
|
+
export const scoreTokenId: PassFailScoringFunction = (nft: NftInfo) => {
|
|
13
|
+
if (!nft.tokenId) return FAIL
|
|
14
|
+
if (typeof nft.tokenId !== 'string') return FAIL
|
|
15
|
+
try {
|
|
16
|
+
// Check for positive BigNumber since data type is uint256
|
|
17
|
+
return isValidPositiveBigNumber(nft.tokenId) ? PASS : FAIL
|
|
18
|
+
} catch (_error) {
|
|
19
|
+
return FAIL
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { NftInfo } from '@xyo-network/crypto-nft-payload-plugin'
|
|
2
|
+
|
|
3
|
+
import { FAIL, PASS, PassFailScoringFunction } from '../../score'
|
|
4
|
+
|
|
5
|
+
export const scoreType: PassFailScoringFunction = (nft: NftInfo) => {
|
|
6
|
+
if (!nft.type) return FAIL
|
|
7
|
+
if (typeof nft.type !== 'string') return FAIL
|
|
8
|
+
const type = nft.type.toUpperCase()
|
|
9
|
+
if (type !== 'ERC721' && type !== 'ERC1155') return FAIL
|
|
10
|
+
return PASS
|
|
11
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import {
|
|
2
|
+
evaluateNftAttributes,
|
|
3
|
+
scoreContractAddress,
|
|
4
|
+
scoreNftAnimationUrl,
|
|
5
|
+
scoreNftBackgroundColor,
|
|
6
|
+
scoreNftDescription,
|
|
7
|
+
scoreNftExternalUrl,
|
|
8
|
+
scoreNftImage,
|
|
9
|
+
scoreNftImageData,
|
|
10
|
+
scoreNftName,
|
|
11
|
+
scoreNftYoutubeUrl,
|
|
12
|
+
scoreSupply,
|
|
13
|
+
scoreTokenId,
|
|
14
|
+
scoreType,
|
|
15
|
+
} from './scoring'
|
|
16
|
+
|
|
17
|
+
const attributesScoringCriteria = {
|
|
18
|
+
Attributes: { score: evaluateNftAttributes, weight: 1 },
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const metadataScoringCriteria = {
|
|
22
|
+
'Animation URL': { score: scoreNftAnimationUrl, weight: 1 },
|
|
23
|
+
'Background Color': { score: scoreNftBackgroundColor, weight: 1 },
|
|
24
|
+
Description: { score: scoreNftDescription, weight: 1 },
|
|
25
|
+
'External Url': { score: scoreNftExternalUrl, weight: 1 },
|
|
26
|
+
Image: { score: scoreNftImage, weight: 1 },
|
|
27
|
+
'Image Data': { score: scoreNftImageData, weight: 1 },
|
|
28
|
+
Name: { score: scoreNftName, weight: 1 },
|
|
29
|
+
'YouTube URL': { score: scoreNftYoutubeUrl, weight: 1 },
|
|
30
|
+
...attributesScoringCriteria,
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export const scoringCriteria = {
|
|
34
|
+
'Contract Address': { score: scoreContractAddress, weight: 1 },
|
|
35
|
+
Supply: { score: scoreSupply, weight: 1 },
|
|
36
|
+
'Token Id': { score: scoreTokenId, weight: 1 },
|
|
37
|
+
Type: { score: scoreType, weight: 1 },
|
|
38
|
+
...metadataScoringCriteria,
|
|
39
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { NftInfo } from '@xyo-network/crypto-nft-payload-plugin'
|
|
2
|
+
|
|
3
|
+
export type PassFailScore = [total: number, possible: 1]
|
|
4
|
+
export const PASS: PassFailScore = [1, 1]
|
|
5
|
+
export const FAIL: PassFailScore = [0, 1]
|
|
6
|
+
export type ScaledScore = [total: number, possible: number]
|
|
7
|
+
export const SKIP: ScaledScore = [0, 0]
|
|
8
|
+
export type Score = ScaledScore | PassFailScore
|
|
9
|
+
|
|
10
|
+
export type PassFailScoringFunction = (nft: NftInfo) => PassFailScore | Promise<PassFailScore>
|
|
11
|
+
export type ScaledScoringFunction = (nft: NftInfo) => Score | Promise<Score>
|
|
12
|
+
export type ScoringFunction = PassFailScoringFunction | ScaledScoringFunction
|
|
13
|
+
|
|
14
|
+
export interface WeightedScoringCriteria {
|
|
15
|
+
score: ScoringFunction
|
|
16
|
+
weight: number
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export const incrementTotal = (score: ScaledScore, by = 1): ScaledScore => {
|
|
20
|
+
score[0] += by
|
|
21
|
+
return score
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export const incrementPossible = (score: ScaledScore, by = 1): ScaledScore => {
|
|
25
|
+
score[1] += by
|
|
26
|
+
return score
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export const incrementTotalAndPossible = (score: ScaledScore, totalBy = 1, possibleBy = 1): ScaledScore => {
|
|
30
|
+
score[0] += totalBy
|
|
31
|
+
score[1] += possibleBy
|
|
32
|
+
return score
|
|
33
|
+
}
|