@xyo-network/crypto-nft-collection-diviner-score-plugin 2.74.5 → 2.75.2

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 (290) hide show
  1. package/dist/browser/Diviner.cjs +143 -0
  2. package/dist/browser/Diviner.cjs.map +1 -0
  3. package/dist/browser/Diviner.d.cts.map +1 -0
  4. package/dist/browser/Diviner.d.mts.map +1 -0
  5. package/dist/browser/Diviner.d.ts +11 -0
  6. package/dist/browser/Diviner.d.ts.map +1 -0
  7. package/dist/browser/Diviner.js +35 -0
  8. package/dist/browser/Diviner.js.map +1 -0
  9. package/dist/browser/Plugin.cjs +159 -0
  10. package/dist/browser/Plugin.cjs.map +1 -0
  11. package/dist/browser/Plugin.d.cts.map +1 -0
  12. package/dist/browser/Plugin.d.mts.map +1 -0
  13. package/dist/browser/Plugin.d.ts +50 -0
  14. package/dist/browser/Plugin.d.ts.map +1 -0
  15. package/dist/browser/Plugin.js +17 -0
  16. package/dist/browser/Plugin.js.map +1 -0
  17. package/dist/browser/index.cjs +167 -0
  18. package/dist/browser/index.cjs.map +1 -0
  19. package/dist/browser/index.d.cts.map +1 -0
  20. package/dist/browser/index.d.mts.map +1 -0
  21. package/dist/browser/index.d.ts +6 -0
  22. package/dist/browser/index.d.ts.map +1 -0
  23. package/dist/browser/index.js +9 -0
  24. package/dist/browser/index.js.map +1 -0
  25. package/dist/browser/lib/index.cjs +115 -0
  26. package/dist/browser/lib/index.cjs.map +1 -0
  27. package/dist/browser/lib/index.d.cts.map +1 -0
  28. package/dist/browser/lib/index.d.mts.map +1 -0
  29. package/dist/browser/lib/index.d.ts +2 -0
  30. package/dist/browser/lib/index.d.ts.map +1 -0
  31. package/dist/browser/lib/index.js +2 -0
  32. package/dist/browser/lib/index.js.map +1 -0
  33. package/dist/browser/lib/rating/analyzeNftCollection.cjs +115 -0
  34. package/dist/browser/lib/rating/analyzeNftCollection.cjs.map +1 -0
  35. package/dist/browser/lib/rating/analyzeNftCollection.d.cts.map +1 -0
  36. package/dist/browser/lib/rating/analyzeNftCollection.d.mts.map +1 -0
  37. package/dist/browser/lib/rating/analyzeNftCollection.d.ts +9 -0
  38. package/dist/browser/lib/rating/analyzeNftCollection.d.ts.map +1 -0
  39. package/dist/browser/lib/rating/analyzeNftCollection.js +17 -0
  40. package/dist/browser/lib/rating/analyzeNftCollection.js.map +1 -0
  41. package/dist/browser/lib/rating/criteria/index.cjs +101 -0
  42. package/dist/browser/lib/rating/criteria/index.cjs.map +1 -0
  43. package/dist/browser/lib/rating/criteria/index.d.cts.map +1 -0
  44. package/dist/browser/lib/rating/criteria/index.d.mts.map +1 -0
  45. package/dist/browser/lib/rating/criteria/index.d.ts +6 -0
  46. package/dist/browser/lib/rating/criteria/index.d.ts.map +1 -0
  47. package/dist/browser/lib/rating/criteria/index.js +9 -0
  48. package/dist/browser/lib/rating/criteria/index.js.map +1 -0
  49. package/dist/browser/lib/rating/criteria/scoring/index.cjs +97 -0
  50. package/dist/browser/lib/rating/criteria/scoring/index.cjs.map +1 -0
  51. package/dist/browser/lib/rating/criteria/scoring/index.d.cts.map +1 -0
  52. package/dist/browser/lib/rating/criteria/scoring/index.d.mts.map +1 -0
  53. package/dist/browser/lib/rating/criteria/scoring/index.d.ts +3 -0
  54. package/dist/browser/lib/rating/criteria/scoring/index.d.ts.map +1 -0
  55. package/dist/browser/lib/rating/criteria/scoring/index.js +3 -0
  56. package/dist/browser/lib/rating/criteria/scoring/index.js.map +1 -0
  57. package/dist/browser/lib/rating/criteria/scoring/metadata/index.cjs +76 -0
  58. package/dist/browser/lib/rating/criteria/scoring/metadata/index.cjs.map +1 -0
  59. package/dist/browser/lib/rating/criteria/scoring/metadata/index.d.cts.map +1 -0
  60. package/dist/browser/lib/rating/criteria/scoring/metadata/index.d.mts.map +1 -0
  61. package/dist/browser/lib/rating/criteria/scoring/metadata/index.d.ts +2 -0
  62. package/dist/browser/lib/rating/criteria/scoring/metadata/index.d.ts.map +1 -0
  63. package/dist/browser/lib/rating/criteria/scoring/metadata/index.js +2 -0
  64. package/dist/browser/lib/rating/criteria/scoring/metadata/index.js.map +1 -0
  65. package/dist/browser/lib/rating/criteria/scoring/metadata/metadata.cjs +76 -0
  66. package/dist/browser/lib/rating/criteria/scoring/metadata/metadata.cjs.map +1 -0
  67. package/dist/browser/lib/rating/criteria/scoring/metadata/metadata.d.cts.map +1 -0
  68. package/dist/browser/lib/rating/criteria/scoring/metadata/metadata.d.mts.map +1 -0
  69. package/dist/browser/lib/rating/criteria/scoring/metadata/metadata.d.ts +9 -0
  70. package/dist/browser/lib/rating/criteria/scoring/metadata/metadata.d.ts.map +1 -0
  71. package/dist/browser/lib/rating/criteria/scoring/metadata/metadata.js +14 -0
  72. package/dist/browser/lib/rating/criteria/scoring/metadata/metadata.js.map +1 -0
  73. package/dist/browser/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.cjs +42 -0
  74. package/dist/browser/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.cjs.map +1 -0
  75. package/dist/browser/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.d.cts.map +1 -0
  76. package/dist/browser/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.d.mts.map +1 -0
  77. package/dist/browser/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.d.ts +4 -0
  78. package/dist/browser/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.d.ts.map +1 -0
  79. package/dist/browser/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.js +20 -0
  80. package/dist/browser/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.js.map +1 -0
  81. package/dist/browser/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.cjs +46 -0
  82. package/dist/browser/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.cjs.map +1 -0
  83. package/dist/browser/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.d.cts.map +1 -0
  84. package/dist/browser/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.d.mts.map +1 -0
  85. package/dist/browser/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.d.ts +24 -0
  86. package/dist/browser/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.d.ts.map +1 -0
  87. package/dist/browser/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.js +24 -0
  88. package/dist/browser/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.js.map +1 -0
  89. package/dist/browser/lib/rating/criteria/scoring/total.cjs +44 -0
  90. package/dist/browser/lib/rating/criteria/scoring/total.cjs.map +1 -0
  91. package/dist/browser/lib/rating/criteria/scoring/total.d.cts.map +1 -0
  92. package/dist/browser/lib/rating/criteria/scoring/total.d.mts.map +1 -0
  93. package/dist/browser/lib/rating/criteria/scoring/total.d.ts +16 -0
  94. package/dist/browser/lib/rating/criteria/scoring/total.d.ts.map +1 -0
  95. package/dist/browser/lib/rating/criteria/scoring/total.js +22 -0
  96. package/dist/browser/lib/rating/criteria/scoring/total.js.map +1 -0
  97. package/dist/browser/lib/rating/index.cjs +115 -0
  98. package/dist/browser/lib/rating/index.cjs.map +1 -0
  99. package/dist/browser/lib/rating/index.d.cts.map +1 -0
  100. package/dist/browser/lib/rating/index.d.mts.map +1 -0
  101. package/dist/browser/lib/rating/index.d.ts +2 -0
  102. package/dist/browser/lib/rating/index.d.ts.map +1 -0
  103. package/dist/browser/lib/rating/index.js +2 -0
  104. package/dist/browser/lib/rating/index.js.map +1 -0
  105. package/dist/docs.json +529 -529
  106. package/dist/node/Diviner.d.cts +11 -0
  107. package/dist/node/Diviner.d.cts.map +1 -0
  108. package/dist/node/Diviner.d.mts +11 -0
  109. package/dist/node/Diviner.d.mts.map +1 -0
  110. package/dist/node/Diviner.d.ts +11 -0
  111. package/dist/node/Diviner.d.ts.map +1 -0
  112. package/dist/node/Diviner.js +147 -0
  113. package/dist/node/Diviner.js.map +1 -0
  114. package/dist/node/Diviner.mjs +126 -0
  115. package/dist/node/Diviner.mjs.map +1 -0
  116. package/dist/node/Plugin.d.cts +50 -0
  117. package/dist/node/Plugin.d.cts.map +1 -0
  118. package/dist/node/Plugin.d.mts +50 -0
  119. package/dist/node/Plugin.d.mts.map +1 -0
  120. package/dist/node/Plugin.d.ts +50 -0
  121. package/dist/node/Plugin.d.ts.map +1 -0
  122. package/dist/node/Plugin.js +163 -0
  123. package/dist/node/Plugin.js.map +1 -0
  124. package/dist/node/Plugin.mjs +142 -0
  125. package/dist/node/Plugin.mjs.map +1 -0
  126. package/dist/node/index.d.cts +6 -0
  127. package/dist/node/index.d.cts.map +1 -0
  128. package/dist/node/index.d.mts +6 -0
  129. package/dist/node/index.d.mts.map +1 -0
  130. package/dist/node/index.d.ts +6 -0
  131. package/dist/node/index.d.ts.map +1 -0
  132. package/dist/{index.js → node/index.js} +1 -1
  133. package/dist/node/index.js.map +1 -0
  134. package/dist/{index.mjs → node/index.mjs} +1 -1
  135. package/dist/node/index.mjs.map +1 -0
  136. package/dist/node/lib/index.d.cts +2 -0
  137. package/dist/node/lib/index.d.cts.map +1 -0
  138. package/dist/node/lib/index.d.mts +2 -0
  139. package/dist/node/lib/index.d.mts.map +1 -0
  140. package/dist/node/lib/index.d.ts +2 -0
  141. package/dist/node/lib/index.d.ts.map +1 -0
  142. package/dist/node/lib/index.js +119 -0
  143. package/dist/node/lib/index.js.map +1 -0
  144. package/dist/node/lib/index.mjs +92 -0
  145. package/dist/node/lib/index.mjs.map +1 -0
  146. package/dist/node/lib/rating/analyzeNftCollection.d.cts +9 -0
  147. package/dist/node/lib/rating/analyzeNftCollection.d.cts.map +1 -0
  148. package/dist/node/lib/rating/analyzeNftCollection.d.mts +9 -0
  149. package/dist/node/lib/rating/analyzeNftCollection.d.mts.map +1 -0
  150. package/dist/node/lib/rating/analyzeNftCollection.d.ts +9 -0
  151. package/dist/node/lib/rating/analyzeNftCollection.d.ts.map +1 -0
  152. package/dist/node/lib/rating/analyzeNftCollection.js +119 -0
  153. package/dist/node/lib/rating/analyzeNftCollection.js.map +1 -0
  154. package/dist/node/lib/rating/analyzeNftCollection.mjs +92 -0
  155. package/dist/node/lib/rating/analyzeNftCollection.mjs.map +1 -0
  156. package/dist/node/lib/rating/criteria/index.d.cts +6 -0
  157. package/dist/node/lib/rating/criteria/index.d.cts.map +1 -0
  158. package/dist/node/lib/rating/criteria/index.d.mts +6 -0
  159. package/dist/node/lib/rating/criteria/index.d.mts.map +1 -0
  160. package/dist/node/lib/rating/criteria/index.d.ts +6 -0
  161. package/dist/node/lib/rating/criteria/index.d.ts.map +1 -0
  162. package/dist/node/lib/rating/criteria/index.js +105 -0
  163. package/dist/node/lib/rating/criteria/index.js.map +1 -0
  164. package/dist/node/lib/rating/criteria/index.mjs +78 -0
  165. package/dist/node/lib/rating/criteria/index.mjs.map +1 -0
  166. package/dist/node/lib/rating/criteria/scoring/index.d.cts +3 -0
  167. package/dist/node/lib/rating/criteria/scoring/index.d.cts.map +1 -0
  168. package/dist/node/lib/rating/criteria/scoring/index.d.mts +3 -0
  169. package/dist/node/lib/rating/criteria/scoring/index.d.mts.map +1 -0
  170. package/dist/node/lib/rating/criteria/scoring/index.d.ts +3 -0
  171. package/dist/node/lib/rating/criteria/scoring/index.d.ts.map +1 -0
  172. package/dist/node/lib/rating/criteria/scoring/index.js +103 -0
  173. package/dist/node/lib/rating/criteria/scoring/index.js.map +1 -0
  174. package/dist/node/lib/rating/criteria/scoring/index.mjs +74 -0
  175. package/dist/node/lib/rating/criteria/scoring/index.mjs.map +1 -0
  176. package/dist/node/lib/rating/criteria/scoring/metadata/index.d.cts +2 -0
  177. package/dist/node/lib/rating/criteria/scoring/metadata/index.d.cts.map +1 -0
  178. package/dist/node/lib/rating/criteria/scoring/metadata/index.d.mts +2 -0
  179. package/dist/node/lib/rating/criteria/scoring/metadata/index.d.mts.map +1 -0
  180. package/dist/node/lib/rating/criteria/scoring/metadata/index.d.ts +2 -0
  181. package/dist/node/lib/rating/criteria/scoring/metadata/index.d.ts.map +1 -0
  182. package/dist/node/lib/rating/criteria/scoring/metadata/index.js +81 -0
  183. package/dist/node/lib/rating/criteria/scoring/metadata/index.js.map +1 -0
  184. package/dist/node/lib/rating/criteria/scoring/metadata/index.mjs +53 -0
  185. package/dist/node/lib/rating/criteria/scoring/metadata/index.mjs.map +1 -0
  186. package/dist/node/lib/rating/criteria/scoring/metadata/metadata.d.cts +9 -0
  187. package/dist/node/lib/rating/criteria/scoring/metadata/metadata.d.cts.map +1 -0
  188. package/dist/node/lib/rating/criteria/scoring/metadata/metadata.d.mts +9 -0
  189. package/dist/node/lib/rating/criteria/scoring/metadata/metadata.d.mts.map +1 -0
  190. package/dist/node/lib/rating/criteria/scoring/metadata/metadata.d.ts +9 -0
  191. package/dist/node/lib/rating/criteria/scoring/metadata/metadata.d.ts.map +1 -0
  192. package/dist/node/lib/rating/criteria/scoring/metadata/metadata.js +81 -0
  193. package/dist/node/lib/rating/criteria/scoring/metadata/metadata.js.map +1 -0
  194. package/dist/node/lib/rating/criteria/scoring/metadata/metadata.mjs +53 -0
  195. package/dist/node/lib/rating/criteria/scoring/metadata/metadata.mjs.map +1 -0
  196. package/dist/node/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.d.cts +4 -0
  197. package/dist/node/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.d.cts.map +1 -0
  198. package/dist/node/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.d.mts +4 -0
  199. package/dist/node/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.d.mts.map +1 -0
  200. package/dist/node/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.d.ts +4 -0
  201. package/dist/node/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.d.ts.map +1 -0
  202. package/dist/node/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.js +46 -0
  203. package/dist/node/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.js.map +1 -0
  204. package/dist/node/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.mjs +21 -0
  205. package/dist/node/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.mjs.map +1 -0
  206. package/dist/node/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.d.cts +24 -0
  207. package/dist/node/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.d.cts.map +1 -0
  208. package/dist/node/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.d.mts +24 -0
  209. package/dist/node/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.d.mts.map +1 -0
  210. package/dist/node/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.d.ts +24 -0
  211. package/dist/node/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.d.ts.map +1 -0
  212. package/dist/node/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.js +50 -0
  213. package/dist/node/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.js.map +1 -0
  214. package/dist/node/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.mjs +25 -0
  215. package/dist/node/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.mjs.map +1 -0
  216. package/dist/node/lib/rating/criteria/scoring/total.d.cts +16 -0
  217. package/dist/node/lib/rating/criteria/scoring/total.d.cts.map +1 -0
  218. package/dist/node/lib/rating/criteria/scoring/total.d.mts +16 -0
  219. package/dist/node/lib/rating/criteria/scoring/total.d.mts.map +1 -0
  220. package/dist/node/lib/rating/criteria/scoring/total.d.ts +16 -0
  221. package/dist/node/lib/rating/criteria/scoring/total.d.ts.map +1 -0
  222. package/dist/node/lib/rating/criteria/scoring/total.js +48 -0
  223. package/dist/node/lib/rating/criteria/scoring/total.js.map +1 -0
  224. package/dist/node/lib/rating/criteria/scoring/total.mjs +23 -0
  225. package/dist/node/lib/rating/criteria/scoring/total.mjs.map +1 -0
  226. package/dist/node/lib/rating/index.d.cts +2 -0
  227. package/dist/node/lib/rating/index.d.cts.map +1 -0
  228. package/dist/node/lib/rating/index.d.mts +2 -0
  229. package/dist/node/lib/rating/index.d.mts.map +1 -0
  230. package/dist/node/lib/rating/index.d.ts +2 -0
  231. package/dist/node/lib/rating/index.d.ts.map +1 -0
  232. package/dist/node/lib/rating/index.js +119 -0
  233. package/dist/node/lib/rating/index.js.map +1 -0
  234. package/dist/node/lib/rating/index.mjs +92 -0
  235. package/dist/node/lib/rating/index.mjs.map +1 -0
  236. package/package.json +34 -31
  237. package/dist/Diviner.d.mts.map +0 -1
  238. package/dist/Diviner.d.ts.map +0 -1
  239. package/dist/Plugin.d.mts.map +0 -1
  240. package/dist/Plugin.d.ts.map +0 -1
  241. package/dist/index.d.mts.map +0 -1
  242. package/dist/index.d.ts.map +0 -1
  243. package/dist/index.js.map +0 -1
  244. package/dist/index.mjs.map +0 -1
  245. package/dist/lib/index.d.mts.map +0 -1
  246. package/dist/lib/index.d.ts.map +0 -1
  247. package/dist/lib/rating/analyzeNftCollection.d.mts.map +0 -1
  248. package/dist/lib/rating/analyzeNftCollection.d.ts.map +0 -1
  249. package/dist/lib/rating/criteria/index.d.mts.map +0 -1
  250. package/dist/lib/rating/criteria/index.d.ts.map +0 -1
  251. package/dist/lib/rating/criteria/scoring/index.d.mts.map +0 -1
  252. package/dist/lib/rating/criteria/scoring/index.d.ts.map +0 -1
  253. package/dist/lib/rating/criteria/scoring/metadata/index.d.mts.map +0 -1
  254. package/dist/lib/rating/criteria/scoring/metadata/index.d.ts.map +0 -1
  255. package/dist/lib/rating/criteria/scoring/metadata/metadata.d.mts.map +0 -1
  256. package/dist/lib/rating/criteria/scoring/metadata/metadata.d.ts.map +0 -1
  257. package/dist/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.d.mts.map +0 -1
  258. package/dist/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.d.ts.map +0 -1
  259. package/dist/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.d.mts.map +0 -1
  260. package/dist/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.d.ts.map +0 -1
  261. package/dist/lib/rating/criteria/scoring/total.d.mts.map +0 -1
  262. package/dist/lib/rating/criteria/scoring/total.d.ts.map +0 -1
  263. package/dist/lib/rating/index.d.mts.map +0 -1
  264. package/dist/lib/rating/index.d.ts.map +0 -1
  265. /package/dist/{Diviner.d.mts → browser/Diviner.d.cts} +0 -0
  266. /package/dist/{Diviner.d.ts → browser/Diviner.d.mts} +0 -0
  267. /package/dist/{Plugin.d.mts → browser/Plugin.d.cts} +0 -0
  268. /package/dist/{Plugin.d.ts → browser/Plugin.d.mts} +0 -0
  269. /package/dist/{index.d.mts → browser/index.d.cts} +0 -0
  270. /package/dist/{index.d.ts → browser/index.d.mts} +0 -0
  271. /package/dist/{lib/index.d.mts → browser/lib/index.d.cts} +0 -0
  272. /package/dist/{lib/index.d.ts → browser/lib/index.d.mts} +0 -0
  273. /package/dist/{lib/rating/analyzeNftCollection.d.mts → browser/lib/rating/analyzeNftCollection.d.cts} +0 -0
  274. /package/dist/{lib/rating/analyzeNftCollection.d.ts → browser/lib/rating/analyzeNftCollection.d.mts} +0 -0
  275. /package/dist/{lib/rating/criteria/index.d.mts → browser/lib/rating/criteria/index.d.cts} +0 -0
  276. /package/dist/{lib/rating/criteria/index.d.ts → browser/lib/rating/criteria/index.d.mts} +0 -0
  277. /package/dist/{lib/rating/criteria/scoring/index.d.mts → browser/lib/rating/criteria/scoring/index.d.cts} +0 -0
  278. /package/dist/{lib/rating/criteria/scoring/index.d.ts → browser/lib/rating/criteria/scoring/index.d.mts} +0 -0
  279. /package/dist/{lib/rating/criteria/scoring/metadata/index.d.mts → browser/lib/rating/criteria/scoring/metadata/index.d.cts} +0 -0
  280. /package/dist/{lib/rating/criteria/scoring/metadata/index.d.ts → browser/lib/rating/criteria/scoring/metadata/index.d.mts} +0 -0
  281. /package/dist/{lib/rating/criteria/scoring/metadata/metadata.d.mts → browser/lib/rating/criteria/scoring/metadata/metadata.d.cts} +0 -0
  282. /package/dist/{lib/rating/criteria/scoring/metadata/metadata.d.ts → browser/lib/rating/criteria/scoring/metadata/metadata.d.mts} +0 -0
  283. /package/dist/{lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.d.mts → browser/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.d.cts} +0 -0
  284. /package/dist/{lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.d.ts → browser/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.d.mts} +0 -0
  285. /package/dist/{lib/rating/criteria/scoring/metadata/scoreTotalAttributes.d.mts → browser/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.d.cts} +0 -0
  286. /package/dist/{lib/rating/criteria/scoring/metadata/scoreTotalAttributes.d.ts → browser/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.d.mts} +0 -0
  287. /package/dist/{lib/rating/criteria/scoring/total.d.mts → browser/lib/rating/criteria/scoring/total.d.cts} +0 -0
  288. /package/dist/{lib/rating/criteria/scoring/total.d.ts → browser/lib/rating/criteria/scoring/total.d.mts} +0 -0
  289. /package/dist/{lib/rating/index.d.mts → browser/lib/rating/index.d.cts} +0 -0
  290. /package/dist/{lib/rating/index.d.ts → browser/lib/rating/index.d.mts} +0 -0
