@xyo-network/crypto-nft-diviner-score-plugin 2.74.5 → 2.75.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.
Files changed (526) hide show
  1. package/dist/browser/Diviner.cjs +407 -0
  2. package/dist/browser/Diviner.cjs.map +1 -0
  3. package/dist/browser/Diviner.d.mts.map +1 -0
  4. package/dist/browser/Diviner.d.ts.map +1 -0
  5. package/dist/browser/Diviner.js +390 -0
  6. package/dist/browser/Diviner.js.map +1 -0
  7. package/dist/browser/Plugin.cjs +421 -0
  8. package/dist/browser/Plugin.cjs.map +1 -0
  9. package/dist/browser/Plugin.d.mts.map +1 -0
  10. package/dist/browser/Plugin.d.ts.map +1 -0
  11. package/dist/browser/Plugin.js +404 -0
  12. package/dist/browser/Plugin.js.map +1 -0
  13. package/dist/{index.js → browser/index.cjs} +1 -8
  14. package/dist/browser/index.cjs.map +1 -0
  15. package/dist/browser/index.d.mts.map +1 -0
  16. package/dist/browser/index.d.ts.map +1 -0
  17. package/dist/{index.mjs → browser/index.js} +1 -1
  18. package/dist/browser/index.js.map +1 -0
  19. package/dist/browser/lib/index.cjs +378 -0
  20. package/dist/browser/lib/index.cjs.map +1 -0
  21. package/dist/browser/lib/index.d.mts.map +1 -0
  22. package/dist/browser/lib/index.d.ts.map +1 -0
  23. package/dist/browser/lib/index.js +355 -0
  24. package/dist/browser/lib/index.js.map +1 -0
  25. package/dist/browser/lib/rating/analyzeNft.cjs +378 -0
  26. package/dist/browser/lib/rating/analyzeNft.cjs.map +1 -0
  27. package/dist/browser/lib/rating/analyzeNft.d.mts.map +1 -0
  28. package/dist/browser/lib/rating/analyzeNft.d.ts.map +1 -0
  29. package/dist/browser/lib/rating/analyzeNft.js +355 -0
  30. package/dist/browser/lib/rating/analyzeNft.js.map +1 -0
  31. package/dist/browser/lib/rating/criteria/index.cjs +364 -0
  32. package/dist/browser/lib/rating/criteria/index.cjs.map +1 -0
  33. package/dist/browser/lib/rating/criteria/index.d.mts.map +1 -0
  34. package/dist/browser/lib/rating/criteria/index.d.ts.map +1 -0
  35. package/dist/browser/lib/rating/criteria/index.js +341 -0
  36. package/dist/browser/lib/rating/criteria/index.js.map +1 -0
  37. package/dist/browser/lib/rating/criteria/scoring/contract.cjs +37 -0
  38. package/dist/browser/lib/rating/criteria/scoring/contract.cjs.map +1 -0
  39. package/dist/browser/lib/rating/criteria/scoring/contract.d.mts.map +1 -0
  40. package/dist/browser/lib/rating/criteria/scoring/contract.d.ts.map +1 -0
  41. package/dist/browser/lib/rating/criteria/scoring/contract.js +16 -0
  42. package/dist/browser/lib/rating/criteria/scoring/contract.js.map +1 -0
  43. package/dist/browser/lib/rating/criteria/scoring/index.cjs +363 -0
  44. package/dist/browser/lib/rating/criteria/scoring/index.cjs.map +1 -0
  45. package/dist/browser/lib/rating/criteria/scoring/index.d.mts.map +1 -0
  46. package/dist/browser/lib/rating/criteria/scoring/index.d.ts.map +1 -0
  47. package/dist/browser/lib/rating/criteria/scoring/index.js +340 -0
  48. package/dist/browser/lib/rating/criteria/scoring/index.js.map +1 -0
  49. package/dist/browser/lib/rating/criteria/scoring/lib/index.cjs +43 -0
  50. package/dist/browser/lib/rating/criteria/scoring/lib/index.cjs.map +1 -0
  51. package/dist/browser/lib/rating/criteria/scoring/lib/index.d.mts.map +1 -0
  52. package/dist/browser/lib/rating/criteria/scoring/lib/index.d.ts.map +1 -0
  53. package/dist/browser/lib/rating/criteria/scoring/lib/index.js +20 -0
  54. package/dist/browser/lib/rating/criteria/scoring/lib/index.js.map +1 -0
  55. package/dist/browser/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.cjs +42 -0
  56. package/dist/browser/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.cjs.map +1 -0
  57. package/dist/browser/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.d.mts.map +1 -0
  58. package/dist/browser/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.d.ts.map +1 -0
  59. package/dist/browser/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.js +19 -0
  60. package/dist/browser/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.js.map +1 -0
  61. package/dist/browser/lib/rating/criteria/scoring/lib/toBigNumber.cjs +34 -0
  62. package/dist/browser/lib/rating/criteria/scoring/lib/toBigNumber.cjs.map +1 -0
  63. package/dist/browser/lib/rating/criteria/scoring/lib/toBigNumber.d.mts.map +1 -0
  64. package/dist/browser/lib/rating/criteria/scoring/lib/toBigNumber.d.ts.map +1 -0
  65. package/dist/browser/lib/rating/criteria/scoring/lib/toBigNumber.js +13 -0
  66. package/dist/browser/lib/rating/criteria/scoring/lib/toBigNumber.js.map +1 -0
  67. package/dist/browser/lib/rating/criteria/scoring/metadata/animationUrl.cjs +67 -0
  68. package/dist/browser/lib/rating/criteria/scoring/metadata/animationUrl.cjs.map +1 -0
  69. package/dist/browser/lib/rating/criteria/scoring/metadata/animationUrl.d.mts.map +1 -0
  70. package/dist/browser/lib/rating/criteria/scoring/metadata/animationUrl.d.ts.map +1 -0
  71. package/dist/browser/lib/rating/criteria/scoring/metadata/animationUrl.js +46 -0
  72. package/dist/browser/lib/rating/criteria/scoring/metadata/animationUrl.js.map +1 -0
  73. package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.cjs +103 -0
  74. package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.cjs.map +1 -0
  75. package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.mts.map +1 -0
  76. package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.ts.map +1 -0
  77. package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.js +82 -0
  78. package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.js.map +1 -0
  79. package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/index.cjs +105 -0
  80. package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/index.cjs.map +1 -0
  81. package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/index.d.mts.map +1 -0
  82. package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/index.d.ts.map +1 -0
  83. package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/index.js +82 -0
  84. package/dist/browser/lib/rating/criteria/scoring/metadata/attributes/index.js.map +1 -0
  85. package/dist/browser/lib/rating/criteria/scoring/metadata/backgroundColor.cjs +44 -0
  86. package/dist/browser/lib/rating/criteria/scoring/metadata/backgroundColor.cjs.map +1 -0
  87. package/dist/browser/lib/rating/criteria/scoring/metadata/backgroundColor.d.mts.map +1 -0
  88. package/dist/browser/lib/rating/criteria/scoring/metadata/backgroundColor.d.ts.map +1 -0
  89. package/dist/browser/lib/rating/criteria/scoring/metadata/backgroundColor.js +23 -0
  90. package/dist/browser/lib/rating/criteria/scoring/metadata/backgroundColor.js.map +1 -0
  91. package/dist/browser/lib/rating/criteria/scoring/metadata/description.cjs +37 -0
  92. package/dist/browser/lib/rating/criteria/scoring/metadata/description.cjs.map +1 -0
  93. package/dist/browser/lib/rating/criteria/scoring/metadata/description.d.mts.map +1 -0
  94. package/dist/browser/lib/rating/criteria/scoring/metadata/description.d.ts.map +1 -0
  95. package/dist/browser/lib/rating/criteria/scoring/metadata/description.js +16 -0
  96. package/dist/browser/lib/rating/criteria/scoring/metadata/description.js.map +1 -0
  97. package/dist/browser/lib/rating/criteria/scoring/metadata/externalUrl.cjs +58 -0
  98. package/dist/browser/lib/rating/criteria/scoring/metadata/externalUrl.cjs.map +1 -0
  99. package/dist/browser/lib/rating/criteria/scoring/metadata/externalUrl.d.mts.map +1 -0
  100. package/dist/browser/lib/rating/criteria/scoring/metadata/externalUrl.d.ts.map +1 -0
  101. package/dist/browser/lib/rating/criteria/scoring/metadata/externalUrl.js +37 -0
  102. package/dist/browser/lib/rating/criteria/scoring/metadata/externalUrl.js.map +1 -0
  103. package/dist/browser/lib/rating/criteria/scoring/metadata/image.cjs +67 -0
  104. package/dist/browser/lib/rating/criteria/scoring/metadata/image.cjs.map +1 -0
  105. package/dist/browser/lib/rating/criteria/scoring/metadata/image.d.mts.map +1 -0
  106. package/dist/browser/lib/rating/criteria/scoring/metadata/image.d.ts.map +1 -0
  107. package/dist/browser/lib/rating/criteria/scoring/metadata/image.js +46 -0
  108. package/dist/browser/lib/rating/criteria/scoring/metadata/image.js.map +1 -0
  109. package/dist/browser/lib/rating/criteria/scoring/metadata/imageData.cjs +50 -0
  110. package/dist/browser/lib/rating/criteria/scoring/metadata/imageData.cjs.map +1 -0
  111. package/dist/browser/lib/rating/criteria/scoring/metadata/imageData.d.mts.map +1 -0
  112. package/dist/browser/lib/rating/criteria/scoring/metadata/imageData.d.ts.map +1 -0
  113. package/dist/browser/lib/rating/criteria/scoring/metadata/imageData.js +29 -0
  114. package/dist/browser/lib/rating/criteria/scoring/metadata/imageData.js.map +1 -0
  115. package/dist/browser/lib/rating/criteria/scoring/metadata/index.cjs +287 -0
  116. package/dist/browser/lib/rating/criteria/scoring/metadata/index.cjs.map +1 -0
  117. package/dist/browser/lib/rating/criteria/scoring/metadata/index.d.mts.map +1 -0
  118. package/dist/browser/lib/rating/criteria/scoring/metadata/index.d.ts.map +1 -0
  119. package/dist/browser/lib/rating/criteria/scoring/metadata/index.js +264 -0
  120. package/dist/browser/lib/rating/criteria/scoring/metadata/index.js.map +1 -0
  121. package/dist/browser/lib/rating/criteria/scoring/metadata/lib/index.cjs +48 -0
  122. package/dist/browser/lib/rating/criteria/scoring/metadata/lib/index.cjs.map +1 -0
  123. package/dist/browser/lib/rating/criteria/scoring/metadata/lib/index.d.mts.map +1 -0
  124. package/dist/browser/lib/rating/criteria/scoring/metadata/lib/index.d.ts.map +1 -0
  125. package/dist/browser/lib/rating/criteria/scoring/metadata/lib/index.js +25 -0
  126. package/dist/browser/lib/rating/criteria/scoring/metadata/lib/index.js.map +1 -0
  127. package/dist/browser/lib/rating/criteria/scoring/metadata/lib/urlHelpers.cjs +46 -0
  128. package/dist/browser/lib/rating/criteria/scoring/metadata/lib/urlHelpers.cjs.map +1 -0
  129. package/dist/browser/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.mts.map +1 -0
  130. package/dist/browser/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.ts.map +1 -0
  131. package/dist/browser/lib/rating/criteria/scoring/metadata/lib/urlHelpers.js +25 -0
  132. package/dist/browser/lib/rating/criteria/scoring/metadata/lib/urlHelpers.js.map +1 -0
  133. package/dist/browser/lib/rating/criteria/scoring/metadata/name.cjs +37 -0
  134. package/dist/browser/lib/rating/criteria/scoring/metadata/name.cjs.map +1 -0
  135. package/dist/browser/lib/rating/criteria/scoring/metadata/name.d.mts.map +1 -0
  136. package/dist/browser/lib/rating/criteria/scoring/metadata/name.d.ts.map +1 -0
  137. package/dist/browser/lib/rating/criteria/scoring/metadata/name.js +16 -0
  138. package/dist/browser/lib/rating/criteria/scoring/metadata/name.js.map +1 -0
  139. package/dist/browser/lib/rating/criteria/scoring/metadata/youtubeUrl.cjs +60 -0
  140. package/dist/browser/lib/rating/criteria/scoring/metadata/youtubeUrl.cjs.map +1 -0
  141. package/dist/browser/lib/rating/criteria/scoring/metadata/youtubeUrl.d.mts.map +1 -0
  142. package/dist/browser/lib/rating/criteria/scoring/metadata/youtubeUrl.d.ts.map +1 -0
  143. package/dist/browser/lib/rating/criteria/scoring/metadata/youtubeUrl.js +39 -0
  144. package/dist/browser/lib/rating/criteria/scoring/metadata/youtubeUrl.js.map +1 -0
  145. package/dist/browser/lib/rating/criteria/scoring/supply.cjs +56 -0
  146. package/dist/browser/lib/rating/criteria/scoring/supply.cjs.map +1 -0
  147. package/dist/browser/lib/rating/criteria/scoring/supply.d.mts.map +1 -0
  148. package/dist/browser/lib/rating/criteria/scoring/supply.d.ts.map +1 -0
  149. package/dist/browser/lib/rating/criteria/scoring/supply.js +35 -0
  150. package/dist/browser/lib/rating/criteria/scoring/supply.js.map +1 -0
  151. package/dist/browser/lib/rating/criteria/scoring/tokenId.cjs +56 -0
  152. package/dist/browser/lib/rating/criteria/scoring/tokenId.cjs.map +1 -0
  153. package/dist/browser/lib/rating/criteria/scoring/tokenId.d.mts.map +1 -0
  154. package/dist/browser/lib/rating/criteria/scoring/tokenId.d.ts.map +1 -0
  155. package/dist/browser/lib/rating/criteria/scoring/tokenId.js +35 -0
  156. package/dist/browser/lib/rating/criteria/scoring/tokenId.js.map +1 -0
  157. package/dist/browser/lib/rating/criteria/scoring/type.cjs +37 -0
  158. package/dist/browser/lib/rating/criteria/scoring/type.cjs.map +1 -0
  159. package/dist/browser/lib/rating/criteria/scoring/type.d.mts.map +1 -0
  160. package/dist/browser/lib/rating/criteria/scoring/type.d.ts.map +1 -0
  161. package/dist/browser/lib/rating/criteria/scoring/type.js +16 -0
  162. package/dist/browser/lib/rating/criteria/scoring/type.js.map +1 -0
  163. package/dist/browser/lib/rating/criteria/scoringCriteria.cjs +364 -0
  164. package/dist/browser/lib/rating/criteria/scoringCriteria.cjs.map +1 -0
  165. package/dist/browser/lib/rating/criteria/scoringCriteria.d.mts.map +1 -0
  166. package/dist/browser/lib/rating/criteria/scoringCriteria.d.ts.map +1 -0
  167. package/dist/browser/lib/rating/criteria/scoringCriteria.js +341 -0
  168. package/dist/browser/lib/rating/criteria/scoringCriteria.js.map +1 -0
  169. package/dist/browser/lib/rating/index.cjs +378 -0
  170. package/dist/browser/lib/rating/index.cjs.map +1 -0
  171. package/dist/browser/lib/rating/index.d.mts.map +1 -0
  172. package/dist/browser/lib/rating/index.d.ts.map +1 -0
  173. package/dist/browser/lib/rating/index.js +355 -0
  174. package/dist/browser/lib/rating/index.js.map +1 -0
  175. package/dist/node/Diviner.d.mts +14 -0
  176. package/dist/node/Diviner.d.mts.map +1 -0
  177. package/dist/node/Diviner.d.ts +14 -0
  178. package/dist/node/Diviner.d.ts.map +1 -0
  179. package/dist/node/Diviner.js +57 -0
  180. package/dist/node/Diviner.js.map +1 -0
  181. package/dist/node/Diviner.mjs +36 -0
  182. package/dist/node/Diviner.mjs.map +1 -0
  183. package/dist/node/Plugin.d.mts +50 -0
  184. package/dist/node/Plugin.d.mts.map +1 -0
  185. package/dist/node/Plugin.d.ts +50 -0
  186. package/dist/node/Plugin.d.ts.map +1 -0
  187. package/dist/node/Plugin.js +41 -0
  188. package/dist/node/Plugin.js.map +1 -0
  189. package/dist/node/Plugin.mjs +17 -0
  190. package/dist/node/Plugin.mjs.map +1 -0
  191. package/dist/node/index.d.mts +6 -0
  192. package/dist/node/index.d.mts.map +1 -0
  193. package/dist/node/index.d.ts +6 -0
  194. package/dist/node/index.d.ts.map +1 -0
  195. package/dist/node/index.js +36 -0
  196. package/dist/node/index.js.map +1 -0
  197. package/dist/node/index.mjs +9 -0
  198. package/dist/node/index.mjs.map +1 -0
  199. package/dist/node/lib/index.d.mts +2 -0
  200. package/dist/node/lib/index.d.mts.map +1 -0
  201. package/dist/node/lib/index.d.ts +2 -0
  202. package/dist/node/lib/index.d.ts.map +1 -0
  203. package/dist/node/lib/index.js +23 -0
  204. package/dist/node/lib/index.js.map +1 -0
  205. package/dist/node/lib/index.mjs +2 -0
  206. package/dist/node/lib/index.mjs.map +1 -0
  207. package/dist/node/lib/rating/analyzeNft.d.mts +9 -0
  208. package/dist/node/lib/rating/analyzeNft.d.mts.map +1 -0
  209. package/dist/node/lib/rating/analyzeNft.d.ts +9 -0
  210. package/dist/node/lib/rating/analyzeNft.d.ts.map +1 -0
  211. package/dist/node/lib/rating/analyzeNft.js +41 -0
  212. package/dist/node/lib/rating/analyzeNft.js.map +1 -0
  213. package/dist/node/lib/rating/analyzeNft.mjs +17 -0
  214. package/dist/node/lib/rating/analyzeNft.mjs.map +1 -0
  215. package/dist/node/lib/rating/criteria/index.d.mts +2 -0
  216. package/dist/node/lib/rating/criteria/index.d.mts.map +1 -0
  217. package/dist/node/lib/rating/criteria/index.d.ts +2 -0
  218. package/dist/node/lib/rating/criteria/index.d.ts.map +1 -0
  219. package/dist/node/lib/rating/criteria/index.js +23 -0
  220. package/dist/node/lib/rating/criteria/index.js.map +1 -0
  221. package/dist/node/lib/rating/criteria/index.mjs +2 -0
  222. package/dist/node/lib/rating/criteria/index.mjs.map +1 -0
  223. package/dist/node/lib/rating/criteria/scoring/contract.d.mts +4 -0
  224. package/dist/node/lib/rating/criteria/scoring/contract.d.mts.map +1 -0
  225. package/dist/node/lib/rating/criteria/scoring/contract.d.ts +4 -0
  226. package/dist/node/lib/rating/criteria/scoring/contract.d.ts.map +1 -0
  227. package/dist/node/lib/rating/criteria/scoring/contract.js +39 -0
  228. package/dist/node/lib/rating/criteria/scoring/contract.js.map +1 -0
  229. package/dist/node/lib/rating/criteria/scoring/contract.mjs +15 -0
  230. package/dist/node/lib/rating/criteria/scoring/contract.mjs.map +1 -0
  231. package/dist/node/lib/rating/criteria/scoring/index.d.mts +6 -0
  232. package/dist/node/lib/rating/criteria/scoring/index.d.mts.map +1 -0
  233. package/dist/node/lib/rating/criteria/scoring/index.d.ts +6 -0
  234. package/dist/node/lib/rating/criteria/scoring/index.d.ts.map +1 -0
  235. package/dist/node/lib/rating/criteria/scoring/index.js +31 -0
  236. package/dist/node/lib/rating/criteria/scoring/index.js.map +1 -0
  237. package/dist/node/lib/rating/criteria/scoring/index.mjs +6 -0
  238. package/dist/node/lib/rating/criteria/scoring/index.mjs.map +1 -0
  239. package/dist/node/lib/rating/criteria/scoring/lib/index.d.mts +3 -0
  240. package/dist/node/lib/rating/criteria/scoring/lib/index.d.mts.map +1 -0
  241. package/dist/node/lib/rating/criteria/scoring/lib/index.d.ts +3 -0
  242. package/dist/node/lib/rating/criteria/scoring/lib/index.d.ts.map +1 -0
  243. package/dist/node/lib/rating/criteria/scoring/lib/index.js +25 -0
  244. package/dist/node/lib/rating/criteria/scoring/lib/index.js.map +1 -0
  245. package/dist/node/lib/rating/criteria/scoring/lib/index.mjs +3 -0
  246. package/dist/node/lib/rating/criteria/scoring/lib/index.mjs.map +1 -0
  247. package/dist/node/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.d.mts +2 -0
  248. package/dist/node/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.d.mts.map +1 -0
  249. package/dist/node/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.d.ts +2 -0
  250. package/dist/node/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.d.ts.map +1 -0
  251. package/dist/node/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.js +33 -0
  252. package/dist/node/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.js.map +1 -0
  253. package/dist/node/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.mjs +9 -0
  254. package/dist/node/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.mjs.map +1 -0
  255. package/dist/node/lib/rating/criteria/scoring/lib/toBigNumber.d.mts +3 -0
  256. package/dist/node/lib/rating/criteria/scoring/lib/toBigNumber.d.mts.map +1 -0
  257. package/dist/node/lib/rating/criteria/scoring/lib/toBigNumber.d.ts +3 -0
  258. package/dist/node/lib/rating/criteria/scoring/lib/toBigNumber.d.ts.map +1 -0
  259. package/dist/node/lib/rating/criteria/scoring/lib/toBigNumber.js +36 -0
  260. package/dist/node/lib/rating/criteria/scoring/lib/toBigNumber.js.map +1 -0
  261. package/dist/node/lib/rating/criteria/scoring/lib/toBigNumber.mjs +12 -0
  262. package/dist/node/lib/rating/criteria/scoring/lib/toBigNumber.mjs.map +1 -0
  263. package/dist/node/lib/rating/criteria/scoring/metadata/animationUrl.d.mts +5 -0
  264. package/dist/node/lib/rating/criteria/scoring/metadata/animationUrl.d.mts.map +1 -0
  265. package/dist/node/lib/rating/criteria/scoring/metadata/animationUrl.d.ts +5 -0
  266. package/dist/node/lib/rating/criteria/scoring/metadata/animationUrl.d.ts.map +1 -0
  267. package/dist/node/lib/rating/criteria/scoring/metadata/animationUrl.js +53 -0
  268. package/dist/node/lib/rating/criteria/scoring/metadata/animationUrl.js.map +1 -0
  269. package/dist/node/lib/rating/criteria/scoring/metadata/animationUrl.mjs +28 -0
  270. package/dist/node/lib/rating/criteria/scoring/metadata/animationUrl.mjs.map +1 -0
  271. package/dist/node/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.mts +6 -0
  272. package/dist/node/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.mts.map +1 -0
  273. package/dist/node/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.ts +6 -0
  274. package/dist/node/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.ts.map +1 -0
  275. package/dist/node/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.js +107 -0
  276. package/dist/node/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.js.map +1 -0
  277. package/dist/node/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.mjs +81 -0
  278. package/dist/node/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.mjs.map +1 -0
  279. package/dist/node/lib/rating/criteria/scoring/metadata/attributes/index.d.mts +2 -0
  280. package/dist/node/lib/rating/criteria/scoring/metadata/attributes/index.d.mts.map +1 -0
  281. package/dist/node/lib/rating/criteria/scoring/metadata/attributes/index.d.ts +2 -0
  282. package/dist/node/lib/rating/criteria/scoring/metadata/attributes/index.d.ts.map +1 -0
  283. package/dist/node/lib/rating/criteria/scoring/metadata/attributes/index.js +23 -0
  284. package/dist/node/lib/rating/criteria/scoring/metadata/attributes/index.js.map +1 -0
  285. package/dist/node/lib/rating/criteria/scoring/metadata/attributes/index.mjs +2 -0
  286. package/dist/node/lib/rating/criteria/scoring/metadata/attributes/index.mjs.map +1 -0
  287. package/dist/node/lib/rating/criteria/scoring/metadata/backgroundColor.d.mts +5 -0
  288. package/dist/node/lib/rating/criteria/scoring/metadata/backgroundColor.d.mts.map +1 -0
  289. package/dist/node/lib/rating/criteria/scoring/metadata/backgroundColor.d.ts +5 -0
  290. package/dist/node/lib/rating/criteria/scoring/metadata/backgroundColor.d.ts.map +1 -0
  291. package/dist/node/lib/rating/criteria/scoring/metadata/backgroundColor.js +47 -0
  292. package/dist/node/lib/rating/criteria/scoring/metadata/backgroundColor.js.map +1 -0
  293. package/dist/node/lib/rating/criteria/scoring/metadata/backgroundColor.mjs +22 -0
  294. package/dist/node/lib/rating/criteria/scoring/metadata/backgroundColor.mjs.map +1 -0
  295. package/dist/node/lib/rating/criteria/scoring/metadata/description.d.mts +5 -0
  296. package/dist/node/lib/rating/criteria/scoring/metadata/description.d.mts.map +1 -0
  297. package/dist/node/lib/rating/criteria/scoring/metadata/description.d.ts +5 -0
  298. package/dist/node/lib/rating/criteria/scoring/metadata/description.d.ts.map +1 -0
  299. package/dist/node/lib/rating/criteria/scoring/metadata/description.js +40 -0
  300. package/dist/node/lib/rating/criteria/scoring/metadata/description.js.map +1 -0
  301. package/dist/node/lib/rating/criteria/scoring/metadata/description.mjs +15 -0
  302. package/dist/node/lib/rating/criteria/scoring/metadata/description.mjs.map +1 -0
  303. package/dist/node/lib/rating/criteria/scoring/metadata/externalUrl.d.mts +5 -0
  304. package/dist/node/lib/rating/criteria/scoring/metadata/externalUrl.d.mts.map +1 -0
  305. package/dist/node/lib/rating/criteria/scoring/metadata/externalUrl.d.ts +5 -0
  306. package/dist/node/lib/rating/criteria/scoring/metadata/externalUrl.d.ts.map +1 -0
  307. package/dist/node/lib/rating/criteria/scoring/metadata/externalUrl.js +44 -0
  308. package/dist/node/lib/rating/criteria/scoring/metadata/externalUrl.js.map +1 -0
  309. package/dist/node/lib/rating/criteria/scoring/metadata/externalUrl.mjs +19 -0
  310. package/dist/node/lib/rating/criteria/scoring/metadata/externalUrl.mjs.map +1 -0
  311. package/dist/node/lib/rating/criteria/scoring/metadata/image.d.mts +5 -0
  312. package/dist/node/lib/rating/criteria/scoring/metadata/image.d.mts.map +1 -0
  313. package/dist/node/lib/rating/criteria/scoring/metadata/image.d.ts +5 -0
  314. package/dist/node/lib/rating/criteria/scoring/metadata/image.d.ts.map +1 -0
  315. package/dist/node/lib/rating/criteria/scoring/metadata/image.js +53 -0
  316. package/dist/node/lib/rating/criteria/scoring/metadata/image.js.map +1 -0
  317. package/dist/node/lib/rating/criteria/scoring/metadata/image.mjs +28 -0
  318. package/dist/node/lib/rating/criteria/scoring/metadata/image.mjs.map +1 -0
  319. package/dist/node/lib/rating/criteria/scoring/metadata/imageData.d.mts +5 -0
  320. package/dist/node/lib/rating/criteria/scoring/metadata/imageData.d.mts.map +1 -0
  321. package/dist/node/lib/rating/criteria/scoring/metadata/imageData.d.ts +5 -0
  322. package/dist/node/lib/rating/criteria/scoring/metadata/imageData.d.ts.map +1 -0
  323. package/dist/node/lib/rating/criteria/scoring/metadata/imageData.js +53 -0
  324. package/dist/node/lib/rating/criteria/scoring/metadata/imageData.js.map +1 -0
  325. package/dist/node/lib/rating/criteria/scoring/metadata/imageData.mjs +28 -0
  326. package/dist/node/lib/rating/criteria/scoring/metadata/imageData.mjs.map +1 -0
  327. package/dist/node/lib/rating/criteria/scoring/metadata/index.d.mts +10 -0
  328. package/dist/node/lib/rating/criteria/scoring/metadata/index.d.mts.map +1 -0
  329. package/dist/node/lib/rating/criteria/scoring/metadata/index.d.ts +10 -0
  330. package/dist/node/lib/rating/criteria/scoring/metadata/index.d.ts.map +1 -0
  331. package/dist/node/lib/rating/criteria/scoring/metadata/index.js +39 -0
  332. package/dist/node/lib/rating/criteria/scoring/metadata/index.js.map +1 -0
  333. package/dist/node/lib/rating/criteria/scoring/metadata/index.mjs +10 -0
  334. package/dist/node/lib/rating/criteria/scoring/metadata/index.mjs.map +1 -0
  335. package/dist/node/lib/rating/criteria/scoring/metadata/lib/index.d.mts +2 -0
  336. package/dist/node/lib/rating/criteria/scoring/metadata/lib/index.d.mts.map +1 -0
  337. package/dist/node/lib/rating/criteria/scoring/metadata/lib/index.d.ts +2 -0
  338. package/dist/node/lib/rating/criteria/scoring/metadata/lib/index.d.ts.map +1 -0
  339. package/dist/node/lib/rating/criteria/scoring/metadata/lib/index.js +23 -0
  340. package/dist/node/lib/rating/criteria/scoring/metadata/lib/index.js.map +1 -0
  341. package/dist/node/lib/rating/criteria/scoring/metadata/lib/index.mjs +2 -0
  342. package/dist/node/lib/rating/criteria/scoring/metadata/lib/index.mjs.map +1 -0
  343. package/dist/node/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.mts +8 -0
  344. package/dist/node/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.mts.map +1 -0
  345. package/dist/node/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.ts +8 -0
  346. package/dist/node/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.ts.map +1 -0
  347. package/dist/node/lib/rating/criteria/scoring/metadata/lib/urlHelpers.js +53 -0
  348. package/dist/node/lib/rating/criteria/scoring/metadata/lib/urlHelpers.js.map +1 -0
  349. package/dist/node/lib/rating/criteria/scoring/metadata/lib/urlHelpers.mjs +24 -0
  350. package/dist/node/lib/rating/criteria/scoring/metadata/lib/urlHelpers.mjs.map +1 -0
  351. package/dist/node/lib/rating/criteria/scoring/metadata/name.d.mts +5 -0
  352. package/dist/node/lib/rating/criteria/scoring/metadata/name.d.mts.map +1 -0
  353. package/dist/node/lib/rating/criteria/scoring/metadata/name.d.ts +5 -0
  354. package/dist/node/lib/rating/criteria/scoring/metadata/name.d.ts.map +1 -0
  355. package/dist/node/lib/rating/criteria/scoring/metadata/name.js +40 -0
  356. package/dist/node/lib/rating/criteria/scoring/metadata/name.js.map +1 -0
  357. package/dist/node/lib/rating/criteria/scoring/metadata/name.mjs +15 -0
  358. package/dist/node/lib/rating/criteria/scoring/metadata/name.mjs.map +1 -0
  359. package/dist/node/lib/rating/criteria/scoring/metadata/youtubeUrl.d.mts +5 -0
  360. package/dist/node/lib/rating/criteria/scoring/metadata/youtubeUrl.d.mts.map +1 -0
  361. package/dist/node/lib/rating/criteria/scoring/metadata/youtubeUrl.d.ts +5 -0
  362. package/dist/node/lib/rating/criteria/scoring/metadata/youtubeUrl.d.ts.map +1 -0
  363. package/dist/node/lib/rating/criteria/scoring/metadata/youtubeUrl.js +46 -0
  364. package/dist/node/lib/rating/criteria/scoring/metadata/youtubeUrl.js.map +1 -0
  365. package/dist/node/lib/rating/criteria/scoring/metadata/youtubeUrl.mjs +21 -0
  366. package/dist/node/lib/rating/criteria/scoring/metadata/youtubeUrl.mjs.map +1 -0
  367. package/dist/node/lib/rating/criteria/scoring/supply.d.mts +4 -0
  368. package/dist/node/lib/rating/criteria/scoring/supply.d.mts.map +1 -0
  369. package/dist/node/lib/rating/criteria/scoring/supply.d.ts +4 -0
  370. package/dist/node/lib/rating/criteria/scoring/supply.d.ts.map +1 -0
  371. package/dist/node/lib/rating/criteria/scoring/supply.js +41 -0
  372. package/dist/node/lib/rating/criteria/scoring/supply.js.map +1 -0
  373. package/dist/node/lib/rating/criteria/scoring/supply.mjs +17 -0
  374. package/dist/node/lib/rating/criteria/scoring/supply.mjs.map +1 -0
  375. package/dist/node/lib/rating/criteria/scoring/tokenId.d.mts +10 -0
  376. package/dist/node/lib/rating/criteria/scoring/tokenId.d.mts.map +1 -0
  377. package/dist/node/lib/rating/criteria/scoring/tokenId.d.ts +10 -0
  378. package/dist/node/lib/rating/criteria/scoring/tokenId.d.ts.map +1 -0
  379. package/dist/node/lib/rating/criteria/scoring/tokenId.js +41 -0
  380. package/dist/node/lib/rating/criteria/scoring/tokenId.js.map +1 -0
  381. package/dist/node/lib/rating/criteria/scoring/tokenId.mjs +17 -0
  382. package/dist/node/lib/rating/criteria/scoring/tokenId.mjs.map +1 -0
  383. package/dist/node/lib/rating/criteria/scoring/type.d.mts +4 -0
  384. package/dist/node/lib/rating/criteria/scoring/type.d.mts.map +1 -0
  385. package/dist/node/lib/rating/criteria/scoring/type.d.ts +4 -0
  386. package/dist/node/lib/rating/criteria/scoring/type.d.ts.map +1 -0
  387. package/dist/node/lib/rating/criteria/scoring/type.js +39 -0
  388. package/dist/node/lib/rating/criteria/scoring/type.js.map +1 -0
  389. package/dist/node/lib/rating/criteria/scoring/type.mjs +15 -0
  390. package/dist/node/lib/rating/criteria/scoring/type.mjs.map +1 -0
  391. package/dist/node/lib/rating/criteria/scoringCriteria.d.mts +55 -0
  392. package/dist/node/lib/rating/criteria/scoringCriteria.d.mts.map +1 -0
  393. package/dist/node/lib/rating/criteria/scoringCriteria.d.ts +55 -0
  394. package/dist/node/lib/rating/criteria/scoringCriteria.d.ts.map +1 -0
  395. package/dist/node/lib/rating/criteria/scoringCriteria.js +50 -0
  396. package/dist/node/lib/rating/criteria/scoringCriteria.js.map +1 -0
  397. package/dist/node/lib/rating/criteria/scoringCriteria.mjs +40 -0
  398. package/dist/node/lib/rating/criteria/scoringCriteria.mjs.map +1 -0
  399. package/dist/node/lib/rating/index.d.mts +2 -0
  400. package/dist/node/lib/rating/index.d.mts.map +1 -0
  401. package/dist/node/lib/rating/index.d.ts +2 -0
  402. package/dist/node/lib/rating/index.d.ts.map +1 -0
  403. package/dist/node/lib/rating/index.js +23 -0
  404. package/dist/node/lib/rating/index.js.map +1 -0
  405. package/dist/node/lib/rating/index.mjs +2 -0
  406. package/dist/node/lib/rating/index.mjs.map +1 -0
  407. package/package.json +36 -33
  408. package/dist/Diviner.d.mts.map +0 -1
  409. package/dist/Diviner.d.ts.map +0 -1
  410. package/dist/Plugin.d.mts.map +0 -1
  411. package/dist/Plugin.d.ts.map +0 -1
  412. package/dist/docs.json +0 -21969
  413. package/dist/index.d.mts.map +0 -1
  414. package/dist/index.d.ts.map +0 -1
  415. package/dist/index.js.map +0 -1
  416. package/dist/index.mjs.map +0 -1
  417. package/dist/lib/index.d.mts.map +0 -1
  418. package/dist/lib/index.d.ts.map +0 -1
  419. package/dist/lib/rating/analyzeNft.d.mts.map +0 -1
  420. package/dist/lib/rating/analyzeNft.d.ts.map +0 -1
  421. package/dist/lib/rating/criteria/index.d.mts.map +0 -1
  422. package/dist/lib/rating/criteria/index.d.ts.map +0 -1
  423. package/dist/lib/rating/criteria/scoring/contract.d.mts.map +0 -1
  424. package/dist/lib/rating/criteria/scoring/contract.d.ts.map +0 -1
  425. package/dist/lib/rating/criteria/scoring/index.d.mts.map +0 -1
  426. package/dist/lib/rating/criteria/scoring/index.d.ts.map +0 -1
  427. package/dist/lib/rating/criteria/scoring/lib/index.d.mts.map +0 -1
  428. package/dist/lib/rating/criteria/scoring/lib/index.d.ts.map +0 -1
  429. package/dist/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.d.mts.map +0 -1
  430. package/dist/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.d.ts.map +0 -1
  431. package/dist/lib/rating/criteria/scoring/lib/toBigNumber.d.mts.map +0 -1
  432. package/dist/lib/rating/criteria/scoring/lib/toBigNumber.d.ts.map +0 -1
  433. package/dist/lib/rating/criteria/scoring/metadata/animationUrl.d.mts.map +0 -1
  434. package/dist/lib/rating/criteria/scoring/metadata/animationUrl.d.ts.map +0 -1
  435. package/dist/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.mts.map +0 -1
  436. package/dist/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.ts.map +0 -1
  437. package/dist/lib/rating/criteria/scoring/metadata/attributes/index.d.mts.map +0 -1
  438. package/dist/lib/rating/criteria/scoring/metadata/attributes/index.d.ts.map +0 -1
  439. package/dist/lib/rating/criteria/scoring/metadata/backgroundColor.d.mts.map +0 -1
  440. package/dist/lib/rating/criteria/scoring/metadata/backgroundColor.d.ts.map +0 -1
  441. package/dist/lib/rating/criteria/scoring/metadata/description.d.mts.map +0 -1
  442. package/dist/lib/rating/criteria/scoring/metadata/description.d.ts.map +0 -1
  443. package/dist/lib/rating/criteria/scoring/metadata/externalUrl.d.mts.map +0 -1
  444. package/dist/lib/rating/criteria/scoring/metadata/externalUrl.d.ts.map +0 -1
  445. package/dist/lib/rating/criteria/scoring/metadata/image.d.mts.map +0 -1
  446. package/dist/lib/rating/criteria/scoring/metadata/image.d.ts.map +0 -1
  447. package/dist/lib/rating/criteria/scoring/metadata/imageData.d.mts.map +0 -1
  448. package/dist/lib/rating/criteria/scoring/metadata/imageData.d.ts.map +0 -1
  449. package/dist/lib/rating/criteria/scoring/metadata/index.d.mts.map +0 -1
  450. package/dist/lib/rating/criteria/scoring/metadata/index.d.ts.map +0 -1
  451. package/dist/lib/rating/criteria/scoring/metadata/lib/index.d.mts.map +0 -1
  452. package/dist/lib/rating/criteria/scoring/metadata/lib/index.d.ts.map +0 -1
  453. package/dist/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.mts.map +0 -1
  454. package/dist/lib/rating/criteria/scoring/metadata/lib/urlHelpers.d.ts.map +0 -1
  455. package/dist/lib/rating/criteria/scoring/metadata/name.d.mts.map +0 -1
  456. package/dist/lib/rating/criteria/scoring/metadata/name.d.ts.map +0 -1
  457. package/dist/lib/rating/criteria/scoring/metadata/youtubeUrl.d.mts.map +0 -1
  458. package/dist/lib/rating/criteria/scoring/metadata/youtubeUrl.d.ts.map +0 -1
  459. package/dist/lib/rating/criteria/scoring/supply.d.mts.map +0 -1
  460. package/dist/lib/rating/criteria/scoring/supply.d.ts.map +0 -1
  461. package/dist/lib/rating/criteria/scoring/tokenId.d.mts.map +0 -1
  462. package/dist/lib/rating/criteria/scoring/tokenId.d.ts.map +0 -1
  463. package/dist/lib/rating/criteria/scoring/type.d.mts.map +0 -1
  464. package/dist/lib/rating/criteria/scoring/type.d.ts.map +0 -1
  465. package/dist/lib/rating/criteria/scoringCriteria.d.mts.map +0 -1
  466. package/dist/lib/rating/criteria/scoringCriteria.d.ts.map +0 -1
  467. package/dist/lib/rating/index.d.mts.map +0 -1
  468. package/dist/lib/rating/index.d.ts.map +0 -1
  469. /package/dist/{Diviner.d.mts → browser/Diviner.d.mts} +0 -0
  470. /package/dist/{Diviner.d.ts → browser/Diviner.d.ts} +0 -0
  471. /package/dist/{Plugin.d.mts → browser/Plugin.d.mts} +0 -0
  472. /package/dist/{Plugin.d.ts → browser/Plugin.d.ts} +0 -0
  473. /package/dist/{index.d.mts → browser/index.d.mts} +0 -0
  474. /package/dist/{index.d.ts → browser/index.d.ts} +0 -0
  475. /package/dist/{lib → browser/lib}/index.d.mts +0 -0
  476. /package/dist/{lib → browser/lib}/index.d.ts +0 -0
  477. /package/dist/{lib → browser/lib}/rating/analyzeNft.d.mts +0 -0
  478. /package/dist/{lib → browser/lib}/rating/analyzeNft.d.ts +0 -0
  479. /package/dist/{lib → browser/lib}/rating/criteria/index.d.mts +0 -0
  480. /package/dist/{lib → browser/lib}/rating/criteria/index.d.ts +0 -0
  481. /package/dist/{lib → browser/lib}/rating/criteria/scoring/contract.d.mts +0 -0
  482. /package/dist/{lib → browser/lib}/rating/criteria/scoring/contract.d.ts +0 -0
  483. /package/dist/{lib → browser/lib}/rating/criteria/scoring/index.d.mts +0 -0
  484. /package/dist/{lib → browser/lib}/rating/criteria/scoring/index.d.ts +0 -0
  485. /package/dist/{lib → browser/lib}/rating/criteria/scoring/lib/index.d.mts +0 -0
  486. /package/dist/{lib → browser/lib}/rating/criteria/scoring/lib/index.d.ts +0 -0
  487. /package/dist/{lib → browser/lib}/rating/criteria/scoring/lib/isValidPositiveBigNumber.d.mts +0 -0
  488. /package/dist/{lib → browser/lib}/rating/criteria/scoring/lib/isValidPositiveBigNumber.d.ts +0 -0
  489. /package/dist/{lib → browser/lib}/rating/criteria/scoring/lib/toBigNumber.d.mts +0 -0
  490. /package/dist/{lib → browser/lib}/rating/criteria/scoring/lib/toBigNumber.d.ts +0 -0
  491. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/animationUrl.d.mts +0 -0
  492. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/animationUrl.d.ts +0 -0
  493. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.mts +0 -0
  494. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/attributes/evaluateAttributes.d.ts +0 -0
  495. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/attributes/index.d.mts +0 -0
  496. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/attributes/index.d.ts +0 -0
  497. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/backgroundColor.d.mts +0 -0
  498. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/backgroundColor.d.ts +0 -0
  499. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/description.d.mts +0 -0
  500. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/description.d.ts +0 -0
  501. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/externalUrl.d.mts +0 -0
  502. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/externalUrl.d.ts +0 -0
  503. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/image.d.mts +0 -0
  504. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/image.d.ts +0 -0
  505. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/imageData.d.mts +0 -0
  506. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/imageData.d.ts +0 -0
  507. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/index.d.mts +0 -0
  508. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/index.d.ts +0 -0
  509. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/lib/index.d.mts +0 -0
  510. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/lib/index.d.ts +0 -0
  511. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/lib/urlHelpers.d.mts +0 -0
  512. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/lib/urlHelpers.d.ts +0 -0
  513. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/name.d.mts +0 -0
  514. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/name.d.ts +0 -0
  515. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/youtubeUrl.d.mts +0 -0
  516. /package/dist/{lib → browser/lib}/rating/criteria/scoring/metadata/youtubeUrl.d.ts +0 -0
  517. /package/dist/{lib → browser/lib}/rating/criteria/scoring/supply.d.mts +0 -0
  518. /package/dist/{lib → browser/lib}/rating/criteria/scoring/supply.d.ts +0 -0
  519. /package/dist/{lib → browser/lib}/rating/criteria/scoring/tokenId.d.mts +0 -0
  520. /package/dist/{lib → browser/lib}/rating/criteria/scoring/tokenId.d.ts +0 -0
  521. /package/dist/{lib → browser/lib}/rating/criteria/scoring/type.d.mts +0 -0
  522. /package/dist/{lib → browser/lib}/rating/criteria/scoring/type.d.ts +0 -0
  523. /package/dist/{lib → browser/lib}/rating/criteria/scoringCriteria.d.mts +0 -0
  524. /package/dist/{lib → browser/lib}/rating/criteria/scoringCriteria.d.ts +0 -0
  525. /package/dist/{lib → browser/lib}/rating/index.d.mts +0 -0
  526. /package/dist/{lib → browser/lib}/rating/index.d.ts +0 -0
