@xyo-network/crypto-nft-collection-diviner-score-plugin 2.70.15 → 2.71.1
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/cjs/Diviner.js +8 -6
- package/dist/cjs/Diviner.js.map +1 -1
- package/dist/cjs/lib/rating/analyzeNftCollection.js.map +1 -1
- package/dist/cjs/lib/rating/criteria/scoring/metadata/metadata.js.map +1 -1
- package/dist/cjs/lib/rating/criteria/scoring/total.js.map +1 -1
- package/dist/docs.json +1377 -1491
- package/dist/esm/Diviner.js +9 -7
- package/dist/esm/Diviner.js.map +1 -1
- package/dist/esm/lib/rating/analyzeNftCollection.js.map +1 -1
- package/dist/esm/lib/rating/criteria/index.js.map +1 -1
- package/dist/esm/lib/rating/criteria/scoring/metadata/metadata.js.map +1 -1
- package/dist/esm/lib/rating/criteria/scoring/total.js.map +1 -1
- package/dist/types/Diviner.d.ts +2 -4
- package/dist/types/Diviner.d.ts.map +1 -1
- package/dist/types/lib/rating/analyzeNftCollection.d.ts +2 -2
- package/dist/types/lib/rating/analyzeNftCollection.d.ts.map +1 -1
- package/dist/types/lib/rating/criteria/index.d.ts +2 -2
- package/dist/types/lib/rating/criteria/index.d.ts.map +1 -1
- package/dist/types/lib/rating/criteria/scoring/metadata/metadata.d.ts +3 -3
- package/dist/types/lib/rating/criteria/scoring/metadata/metadata.d.ts.map +1 -1
- package/dist/types/lib/rating/criteria/scoring/total.d.ts +2 -2
- package/dist/types/lib/rating/criteria/scoring/total.d.ts.map +1 -1
- package/package.json +10 -10
- package/src/Diviner.ts +11 -7
- package/src/lib/rating/analyzeNftCollection.ts +2 -2
- package/src/lib/rating/criteria/index.ts +2 -2
- package/src/lib/rating/criteria/scoring/metadata/metadata.ts +3 -3
- package/src/lib/rating/criteria/scoring/total.ts +2 -2
package/dist/esm/Diviner.js
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
import { AbstractDiviner } from '@xyo-network/abstract-diviner';
|
|
2
2
|
import { PayloadHasher } from '@xyo-network/core';
|
|
3
|
-
import {
|
|
3
|
+
import { isNftCollectionInfo, NftCollectionScoreDivinerConfigSchema, NftCollectionScoreSchema, } from '@xyo-network/crypto-nft-collection-payload-plugin';
|
|
4
4
|
import { analyzeNftCollection } from './lib';
|
|
5
|
-
const toNftCollectionScorePayload = (
|
|
6
|
-
|
|
5
|
+
const toNftCollectionScorePayload = (nftCollectionInfo, scores) => {
|
|
6
|
+
const { name, symbol, address, chainId, type } = nftCollectionInfo;
|
|
7
|
+
const metadata = { address, chainId, name, symbol, type };
|
|
8
|
+
return { ...metadata, schema: NftCollectionScoreSchema, scores };
|
|
7
9
|
};
|
|
8
10
|
export const isNftCollectionScorePayload = (payload) => payload.schema === NftCollectionScoreSchema;
|
|
9
11
|
export class NftCollectionScoreDiviner extends AbstractDiviner {
|
|
10
12
|
static configSchemas = [NftCollectionScoreDivinerConfigSchema];
|
|
11
13
|
divineHandler = async (payloads) => {
|
|
12
|
-
const
|
|
13
|
-
const results = await Promise.all(
|
|
14
|
+
const nftCollectionInfos = payloads?.filter(isNftCollectionInfo) ?? [];
|
|
15
|
+
const results = await Promise.all(nftCollectionInfos.map(async (nftCollectionInfo) => {
|
|
14
16
|
const [score, sourceHash] = await Promise.all([
|
|
15
17
|
// Get score
|
|
16
|
-
toNftCollectionScorePayload(await analyzeNftCollection(
|
|
18
|
+
toNftCollectionScorePayload(nftCollectionInfo, await analyzeNftCollection(nftCollectionInfo)),
|
|
17
19
|
// Hash sources
|
|
18
|
-
PayloadHasher.hashAsync(
|
|
20
|
+
PayloadHasher.hashAsync(nftCollectionInfo),
|
|
19
21
|
]);
|
|
20
22
|
return { ...score, schema: NftCollectionScoreSchema, sources: [sourceHash] };
|
|
21
23
|
}));
|
package/dist/esm/Diviner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Diviner.js","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"Diviner.js","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EACL,mBAAmB,EAInB,qCAAqC,EAErC,wBAAwB,GACzB,MAAM,mDAAmD,CAAA;AAK1D,OAAO,EAAE,oBAAoB,EAAyB,MAAM,OAAO,CAAA;AAInE,MAAM,2BAA2B,GAAG,CAAC,iBAAoC,EAAE,MAA6B,EAA6B,EAAE;IACrI,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,iBAAiB,CAAA;IAClE,MAAM,QAAQ,GAA0B,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;IAChF,OAAO,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,wBAAwB,EAAE,MAAM,EAAE,CAAA;AAClE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,OAAgB,EAAwC,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,wBAAwB,CAAA;AAElJ,MAAM,OAAO,yBAEX,SAAQ,eAAwB;IAChC,MAAM,CAAU,aAAa,GAAG,CAAC,qCAAqC,CAAC,CAAA;IAEpD,aAAa,GAAG,KAAK,EAAE,QAAoB,EAAsB,EAAE;QACpF,MAAM,kBAAkB,GAAG,QAAQ,EAAE,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAA;QACtE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,kBAAkB,CAAC,GAAG,CAAqC,KAAK,EAAE,iBAAiB,EAAE,EAAE;YACrF,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC5C,YAAY;gBACZ,2BAA2B,CAAC,iBAAiB,EAAE,MAAM,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;gBAC7F,eAAe;gBACf,aAAa,CAAC,SAAS,CAAC,iBAAiB,CAAC;aAC3C,CAAC,CAAA;YACF,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,wBAAwB,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAA+B,CAAA;QAC3G,CAAC,CAAC,CACH,CAAA;QACD,OAAO,OAAO,CAAA;IAChB,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzeNftCollection.js","sourceRoot":"","sources":["../../../../src/lib/rating/analyzeNftCollection.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAQ5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK;AACvC;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"analyzeNftCollection.js","sourceRoot":"","sources":["../../../../src/lib/rating/analyzeNftCollection.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAQ5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK;AACvC;;GAEG;AACH,GAAsB,EACU,EAAE;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;QACrE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;QACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAU,CAAA;QACzD,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAU,CAAA;IACjC,CAAC,CAAC,CACH,CACuB,CAAA;IAC1B,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/lib/rating/criteria/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAErD,MAAM,CAAC,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/lib/rating/criteria/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAErD,MAAM,CAAC,MAAM,eAAe,GAAkE;IAC5F,GAAG,aAAa;IAChB,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE;CACxC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/metadata.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,MAAM,CAAC,MAAM,wBAAwB,
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/metadata.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,MAAM,CAAC,MAAM,wBAAwB,GAAkE;IACrG,gCAAgC,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,MAAM,EAAE,CAAC,EAAE;IACjF,2BAA2B,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,EAAE;CACxE,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAkE;IAC1F,GAAG,wBAAwB;CAC5B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"total.js","sourceRoot":"","sources":["../../../../../../src/lib/rating/criteria/scoring/total.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAS,MAAM,qCAAqC,CAAA;AAEtE,MAAM,MAAM,GAAG,MAAM,CAAA;AACrB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AAClC,MAAM,YAAY,GAAG,CAAC,CAAA;AACtB,mEAAmE;AACnE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAA;AAC5D,+DAA+D;AAE/D;;;;;;GAMG;AACH,MAAM,2BAA2B,GAAG,CAAC,CAAS,EAAE,KAAa,SAAS,EAAE,QAAgB,YAAY,EAAU,EAAE;IAC9G,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,CAAA;IACpB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACxB,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;AACvG,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,qBAAqB,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAA;AAC/D,oEAAoE;AAEpE,MAAM,QAAQ,GAAG,EAAE,CAAA;AAEnB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"total.js","sourceRoot":"","sources":["../../../../../../src/lib/rating/criteria/scoring/total.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAS,MAAM,qCAAqC,CAAA;AAEtE,MAAM,MAAM,GAAG,MAAM,CAAA;AACrB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AAClC,MAAM,YAAY,GAAG,CAAC,CAAA;AACtB,mEAAmE;AACnE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAA;AAC5D,+DAA+D;AAE/D;;;;;;GAMG;AACH,MAAM,2BAA2B,GAAG,CAAC,CAAS,EAAE,KAAa,SAAS,EAAE,QAAgB,YAAY,EAAU,EAAE;IAC9G,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,CAAA;IACpB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACxB,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;AACvG,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,qBAAqB,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAA;AAC/D,oEAAoE;AAEpE,MAAM,QAAQ,GAAG,EAAE,CAAA;AAEnB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAuB,EAAS,EAAE;IAC3D,MAAM,OAAO,GAAG,2BAA2B,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACtD,MAAM,KAAK,GAAU,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAA;IACrD,OAAO,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;AACnC,CAAC,CAAA"}
|
package/dist/types/Diviner.d.ts
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { AbstractDiviner } from '@xyo-network/abstract-diviner';
|
|
2
|
-
import { NftCollectionScoreDivinerConfig } from '@xyo-network/crypto-nft-collection-payload-plugin';
|
|
2
|
+
import { NftCollectionMetadata, NftCollectionScoreDivinerConfig } from '@xyo-network/crypto-nft-collection-payload-plugin';
|
|
3
3
|
import { DivinerParams } from '@xyo-network/diviner-model';
|
|
4
4
|
import { AnyConfigSchema } from '@xyo-network/module';
|
|
5
5
|
import { Payload } from '@xyo-network/payload-model';
|
|
6
6
|
export type NftCollectionScoreDivinerParams = DivinerParams<AnyConfigSchema<NftCollectionScoreDivinerConfig>>;
|
|
7
|
-
export declare const isNftCollectionScorePayload: (payload: Payload) => payload is import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
|
|
8
|
-
schema: "network.xyo.crypto.nft.collection.score";
|
|
9
|
-
} & Partial<Omit<import("@xyo-network/crypto-nft-collection-payload-plugin").NftCollectionAnalysis, "schema">> & {
|
|
7
|
+
export declare const isNftCollectionScorePayload: (payload: Payload) => payload is import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & NftCollectionMetadata & import("@xyo-network/crypto-nft-collection-payload-plugin").NftCollectionScores & {
|
|
10
8
|
schema: "network.xyo.crypto.nft.collection.score";
|
|
11
9
|
};
|
|
12
10
|
export declare class NftCollectionScoreDiviner<TParams extends NftCollectionScoreDivinerParams = NftCollectionScoreDivinerParams> extends AbstractDiviner<TParams> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAE/D,OAAO,
|
|
1
|
+
{"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAE/D,OAAO,EAGL,qBAAqB,EACrB,+BAA+B,EAIhC,MAAM,mDAAmD,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAIpD,MAAM,MAAM,+BAA+B,GAAG,aAAa,CAAC,eAAe,CAAC,+BAA+B,CAAC,CAAC,CAAA;AAQ7G,eAAO,MAAM,2BAA2B,YAAa,OAAO;;CAAsF,CAAA;AAElJ,qBAAa,yBAAyB,CACpC,OAAO,SAAS,+BAA+B,GAAG,+BAA+B,CACjF,SAAQ,eAAe,CAAC,OAAO,CAAC;IAChC,OAAgB,aAAa,6DAA0C;IAEvE,UAAmB,aAAa,cAAqB,OAAO,EAAE,KAAG,QAAQ,OAAO,EAAE,CAAC,CAclF;CACF"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NftCollectionInfo } from '@xyo-network/crypto-nft-collection-payload-plugin';
|
|
2
2
|
import { Score } from '@xyo-network/crypto-nft-score-model';
|
|
3
3
|
import { scoringCriteria } from './criteria';
|
|
4
4
|
export type ScoringCriteriaKey = keyof typeof scoringCriteria & PropertyKey;
|
|
5
5
|
export type NftCollectionAnalysis = {
|
|
6
6
|
[key in ScoringCriteriaKey]: Score;
|
|
7
7
|
};
|
|
8
|
-
export declare const analyzeNftCollection: (nft:
|
|
8
|
+
export declare const analyzeNftCollection: (nft: NftCollectionInfo) => Promise<NftCollectionAnalysis>;
|
|
9
9
|
//# sourceMappingURL=analyzeNftCollection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzeNftCollection.d.ts","sourceRoot":"","sources":["../../../../src/lib/rating/analyzeNftCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"analyzeNftCollection.d.ts","sourceRoot":"","sources":["../../../../src/lib/rating/analyzeNftCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAA;AACrF,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAA;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,eAAe,GAAG,WAAW,CAAA;AAE3E,MAAM,MAAM,qBAAqB,GAAG;KACjC,GAAG,IAAI,kBAAkB,GAAG,KAAK;CACnC,CAAA;AAED,eAAO,MAAM,oBAAoB,QAI1B,iBAAiB,KACrB,QAAQ,qBAAqB,CAW/B,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NftCollectionInfo } from '@xyo-network/crypto-nft-collection-payload-plugin';
|
|
2
2
|
import { WeightedScoringCriteria } from '@xyo-network/crypto-nft-score-model';
|
|
3
3
|
export declare const scoringCriteria: {
|
|
4
|
-
[key: string]: WeightedScoringCriteria<
|
|
4
|
+
[key: string]: WeightedScoringCriteria<NftCollectionInfo>;
|
|
5
5
|
};
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/rating/criteria/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/rating/criteria/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAA;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAI7E,eAAO,MAAM,eAAe,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,CAAA;CAGxF,CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NftCollectionInfo } from '@xyo-network/crypto-nft-collection-payload-plugin';
|
|
2
2
|
import { WeightedScoringCriteria } from '@xyo-network/crypto-nft-score-model';
|
|
3
3
|
export declare const attributeScoringCriteria: {
|
|
4
|
-
[key: string]: WeightedScoringCriteria<
|
|
4
|
+
[key: string]: WeightedScoringCriteria<NftCollectionInfo>;
|
|
5
5
|
};
|
|
6
6
|
export declare const scoreMetadata: {
|
|
7
|
-
[key: string]: WeightedScoringCriteria<
|
|
7
|
+
[key: string]: WeightedScoringCriteria<NftCollectionInfo>;
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=metadata.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAA;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAK7E,eAAO,MAAM,wBAAwB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,CAAA;CAGjG,CAAA;AAED,eAAO,MAAM,aAAa,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,CAAA;CAEtF,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NftCollectionCount } from '@xyo-network/crypto-nft-collection-payload-plugin';
|
|
2
2
|
import { Score } from '@xyo-network/crypto-nft-score-model';
|
|
3
|
-
export declare const scoreTotal: (nft:
|
|
3
|
+
export declare const scoreTotal: (nft: NftCollectionCount) => Score;
|
|
4
4
|
//# sourceMappingURL=total.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"total.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/rating/criteria/scoring/total.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"total.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/rating/criteria/scoring/total.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAA;AACtF,OAAO,EAAa,KAAK,EAAE,MAAM,qCAAqC,CAAA;AA8BtE,eAAO,MAAM,UAAU,QAAS,kBAAkB,KAAG,KAIpD,CAAA"}
|
package/package.json
CHANGED
|
@@ -10,15 +10,15 @@
|
|
|
10
10
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@xyo-network/abstract-diviner": "~2.
|
|
14
|
-
"@xyo-network/core": "~2.
|
|
15
|
-
"@xyo-network/crypto-nft-collection-payload-plugin": "~2.
|
|
16
|
-
"@xyo-network/crypto-nft-payload-plugin": "~2.
|
|
17
|
-
"@xyo-network/crypto-nft-score-model": "~2.
|
|
18
|
-
"@xyo-network/diviner-model": "~2.
|
|
19
|
-
"@xyo-network/module": "~2.
|
|
20
|
-
"@xyo-network/payload-model": "~2.
|
|
21
|
-
"@xyo-network/payloadset-plugin": "~2.
|
|
13
|
+
"@xyo-network/abstract-diviner": "~2.71.1",
|
|
14
|
+
"@xyo-network/core": "~2.71.1",
|
|
15
|
+
"@xyo-network/crypto-nft-collection-payload-plugin": "~2.71.1",
|
|
16
|
+
"@xyo-network/crypto-nft-payload-plugin": "~2.71.1",
|
|
17
|
+
"@xyo-network/crypto-nft-score-model": "~2.71.1",
|
|
18
|
+
"@xyo-network/diviner-model": "~2.71.1",
|
|
19
|
+
"@xyo-network/module": "~2.71.1",
|
|
20
|
+
"@xyo-network/payload-model": "~2.71.1",
|
|
21
|
+
"@xyo-network/payloadset-plugin": "~2.71.1"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"@xylabs/jest-helpers": "^2.9.3",
|
|
@@ -61,5 +61,5 @@
|
|
|
61
61
|
},
|
|
62
62
|
"sideEffects": false,
|
|
63
63
|
"types": "dist/types/index.d.ts",
|
|
64
|
-
"version": "2.
|
|
64
|
+
"version": "2.71.1"
|
|
65
65
|
}
|
package/src/Diviner.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { AbstractDiviner } from '@xyo-network/abstract-diviner'
|
|
2
2
|
import { PayloadHasher } from '@xyo-network/core'
|
|
3
3
|
import {
|
|
4
|
-
|
|
4
|
+
isNftCollectionInfo,
|
|
5
|
+
NftCollectionInfo,
|
|
6
|
+
NftCollectionMetadata,
|
|
5
7
|
NftCollectionScoreDivinerConfig,
|
|
6
8
|
NftCollectionScoreDivinerConfigSchema,
|
|
7
9
|
NftCollectionScorePayload,
|
|
@@ -15,8 +17,10 @@ import { analyzeNftCollection, NftCollectionAnalysis } from './lib'
|
|
|
15
17
|
|
|
16
18
|
export type NftCollectionScoreDivinerParams = DivinerParams<AnyConfigSchema<NftCollectionScoreDivinerConfig>>
|
|
17
19
|
|
|
18
|
-
const toNftCollectionScorePayload = (
|
|
19
|
-
|
|
20
|
+
const toNftCollectionScorePayload = (nftCollectionInfo: NftCollectionInfo, scores: NftCollectionAnalysis): NftCollectionScorePayload => {
|
|
21
|
+
const { name, symbol, address, chainId, type } = nftCollectionInfo
|
|
22
|
+
const metadata: NftCollectionMetadata = { address, chainId, name, symbol, type }
|
|
23
|
+
return { ...metadata, schema: NftCollectionScoreSchema, scores }
|
|
20
24
|
}
|
|
21
25
|
|
|
22
26
|
export const isNftCollectionScorePayload = (payload: Payload): payload is NftCollectionScorePayload => payload.schema === NftCollectionScoreSchema
|
|
@@ -27,14 +31,14 @@ export class NftCollectionScoreDiviner<
|
|
|
27
31
|
static override configSchemas = [NftCollectionScoreDivinerConfigSchema]
|
|
28
32
|
|
|
29
33
|
protected override divineHandler = async (payloads?: Payload[]): Promise<Payload[]> => {
|
|
30
|
-
const
|
|
34
|
+
const nftCollectionInfos = payloads?.filter(isNftCollectionInfo) ?? []
|
|
31
35
|
const results = await Promise.all(
|
|
32
|
-
|
|
36
|
+
nftCollectionInfos.map<Promise<NftCollectionScorePayload>>(async (nftCollectionInfo) => {
|
|
33
37
|
const [score, sourceHash] = await Promise.all([
|
|
34
38
|
// Get score
|
|
35
|
-
toNftCollectionScorePayload(await analyzeNftCollection(
|
|
39
|
+
toNftCollectionScorePayload(nftCollectionInfo, await analyzeNftCollection(nftCollectionInfo)),
|
|
36
40
|
// Hash sources
|
|
37
|
-
PayloadHasher.hashAsync(
|
|
41
|
+
PayloadHasher.hashAsync(nftCollectionInfo),
|
|
38
42
|
])
|
|
39
43
|
return { ...score, schema: NftCollectionScoreSchema, sources: [sourceHash] } as NftCollectionScorePayload
|
|
40
44
|
}),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NftCollectionInfo } from '@xyo-network/crypto-nft-collection-payload-plugin'
|
|
2
2
|
import { Score } from '@xyo-network/crypto-nft-score-model'
|
|
3
3
|
|
|
4
4
|
import { scoringCriteria } from './criteria'
|
|
@@ -13,7 +13,7 @@ export const analyzeNftCollection = async (
|
|
|
13
13
|
/**
|
|
14
14
|
* The NFT to evaluate
|
|
15
15
|
*/
|
|
16
|
-
nft:
|
|
16
|
+
nft: NftCollectionInfo,
|
|
17
17
|
): Promise<NftCollectionAnalysis> => {
|
|
18
18
|
const result = Object.fromEntries(
|
|
19
19
|
await Promise.all(
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NftCollectionInfo } from '@xyo-network/crypto-nft-collection-payload-plugin'
|
|
2
2
|
import { WeightedScoringCriteria } from '@xyo-network/crypto-nft-score-model'
|
|
3
3
|
|
|
4
4
|
import { scoreMetadata, scoreTotal } from './scoring'
|
|
5
5
|
|
|
6
|
-
export const scoringCriteria: { [key: string]: WeightedScoringCriteria<
|
|
6
|
+
export const scoringCriteria: { [key: string]: WeightedScoringCriteria<NftCollectionInfo> } = {
|
|
7
7
|
...scoreMetadata,
|
|
8
8
|
Total: { score: scoreTotal, weight: 1 },
|
|
9
9
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NftCollectionInfo } from '@xyo-network/crypto-nft-collection-payload-plugin'
|
|
2
2
|
import { WeightedScoringCriteria } from '@xyo-network/crypto-nft-score-model'
|
|
3
3
|
|
|
4
4
|
import { scoreIndividualAttributes } from './scoreIndividualAttributes'
|
|
5
5
|
import { scoreTotalAttributes } from './scoreTotalAttributes'
|
|
6
6
|
|
|
7
|
-
export const attributeScoringCriteria: { [key: string]: WeightedScoringCriteria<
|
|
7
|
+
export const attributeScoringCriteria: { [key: string]: WeightedScoringCriteria<NftCollectionInfo> } = {
|
|
8
8
|
'Metadata Attributes Individual': { score: scoreIndividualAttributes, weight: 2 },
|
|
9
9
|
'Metadata Attributes Total': { score: scoreTotalAttributes, weight: 2 },
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
export const scoreMetadata: { [key: string]: WeightedScoringCriteria<
|
|
12
|
+
export const scoreMetadata: { [key: string]: WeightedScoringCriteria<NftCollectionInfo> } = {
|
|
13
13
|
...attributeScoringCriteria,
|
|
14
14
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NftCollectionCount } from '@xyo-network/crypto-nft-collection-payload-plugin'
|
|
2
2
|
import { normalize, Score } from '@xyo-network/crypto-nft-score-model'
|
|
3
3
|
|
|
4
4
|
const median = 100000
|
|
@@ -29,7 +29,7 @@ const maxProbabilityDensity = logNormalProbabilityDensity(mode)
|
|
|
29
29
|
|
|
30
30
|
const maxScore = 10
|
|
31
31
|
|
|
32
|
-
export const scoreTotal = (nft:
|
|
32
|
+
export const scoreTotal = (nft: NftCollectionCount): Score => {
|
|
33
33
|
const density = logNormalProbabilityDensity(nft.total)
|
|
34
34
|
const score: Score = [density, maxProbabilityDensity]
|
|
35
35
|
return normalize(score, maxScore)
|