diff --git a/README.md b/README.md index 78fa87e..60da964 100644 --- a/README.md +++ b/README.md @@ -43,11 +43,22 @@ Add weights to scale rarity scores up or down. { weights: { "Trait A": 1.2, - "Trait B": 0, + "Trait B": 0.1, } } ``` +### ignoreTraits +Array of trait types to be ignored by the rarity analyser. + +```typescript +{ + ingoreTraits: [ + 'Trait x', + 'Trait y', + ] +} +``` ### getMissingTraitIdentifier `(trait_type?: string) => string | undefined` diff --git a/rarityConfig.ts b/rarityConfig.ts index ed88c6d..c4c2030 100644 --- a/rarityConfig.ts +++ b/rarityConfig.ts @@ -4,6 +4,7 @@ const config: Config = { // weights: {}, // getMissingTraitIdentifier: (trait_type?: string) => undefined, // attributesFieldName: 'attributes', + // ignoreTraits: [] } export default config diff --git a/src/analysis.ts b/src/analysis.ts index 2149d73..62839b0 100644 --- a/src/analysis.ts +++ b/src/analysis.ts @@ -106,6 +106,12 @@ export const analyse = ( } } +const filterIgnored = (tokens: Token[], ignoredTraits: string[]) => tokens.map(token => ({ + ...token, + attributes: token.attributes.filter(attribute => ( + !(ignoredTraits.includes(attribute.trait_type)) + )) +})) const preprocess = ( tokens: Record[] @@ -152,7 +158,12 @@ const preprocess = ( t = mapped } - return t as Token[] + let result: Token[] + if (config.ignoreTraits !== undefined) + result = filterIgnored(t as Token[], config.ignoreTraits) + else result = t as Token[] + + return result } /** diff --git a/src/types.ts b/src/types.ts index a733aa4..9e5bf52 100644 --- a/src/types.ts +++ b/src/types.ts @@ -72,6 +72,7 @@ export interface Config { weights?: Weights getMissingTraitIdentifier?: GetMissingTraitIdentifier attributesFieldName?: string + ignoreTraits?: string[] } export type AttributeWithRarity = Attribute & RarityFields