@@ -0,0 +1,390 @@
1
+ // src/Diviner.ts
2
+ import { AbstractDiviner } from "@xyo-network/abstract-diviner";
3
+ import { PayloadHasher } from "@xyo-network/core";
4
+ import {
5
+ isNftInfo,
6
+ NftScoreDivinerConfigSchema,
7
+ NftScoreSchema
8
+ } from "@xyo-network/crypto-nft-payload-plugin";
9
+
10
+ // src/lib/rating/criteria/scoring/contract.ts
11
+ import { isAddress } from "@ethersproject/address";
12
+ import { FAIL, PASS } from "@xyo-network/crypto-nft-score-model";
13
+ var scoreContractAddress = (nft) => {
14
+ if (!nft.address)
15
+ return FAIL;
16
+ if (typeof nft.address !== "string")
17
+ return FAIL;
18
+ if (!isAddress(nft.address))
19
+ return FAIL;
20
+ return PASS;
21
+ };
22
+
23
+ // src/lib/rating/criteria/scoring/metadata/animationUrl.ts
24
+ import { incrementPossible, incrementTotal, incrementTotalAndPossible, PASS as PASS2 } from "@xyo-network/crypto-nft-score-model";
25
+
26
+ // src/lib/rating/criteria/scoring/metadata/lib/urlHelpers.ts
27
+ import { URL } from "@xylabs/url";
28
+ var web3Protocols = ["ipfs:", "ar:"];
29
+ var toUrl = (url) => {
30
+ if (!url)
31
+ return void 0;
32
+ try {
33
+ return new URL(url);
34
+ } catch (e) {
35
+ return void 0;
36
+ }
37
+ };
38
+ var isValidUrl = (url) => toUrl(url) !== void 0;
39
+ var isWeb3 = (url) => web3Protocols.some((protocol) => protocol === toUrl(url)?.protocol);
40
+ var isSecure = (url) => isWeb3(url) || toUrl(url)?.protocol === "https:";
41
+
42
+ // src/lib/rating/criteria/scoring/metadata/animationUrl.ts
43
+ var scoreNftAnimationUrl = (nft) => {
44
+ return scoreAnimationUrl(nft.metadata?.animation_url);
45
+ };
46
+ var scoreAnimationUrl = (animation_url) => {
47
+ const score = [0, 0];
48
+ if (animation_url === void 0 || animation_url === null)
49
+ return PASS2;
50
+ incrementPossible(score);
51
+ if (typeof animation_url !== "string")
52
+ return score;
53
+ incrementTotalAndPossible(score);
54
+ if (!isValidUrl(animation_url))
55
+ return score;
56
+ incrementTotalAndPossible(score);
57
+ if (!isSecure(animation_url))
58
+ return score;
59
+ incrementTotalAndPossible(score);
60
+ if (!isWeb3(animation_url))
61
+ return score;
62
+ return incrementTotal(score);
63
+ };
64
+
65
+ // src/lib/rating/criteria/scoring/metadata/attributes/evaluateAttributes.ts
66
+ import { incrementPossible as incrementPossible2, incrementTotal as incrementTotal2, incrementTotalAndPossible as incrementTotalAndPossible2 } from "@xyo-network/crypto-nft-score-model";
67
+ var isDate = (value) => {
68
+ if (isNumber(value)) {
69
+ try {
70
+ new Date(value);
71
+ return true;
72
+ } catch (error) {
73
+ return false;
74
+ }
75
+ }
76
+ return false;
77
+ };
78
+ var isNumber = (value) => typeof value === "number";
79
+ var isPercentage = (value) => isNumber(value) && value >= 0 && value <= 100;
80
+ var isNonEmptyString = (value) => typeof value === "string" && value.length > 0;
81
+ var isNonEmptyStringOrNumber = (value) => value === "number" || isNonEmptyString(value);
82
+ var evaluateNftAttributes = (nft) => !nft?.metadata?.attributes ? [0, 1] : evaluateAttributes(nft?.metadata?.attributes);
83
+ var evaluateAttributes = (attributes) => {
84
+ if (!attributes || !Array.isArray(attributes) || attributes.length === 0)
85
+ return [0, 1];
86
+ const score = [0, 0];
87
+ for (const attribute of attributes) {
88
+ const [attributeTotal, attributePossible] = evaluateAttribute(attribute);
89
+ incrementTotalAndPossible2(score, attributeTotal, attributePossible);
90
+ }
91
+ return [1, 1];
92
+ };
93
+ var evaluateAttribute = (attribute) => {
94
+ const score = [0, 1];
95
+ const max_value = attribute?.max_value;
96
+ const trait_type = attribute?.trait_type;
97
+ const value = attribute?.value;
98
+ if (!attribute || typeof attribute !== "object" || !isNonEmptyString(trait_type) || !isNonEmptyStringOrNumber(value))
99
+ return score;
100
+ incrementTotal2(score);
101
+ incrementPossible2(score);
102
+ if (validDisplayType(attribute))
103
+ incrementTotal2(score);
104
+ if (max_value !== void 0) {
105
+ incrementPossible2(score);
106
+ if (isNumber(max_value) && isNumber(value) && value <= max_value)
107
+ incrementTotal2(score);
108
+ }
109
+ return score;
110
+ };
111
+ var validDisplayType = (attribute) => {
112
+ switch (attribute?.display_type) {
113
+ case "number":
114
+ case "boost_number": {
115
+ if (isNumber(attribute?.value))
116
+ return true;
117
+ break;
118
+ }
119
+ case "boost_percentage": {
120
+ if (isPercentage(attribute?.value))
121
+ return true;
122
+ break;
123
+ }
124
+ case "date": {
125
+ if (isDate(attribute?.value))
126
+ return true;
127
+ break;
128
+ }
129
+ case "string":
130
+ case void 0: {
131
+ if (isNonEmptyString(attribute?.value))
132
+ return true;
133
+ break;
134
+ }
135
+ default: {
136
+ break;
137
+ }
138
+ }
139
+ return false;
140
+ };
141
+
142
+ // src/lib/rating/criteria/scoring/metadata/backgroundColor.ts
143
+ import { incrementPossible as incrementPossible3, incrementTotal as incrementTotal3, incrementTotalAndPossible as incrementTotalAndPossible3, PASS as PASS3 } from "@xyo-network/crypto-nft-score-model";
144
+ var isHexColor = /^[0-9A-F]{6}$/i;
145
+ var scoreNftBackgroundColor = (nft) => {
146
+ return scoreBackgroundColor(nft.metadata?.background_color);
147
+ };
148
+ var scoreBackgroundColor = (background_color) => {
149
+ const score = [0, 0];
150
+ if (background_color === void 0 || background_color === null)
151
+ return PASS3;
152
+ incrementPossible3(score);
153
+ if (typeof background_color !== "string")
154
+ return score;
155
+ incrementTotalAndPossible3(score);
156
+ if (!background_color.toUpperCase().match(isHexColor))
157
+ return score;
158
+ return incrementTotal3(score);
159
+ };
160
+
161
+ // src/lib/rating/criteria/scoring/metadata/description.ts
162
+ import { incrementTotal as incrementTotal4 } from "@xyo-network/crypto-nft-score-model";
163
+ var scoreNftDescription = (nft) => {
164
+ return scoreDescription(nft.metadata?.description);
165
+ };
166
+ var scoreDescription = (description) => {
167
+ const score = [0, 1];
168
+ if (!description || typeof description !== "string")
169
+ return score;
170
+ return incrementTotal4(score);
171
+ };
172
+
173
+ // src/lib/rating/criteria/scoring/metadata/externalUrl.ts
174
+ import { incrementTotal as incrementTotal5 } from "@xyo-network/crypto-nft-score-model";
175
+ var scoreNftExternalUrl = (nft) => {
176
+ return scoreExternalUrl(nft?.metadata?.external_url);
177
+ };
178
+ var scoreExternalUrl = (external_url) => {
179
+ const score = [0, 2];
180
+ if (external_url === void 0 || external_url === null || typeof external_url !== "string" || !isValidUrl(external_url))
181
+ return score;
182
+ incrementTotal5(score);
183
+ if (!isSecure(external_url))
184
+ return score;
185
+ return incrementTotal5(score);
186
+ };
187
+
188
+ // src/lib/rating/criteria/scoring/metadata/image.ts
189
+ import { incrementTotal as incrementTotal6, PASS as PASS4 } from "@xyo-network/crypto-nft-score-model";
190
+ var MaxPossibleImageScore = 3;
191
+ var scoreNftImage = (nft) => {
192
+ if (!nft?.metadata?.image) {
193
+ return nft.metadata?.image_data ? PASS4 : [0, MaxPossibleImageScore];
194
+ } else {
195
+ return scoreImage(nft.metadata?.image);
196
+ }
197
+ };
198
+ var scoreImage = (image) => {
199
+ const score = [0, MaxPossibleImageScore];
200
+ if (!image || typeof image !== "string" || !isValidUrl(image))
201
+ return score;
202
+ incrementTotal6(score);
203
+ if (!isSecure(image))
204
+ return score;
205
+ incrementTotal6(score);
206
+ if (!isWeb3(image))
207
+ return score;
208
+ incrementTotal6(score);
209
+ return score;
210
+ };
211
+
212
+ // src/lib/rating/criteria/scoring/metadata/imageData.ts
213
+ import { PASS as PASS5 } from "@xyo-network/crypto-nft-score-model";
214
+ import { parse } from "svg-parser";
215
+ var MaxPossibleImageDataScore = 1;
216
+ var isValidImageData = (image_data) => {
217
+ if (!image_data.startsWith("<svg"))
218
+ return false;
219
+ try {
220
+ parse(image_data);
221
+ return true;
222
+ } catch (error) {
223
+ return false;
224
+ }
225
+ };
226
+ var scoreNftImageData = (nft) => {
227
+ if (!nft?.metadata?.image_data) {
228
+ return nft.metadata?.image ? PASS5 : [0, MaxPossibleImageDataScore];
229
+ } else {
230
+ return scoreImageData(nft.metadata?.image_data);
231
+ }
232
+ };
233
+ var scoreImageData = (image_data) => {
234
+ return !image_data || typeof image_data !== "string" || !isValidImageData(image_data) ? [0, MaxPossibleImageDataScore] : [MaxPossibleImageDataScore, MaxPossibleImageDataScore];
235
+ };
236
+
237
+ // src/lib/rating/criteria/scoring/metadata/name.ts
238
+ import { incrementTotal as incrementTotal7 } from "@xyo-network/crypto-nft-score-model";
239
+ var scoreNftName = (nft) => {
240
+ return scoreName(nft.metadata?.name);
241
+ };
242
+ var scoreName = (name) => {
243
+ const score = [0, 1];
244
+ if (!name || typeof name !== "string")
245
+ return score;
246
+ return incrementTotal7(score);
247
+ };
248
+
249
+ // src/lib/rating/criteria/scoring/metadata/youtubeUrl.ts
250
+ import { incrementTotal as incrementTotal8, PASS as PASS6 } from "@xyo-network/crypto-nft-score-model";
251
+ var scoreNftYoutubeUrl = (nft) => {
252
+ return scoreYoutubeUrl(nft?.metadata?.youtube_url);
253
+ };
254
+ var scoreYoutubeUrl = (youtube_url) => {
255
+ if (youtube_url === void 0 || youtube_url === null)
256
+ return PASS6;
257
+ const score = [0, 2];
258
+ if (typeof youtube_url !== "string" || !isValidUrl(youtube_url))
259
+ return score;
260
+ incrementTotal8(score);
261
+ if (!isSecure(youtube_url))
262
+ return score;
263
+ return incrementTotal8(score);
264
+ };
265
+
266
+ // src/lib/rating/criteria/scoring/supply.ts
267
+ import { FAIL as FAIL2, PASS as PASS7 } from "@xyo-network/crypto-nft-score-model";
268
+
269
+ // src/lib/rating/criteria/scoring/lib/toBigNumber.ts
270
+ import { BigNumber } from "@xylabs/bignumber";
271
+ var toBigNumber = (value) => {
272
+ try {
273
+ return new BigNumber(value);
274
+ } catch (error) {
275
+ return void 0;
276
+ }
277
+ };
278
+
279
+ // src/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.ts
280
+ var isValidPositiveBigNumber = (value) => {
281
+ const num = toBigNumber(value);
282
+ return !num || num.isNeg() ? false : true;
283
+ };
284
+
285
+ // src/lib/rating/criteria/scoring/supply.ts
286
+ var scoreSupply = (nft) => {
287
+ if (!nft.supply)
288
+ return FAIL2;
289
+ if (typeof nft.supply !== "string")
290
+ return FAIL2;
291
+ try {
292
+ return isValidPositiveBigNumber(nft.supply) ? PASS7 : FAIL2;
293
+ } catch (_error) {
294
+ return FAIL2;
295
+ }
296
+ };
297
+
298
+ // src/lib/rating/criteria/scoring/tokenId.ts
299
+ import { FAIL as FAIL3, PASS as PASS8 } from "@xyo-network/crypto-nft-score-model";
300
+ var scoreTokenId = (nft) => {
301
+ if (!nft.tokenId)
302
+ return FAIL3;
303
+ if (typeof nft.tokenId !== "string")
304
+ return FAIL3;
305
+ try {
306
+ return isValidPositiveBigNumber(nft.tokenId) ? PASS8 : FAIL3;
307
+ } catch (_error) {
308
+ return FAIL3;
309
+ }
310
+ };
311
+
312
+ // src/lib/rating/criteria/scoring/type.ts
313
+ import { FAIL as FAIL4, PASS as PASS9 } from "@xyo-network/crypto-nft-score-model";
314
+ var scoreType = (nft) => {
315
+ if (!nft.type)
316
+ return FAIL4;
317
+ if (typeof nft.type !== "string")
318
+ return FAIL4;
319
+ const type = nft.type.toUpperCase();
320
+ if (type !== "ERC721" && type !== "ERC1155")
321
+ return FAIL4;
322
+ return PASS9;
323
+ };
324
+
325
+ // src/lib/rating/criteria/scoringCriteria.ts
326
+ var attributesScoringCriteria = {
327
+ Attributes: { score: evaluateNftAttributes, weight: 1 }
328
+ };
329
+ var metadataScoringCriteria = {
330
+ "Animation URL": { score: scoreNftAnimationUrl, weight: 1 },
331
+ "Background Color": { score: scoreNftBackgroundColor, weight: 1 },
332
+ Description: { score: scoreNftDescription, weight: 1 },
333
+ "External Url": { score: scoreNftExternalUrl, weight: 1 },
334
+ Image: { score: scoreNftImage, weight: 1 },
335
+ "Image Data": { score: scoreNftImageData, weight: 1 },
336
+ Name: { score: scoreNftName, weight: 1 },
337
+ "YouTube URL": { score: scoreNftYoutubeUrl, weight: 1 },
338
+ ...attributesScoringCriteria
339
+ };
340
+ var scoringCriteria = {
341
+ "Contract Address": { score: scoreContractAddress, weight: 1 },
342
+ Supply: { score: scoreSupply, weight: 1 },
343
+ "Token Id": { score: scoreTokenId, weight: 1 },
344
+ Type: { score: scoreType, weight: 1 },
345
+ ...metadataScoringCriteria
346
+ };
347
+
348
+ // src/lib/rating/analyzeNft.ts
349
+ var analyzeNft = async (nft) => {
350
+ const result = Object.fromEntries(
351
+ await Promise.all(
352
+ Object.entries(scoringCriteria).map(async ([key, { score, weight }]) => {
353
+ const rawScore = await score(nft);
354
+ const weighted = rawScore.map((v) => v * weight);
355
+ return [key, weighted];
356
+ })
357
+ )
358
+ );
359
+ return result;
360
+ };
361
+
362
+ // src/Diviner.ts
363
+ var toNftScorePayload = (nftInfo, scores) => {
364
+ const { address, chainId, type } = nftInfo;
365
+ return { address, chainId, schema: NftScoreSchema, scores, type };
366
+ };
367
+ var isNftScore = (payload) => payload.schema === NftScoreSchema;
368
+ var NftScoreDiviner = class extends AbstractDiviner {
369
+ static configSchemas = [NftScoreDivinerConfigSchema];
370
+ divineHandler = async (payloads) => {
371
+ const nftInfos = payloads?.filter(isNftInfo) ?? [];
372
+ const results = await Promise.all(
373
+ nftInfos.map(async (nftInfo) => {
374
+ const [score, sourceHash] = await Promise.all([
375
+ // Analyze the NFT
376
+ toNftScorePayload(nftInfo, await analyzeNft(nftInfo)),
377
+ // Hash the source payload
378
+ PayloadHasher.hashAsync(nftInfo)
379
+ ]);
380
+ return { ...score, sources: [sourceHash] };
381
+ })
382
+ );
383
+ return results;
384
+ };
385
+ };
386
+ export {
387
+ NftScoreDiviner,
388
+ isNftScore
389
+ };
390
+ //# sourceMappingURL=Diviner.js.map
@@ -0,0 +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/lib/toBigNumber.ts","../../src/lib/rating/criteria/scoring/lib/isValidPositiveBigNumber.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"],"sourcesContent":["import { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport { PayloadHasher } from '@xyo-network/core'\nimport {\n isNftInfo,\n NftInfo,\n NftScore,\n NftScoreDivinerConfig,\n NftScoreDivinerConfigSchema,\n NftScoreSchema,\n} from '@xyo-network/crypto-nft-payload-plugin'\nimport { DivinerParams } from '@xyo-network/diviner-model'\nimport { AnyConfigSchema } from '@xyo-network/module'\nimport { Payload } from '@xyo-network/payload-model'\n\nimport { analyzeNft, NftAnalysis } from './lib'\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 configSchemas = [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 PayloadHasher.hashAsync(nftInfo),\n ])\n return { ...score, sources: [sourceHash] }\n }),\n )\n return results\n }\n}\n","import { isAddress } from '@ethersproject/address'\nimport { NftInfoFields } from '@xyo-network/crypto-nft-payload-plugin'\nimport { FAIL, PASS, PassFailScoringFunction } from '@xyo-network/crypto-nft-score-model'\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'\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 (e) {\n return undefined\n }\n}\n\nexport const isValidUrl = (url?: string | null): boolean => toUrl(url) !== undefined\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 (error) {\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 ? [0, 1] : evaluateAttributes(nft?.metadata?.attributes)\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 = /^[0-9A-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 (!background_color.toUpperCase().match(isHexColor)) 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'\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'\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 // but there is image data, skip this scoring criteria, otherwise fail it completely\n return nft.metadata?.image_data ? PASS : [0, MaxPossibleImageScore]\n } else {\n return scoreImage(nft.metadata?.image)\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 (error) {\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 // but there is an image, skip this scoring criteria, otherwise fail it completely\n return nft.metadata?.image ? PASS : [0, MaxPossibleImageDataScore]\n } else {\n return scoreImageData(nft.metadata?.image_data)\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'\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\nimport { isValidPositiveBigNumber } from './lib'\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 // Check for positive BigNumber since data type is uint256\n return isValidPositiveBigNumber(nft.supply) ? PASS : FAIL\n } catch (_error) {\n return FAIL\n }\n}\n","import { BigNumber } from '@xylabs/bignumber'\n\nexport const toBigNumber = (value: string): BigNumber | undefined => {\n try {\n return new BigNumber(value)\n } catch (error) {\n return undefined\n }\n}\n","import { toBigNumber } from './toBigNumber'\n\nexport const isValidPositiveBigNumber = (value: string): boolean => {\n const num = toBigNumber(value)\n return !num || num.isNeg() ? false : true\n}\n","import { NftInfoFields } from '@xyo-network/crypto-nft-payload-plugin'\nimport { FAIL, PASS, PassFailScoringFunction } from '@xyo-network/crypto-nft-score-model'\n\nimport { isValidPositiveBigNumber } from './lib'\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 // Check for positive BigNumber since data type is uint256\n return isValidPositiveBigNumber(nft.tokenId) ? PASS : FAIL\n } catch (_error) {\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'\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'\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"],"mappings":"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","names":["PASS","PASS","incrementPossible","incrementTotal","incrementTotalAndPossible","incrementPossible","incrementTotal","incrementTotalAndPossible","PASS","incrementTotal","incrementTotal","incrementTotal","incrementTotal","PASS","PASS","incrementTotal","PASS","incrementTotal","incrementTotal","PASS","PASS","incrementTotal","FAIL","PASS","FAIL","PASS","FAIL","PASS","FAIL","PASS","FAIL","PASS"]}