@@ -0,0 +1,53 @@
1
+ // src/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.ts
2
+ import { normalize } from "@xyo-network/crypto-nft-score-model";
3
+ var maxScore = 10;
4
+ var scoreIndividualAttributes = (info) => {
5
+ const { attributes } = info.metrics.metadata;
6
+ const entries = Object.entries(attributes);
7
+ if (entries.length === 0)
8
+ return [0, maxScore];
9
+ const scores = Object.entries(attributes).map(([_trait, { values }]) => {
10
+ return Object.entries(values).map(([_traitValue, metrics]) => {
11
+ const rarity = Math.min(Math.round((1 - metrics.binomial.p) * maxScore), maxScore);
12
+ return [rarity, maxScore];
13
+ });
14
+ }).flat();
15
+ const total = scores.reduce(([a, b], [c, d]) => [a + c, b + d], [0, 0]);
16
+ return normalize(total, maxScore);
17
+ };
18
+
19
+ // src/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.ts
20
+ import { normalize as normalize2 } from "@xyo-network/crypto-nft-score-model";
21
+ var maxScore2 = 10;
22
+ var defaultMu = 0.15;
23
+ var defaultSigma = 0.1;
24
+ var gaussianProbabilityDensity = (x, mu = defaultMu, sigma = defaultSigma) => {
25
+ const sqrtTwoPi = Math.sqrt(2 * Math.PI);
26
+ const denominator = sigma * sqrtTwoPi;
27
+ const power = -0.5 * Math.pow((x - mu) / sigma, 2);
28
+ return 1 / denominator * Math.exp(power);
29
+ };
30
+ var maxProbabilityDensity = gaussianProbabilityDensity(defaultMu);
31
+ var scoreTotalAttributes = (info) => {
32
+ const { attributes } = info.metrics.metadata;
33
+ const jointProbability = Object.entries(attributes).reduce((acc, [_trait, { metrics }]) => {
34
+ return acc * metrics.binomial.p;
35
+ }, 1);
36
+ const probabilityDensity = gaussianProbabilityDensity(jointProbability);
37
+ const score = [probabilityDensity, maxProbabilityDensity];
38
+ return normalize2(score, maxScore2);
39
+ };
40
+
41
+ // src/lib/rating/criteria/scoring/metadata/metadata.ts
42
+ var attributeScoringCriteria = {
43
+ "Metadata Attributes Individual": { score: scoreIndividualAttributes, weight: 2 },
44
+ "Metadata Attributes Total": { score: scoreTotalAttributes, weight: 2 }
45
+ };
46
+ var scoreMetadata = {
47
+ ...attributeScoringCriteria
48
+ };
49
+ export {
50
+ attributeScoringCriteria,
51
+ scoreMetadata
52
+ };
53
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.ts","../../../../../../../src/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.ts","../../../../../../../src/lib/rating/criteria/scoring/metadata/metadata.ts"],"sourcesContent":["import { NftCollectionAttributeMetrics } from '@xyo-network/crypto-nft-collection-payload-plugin'\nimport { normalize, Score } from '@xyo-network/crypto-nft-score-model'\n\nconst maxScore = 10\n\nexport const scoreIndividualAttributes = (info: NftCollectionAttributeMetrics): Score => {\n const { attributes } = info.metrics.metadata\n const entries = Object.entries(attributes)\n if (entries.length === 0) return [0, maxScore]\n const scores = Object.entries(attributes)\n .map(([_trait, { values }]) => {\n return Object.entries(values).map<Score>(([_traitValue, metrics]) => {\n const rarity = Math.min(Math.round((1 - metrics.binomial.p) * maxScore), maxScore)\n return [rarity, maxScore]\n })\n })\n .flat()\n const total = scores.reduce<Score>(([a, b], [c, d]) => [a + c, b + d], [0, 0])\n return normalize(total, maxScore)\n}\n","import { NftCollectionAttributeMetrics } from '@xyo-network/crypto-nft-collection-payload-plugin'\nimport { normalize, Score } from '@xyo-network/crypto-nft-score-model'\n\nconst maxScore = 10\n\n/**\n * Mean: What value is the distribution centered around\n */\nconst defaultMu = 0.15\n\n/**\n * Standard Deviation: How spread out is the distribution\n */\nconst defaultSigma = 0.1\n\n/**\n * Calculates the Gaussian probability density\n * @param x\n * @param mu Mean\n * @param sigma Standard Deviation\n * @returns\n */\nconst gaussianProbabilityDensity = (x: number, mu: number = defaultMu, sigma: number = defaultSigma): number => {\n const sqrtTwoPi = Math.sqrt(2 * Math.PI)\n const denominator = sigma * sqrtTwoPi\n const power = -0.5 * Math.pow((x - mu) / sigma, 2)\n return (1 / denominator) * Math.exp(power)\n}\n\n/**\n * For a Gaussian distribution, the peak of the distribution is the mean\n */\nconst maxProbabilityDensity = gaussianProbabilityDensity(defaultMu)\n\n/**\n * We're working on some assumptions here:\n *\n * - If you have a 100% chance of getting a trait, everyone get's a trophy\n * - If you have a 50% chance of getting a trait, it's not rare\n * - If you have a 0% chance of getting a trait, it's not fun\n *\n * So we're looking for something Pareto-ish (somewhere between\n * 80/20 or 90/10) as that's a good & sustainable model for the\n * distribution of many traits in real life.\n * However, we also don't want to maximally reward collections\n * that have a lot of single attributes distributed uniformly\n * (basically a 0% trait probably) as that's perfectly entropic\n * but not very interesting (some overlap is desirable).\n * So we're using a Gaussian distribution to model the\n * probability density of the joint probability of all traits\n * centered around 15%.\n * @param info\n * @returns\n */\nexport const scoreTotalAttributes = (info: NftCollectionAttributeMetrics): Score => {\n const { attributes } = info.metrics.metadata\n // This has somewhat of a filtering function by causing anything with 100% probability to\n // add no value to the end score\n const jointProbability = Object.entries(attributes).reduce((acc, [_trait, { metrics }]) => {\n return acc * metrics.binomial.p\n }, 1)\n const probabilityDensity = gaussianProbabilityDensity(jointProbability)\n const score: Score = [probabilityDensity, maxProbabilityDensity]\n return normalize(score, maxScore)\n}\n","import { NftCollectionInfo } from '@xyo-network/crypto-nft-collection-payload-plugin'\nimport { WeightedScoringCriteria } from '@xyo-network/crypto-nft-score-model'\n\nimport { scoreIndividualAttributes } from './scoreIndividualAttributes'\nimport { scoreTotalAttributes } from './scoreTotalAttributes'\n\nexport const attributeScoringCriteria: { [key: string]: WeightedScoringCriteria<NftCollectionInfo> } = {\n 'Metadata Attributes Individual': { score: scoreIndividualAttributes, weight: 2 },\n 'Metadata Attributes Total': { score: scoreTotalAttributes, weight: 2 },\n}\n\nexport const scoreMetadata: { [key: string]: WeightedScoringCriteria<NftCollectionInfo> } = {\n ...attributeScoringCriteria,\n}\n"],"mappings":";AACA,SAAS,iBAAwB;AAEjC,IAAM,WAAW;AAEV,IAAM,4BAA4B,CAAC,SAA+C;AACvF,QAAM,EAAE,WAAW,IAAI,KAAK,QAAQ;AACpC,QAAM,UAAU,OAAO,QAAQ,UAAU;AACzC,MAAI,QAAQ,WAAW;AAAG,WAAO,CAAC,GAAG,QAAQ;AAC7C,QAAM,SAAS,OAAO,QAAQ,UAAU,EACrC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM;AAC7B,WAAO,OAAO,QAAQ,MAAM,EAAE,IAAW,CAAC,CAAC,aAAa,OAAO,MAAM;AACnE,YAAM,SAAS,KAAK,IAAI,KAAK,OAAO,IAAI,QAAQ,SAAS,KAAK,QAAQ,GAAG,QAAQ;AACjF,aAAO,CAAC,QAAQ,QAAQ;AAAA,IAC1B,CAAC;AAAA,EACH,CAAC,EACA,KAAK;AACR,QAAM,QAAQ,OAAO,OAAc,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7E,SAAO,UAAU,OAAO,QAAQ;AAClC;;;AClBA,SAAS,aAAAA,kBAAwB;AAEjC,IAAMC,YAAW;AAKjB,IAAM,YAAY;AAKlB,IAAM,eAAe;AASrB,IAAM,6BAA6B,CAAC,GAAW,KAAa,WAAW,QAAgB,iBAAyB;AAC9G,QAAM,YAAY,KAAK,KAAK,IAAI,KAAK,EAAE;AACvC,QAAM,cAAc,QAAQ;AAC5B,QAAM,QAAQ,OAAO,KAAK,KAAK,IAAI,MAAM,OAAO,CAAC;AACjD,SAAQ,IAAI,cAAe,KAAK,IAAI,KAAK;AAC3C;AAKA,IAAM,wBAAwB,2BAA2B,SAAS;AAsB3D,IAAM,uBAAuB,CAAC,SAA+C;AAClF,QAAM,EAAE,WAAW,IAAI,KAAK,QAAQ;AAGpC,QAAM,mBAAmB,OAAO,QAAQ,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM;AACzF,WAAO,MAAM,QAAQ,SAAS;AAAA,EAChC,GAAG,CAAC;AACJ,QAAM,qBAAqB,2BAA2B,gBAAgB;AACtE,QAAM,QAAe,CAAC,oBAAoB,qBAAqB;AAC/D,SAAOD,WAAU,OAAOC,SAAQ;AAClC;;;AC1DO,IAAM,2BAA0F;AAAA,EACrG,kCAAkC,EAAE,OAAO,2BAA2B,QAAQ,EAAE;AAAA,EAChF,6BAA6B,EAAE,OAAO,sBAAsB,QAAQ,EAAE;AACxE;AAEO,IAAM,gBAA+E;AAAA,EAC1F,GAAG;AACL;","names":["normalize","maxScore"]}
@@ -0,0 +1,9 @@
1
+ import { NftCollectionInfo } from '@xyo-network/crypto-nft-collection-payload-plugin';
2
+ import { WeightedScoringCriteria } from '@xyo-network/crypto-nft-score-model';
3
+ export declare const attributeScoringCriteria: {
4
+ [key: string]: WeightedScoringCriteria<NftCollectionInfo>;
5
+ };
6
+ export declare const scoreMetadata: {
7
+ [key: string]: WeightedScoringCriteria<NftCollectionInfo>;
8
+ };
9
+ //# sourceMappingURL=metadata.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,9 @@
1
+ import { NftCollectionInfo } from '@xyo-network/crypto-nft-collection-payload-plugin';
2
+ import { WeightedScoringCriteria } from '@xyo-network/crypto-nft-score-model';
3
+ export declare const attributeScoringCriteria: {
4
+ [key: string]: WeightedScoringCriteria<NftCollectionInfo>;
5
+ };
6
+ export declare const scoreMetadata: {
7
+ [key: string]: WeightedScoringCriteria<NftCollectionInfo>;
8
+ };
9
+ //# sourceMappingURL=metadata.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,9 @@
1
+ import { NftCollectionInfo } from '@xyo-network/crypto-nft-collection-payload-plugin';
2
+ import { WeightedScoringCriteria } from '@xyo-network/crypto-nft-score-model';
3
+ export declare const attributeScoringCriteria: {
4
+ [key: string]: WeightedScoringCriteria<NftCollectionInfo>;
5
+ };
6
+ export declare const scoreMetadata: {
7
+ [key: string]: WeightedScoringCriteria<NftCollectionInfo>;
8
+ };
9
+ //# sourceMappingURL=metadata.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/rating/criteria/scoring/metadata/metadata.ts
21
+ var metadata_exports = {};
22
+ __export(metadata_exports, {
23
+ attributeScoringCriteria: () => attributeScoringCriteria,
24
+ scoreMetadata: () => scoreMetadata
25
+ });
26
+ module.exports = __toCommonJS(metadata_exports);
27
+
28
+ // src/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.ts
29
+ var import_crypto_nft_score_model = require("@xyo-network/crypto-nft-score-model");
30
+ var maxScore = 10;
31
+ var scoreIndividualAttributes = (info) => {
32
+ const { attributes } = info.metrics.metadata;
33
+ const entries = Object.entries(attributes);
34
+ if (entries.length === 0)
35
+ return [0, maxScore];
36
+ const scores = Object.entries(attributes).map(([_trait, { values }]) => {
37
+ return Object.entries(values).map(([_traitValue, metrics]) => {
38
+ const rarity = Math.min(Math.round((1 - metrics.binomial.p) * maxScore), maxScore);
39
+ return [rarity, maxScore];
40
+ });
41
+ }).flat();
42
+ const total = scores.reduce(([a, b], [c, d]) => [a + c, b + d], [0, 0]);
43
+ return (0, import_crypto_nft_score_model.normalize)(total, maxScore);
44
+ };
45
+
46
+ // src/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.ts
47
+ var import_crypto_nft_score_model2 = require("@xyo-network/crypto-nft-score-model");
48
+ var maxScore2 = 10;
49
+ var defaultMu = 0.15;
50
+ var defaultSigma = 0.1;
51
+ var gaussianProbabilityDensity = (x, mu = defaultMu, sigma = defaultSigma) => {
52
+ const sqrtTwoPi = Math.sqrt(2 * Math.PI);
53
+ const denominator = sigma * sqrtTwoPi;
54
+ const power = -0.5 * Math.pow((x - mu) / sigma, 2);
55
+ return 1 / denominator * Math.exp(power);
56
+ };
57
+ var maxProbabilityDensity = gaussianProbabilityDensity(defaultMu);
58
+ var scoreTotalAttributes = (info) => {
59
+ const { attributes } = info.metrics.metadata;
60
+ const jointProbability = Object.entries(attributes).reduce((acc, [_trait, { metrics }]) => {
61
+ return acc * metrics.binomial.p;
62
+ }, 1);
63
+ const probabilityDensity = gaussianProbabilityDensity(jointProbability);
64
+ const score = [probabilityDensity, maxProbabilityDensity];
65
+ return (0, import_crypto_nft_score_model2.normalize)(score, maxScore2);
66
+ };
67
+
68
+ // src/lib/rating/criteria/scoring/metadata/metadata.ts
69
+ var attributeScoringCriteria = {
70
+ "Metadata Attributes Individual": { score: scoreIndividualAttributes, weight: 2 },
71
+ "Metadata Attributes Total": { score: scoreTotalAttributes, weight: 2 }
72
+ };
73
+ var scoreMetadata = {
74
+ ...attributeScoringCriteria
75
+ };
76
+ // Annotate the CommonJS export names for ESM import in node:
77
+ 0 && (module.exports = {
78
+ attributeScoringCriteria,
79
+ scoreMetadata
80
+ });
81
+ //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/metadata.ts","../../../../../../../src/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.ts","../../../../../../../src/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.ts"],"sourcesContent":["import { NftCollectionInfo } from '@xyo-network/crypto-nft-collection-payload-plugin'\nimport { WeightedScoringCriteria } from '@xyo-network/crypto-nft-score-model'\n\nimport { scoreIndividualAttributes } from './scoreIndividualAttributes'\nimport { scoreTotalAttributes } from './scoreTotalAttributes'\n\nexport const attributeScoringCriteria: { [key: string]: WeightedScoringCriteria<NftCollectionInfo> } = {\n 'Metadata Attributes Individual': { score: scoreIndividualAttributes, weight: 2 },\n 'Metadata Attributes Total': { score: scoreTotalAttributes, weight: 2 },\n}\n\nexport const scoreMetadata: { [key: string]: WeightedScoringCriteria<NftCollectionInfo> } = {\n ...attributeScoringCriteria,\n}\n","import { NftCollectionAttributeMetrics } from '@xyo-network/crypto-nft-collection-payload-plugin'\nimport { normalize, Score } from '@xyo-network/crypto-nft-score-model'\n\nconst maxScore = 10\n\nexport const scoreIndividualAttributes = (info: NftCollectionAttributeMetrics): Score => {\n const { attributes } = info.metrics.metadata\n const entries = Object.entries(attributes)\n if (entries.length === 0) return [0, maxScore]\n const scores = Object.entries(attributes)\n .map(([_trait, { values }]) => {\n return Object.entries(values).map<Score>(([_traitValue, metrics]) => {\n const rarity = Math.min(Math.round((1 - metrics.binomial.p) * maxScore), maxScore)\n return [rarity, maxScore]\n })\n })\n .flat()\n const total = scores.reduce<Score>(([a, b], [c, d]) => [a + c, b + d], [0, 0])\n return normalize(total, maxScore)\n}\n","import { NftCollectionAttributeMetrics } from '@xyo-network/crypto-nft-collection-payload-plugin'\nimport { normalize, Score } from '@xyo-network/crypto-nft-score-model'\n\nconst maxScore = 10\n\n/**\n * Mean: What value is the distribution centered around\n */\nconst defaultMu = 0.15\n\n/**\n * Standard Deviation: How spread out is the distribution\n */\nconst defaultSigma = 0.1\n\n/**\n * Calculates the Gaussian probability density\n * @param x\n * @param mu Mean\n * @param sigma Standard Deviation\n * @returns\n */\nconst gaussianProbabilityDensity = (x: number, mu: number = defaultMu, sigma: number = defaultSigma): number => {\n const sqrtTwoPi = Math.sqrt(2 * Math.PI)\n const denominator = sigma * sqrtTwoPi\n const power = -0.5 * Math.pow((x - mu) / sigma, 2)\n return (1 / denominator) * Math.exp(power)\n}\n\n/**\n * For a Gaussian distribution, the peak of the distribution is the mean\n */\nconst maxProbabilityDensity = gaussianProbabilityDensity(defaultMu)\n\n/**\n * We're working on some assumptions here:\n *\n * - If you have a 100% chance of getting a trait, everyone get's a trophy\n * - If you have a 50% chance of getting a trait, it's not rare\n * - If you have a 0% chance of getting a trait, it's not fun\n *\n * So we're looking for something Pareto-ish (somewhere between\n * 80/20 or 90/10) as that's a good & sustainable model for the\n * distribution of many traits in real life.\n * However, we also don't want to maximally reward collections\n * that have a lot of single attributes distributed uniformly\n * (basically a 0% trait probably) as that's perfectly entropic\n * but not very interesting (some overlap is desirable).\n * So we're using a Gaussian distribution to model the\n * probability density of the joint probability of all traits\n * centered around 15%.\n * @param info\n * @returns\n */\nexport const scoreTotalAttributes = (info: NftCollectionAttributeMetrics): Score => {\n const { attributes } = info.metrics.metadata\n // This has somewhat of a filtering function by causing anything with 100% probability to\n // add no value to the end score\n const jointProbability = Object.entries(attributes).reduce((acc, [_trait, { metrics }]) => {\n return acc * metrics.binomial.p\n }, 1)\n const probabilityDensity = gaussianProbabilityDensity(jointProbability)\n const score: Score = [probabilityDensity, maxProbabilityDensity]\n return normalize(score, maxScore)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,oCAAiC;AAEjC,IAAM,WAAW;AAEV,IAAM,4BAA4B,CAAC,SAA+C;AACvF,QAAM,EAAE,WAAW,IAAI,KAAK,QAAQ;AACpC,QAAM,UAAU,OAAO,QAAQ,UAAU;AACzC,MAAI,QAAQ,WAAW;AAAG,WAAO,CAAC,GAAG,QAAQ;AAC7C,QAAM,SAAS,OAAO,QAAQ,UAAU,EACrC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM;AAC7B,WAAO,OAAO,QAAQ,MAAM,EAAE,IAAW,CAAC,CAAC,aAAa,OAAO,MAAM;AACnE,YAAM,SAAS,KAAK,IAAI,KAAK,OAAO,IAAI,QAAQ,SAAS,KAAK,QAAQ,GAAG,QAAQ;AACjF,aAAO,CAAC,QAAQ,QAAQ;AAAA,IAC1B,CAAC;AAAA,EACH,CAAC,EACA,KAAK;AACR,QAAM,QAAQ,OAAO,OAAc,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7E,aAAO,yCAAU,OAAO,QAAQ;AAClC;;;AClBA,IAAAA,iCAAiC;AAEjC,IAAMC,YAAW;AAKjB,IAAM,YAAY;AAKlB,IAAM,eAAe;AASrB,IAAM,6BAA6B,CAAC,GAAW,KAAa,WAAW,QAAgB,iBAAyB;AAC9G,QAAM,YAAY,KAAK,KAAK,IAAI,KAAK,EAAE;AACvC,QAAM,cAAc,QAAQ;AAC5B,QAAM,QAAQ,OAAO,KAAK,KAAK,IAAI,MAAM,OAAO,CAAC;AACjD,SAAQ,IAAI,cAAe,KAAK,IAAI,KAAK;AAC3C;AAKA,IAAM,wBAAwB,2BAA2B,SAAS;AAsB3D,IAAM,uBAAuB,CAAC,SAA+C;AAClF,QAAM,EAAE,WAAW,IAAI,KAAK,QAAQ;AAGpC,QAAM,mBAAmB,OAAO,QAAQ,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM;AACzF,WAAO,MAAM,QAAQ,SAAS;AAAA,EAChC,GAAG,CAAC;AACJ,QAAM,qBAAqB,2BAA2B,gBAAgB;AACtE,QAAM,QAAe,CAAC,oBAAoB,qBAAqB;AAC/D,aAAO,0CAAU,OAAOA,SAAQ;AAClC;;;AF1DO,IAAM,2BAA0F;AAAA,EACrG,kCAAkC,EAAE,OAAO,2BAA2B,QAAQ,EAAE;AAAA,EAChF,6BAA6B,EAAE,OAAO,sBAAsB,QAAQ,EAAE;AACxE;AAEO,IAAM,gBAA+E;AAAA,EAC1F,GAAG;AACL;","names":["import_crypto_nft_score_model","maxScore"]}
@@ -0,0 +1,53 @@
1
+ // src/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.ts
2
+ import { normalize } from "@xyo-network/crypto-nft-score-model";
3
+ var maxScore = 10;
4
+ var scoreIndividualAttributes = (info) => {
5
+ const { attributes } = info.metrics.metadata;
6
+ const entries = Object.entries(attributes);
7
+ if (entries.length === 0)
8
+ return [0, maxScore];
9
+ const scores = Object.entries(attributes).map(([_trait, { values }]) => {
10
+ return Object.entries(values).map(([_traitValue, metrics]) => {
11
+ const rarity = Math.min(Math.round((1 - metrics.binomial.p) * maxScore), maxScore);
12
+ return [rarity, maxScore];
13
+ });
14
+ }).flat();
15
+ const total = scores.reduce(([a, b], [c, d]) => [a + c, b + d], [0, 0]);
16
+ return normalize(total, maxScore);
17
+ };
18
+
19
+ // src/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.ts
20
+ import { normalize as normalize2 } from "@xyo-network/crypto-nft-score-model";
21
+ var maxScore2 = 10;
22
+ var defaultMu = 0.15;
23
+ var defaultSigma = 0.1;
24
+ var gaussianProbabilityDensity = (x, mu = defaultMu, sigma = defaultSigma) => {
25
+ const sqrtTwoPi = Math.sqrt(2 * Math.PI);
26
+ const denominator = sigma * sqrtTwoPi;
27
+ const power = -0.5 * Math.pow((x - mu) / sigma, 2);
28
+ return 1 / denominator * Math.exp(power);
29
+ };
30
+ var maxProbabilityDensity = gaussianProbabilityDensity(defaultMu);
31
+ var scoreTotalAttributes = (info) => {
32
+ const { attributes } = info.metrics.metadata;
33
+ const jointProbability = Object.entries(attributes).reduce((acc, [_trait, { metrics }]) => {
34
+ return acc * metrics.binomial.p;
35
+ }, 1);
36
+ const probabilityDensity = gaussianProbabilityDensity(jointProbability);
37
+ const score = [probabilityDensity, maxProbabilityDensity];
38
+ return normalize2(score, maxScore2);
39
+ };
40
+
41
+ // src/lib/rating/criteria/scoring/metadata/metadata.ts
42
+ var attributeScoringCriteria = {
43
+ "Metadata Attributes Individual": { score: scoreIndividualAttributes, weight: 2 },
44
+ "Metadata Attributes Total": { score: scoreTotalAttributes, weight: 2 }
45
+ };
46
+ var scoreMetadata = {
47
+ ...attributeScoringCriteria
48
+ };
49
+ export {
50
+ attributeScoringCriteria,
51
+ scoreMetadata
52
+ };
53
+ //# sourceMappingURL=metadata.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.ts","../../../../../../../src/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.ts","../../../../../../../src/lib/rating/criteria/scoring/metadata/metadata.ts"],"sourcesContent":["import { NftCollectionAttributeMetrics } from '@xyo-network/crypto-nft-collection-payload-plugin'\nimport { normalize, Score } from '@xyo-network/crypto-nft-score-model'\n\nconst maxScore = 10\n\nexport const scoreIndividualAttributes = (info: NftCollectionAttributeMetrics): Score => {\n const { attributes } = info.metrics.metadata\n const entries = Object.entries(attributes)\n if (entries.length === 0) return [0, maxScore]\n const scores = Object.entries(attributes)\n .map(([_trait, { values }]) => {\n return Object.entries(values).map<Score>(([_traitValue, metrics]) => {\n const rarity = Math.min(Math.round((1 - metrics.binomial.p) * maxScore), maxScore)\n return [rarity, maxScore]\n })\n })\n .flat()\n const total = scores.reduce<Score>(([a, b], [c, d]) => [a + c, b + d], [0, 0])\n return normalize(total, maxScore)\n}\n","import { NftCollectionAttributeMetrics } from '@xyo-network/crypto-nft-collection-payload-plugin'\nimport { normalize, Score } from '@xyo-network/crypto-nft-score-model'\n\nconst maxScore = 10\n\n/**\n * Mean: What value is the distribution centered around\n */\nconst defaultMu = 0.15\n\n/**\n * Standard Deviation: How spread out is the distribution\n */\nconst defaultSigma = 0.1\n\n/**\n * Calculates the Gaussian probability density\n * @param x\n * @param mu Mean\n * @param sigma Standard Deviation\n * @returns\n */\nconst gaussianProbabilityDensity = (x: number, mu: number = defaultMu, sigma: number = defaultSigma): number => {\n const sqrtTwoPi = Math.sqrt(2 * Math.PI)\n const denominator = sigma * sqrtTwoPi\n const power = -0.5 * Math.pow((x - mu) / sigma, 2)\n return (1 / denominator) * Math.exp(power)\n}\n\n/**\n * For a Gaussian distribution, the peak of the distribution is the mean\n */\nconst maxProbabilityDensity = gaussianProbabilityDensity(defaultMu)\n\n/**\n * We're working on some assumptions here:\n *\n * - If you have a 100% chance of getting a trait, everyone get's a trophy\n * - If you have a 50% chance of getting a trait, it's not rare\n * - If you have a 0% chance of getting a trait, it's not fun\n *\n * So we're looking for something Pareto-ish (somewhere between\n * 80/20 or 90/10) as that's a good & sustainable model for the\n * distribution of many traits in real life.\n * However, we also don't want to maximally reward collections\n * that have a lot of single attributes distributed uniformly\n * (basically a 0% trait probably) as that's perfectly entropic\n * but not very interesting (some overlap is desirable).\n * So we're using a Gaussian distribution to model the\n * probability density of the joint probability of all traits\n * centered around 15%.\n * @param info\n * @returns\n */\nexport const scoreTotalAttributes = (info: NftCollectionAttributeMetrics): Score => {\n const { attributes } = info.metrics.metadata\n // This has somewhat of a filtering function by causing anything with 100% probability to\n // add no value to the end score\n const jointProbability = Object.entries(attributes).reduce((acc, [_trait, { metrics }]) => {\n return acc * metrics.binomial.p\n }, 1)\n const probabilityDensity = gaussianProbabilityDensity(jointProbability)\n const score: Score = [probabilityDensity, maxProbabilityDensity]\n return normalize(score, maxScore)\n}\n","import { NftCollectionInfo } from '@xyo-network/crypto-nft-collection-payload-plugin'\nimport { WeightedScoringCriteria } from '@xyo-network/crypto-nft-score-model'\n\nimport { scoreIndividualAttributes } from './scoreIndividualAttributes'\nimport { scoreTotalAttributes } from './scoreTotalAttributes'\n\nexport const attributeScoringCriteria: { [key: string]: WeightedScoringCriteria<NftCollectionInfo> } = {\n 'Metadata Attributes Individual': { score: scoreIndividualAttributes, weight: 2 },\n 'Metadata Attributes Total': { score: scoreTotalAttributes, weight: 2 },\n}\n\nexport const scoreMetadata: { [key: string]: WeightedScoringCriteria<NftCollectionInfo> } = {\n ...attributeScoringCriteria,\n}\n"],"mappings":";AACA,SAAS,iBAAwB;AAEjC,IAAM,WAAW;AAEV,IAAM,4BAA4B,CAAC,SAA+C;AACvF,QAAM,EAAE,WAAW,IAAI,KAAK,QAAQ;AACpC,QAAM,UAAU,OAAO,QAAQ,UAAU;AACzC,MAAI,QAAQ,WAAW;AAAG,WAAO,CAAC,GAAG,QAAQ;AAC7C,QAAM,SAAS,OAAO,QAAQ,UAAU,EACrC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM;AAC7B,WAAO,OAAO,QAAQ,MAAM,EAAE,IAAW,CAAC,CAAC,aAAa,OAAO,MAAM;AACnE,YAAM,SAAS,KAAK,IAAI,KAAK,OAAO,IAAI,QAAQ,SAAS,KAAK,QAAQ,GAAG,QAAQ;AACjF,aAAO,CAAC,QAAQ,QAAQ;AAAA,IAC1B,CAAC;AAAA,EACH,CAAC,EACA,KAAK;AACR,QAAM,QAAQ,OAAO,OAAc,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7E,SAAO,UAAU,OAAO,QAAQ;AAClC;;;AClBA,SAAS,aAAAA,kBAAwB;AAEjC,IAAMC,YAAW;AAKjB,IAAM,YAAY;AAKlB,IAAM,eAAe;AASrB,IAAM,6BAA6B,CAAC,GAAW,KAAa,WAAW,QAAgB,iBAAyB;AAC9G,QAAM,YAAY,KAAK,KAAK,IAAI,KAAK,EAAE;AACvC,QAAM,cAAc,QAAQ;AAC5B,QAAM,QAAQ,OAAO,KAAK,KAAK,IAAI,MAAM,OAAO,CAAC;AACjD,SAAQ,IAAI,cAAe,KAAK,IAAI,KAAK;AAC3C;AAKA,IAAM,wBAAwB,2BAA2B,SAAS;AAsB3D,IAAM,uBAAuB,CAAC,SAA+C;AAClF,QAAM,EAAE,WAAW,IAAI,KAAK,QAAQ;AAGpC,QAAM,mBAAmB,OAAO,QAAQ,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM;AACzF,WAAO,MAAM,QAAQ,SAAS;AAAA,EAChC,GAAG,CAAC;AACJ,QAAM,qBAAqB,2BAA2B,gBAAgB;AACtE,QAAM,QAAe,CAAC,oBAAoB,qBAAqB;AAC/D,SAAOD,WAAU,OAAOC,SAAQ;AAClC;;;AC1DO,IAAM,2BAA0F;AAAA,EACrG,kCAAkC,EAAE,OAAO,2BAA2B,QAAQ,EAAE;AAAA,EAChF,6BAA6B,EAAE,OAAO,sBAAsB,QAAQ,EAAE;AACxE;AAEO,IAAM,gBAA+E;AAAA,EAC1F,GAAG;AACL;","names":["normalize","maxScore"]}
@@ -0,0 +1,4 @@
1
+ import { NftCollectionAttributeMetrics } from '@xyo-network/crypto-nft-collection-payload-plugin';
2
+ import { Score } from '@xyo-network/crypto-nft-score-model';
3
+ export declare const scoreIndividualAttributes: (info: NftCollectionAttributeMetrics) => Score;
4
+ //# sourceMappingURL=scoreIndividualAttributes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoreIndividualAttributes.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAA;AACjG,OAAO,EAAa,KAAK,EAAE,MAAM,qCAAqC,CAAA;AAItE,eAAO,MAAM,yBAAyB,SAAU,6BAA6B,KAAG,KAc/E,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { NftCollectionAttributeMetrics } from '@xyo-network/crypto-nft-collection-payload-plugin';
2
+ import { Score } from '@xyo-network/crypto-nft-score-model';
3
+ export declare const scoreIndividualAttributes: (info: NftCollectionAttributeMetrics) => Score;
4
+ //# sourceMappingURL=scoreIndividualAttributes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoreIndividualAttributes.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAA;AACjG,OAAO,EAAa,KAAK,EAAE,MAAM,qCAAqC,CAAA;AAItE,eAAO,MAAM,yBAAyB,SAAU,6BAA6B,KAAG,KAc/E,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { NftCollectionAttributeMetrics } from '@xyo-network/crypto-nft-collection-payload-plugin';
2
+ import { Score } from '@xyo-network/crypto-nft-score-model';
3
+ export declare const scoreIndividualAttributes: (info: NftCollectionAttributeMetrics) => Score;
4
+ //# sourceMappingURL=scoreIndividualAttributes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoreIndividualAttributes.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAA;AACjG,OAAO,EAAa,KAAK,EAAE,MAAM,qCAAqC,CAAA;AAItE,eAAO,MAAM,yBAAyB,SAAU,6BAA6B,KAAG,KAc/E,CAAA"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.ts
21
+ var scoreIndividualAttributes_exports = {};
22
+ __export(scoreIndividualAttributes_exports, {
23
+ scoreIndividualAttributes: () => scoreIndividualAttributes
24
+ });
25
+ module.exports = __toCommonJS(scoreIndividualAttributes_exports);
26
+ var import_crypto_nft_score_model = require("@xyo-network/crypto-nft-score-model");
27
+ var maxScore = 10;
28
+ var scoreIndividualAttributes = (info) => {
29
+ const { attributes } = info.metrics.metadata;
30
+ const entries = Object.entries(attributes);
31
+ if (entries.length === 0)
32
+ return [0, maxScore];
33
+ const scores = Object.entries(attributes).map(([_trait, { values }]) => {
34
+ return Object.entries(values).map(([_traitValue, metrics]) => {
35
+ const rarity = Math.min(Math.round((1 - metrics.binomial.p) * maxScore), maxScore);
36
+ return [rarity, maxScore];
37
+ });
38
+ }).flat();
39
+ const total = scores.reduce(([a, b], [c, d]) => [a + c, b + d], [0, 0]);
40
+ return (0, import_crypto_nft_score_model.normalize)(total, maxScore);
41
+ };
42
+ // Annotate the CommonJS export names for ESM import in node:
43
+ 0 && (module.exports = {
44
+ scoreIndividualAttributes
45
+ });
46
+ //# sourceMappingURL=scoreIndividualAttributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.ts"],"sourcesContent":["import { NftCollectionAttributeMetrics } from '@xyo-network/crypto-nft-collection-payload-plugin'\nimport { normalize, Score } from '@xyo-network/crypto-nft-score-model'\n\nconst maxScore = 10\n\nexport const scoreIndividualAttributes = (info: NftCollectionAttributeMetrics): Score => {\n const { attributes } = info.metrics.metadata\n const entries = Object.entries(attributes)\n if (entries.length === 0) return [0, maxScore]\n const scores = Object.entries(attributes)\n .map(([_trait, { values }]) => {\n return Object.entries(values).map<Score>(([_traitValue, metrics]) => {\n const rarity = Math.min(Math.round((1 - metrics.binomial.p) * maxScore), maxScore)\n return [rarity, maxScore]\n })\n })\n .flat()\n const total = scores.reduce<Score>(([a, b], [c, d]) => [a + c, b + d], [0, 0])\n return normalize(total, maxScore)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oCAAiC;AAEjC,IAAM,WAAW;AAEV,IAAM,4BAA4B,CAAC,SAA+C;AACvF,QAAM,EAAE,WAAW,IAAI,KAAK,QAAQ;AACpC,QAAM,UAAU,OAAO,QAAQ,UAAU;AACzC,MAAI,QAAQ,WAAW;AAAG,WAAO,CAAC,GAAG,QAAQ;AAC7C,QAAM,SAAS,OAAO,QAAQ,UAAU,EACrC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM;AAC7B,WAAO,OAAO,QAAQ,MAAM,EAAE,IAAW,CAAC,CAAC,aAAa,OAAO,MAAM;AACnE,YAAM,SAAS,KAAK,IAAI,KAAK,OAAO,IAAI,QAAQ,SAAS,KAAK,QAAQ,GAAG,QAAQ;AACjF,aAAO,CAAC,QAAQ,QAAQ;AAAA,IAC1B,CAAC;AAAA,EACH,CAAC,EACA,KAAK;AACR,QAAM,QAAQ,OAAO,OAAc,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7E,aAAO,yCAAU,OAAO,QAAQ;AAClC;","names":[]}
@@ -0,0 +1,21 @@
1
+ // src/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.ts
2
+ import { normalize } from "@xyo-network/crypto-nft-score-model";
3
+ var maxScore = 10;
4
+ var scoreIndividualAttributes = (info) => {
5
+ const { attributes } = info.metrics.metadata;
6
+ const entries = Object.entries(attributes);
7
+ if (entries.length === 0)
8
+ return [0, maxScore];
9
+ const scores = Object.entries(attributes).map(([_trait, { values }]) => {
10
+ return Object.entries(values).map(([_traitValue, metrics]) => {
11
+ const rarity = Math.min(Math.round((1 - metrics.binomial.p) * maxScore), maxScore);
12
+ return [rarity, maxScore];
13
+ });
14
+ }).flat();
15
+ const total = scores.reduce(([a, b], [c, d]) => [a + c, b + d], [0, 0]);
16
+ return normalize(total, maxScore);
17
+ };
18
+ export {
19
+ scoreIndividualAttributes
20
+ };
21
+ //# sourceMappingURL=scoreIndividualAttributes.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/scoreIndividualAttributes.ts"],"sourcesContent":["import { NftCollectionAttributeMetrics } from '@xyo-network/crypto-nft-collection-payload-plugin'\nimport { normalize, Score } from '@xyo-network/crypto-nft-score-model'\n\nconst maxScore = 10\n\nexport const scoreIndividualAttributes = (info: NftCollectionAttributeMetrics): Score => {\n const { attributes } = info.metrics.metadata\n const entries = Object.entries(attributes)\n if (entries.length === 0) return [0, maxScore]\n const scores = Object.entries(attributes)\n .map(([_trait, { values }]) => {\n return Object.entries(values).map<Score>(([_traitValue, metrics]) => {\n const rarity = Math.min(Math.round((1 - metrics.binomial.p) * maxScore), maxScore)\n return [rarity, maxScore]\n })\n })\n .flat()\n const total = scores.reduce<Score>(([a, b], [c, d]) => [a + c, b + d], [0, 0])\n return normalize(total, maxScore)\n}\n"],"mappings":";AACA,SAAS,iBAAwB;AAEjC,IAAM,WAAW;AAEV,IAAM,4BAA4B,CAAC,SAA+C;AACvF,QAAM,EAAE,WAAW,IAAI,KAAK,QAAQ;AACpC,QAAM,UAAU,OAAO,QAAQ,UAAU;AACzC,MAAI,QAAQ,WAAW;AAAG,WAAO,CAAC,GAAG,QAAQ;AAC7C,QAAM,SAAS,OAAO,QAAQ,UAAU,EACrC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM;AAC7B,WAAO,OAAO,QAAQ,MAAM,EAAE,IAAW,CAAC,CAAC,aAAa,OAAO,MAAM;AACnE,YAAM,SAAS,KAAK,IAAI,KAAK,OAAO,IAAI,QAAQ,SAAS,KAAK,QAAQ,GAAG,QAAQ;AACjF,aAAO,CAAC,QAAQ,QAAQ;AAAA,IAC1B,CAAC;AAAA,EACH,CAAC,EACA,KAAK;AACR,QAAM,QAAQ,OAAO,OAAc,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7E,SAAO,UAAU,OAAO,QAAQ;AAClC;","names":[]}
@@ -0,0 +1,24 @@
1
+ import { NftCollectionAttributeMetrics } from '@xyo-network/crypto-nft-collection-payload-plugin';
2
+ import { Score } from '@xyo-network/crypto-nft-score-model';
3
+ /**
4
+ * We're working on some assumptions here:
5
+ *
6
+ * - If you have a 100% chance of getting a trait, everyone get's a trophy
7
+ * - If you have a 50% chance of getting a trait, it's not rare
8
+ * - If you have a 0% chance of getting a trait, it's not fun
9
+ *
10
+ * So we're looking for something Pareto-ish (somewhere between
11
+ * 80/20 or 90/10) as that's a good & sustainable model for the
12
+ * distribution of many traits in real life.
13
+ * However, we also don't want to maximally reward collections
14
+ * that have a lot of single attributes distributed uniformly
15
+ * (basically a 0% trait probably) as that's perfectly entropic
16
+ * but not very interesting (some overlap is desirable).
17
+ * So we're using a Gaussian distribution to model the
18
+ * probability density of the joint probability of all traits
19
+ * centered around 15%.
20
+ * @param info
21
+ * @returns
22
+ */
23
+ export declare const scoreTotalAttributes: (info: NftCollectionAttributeMetrics) => Score;
24
+ //# sourceMappingURL=scoreTotalAttributes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoreTotalAttributes.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAA;AACjG,OAAO,EAAa,KAAK,EAAE,MAAM,qCAAqC,CAAA;AAiCtE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,oBAAoB,SAAU,6BAA6B,KAAG,KAU1E,CAAA"}
@@ -0,0 +1,24 @@
1
+ import { NftCollectionAttributeMetrics } from '@xyo-network/crypto-nft-collection-payload-plugin';
2
+ import { Score } from '@xyo-network/crypto-nft-score-model';
3
+ /**
4
+ * We're working on some assumptions here:
5
+ *
6
+ * - If you have a 100% chance of getting a trait, everyone get's a trophy
7
+ * - If you have a 50% chance of getting a trait, it's not rare
8
+ * - If you have a 0% chance of getting a trait, it's not fun
9
+ *
10
+ * So we're looking for something Pareto-ish (somewhere between
11
+ * 80/20 or 90/10) as that's a good & sustainable model for the
12
+ * distribution of many traits in real life.
13
+ * However, we also don't want to maximally reward collections
14
+ * that have a lot of single attributes distributed uniformly
15
+ * (basically a 0% trait probably) as that's perfectly entropic
16
+ * but not very interesting (some overlap is desirable).
17
+ * So we're using a Gaussian distribution to model the
18
+ * probability density of the joint probability of all traits
19
+ * centered around 15%.
20
+ * @param info
21
+ * @returns
22
+ */
23
+ export declare const scoreTotalAttributes: (info: NftCollectionAttributeMetrics) => Score;
24
+ //# sourceMappingURL=scoreTotalAttributes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoreTotalAttributes.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAA;AACjG,OAAO,EAAa,KAAK,EAAE,MAAM,qCAAqC,CAAA;AAiCtE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,oBAAoB,SAAU,6BAA6B,KAAG,KAU1E,CAAA"}
@@ -0,0 +1,24 @@
1
+ import { NftCollectionAttributeMetrics } from '@xyo-network/crypto-nft-collection-payload-plugin';
2
+ import { Score } from '@xyo-network/crypto-nft-score-model';
3
+ /**
4
+ * We're working on some assumptions here:
5
+ *
6
+ * - If you have a 100% chance of getting a trait, everyone get's a trophy
7
+ * - If you have a 50% chance of getting a trait, it's not rare
8
+ * - If you have a 0% chance of getting a trait, it's not fun
9
+ *
10
+ * So we're looking for something Pareto-ish (somewhere between
11
+ * 80/20 or 90/10) as that's a good & sustainable model for the
12
+ * distribution of many traits in real life.
13
+ * However, we also don't want to maximally reward collections
14
+ * that have a lot of single attributes distributed uniformly
15
+ * (basically a 0% trait probably) as that's perfectly entropic
16
+ * but not very interesting (some overlap is desirable).
17
+ * So we're using a Gaussian distribution to model the
18
+ * probability density of the joint probability of all traits
19
+ * centered around 15%.
20
+ * @param info
21
+ * @returns
22
+ */
23
+ export declare const scoreTotalAttributes: (info: NftCollectionAttributeMetrics) => Score;
24
+ //# sourceMappingURL=scoreTotalAttributes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoreTotalAttributes.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAA;AACjG,OAAO,EAAa,KAAK,EAAE,MAAM,qCAAqC,CAAA;AAiCtE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,oBAAoB,SAAU,6BAA6B,KAAG,KAU1E,CAAA"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.ts
21
+ var scoreTotalAttributes_exports = {};
22
+ __export(scoreTotalAttributes_exports, {
23
+ scoreTotalAttributes: () => scoreTotalAttributes
24
+ });
25
+ module.exports = __toCommonJS(scoreTotalAttributes_exports);
26
+ var import_crypto_nft_score_model = require("@xyo-network/crypto-nft-score-model");
27
+ var maxScore = 10;
28
+ var defaultMu = 0.15;
29
+ var defaultSigma = 0.1;
30
+ var gaussianProbabilityDensity = (x, mu = defaultMu, sigma = defaultSigma) => {
31
+ const sqrtTwoPi = Math.sqrt(2 * Math.PI);
32
+ const denominator = sigma * sqrtTwoPi;
33
+ const power = -0.5 * Math.pow((x - mu) / sigma, 2);
34
+ return 1 / denominator * Math.exp(power);
35
+ };
36
+ var maxProbabilityDensity = gaussianProbabilityDensity(defaultMu);
37
+ var scoreTotalAttributes = (info) => {
38
+ const { attributes } = info.metrics.metadata;
39
+ const jointProbability = Object.entries(attributes).reduce((acc, [_trait, { metrics }]) => {
40
+ return acc * metrics.binomial.p;
41
+ }, 1);
42
+ const probabilityDensity = gaussianProbabilityDensity(jointProbability);
43
+ const score = [probabilityDensity, maxProbabilityDensity];
44
+ return (0, import_crypto_nft_score_model.normalize)(score, maxScore);
45
+ };
46
+ // Annotate the CommonJS export names for ESM import in node:
47
+ 0 && (module.exports = {
48
+ scoreTotalAttributes
49
+ });
50
+ //# sourceMappingURL=scoreTotalAttributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.ts"],"sourcesContent":["import { NftCollectionAttributeMetrics } from '@xyo-network/crypto-nft-collection-payload-plugin'\nimport { normalize, Score } from '@xyo-network/crypto-nft-score-model'\n\nconst maxScore = 10\n\n/**\n * Mean: What value is the distribution centered around\n */\nconst defaultMu = 0.15\n\n/**\n * Standard Deviation: How spread out is the distribution\n */\nconst defaultSigma = 0.1\n\n/**\n * Calculates the Gaussian probability density\n * @param x\n * @param mu Mean\n * @param sigma Standard Deviation\n * @returns\n */\nconst gaussianProbabilityDensity = (x: number, mu: number = defaultMu, sigma: number = defaultSigma): number => {\n const sqrtTwoPi = Math.sqrt(2 * Math.PI)\n const denominator = sigma * sqrtTwoPi\n const power = -0.5 * Math.pow((x - mu) / sigma, 2)\n return (1 / denominator) * Math.exp(power)\n}\n\n/**\n * For a Gaussian distribution, the peak of the distribution is the mean\n */\nconst maxProbabilityDensity = gaussianProbabilityDensity(defaultMu)\n\n/**\n * We're working on some assumptions here:\n *\n * - If you have a 100% chance of getting a trait, everyone get's a trophy\n * - If you have a 50% chance of getting a trait, it's not rare\n * - If you have a 0% chance of getting a trait, it's not fun\n *\n * So we're looking for something Pareto-ish (somewhere between\n * 80/20 or 90/10) as that's a good & sustainable model for the\n * distribution of many traits in real life.\n * However, we also don't want to maximally reward collections\n * that have a lot of single attributes distributed uniformly\n * (basically a 0% trait probably) as that's perfectly entropic\n * but not very interesting (some overlap is desirable).\n * So we're using a Gaussian distribution to model the\n * probability density of the joint probability of all traits\n * centered around 15%.\n * @param info\n * @returns\n */\nexport const scoreTotalAttributes = (info: NftCollectionAttributeMetrics): Score => {\n const { attributes } = info.metrics.metadata\n // This has somewhat of a filtering function by causing anything with 100% probability to\n // add no value to the end score\n const jointProbability = Object.entries(attributes).reduce((acc, [_trait, { metrics }]) => {\n return acc * metrics.binomial.p\n }, 1)\n const probabilityDensity = gaussianProbabilityDensity(jointProbability)\n const score: Score = [probabilityDensity, maxProbabilityDensity]\n return normalize(score, maxScore)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oCAAiC;AAEjC,IAAM,WAAW;AAKjB,IAAM,YAAY;AAKlB,IAAM,eAAe;AASrB,IAAM,6BAA6B,CAAC,GAAW,KAAa,WAAW,QAAgB,iBAAyB;AAC9G,QAAM,YAAY,KAAK,KAAK,IAAI,KAAK,EAAE;AACvC,QAAM,cAAc,QAAQ;AAC5B,QAAM,QAAQ,OAAO,KAAK,KAAK,IAAI,MAAM,OAAO,CAAC;AACjD,SAAQ,IAAI,cAAe,KAAK,IAAI,KAAK;AAC3C;AAKA,IAAM,wBAAwB,2BAA2B,SAAS;AAsB3D,IAAM,uBAAuB,CAAC,SAA+C;AAClF,QAAM,EAAE,WAAW,IAAI,KAAK,QAAQ;AAGpC,QAAM,mBAAmB,OAAO,QAAQ,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM;AACzF,WAAO,MAAM,QAAQ,SAAS;AAAA,EAChC,GAAG,CAAC;AACJ,QAAM,qBAAqB,2BAA2B,gBAAgB;AACtE,QAAM,QAAe,CAAC,oBAAoB,qBAAqB;AAC/D,aAAO,yCAAU,OAAO,QAAQ;AAClC;","names":[]}
@@ -0,0 +1,25 @@
1
+ // src/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.ts
2
+ import { normalize } from "@xyo-network/crypto-nft-score-model";
3
+ var maxScore = 10;
4
+ var defaultMu = 0.15;
5
+ var defaultSigma = 0.1;
6
+ var gaussianProbabilityDensity = (x, mu = defaultMu, sigma = defaultSigma) => {
7
+ const sqrtTwoPi = Math.sqrt(2 * Math.PI);
8
+ const denominator = sigma * sqrtTwoPi;
9
+ const power = -0.5 * Math.pow((x - mu) / sigma, 2);
10
+ return 1 / denominator * Math.exp(power);
11
+ };
12
+ var maxProbabilityDensity = gaussianProbabilityDensity(defaultMu);
13
+ var scoreTotalAttributes = (info) => {
14
+ const { attributes } = info.metrics.metadata;
15
+ const jointProbability = Object.entries(attributes).reduce((acc, [_trait, { metrics }]) => {
16
+ return acc * metrics.binomial.p;
17
+ }, 1);
18
+ const probabilityDensity = gaussianProbabilityDensity(jointProbability);
19
+ const score = [probabilityDensity, maxProbabilityDensity];
20
+ return normalize(score, maxScore);
21
+ };
22
+ export {
23
+ scoreTotalAttributes
24
+ };
25
+ //# sourceMappingURL=scoreTotalAttributes.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/lib/rating/criteria/scoring/metadata/scoreTotalAttributes.ts"],"sourcesContent":["import { NftCollectionAttributeMetrics } from '@xyo-network/crypto-nft-collection-payload-plugin'\nimport { normalize, Score } from '@xyo-network/crypto-nft-score-model'\n\nconst maxScore = 10\n\n/**\n * Mean: What value is the distribution centered around\n */\nconst defaultMu = 0.15\n\n/**\n * Standard Deviation: How spread out is the distribution\n */\nconst defaultSigma = 0.1\n\n/**\n * Calculates the Gaussian probability density\n * @param x\n * @param mu Mean\n * @param sigma Standard Deviation\n * @returns\n */\nconst gaussianProbabilityDensity = (x: number, mu: number = defaultMu, sigma: number = defaultSigma): number => {\n const sqrtTwoPi = Math.sqrt(2 * Math.PI)\n const denominator = sigma * sqrtTwoPi\n const power = -0.5 * Math.pow((x - mu) / sigma, 2)\n return (1 / denominator) * Math.exp(power)\n}\n\n/**\n * For a Gaussian distribution, the peak of the distribution is the mean\n */\nconst maxProbabilityDensity = gaussianProbabilityDensity(defaultMu)\n\n/**\n * We're working on some assumptions here:\n *\n * - If you have a 100% chance of getting a trait, everyone get's a trophy\n * - If you have a 50% chance of getting a trait, it's not rare\n * - If you have a 0% chance of getting a trait, it's not fun\n *\n * So we're looking for something Pareto-ish (somewhere between\n * 80/20 or 90/10) as that's a good & sustainable model for the\n * distribution of many traits in real life.\n * However, we also don't want to maximally reward collections\n * that have a lot of single attributes distributed uniformly\n * (basically a 0% trait probably) as that's perfectly entropic\n * but not very interesting (some overlap is desirable).\n * So we're using a Gaussian distribution to model the\n * probability density of the joint probability of all traits\n * centered around 15%.\n * @param info\n * @returns\n */\nexport const scoreTotalAttributes = (info: NftCollectionAttributeMetrics): Score => {\n const { attributes } = info.metrics.metadata\n // This has somewhat of a filtering function by causing anything with 100% probability to\n // add no value to the end score\n const jointProbability = Object.entries(attributes).reduce((acc, [_trait, { metrics }]) => {\n return acc * metrics.binomial.p\n }, 1)\n const probabilityDensity = gaussianProbabilityDensity(jointProbability)\n const score: Score = [probabilityDensity, maxProbabilityDensity]\n return normalize(score, maxScore)\n}\n"],"mappings":";AACA,SAAS,iBAAwB;AAEjC,IAAM,WAAW;AAKjB,IAAM,YAAY;AAKlB,IAAM,eAAe;AASrB,IAAM,6BAA6B,CAAC,GAAW,KAAa,WAAW,QAAgB,iBAAyB;AAC9G,QAAM,YAAY,KAAK,KAAK,IAAI,KAAK,EAAE;AACvC,QAAM,cAAc,QAAQ;AAC5B,QAAM,QAAQ,OAAO,KAAK,KAAK,IAAI,MAAM,OAAO,CAAC;AACjD,SAAQ,IAAI,cAAe,KAAK,IAAI,KAAK;AAC3C;AAKA,IAAM,wBAAwB,2BAA2B,SAAS;AAsB3D,IAAM,uBAAuB,CAAC,SAA+C;AAClF,QAAM,EAAE,WAAW,IAAI,KAAK,QAAQ;AAGpC,QAAM,mBAAmB,OAAO,QAAQ,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM;AACzF,WAAO,MAAM,QAAQ,SAAS;AAAA,EAChC,GAAG,CAAC;AACJ,QAAM,qBAAqB,2BAA2B,gBAAgB;AACtE,QAAM,QAAe,CAAC,oBAAoB,qBAAqB;AAC/D,SAAO,UAAU,OAAO,QAAQ;AAClC;","names":[]}
@@ -0,0 +1,16 @@
1
+ import { NftCollectionCount } from '@xyo-network/crypto-nft-collection-payload-plugin';
2
+ import { Score } from '@xyo-network/crypto-nft-score-model';
3
+ /**
4
+ * We're working on some assumptions here:
5
+ * - If there's < 1000 NFTs in your collection it starts becoming too niche
6
+ * - If there's > 20,000 NFTs in your collection it starts becoming too broad
7
+ * So there's a sweet spot somewhere between 2000 and 10,000
8
+ * where a collection has enough NFTs to be interesting, but
9
+ * not so many that it's teetering on a diluted money grab.
10
+ * To model that we're using a log-normal distribution optimized
11
+ * to maximally reward collections in the aforementioned range
12
+ * @param nft
13
+ * @returns
14
+ */
15
+ export declare const scoreTotal: (nft: NftCollectionCount) => Score;
16
+ //# sourceMappingURL=total.d.ts.map
@@ -0,0 +1 @@
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;AA+BtE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,UAAU,QAAS,kBAAkB,KAAG,KAIpD,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { NftCollectionCount } from '@xyo-network/crypto-nft-collection-payload-plugin';
2
+ import { Score } from '@xyo-network/crypto-nft-score-model';
3
+ /**
4
+ * We're working on some assumptions here:
5
+ * - If there's < 1000 NFTs in your collection it starts becoming too niche
6
+ * - If there's > 20,000 NFTs in your collection it starts becoming too broad
7
+ * So there's a sweet spot somewhere between 2000 and 10,000
8
+ * where a collection has enough NFTs to be interesting, but
9
+ * not so many that it's teetering on a diluted money grab.
10
+ * To model that we're using a log-normal distribution optimized
11
+ * to maximally reward collections in the aforementioned range
12
+ * @param nft
13
+ * @returns
14
+ */
15
+ export declare const scoreTotal: (nft: NftCollectionCount) => Score;
16
+ //# sourceMappingURL=total.d.ts.map
@@ -0,0 +1 @@
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;AA+BtE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,UAAU,QAAS,kBAAkB,KAAG,KAIpD,CAAA"}